]> ncurses.scripts.mit.edu Git - ncurses.git/commitdiff
ncurses 6.5 - patch 20240504 master
authorThomas E. Dickey <dickey@invisible-island.net>
Sat, 4 May 2024 20:37:35 +0000 (20:37 +0000)
committerThomas E. Dickey <dickey@invisible-island.net>
Sat, 4 May 2024 20:37:35 +0000 (20:37 +0000)
+ update ncurses/wcwidth.c, for MinGW ports, from xterm.
+ trim obsolete comment about tack from INSTALL.

525 files changed:
ANNOUNCE
Ada95/aclocal.m4
Ada95/configure
Ada95/configure.in
Ada95/gen/Makefile.in
Ada95/gen/gen.c
Ada95/gen/terminal_interface-curses.adb.m4
Ada95/gen/terminal_interface-curses.ads.m4
Ada95/package/debian/copyright
Ada95/samples/ncurses2-overlap_test.adb
Ada95/samples/ncurses2-trace_set.adb
Ada95/samples/sample-menu_demo-aux.adb
COPYING
INSTALL
MANIFEST
NEWS
README
VERSION
aclocal.m4
announce.html.in
c++/cursslk.cc
c++/demo.cc
config.guess
config.sub
configure
configure.in
dist.mk
doc/html/NCURSES-Programming-HOWTO.html
doc/html/ada/funcs/T.htm
doc/html/ada/terminal_interface-curses__adb.htm
doc/html/ada/terminal_interface-curses__ads.htm
doc/html/ada/terminal_interface-curses_constants__ads.htm
doc/html/announce.html
doc/html/man/adacurses6-config.1.html [deleted file]
doc/html/man/adacursesw6-config.1.html [new file with mode: 0644]
doc/html/man/captoinfo.1m.html
doc/html/man/clear.1.html
doc/html/man/curs_add_wch.3x.html
doc/html/man/curs_add_wchstr.3x.html
doc/html/man/curs_addch.3x.html
doc/html/man/curs_addchstr.3x.html
doc/html/man/curs_addstr.3x.html
doc/html/man/curs_addwstr.3x.html
doc/html/man/curs_attr.3x.html
doc/html/man/curs_beep.3x.html
doc/html/man/curs_bkgd.3x.html
doc/html/man/curs_bkgrnd.3x.html
doc/html/man/curs_border.3x.html
doc/html/man/curs_border_set.3x.html
doc/html/man/curs_clear.3x.html
doc/html/man/curs_color.3x.html
doc/html/man/curs_delch.3x.html
doc/html/man/curs_deleteln.3x.html
doc/html/man/curs_extend.3x.html
doc/html/man/curs_get_wch.3x.html
doc/html/man/curs_get_wstr.3x.html
doc/html/man/curs_getcchar.3x.html
doc/html/man/curs_getch.3x.html
doc/html/man/curs_getstr.3x.html
doc/html/man/curs_getyx.3x.html
doc/html/man/curs_in_wch.3x.html
doc/html/man/curs_in_wchstr.3x.html
doc/html/man/curs_inch.3x.html
doc/html/man/curs_inchstr.3x.html
doc/html/man/curs_initscr.3x.html
doc/html/man/curs_inopts.3x.html
doc/html/man/curs_ins_wch.3x.html
doc/html/man/curs_ins_wstr.3x.html
doc/html/man/curs_insch.3x.html
doc/html/man/curs_insstr.3x.html
doc/html/man/curs_instr.3x.html
doc/html/man/curs_inwstr.3x.html
doc/html/man/curs_kernel.3x.html
doc/html/man/curs_legacy.3x.html
doc/html/man/curs_memleaks.3x.html
doc/html/man/curs_mouse.3x.html
doc/html/man/curs_move.3x.html
doc/html/man/curs_opaque.3x.html
doc/html/man/curs_outopts.3x.html
doc/html/man/curs_overlay.3x.html
doc/html/man/curs_pad.3x.html
doc/html/man/curs_print.3x.html
doc/html/man/curs_printw.3x.html
doc/html/man/curs_refresh.3x.html
doc/html/man/curs_scanw.3x.html
doc/html/man/curs_scr_dump.3x.html
doc/html/man/curs_scroll.3x.html
doc/html/man/curs_slk.3x.html
doc/html/man/curs_sp_funcs.3x.html
doc/html/man/curs_termattrs.3x.html
doc/html/man/curs_termcap.3x.html
doc/html/man/curs_terminfo.3x.html
doc/html/man/curs_threads.3x.html
doc/html/man/curs_touch.3x.html
doc/html/man/curs_trace.3x.html
doc/html/man/curs_util.3x.html
doc/html/man/curs_variables.3x.html
doc/html/man/curs_window.3x.html
doc/html/man/default_colors.3x.html
doc/html/man/define_key.3x.html
doc/html/man/form.3x.html
doc/html/man/form_cursor.3x.html
doc/html/man/form_data.3x.html
doc/html/man/form_driver.3x.html
doc/html/man/form_field.3x.html
doc/html/man/form_field_attributes.3x.html
doc/html/man/form_field_buffer.3x.html
doc/html/man/form_field_info.3x.html
doc/html/man/form_field_just.3x.html
doc/html/man/form_field_new.3x.html
doc/html/man/form_field_opts.3x.html
doc/html/man/form_field_userptr.3x.html
doc/html/man/form_field_validation.3x.html
doc/html/man/form_fieldtype.3x.html
doc/html/man/form_hook.3x.html
doc/html/man/form_new.3x.html
doc/html/man/form_new_page.3x.html
doc/html/man/form_opts.3x.html
doc/html/man/form_page.3x.html
doc/html/man/form_post.3x.html
doc/html/man/form_requestname.3x.html
doc/html/man/form_userptr.3x.html
doc/html/man/form_variables.3x.html
doc/html/man/form_win.3x.html
doc/html/man/infocmp.1m.html
doc/html/man/infotocap.1m.html
doc/html/man/key_defined.3x.html
doc/html/man/keybound.3x.html
doc/html/man/keyok.3x.html
doc/html/man/legacy_coding.3x.html
doc/html/man/menu.3x.html
doc/html/man/menu_attributes.3x.html
doc/html/man/menu_cursor.3x.html
doc/html/man/menu_driver.3x.html
doc/html/man/menu_format.3x.html
doc/html/man/menu_hook.3x.html
doc/html/man/menu_items.3x.html
doc/html/man/menu_mark.3x.html
doc/html/man/menu_new.3x.html
doc/html/man/menu_opts.3x.html
doc/html/man/menu_pattern.3x.html
doc/html/man/menu_post.3x.html
doc/html/man/menu_requestname.3x.html
doc/html/man/menu_spacing.3x.html
doc/html/man/menu_userptr.3x.html
doc/html/man/menu_win.3x.html
doc/html/man/mitem_current.3x.html
doc/html/man/mitem_name.3x.html
doc/html/man/mitem_new.3x.html
doc/html/man/mitem_opts.3x.html
doc/html/man/mitem_userptr.3x.html
doc/html/man/mitem_value.3x.html
doc/html/man/mitem_visible.3x.html
doc/html/man/ncurses.3x.html
doc/html/man/ncurses6-config.1.html [deleted file]
doc/html/man/ncursesw6-config.1.html [new file with mode: 0644]
doc/html/man/new_pair.3x.html
doc/html/man/panel.3x.html
doc/html/man/resizeterm.3x.html
doc/html/man/scr_dump.5.html
doc/html/man/tabs.1.html
doc/html/man/term.5.html
doc/html/man/term.7.html
doc/html/man/term_variables.3x.html
doc/html/man/terminfo.5.html
doc/html/man/tic.1m.html
doc/html/man/toe.1m.html
doc/html/man/tput.1.html
doc/html/man/tset.1.html
doc/html/man/user_caps.5.html
doc/html/man/wresize.3x.html
form/form.priv.h
include/Caps
include/Caps-ncurses
include/Caps.aix4
include/Caps.hpux11
include/Caps.keys
include/Caps.osf1r5
include/Caps.uwin
include/MKkey_defs.sh
include/MKterm.h.awk.in
include/curses.events
include/curses.h.in
include/curses.tail
include/headers
include/nc_access.h
include/nc_mingw.h
include/nc_tparm.h
include/nc_win32.h
include/ncurses_defs
include/ncurses_dll.h.in
include/term_entry.h
include/tic.h
m/0001-ncurses-6.4.patch [deleted file]
man/MKada_config.in
man/MKncu_config.in
man/MKterminfo.sh
man/captoinfo.1m
man/clear.1
man/curs_add_wch.3x
man/curs_add_wchstr.3x
man/curs_addch.3x
man/curs_addchstr.3x
man/curs_addstr.3x
man/curs_addwstr.3x
man/curs_attr.3x
man/curs_beep.3x
man/curs_bkgd.3x
man/curs_bkgrnd.3x
man/curs_border.3x
man/curs_border_set.3x
man/curs_clear.3x
man/curs_color.3x
man/curs_delch.3x
man/curs_deleteln.3x
man/curs_extend.3x
man/curs_get_wch.3x
man/curs_get_wstr.3x
man/curs_getcchar.3x
man/curs_getch.3x
man/curs_getstr.3x
man/curs_getyx.3x
man/curs_in_wch.3x
man/curs_in_wchstr.3x
man/curs_inch.3x
man/curs_inchstr.3x
man/curs_initscr.3x
man/curs_inopts.3x
man/curs_ins_wch.3x
man/curs_ins_wstr.3x
man/curs_insch.3x
man/curs_insstr.3x
man/curs_instr.3x
man/curs_inwstr.3x
man/curs_kernel.3x
man/curs_legacy.3x
man/curs_memleaks.3x
man/curs_mouse.3x
man/curs_move.3x
man/curs_opaque.3x
man/curs_outopts.3x
man/curs_overlay.3x
man/curs_pad.3x
man/curs_print.3x
man/curs_printw.3x
man/curs_refresh.3x
man/curs_scanw.3x
man/curs_scr_dump.3x
man/curs_scroll.3x
man/curs_slk.3x
man/curs_sp_funcs.3x
man/curs_termattrs.3x
man/curs_termcap.3x
man/curs_terminfo.3x
man/curs_threads.3x
man/curs_touch.3x
man/curs_trace.3x
man/curs_util.3x
man/curs_variables.3x
man/curs_window.3x
man/default_colors.3x
man/define_key.3x
man/form.3x
man/form_cursor.3x
man/form_data.3x
man/form_driver.3x
man/form_field.3x
man/form_field_attributes.3x
man/form_field_buffer.3x
man/form_field_info.3x
man/form_field_just.3x
man/form_field_new.3x
man/form_field_opts.3x
man/form_field_userptr.3x
man/form_field_validation.3x
man/form_fieldtype.3x
man/form_hook.3x
man/form_new.3x
man/form_new_page.3x
man/form_opts.3x
man/form_page.3x
man/form_post.3x
man/form_requestname.3x
man/form_userptr.3x
man/form_variables.3x
man/form_win.3x
man/infocmp.1m
man/infotocap.1m
man/key_defined.3x
man/keybound.3x
man/keyok.3x
man/legacy_coding.3x
man/make_sed.sh
man/man_db.renames.in
man/manhtml.aliases
man/manhtml.externs
man/manlinks.sed
man/menu.3x
man/menu_attributes.3x
man/menu_cursor.3x
man/menu_driver.3x
man/menu_format.3x
man/menu_hook.3x
man/menu_items.3x
man/menu_mark.3x
man/menu_new.3x
man/menu_opts.3x
man/menu_pattern.3x
man/menu_post.3x
man/menu_requestname.3x
man/menu_spacing.3x
man/menu_userptr.3x
man/menu_win.3x
man/mitem_current.3x
man/mitem_name.3x
man/mitem_new.3x
man/mitem_opts.3x
man/mitem_userptr.3x
man/mitem_value.3x
man/mitem_visible.3x
man/ncurses.3x
man/new_pair.3x
man/panel.3x
man/resizeterm.3x
man/scr_dump.5
man/tabs.1
man/term.5
man/term.7
man/term_variables.3x
man/terminfo.head
man/terminfo.tail
man/tic.1m
man/toe.1m
man/tput.1
man/tset.1
man/user_caps.5
man/wresize.3x
menu/m_global.c
misc/magic
misc/ncu2openbsd
misc/terminfo.src
mk-1st.awk
ncurses/Makefile.in
ncurses/base/MKunctrl.awk
ncurses/base/key_defined.c
ncurses/base/lib_addstr.c
ncurses/base/lib_color.c
ncurses/base/lib_delwin.c
ncurses/base/lib_echo.c
ncurses/base/lib_endwin.c
ncurses/base/lib_getch.c
ncurses/base/lib_getstr.c
ncurses/base/lib_insnstr.c
ncurses/base/lib_instr.c
ncurses/base/lib_mouse.c
ncurses/base/lib_nl.c
ncurses/base/lib_overlay.c
ncurses/base/lib_refresh.c
ncurses/base/lib_restart.c
ncurses/base/lib_screen.c
ncurses/base/resizeterm.c
ncurses/base/safe_sprintf.c
ncurses/base/tries.c
ncurses/base/vsscanf.c
ncurses/base/wresize.c
ncurses/curses.priv.h
ncurses/llib-lncurses
ncurses/llib-lncursest
ncurses/llib-lncursestw
ncurses/llib-lncursesw
ncurses/llib-ltic
ncurses/llib-ltict
ncurses/llib-ltictw
ncurses/llib-lticw
ncurses/llib-ltinfo
ncurses/llib-ltinfot
ncurses/llib-ltinfotw
ncurses/llib-ltinfow
ncurses/report_offsets.c
ncurses/term.priv.h
ncurses/tinfo/MKcaptab.sh [changed mode: 0644->0755]
ncurses/tinfo/MKfallback.sh [changed mode: 0644->0755]
ncurses/tinfo/MKkeys_list.sh
ncurses/tinfo/MKuserdefs.sh [changed mode: 0644->0755]
ncurses/tinfo/access.c
ncurses/tinfo/add_tries.c
ncurses/tinfo/alloc_entry.c
ncurses/tinfo/alloc_ttype.c
ncurses/tinfo/comp_error.c
ncurses/tinfo/comp_expand.c
ncurses/tinfo/comp_hash.c
ncurses/tinfo/comp_parse.c
ncurses/tinfo/comp_scan.c
ncurses/tinfo/db_iterator.c
ncurses/tinfo/entries.c
ncurses/tinfo/free_ttype.c
ncurses/tinfo/init_keytry.c
ncurses/tinfo/lib_data.c
ncurses/tinfo/lib_kernel.c
ncurses/tinfo/lib_napms.c
ncurses/tinfo/lib_options.c
ncurses/tinfo/lib_print.c
ncurses/tinfo/lib_raw.c
ncurses/tinfo/lib_setup.c
ncurses/tinfo/lib_termcap.c
ncurses/tinfo/lib_tgoto.c
ncurses/tinfo/lib_tparm.c
ncurses/tinfo/lib_tputs.c
ncurses/tinfo/lib_win32con.c
ncurses/tinfo/lib_win32util.c
ncurses/tinfo/make_hash.c
ncurses/tinfo/obsolete.c
ncurses/tinfo/parse_entry.c
ncurses/tinfo/read_entry.c
ncurses/tinfo/read_termcap.c
ncurses/tinfo/strings.c
ncurses/tinfo/tinfo_driver.c
ncurses/tinfo/trim_sgr0.c
ncurses/tinfo/write_entry.c
ncurses/trace/lib_trace.c
ncurses/trace/lib_traceatr.c
ncurses/trace/lib_tracechr.c
ncurses/trace/lib_tracedmp.c
ncurses/trace/trace_buf.c
ncurses/trace/varargs.c
ncurses/trace/visbuf.c
ncurses/tty/hardscroll.c
ncurses/tty/hashmap.c
ncurses/tty/lib_mvcur.c
ncurses/tty/lib_twait.c
ncurses/tty/lib_vidattr.c
ncurses/tty/tty_update.c
ncurses/wcwidth.h
ncurses/widechar/lib_add_wch.c
ncurses/widechar/lib_get_wstr.c
ncurses/widechar/lib_ins_wch.c
ncurses/widechar/lib_key_name.c
ncurses/widechar/lib_unget_wch.c
ncurses/widechar/lib_vid_attr.c
ncurses/win32con/gettimeofday.c
ncurses/win32con/wcwidth.c
ncurses/win32con/win32_driver.c
ncurses/win32con/win_driver.c
package/debian-mingw/changelog
package/debian-mingw/copyright
package/debian-mingw/rules
package/debian-mingw64/changelog
package/debian-mingw64/copyright
package/debian-mingw64/rules
package/debian/changelog
package/debian/copyright
package/debian/ncurses6.lintian-overrides
package/debian/ncursest6.lintian-overrides
package/debian/rules
package/mingw-ncurses.nsi
package/mingw-ncurses.spec
package/ncurses.map
package/ncurses.spec
package/ncurses.sym
package/ncursest.map
package/ncursest.spec
package/ncursest.sym
package/ncursestw.map
package/ncursestw.sym
package/ncursesw.map
package/ncursesw.sym
progs/Makefile.in
progs/clear.sh [changed mode: 0644->0755]
progs/dump_entry.c
progs/infocmp.c
progs/progs.priv.h
progs/reset_cmd.c
progs/reset_cmd.h
progs/tabs.c
progs/tic.c
progs/toe.c
progs/tparm_type.c
progs/tparm_type.h
progs/tput.c
progs/tset.c
test/README
test/aclocal.m4
test/bs.6
test/bs.c
test/clip_printw.c
test/color_content.c
test/configure
test/configure.in
test/demo_altkeys.c
test/demo_defkey.c
test/demo_forms.c
test/demo_menus.c
test/demo_termcap.c
test/demo_terminfo.c
test/ditto.c
test/dots_termcap.c
test/dump_window.c
test/dup_field.c
test/echochar.c
test/foldkeys.c
test/gdc.6
test/list_keys.c
test/modules
test/move_field.c
test/movewindow.c
test/ncurses.c
test/package/debian-mingw/copyright
test/package/debian-mingw64/copyright
test/package/debian/copyright
test/package/mingw-ncurses-examples.spec
test/package/ncurses-examples.spec
test/pair_content.c
test/picsmap.c
test/programs
test/sp_tinfo.c
test/tclock.c
test/test.priv.h
test/test_addwstr.c
test/test_delwin.c
test/test_endwin.c [new file with mode: 0644]
test/test_mouse.c
test/test_setupterm.c
test/test_sgr.c
test/test_tparm.c
test/testcurs.c

index 45b1a0ea025c0d9222aa3e39d66433549d8712e1..6abf551c684d86f7af50c9f20f9d726d66f9c80a 100644 (file)
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,4 +1,4 @@
-                            Announcing ncurses 6.4
+                            Announcing ncurses 6.5
 
 Overview
 
@@ -49,10 +49,10 @@ Overview
 
 Release Notes
 
-   These notes are for ncurses 6.4, released December 31, 2022.
+   These notes are for ncurses 6.5, released April 27, 2024.
 
    This  release  is  designed  to  be source-compatible with ncurses 5.0
-   through  6.3; providing extensions to the application binary interface
+   through  6.4; providing extensions to the application binary interface
    (ABI).  Although  the  source  can  still be configured to support the
    ncurses  5  ABI, the reason for the release is to reflect improvements
    to the ncurses 6 ABI and the supporting utility programs.
@@ -63,176 +63,189 @@ Release Notes
    The   most  important  bug-fixes/improvements  dealt  with  robustness
    issues.  The  release notes also mention some other bug-fixes, but are
    focused  on  new  features and improvements to existing features since
-   ncurses 6.3 release.
+   ncurses 6.4 release.
 
   Library improvements
 
     New features
 
-   There are no new features in this release.
+   These are new features:
+     * The low-level terminfo and termcap interfaces are used both by the
+       higher-level curses library, as well as by many applications.
+       The  functions  which  convert  parameterized  terminal capability
+       strings  for output to the terminal (tiparm and tparm) analyze the
+       capability string to determine which parameters are strings (i.e.,
+       addresses), versus numbers (not addresses).
+       The  library's analysis of a capability string may differ from the
+       calling  application's design if environment variables are used to
+       point  to  an  invalid  terminal  database. This is a longstanding
+       problem  with  all  implementations  of  terminfo, dating from the
+       early 1980s.
+       Two  new  functions  address this problem: by providing a function
+       which  allows  the  calling  application  to tell ncurses how many
+       string-parameters to expect:
+          + tiscan_s  helps  applications  check  formatting capabilities
+            that would be passed to tiparm_s.
+          + tiparm_s provides applications a way to tell ncurses what the
+            expected parameters are for a capability.
+     * The  ncurses library supports a compile-time feature (enabled with
+       the   configure   --enable-check-size   option)  which  simplifies
+       initialization  with  terminals  which  do  not  negotiate  window
+       (screen)  size.  This is done in setupterm, by providing for using
+       ANSI cursor-position report (in user6/user7 terminfo capabilities)
+       to  obtain  the  screen  size  if neither environment variables or
+       ioctl is used.
+       The  ncurses  test-program  with options "-E -T" demonstrates this
+       feature.
+     * add functions to query tty-flags in SCREEN
+
+   This release drops compatibility with obsolete versions of tack, e.g.,
+   pre-1.08
 
     Other improvements
 
    These are improvements to existing features:
-     * modify  delscreen  to  more  effectively delete all windows on the
-       given screen.
-     * modify  wnoutrefresh  to  call  pnoutrefresh if its parameter is a
-       pad,  rather than treating it as an error, and modify new_panel to
-       permit its window-parameter to be a pad
-     * modify  curses_trace()  to  show  the trace-mask as symbols, e.g.,
-       TRACE_ORDINARY, DEBUG_LEVEL(3).
-     * improve  checks  for valid mouse events when an intermediate mouse
-       state is not part of the mousemask specified by the caller
-     * allow extended-color number in opts parameter of wattr_on.
-     * improve _tracecchar_t2 formatting of base+combining character.
-     * trim  out some unwanted linker options from ncurses*config and .pc
-       files seen in Fedora 36+.
-     * improve shell-scripts with shellcheck
-     * improve use of "trap" in shell scripts, using a script.
-     * modify make-tar.sh scripts to make timestamps more predictable.
+     * In  addition  to  the  new,  safer function tiparm_s, ncurses adds
+       checks to make the older tiparm, tparm and tgoto functions safer:
+          + the  terminfo  functions  tiparm  and  tparm  ensure that the
+            capability  string  comes from the terminal description which
+            ncurses  loads,  rather  than  from  random  data  which  the
+            application happens to have.
+          + the  tgoto function disallows capabilities which its analysis
+            shows will attempt to use string parameters.
+          + ncurses  uses  internal functions which correspond to tiparm,
+            and  tgoto which ensure that the capability strings which are
+            passed  to  these  functions  come  from  the loaded terminal
+            description.
+     * improve  check  in  lib_tparm.c, ensuring that a char* fits into a
+       TPARM_ARG
+     * modify  _nc_syserr_abort  to  use _nc_env_access, rather than only
+       checking root uid
+     * improve thread lock in lib_trace.c
+     * modify  flushinp  to  use  file descriptors in SCREEN, rather than
+       from TERMINAL, and check if they are for a terminal, like SVr4
+     * modify mcprint to use file descriptor in SCREEN, for consistency
+     * modify  internal  function  _nc_read_file_entry  to  show relevant
+       filename in warnings
+     * improve  checks  in  internal  function convert_string for corrupt
+       terminfo entry
+     * review/improve handling of out-of-memory conditions
+     * limit  delays  to 30 seconds, i.e., padding delays in terminfo, as
+       well as napms and delay_output functions
+     * fix  reallocation  loop  for  vsnprintf  in  _nc_sprintf_string by
+       copying the va_list variable
+     * modify  delscreen  to  limit  the windows which it creates to just
+       those associated with the screen
+     * modify  endwin to return an error if it is called again without an
+       intervening screen update
+     * modify wenclose to handle pads
+     * eliminate use of PATH_MAX in lib_trace.c
+     * provide for any CCHARW_MAX greater than 1
 
    These are corrections to existing features:
-     * modify  misc/gen-pkgconfig.in  to  allow  for  the  case where the
-       library  directory  does  not  yet  exist, since this is processed
-       before doing an install
-     * set trailing null on string passed from winsnstr to wins_nwstr.
-     * modify  waddch_literal  to  allow  for double-width base character
-       when merging a combining character
+     * correct loop termination condition in waddnstr and waddnwstr
+     * improve  parsing  in  internal  function _nc_msec_cost, allowing a
+       single decimal point
+     * amend  parameter check for entire string versus specific length in
+       winsnstr  and wins_nwstr to match Solaris; make similar correction
+       to wins_nwstr
+     * correct   internal   function   wadd_wch_literal   when  adding  a
+       non-spacing character to a double-width character
+     * correct  definition of Charable macro for non-wide ncurses library
+       .
 
   Program improvements
 
-   Several improvements were made to the utility programs:
+   Several improvements were made to the utility programs. Some were done
+   to  make  the  infocmp  option  "-u" option help refactor the terminal
+   database.
 
    infocmp
 
-          + rewrite  canonical_name  function of infocmp to ensure buffer
-            size
-          + improve  readability  of  long parameterized expressions with
-            the  infocmp  "-f"  option  by  allowing  split before a "%p"
-            marker.
-          + modify   verbose-option   of  infocmp,  tic,  toe  to  enable
-            debug-tracing if that is configured.
-
-   tabs
-          limit tab-stop values to max-columns
+          + add  limit  checks  for processing extended capabilities with
+            the "-u" option
+          + correct  initial  alignment of extended capabilities, so that
+            the "-u" option can be used for more than two terminal types
+          + modify  "-u"  option  to not report cancels for strings which
+            were already cancelled in a use'd chunk.
+          + correct  an  assignment  "-u"  for  detecting if a boolean is
+            unset  in  a base entry and set in a use'd chunk, i.e., if it
+            was cancelled.
 
    tic
-          add   consistency   check   in   tic  for  u6/u7/u8/u9  and  NQ
-          capabilities.
 
-   tput
-          corrected use of original tty-modes in init/reset subcommands
+          + correct limit-check when dumping tc/use clause via "-I"
+          + check  return  value  of  _nc_save_str, in special case where
+            extended   capabilities   are   processed  but  the  terminal
+            description was not initialized
+          + modify  check for multiply defined aliases to report problems
+            within  the  current  runtime  rather than for conflicts with
+            pre-existing terminal descriptions.
+          + disallow  using $TERMINFO or $HOME/.terminfo when "-o" option
+            is used
+
+   tput and tset
+
+          + add "-v" option to tput, to show warnings
+          + modify reset command to avoid altering clocal if the terminal
+            uses a modem
+          + modify  reset feature to avoid 1-second sleep if running in a
+            pseudo-terminal
 
     Examples
 
    Along  with  the  library and utilities, improvements were made to the
-   ncurses-examples.  Most  of  this  activity  aimed  at  improving  the
-   test-packages:
-     * add  minimal  -h  (usage)  and  -V  (version)  getopt logic to all
-       ncurses-examples programs.
-     * fix an error in "@" command in test/ncurses.c F-menu
-     * add curses_trace to ifdef's for START_TRACE in test/test.priv.h
-     * improve pthread-configuration for test/worm.c
-     * add setlocale call to several test-programs.
-     * workaround  in  test/picsmap.c  for  use of floating point for rgb
-       values by ImageMagick 6.9.11, which appears to use the wrong upper
-       limit.
-     * use  static libraries for AdaCurses test-package for Mageia, since
-       no gprbuild package is available.
-     * install  Ada95  sample  programs  in  libexecdir, adding a wrapper
-       script to invoke those.
-     * install  ncurses-examples programs in libexecdir, adding a wrapper
-       script to invoke those.
-
-   There are other new demo/test programs and reusable examples:
-
-   test/combine
-          demonstrate combining characters
-
-   test/test_delwin
-          demonstrate deleting a window
-
-   test/test_mouse
-          observe  mouse  events  in  the  raw terminal or parsed ncurses
-          modes
-
-   test/test_unget_wch
-          demonstrate the unget_wch and unget functions
+   ncurses-examples:
+     * modify test_tparm to account for extended capabilities
+     * corrected mouse mask in test/testcurs.c
+     * modify test/clip_printw.c to optionally test non-wrapped updates
+     * modify test/test_mouse.c to use curses api for raw/noraw
+     * modify test/clip_printw.c to optionally test non-wrapped updates
+
+   There is one new demo/test programs:
+
+   test/test_endwin.c
+          This program shows the return-status from endwin with different
+          combinations of endwin (repeated), initscr, newterm.
 
   Terminal database
 
    There are several new terminal descriptions:
-     * mosh
-     * mosh-256color
-     * teken-16color
-     * teken-sc
-     * teken-vt
-     * xgterm
+     * ansi+apparrows
+     * contour
+     * linux+kbs for terminals which imitate xterm's behavior with Linux
+     * rio, rio-direct
+     * mostlike
+     * ms-vt100-16color, winconsole
+     * vt100+noapp,   vt100+noapp+pc,  xterm+app+pc,  xterm+decedit  from
+       xterm #389
+     * putty+cursor to reflect amending of modified cursor-keys in 2021
+     * wezterm
 
    There  are  many  changes to existing terminal descriptions. Some were
-   updates to several descriptions:
-     * make description-fields distinct
-     * fix errata in description fields
-     * add/use several building-blocks:
-          + aixterm+sl
-          + ansi+cpr
-          + apollo+vt132
-          + decid+cpr
-          + ncr260vp+sl
-          + wyse+sl
-          + x10term+sl
-          + xterm+acs
-          + xterm+alt47
-
-   while  others  affected specific descriptions. These were retested, to
-   take into account changes by their developers:
-     * kitty
-     * teken
-
-   while  these are specific fixes based on reviewing documentation, user
-   reports, or warnings from tic:
-
-   att610+cvis0
-          amended note as per documentation for att610, att620, att730
-
-   kon, kon2, jfbterm
-          revise to undo "linux2.6" change to smacs/rmacs/enacs
-
-   st-0.6
-          add dim, ecma+strikeout
-
-   foot+base
-          add xterm+sl-alt
-
-   dec+sl
-          correct dsl in dec+sl
-
-   mintty and tmux
-          correct setal in mintty/tmux entries, add to vte-2018
-
-   nsterm
-          modify nsterm to use xterm+alt1049
-
-   putty
-          modify putty to use xterm+alt1049
-
-   vte-2018
-          add blink and setal
-
-   A few entries use extensions (user-defined terminal capabilities):
-     * use  ansi+enq  and  decid+cpr in cases where the terminal probably
-       supported the u6-u9 extension
-     * remove u6-u9 from teken-2018
-     * use  NQ  to flag entries where the terminal does not support query
-       and response
-     * add/use bracketed+paste to help identify terminals supporting this
-       xterm feature
-     * modify  samples  for xterm mouse 1002/1003 modes to use 1006 mode,
-       and also provide for focus in/out responses
-     * xterm  patch  #371 supports DEC-compatible status-line. add dec+sl
-       to  xterm-new, per xterm #371, add xterm-p371, add xterm-p370, for
-       use  in  older  terminals, and set "xterm-new" to "xterm-p370" (to
-       ease adoption).
+   updates  to  several  descriptions, using the infocmp "-u" option in a
+   script  to  determine  which  building-block  entries could be used to
+   replace multiple capability settings (and trim redundant information).
+
+   Other changes include:
+     * document XF, kxIN and kxOUT
+     * add note on sun regarding wscons/cmdtool/shelltool
+     * remove DECCOLM+DECSCLM from foot
+     * add xterm+focus to foot+base
+     * add ecma+strikeout to putty
+     * use CSI 3J in vte-2017
+     * use oldxterm+sm+1006 in vte-2014
+     * modify xgterm to work around line-drawing bug
+     * add  xterm  focus  mode 1004 to xterm+focus as fe/fd capabilities,
+       like vim.
+     * add xterm+focus to alacritty+common
+     * add  XR/xr,  to work with vim, and use RV/rv to denote DA2 and its
+       response
+     * add  XF  flag  to  xterm+focus so that termcap applications can be
+       aware of terminals which may support focus in/out
+     * use xterm+focus in xterm-p370 and tmux
+     * remove xterm+sm+1006 from tmux
+     * NetBSD-related fixes for x68k and wsvt25
 
   Documentation
 
@@ -247,123 +260,157 @@ Release Notes
    features   and   show   how   they  evolved,  there  are  corrections,
    clarifications, etc.:
      * Corrections:
-          + remove a stray '/' from description of %g in terminfo(5).
-          + correct/improve  font-formatting in curs_getch.3x, as well as
-            other manual pages.
+          + add   assignment   in  CF_MAN_PAGES  to  fill  in  value  for
+            TERMINFO_DIRS in ncurses, terminfo and tic manpages.
+          + clarify  interaction  of  -R  option  versus -C, -I and -r in
+            infocmp manpage.
+          + correct manpage description of panel_hidden.
+          + improve  manpage  description  for addch versus unctrl format
+            used for non-printable characters.
+          + improve  manpages  discussing  file  descriptors in low-level
+            functions.
+          + improve description of search rules for terminal descriptions
+            in terminfo manpage.
+          + modify  dist.mk  to  avoid  passing  developer's  comments in
+            manpages into the generated html documentation.
+          + modify  test-package  "ncurses6-doc"  to use manpage-aliases,
+            which  in  turn  required a change to the configure script to
+            factor in the extra-suffix option when deriving alias names.
      * New/improved history and portability sections:
-          + add portability notes for delscreen and delwin in manual.
-          + improve curs_slk.3x discussion of extensions and portability
+          + add  information  about  "ttycap",  termcap's  forerunner, to
+            tset.1
+          + document   limitations   of   tparm,   and  error-returns  in
+            curs_terminfo.3x
+          + document   limitations   of   tgoto,   and  error-returns  in
+            curs_termcap.3x
      * Other improvements:
-          + improve  curs_bkgd.3x,  explaining  that  bkgdset  can affect
-            results for bkgd
-          + add note on portable memory-leak checking in curs_memleaks.3x
-          + expanded description in resizeterm.3x
-          + add  section  on  releasing  memory  to  curs_termcap.3x  and
-            curs_terminfo.3x manpages.
-          + add  clarification  of  the  scope  of  dynamic  variables in
-            terminfo(5).
-          + improve formatting of ncurses-intro.html and hackguide.html
-          + improve curs_clear.3x links to other pages
-          + update  ncurses-howto,  making documentation fixes along with
-            corrections to example programs.
-          + use  newer  version  1.36 of gnathtml for generating Ada html
-            files.
-          + update external links in Ada95.html
+          + This  release  has many changes to improve the formatting and
+            style of the manpages.
+          + Manpages  now use consistent section-naming, page headers and
+            footers (including the modification date for each page).
+          + Table layout has been revised.
 
    There  are  no new manual pages (all of the manual page updates are to
    existing pages).
 
   Interesting bug-fixes
 
-   While  there  were  many bugs fixed during development of ncurses 6.4,
-   only  a  few  (the  reason  for  this release) were both important and
-   interesting. Most of the bug-fixes were for local issues which did not
-   affect  compatibility across releases. Since those are detailed in the
-   NEWS file no elaboration is needed here.
-
-   The  interesting  bugs were those dealing with memory leaks and buffer
-   overflows.  Although  the utilities are designed for text files (which
-   they do properly), some choose to test them with non-text files.
-     * Text  files  contain  no  embedded  nulls.  Also,  they end with a
-       newline.  Feeding tic non-text files exposed a few cases where the
-       program  did  not  check  for  those  issues. As a result, further
-       processing  of the input found limit-checks whose assumptions were
-       invalid.
-     * Fixing  the limit-checks (first) found a problem with tic managing
-       the  list  of  strings  in  a terminal description. In merging two
-       terminal  descriptions  (i.e.,  the  "use="  feature), tic was not
-       allocating  a  complete copy. A quick repair for that introduced a
-       memory leak.
-     * The  checks  for non-text files are improved (i.e., embedded nulls
-       in  the  input  file  will  cause  tic  to  reject  it rather than
-       attempting to process it).
-     * The string allocations in tic are likewise improved.
+   The  changes to tparm, tgoto which improve the design of the low-level
+   interfaces are interesting, but are not bug-fixes per se.
 
   Configuration changes
 
     Major changes
 
-   There  are  no  major  changes.  No  new  options  were added. Several
-   improvements were made to configure checks.
+   These are the major changes (aside from introducing tiparm_s):
+     * use wide-character (ncursesw) by default
+     * use opaque typedefs by default
+
+   However,  most  of  the  work  on configure scripts was done to reduce
+   warnings within the configure script:
+     * intrusive warnings from GNU grep regarding fgrep and egrep
+     * fatal  errors  in  compile-checks,  arising from recent "Modern C"
+       efforts  by  some  developers  which caused longstanding configure
+       checks to fail.
+       After  repairing  the  configure  script,  none  of  that activity
+       affected  ncurses  because stricter warnings are used routinely in
+       development.
+
+   Other improvements made to configure checks include
+     * use  string-hacks in alloc_entry.c, alloc_type.c and hardscroll.c,
+       overlooked due to compiler changes in recent OpenBSD releases
+     * revise progs.priv.h to provide for NC_ISATTY reuse
+     * configure check for MB_LEN_MAX provides warning as needed
+     * trim   a   space  after  some  "-R"  options,  fixing  builds  for
+       applications built using clang and ncurses on Solaris
+     * work  around  misconfiguration  of  MacPorts  gcc13, which exposes
+       invalid  definition  of  MB_LEN_MAX  in  gcc's  fallback  copy  of
+       limits.h
+     * modified  experimental  Windows  driver  works  with  xterm  mouse
+       protocol
 
     Configuration options
 
-   There are a few new/modified configure options:
+   There are a few new configure options:
+
+   --disable-setuid-environ
+          Compile  with  environment  restriction, so certain environment
+          variables  are  not  available when running via a setuid/setgid
+          application. These are (for example $TERMINFO) those that allow
+          the  search  path  for  the  terminfo  or  termcap  entry to be
+          customized.
+
+          A  setuid/setgid application inherits its environment variables
+          from  the current user, in contrast to sudo which may limit the
+          environment variables that ncurses uses.
+
+   --enable-check-size
+          Compile-in  feature to detect screensize for terminals which do
+          not advertise their screensize, e.g., serial terminals.
+
+   --with-abi-altered=NUM
+          Override  the  displayed  (rather  than  compiled-in) ABI. Only
+          packagers who have created configurations where the ABI differs
+          from ncurses should be interested in this option.
+
+   --with-strip-program=XXX
+          When  stripping  executables  during install, use the specified
+          program  rather  than  "strip" overriding program chosen by the
+          install program for stripping executables.
 
-   --with-abi-version
-          add ABI 7 defaults to configure script.
+   These configure options are modified:
 
-   --with-caps
-          add   warning   in  configure  script  if  file  specified  for
-          "--with-caps" does not exist.
+   --with-pkg-config-libdir[=DIR]
+          The  optional  DIR parameter can now be "auto" to automatically
+          use pkg-config's library directory.
 
-   --with-manpage-format
-          bzip2 and xz compression are now supported
+          The default is $(libdir).
 
-   --with-xterm-kbs
-          add    check/warning    in    configure    script   if   option
-          "--with-xterm-kbs" is missing or inconsistent
+   --with-xterm-kbs[=XXX]
+          The  default  is  "auto"  which  tells  the configure script to
+          choose BS or DEL according to platform defaults.
 
   Portability
 
    Many  of  the  portability  changes  are implemented via the configure
    script:
-     * amend  configure option's auto-search to account for systems where
-       none of the directories known to pkg-config exist
-     * corrected regex needed for older pkg-config used in Solaris 10
-     * improve  handling of --with-pkg-config-libdir option, allowing for
-       the case where either $PKG_CONFIG_LIBDIR or the option value has a
-       colon-separated list of directories
-     * if   the   --with-pkg-config-libdir   option  is  not  given,  use
-       ${libdir}/pkgconfig as a default
-     * improve search-path check for pkg-config, e.g., for Debian testing
-       which installs pkg-config with architecture-prefixes.
-     * build-fix for cross-compiling to MingW, conditionally add -lssp
-     * improve configure check for getttynam
-     * fixes to build with dietlibc:
-          + add configure check for fpathconf
-          + add   configure   check   for  math  sine/cosine,  needed  in
-            test/tclock, and eliminate pow() from test/hanoi
-          + use wcsnlen as an alternative to wmemchr if it is not found
-     * modify  configure macro CF_BUILD_CC to check if the build-compiler
-       works,  rather  than that it is different from the cross-compiler,
-       e.g.,  to  accommodate  a  compiler  which  can be used for either
-       purpose with different flags
-     * modify  configure/scripts  to work around interference by GNU grep
-       3.8
+     * add/use   configure   check   for   clock_gettime,   to  supersede
+       gettimeofday.
+     * modify  configure script check for pkg-config library directory to
+       take   into   account   an   older   version   0.15.0  which  used
+       PKG_CONFIG_PATH but not PKG_CONFIG_LIBDIR
+     * allow for MinGW32-/64-bit configurations to use _DEFAULT_SOURCE
+     * modify   CF_XOPEN_SOURCE  macro's  amend  default  case  to  avoid
+       undefining _XOPEN_SOURCE if _POSIX_C_SOURCE is defined
+     * updated configure script macro CF_XOPEN_SOURCE, for uClibc-ng
+     * modify version-check for gcc/g++, now works for msys2
+     * build-fixes related to configure-options and/or platform:
+          + fix for --enable-fvisibility
+          + fix for unusual values of --with-rel-version
+          + fix for unusual values of --with-abi-version
+          + fix for --disable-tcap-names
+          + fix for termcap in nc_access.h
+     * other configure-script improvements:
+          + recent msys2 headers work with _DEFAULT_SOURCE; amend check
+          + use  $ac_includes_default in most cases where stdlib.h should
+            work
+          + use #error consistently vs "make an error"
+          + add configure macro for gettimeofday vs inline check
 
    Here are some of the other portability fixes:
-     * change  man_db.renames  to  template,  to  handle  ncurses*-config
-       script with the --extra-suffix configure option.
-     * update   CF_XOPEN_SOURCE  macro,  adding  variants  "gnueabi"  and
-       "gnueabihf" to get _DEFAULT_SOURCE special case, as well as adding
-       GNU  libc  suffixes for "abi64", "abin32", "x32" to distinguish it
-       from other libc flavors.
-     * work  around  musl's  nonstandard  use  of  feature test macros by
-       adding  a  definition  for NCURSES_WIDECHAR to the generated ".pc"
-       and *-config files.
-     * use  "command  -v"  rather than "type" in Ada95/gen/Makefile.in to
-       fix a portability issue.
+     * modify  configure  scripts/makefiles  to  omit  KEY_RESIZE  if the
+       corresponding SIGWINCH feature is disabled
+     * increase MB_CUR_MAX to 16, matching glibc's MB_LEN_MAX
+     * add BSD erase2 to characters handled by tset/reset
+     * use getauxval when available, to improve setuid/setgid checks
+     * set dwShareMode in calls to CreateConsoleScreenBuffer
+     * use  CreateFile  with "CONIN$", "CONOUT$" rather than GetStdHandle
+       to  obtain a handle on the actual console, avoiding redirection in
+       the MinGW/Win32 configurations
+     * modify  MinGW  driver  to  return KEY_BACKSPACE when an unmodified
+       VK_BACK virtual key is entered
+     * modify  MinGW  configuration  to provide for running in MSYS/MSYS2
+       shells, assuming ConPTY support
      _________________________________________________________________
 
 Features of ncurses
@@ -371,20 +418,21 @@ Features of ncurses
    The  ncurses  package  is  fully upward-compatible with SVr4 (System V
    Release 4) curses:
      * All of the SVr4 calls have been implemented (and are documented).
-     * ncurses  supports  all  of  the for SVr4 curses features including
-       keyboard  mapping,  color,  forms-drawing with ACS characters, and
-       automatic recognition of keypad and function keys.
-     * ncurses  provides  these SVr4 add-on libraries (not part of X/Open
-       Curses):
-          + the  panels  library,  supporting  a  stack  of  windows with
-            backing store.
-          + the   menus   library,  supporting  a  uniform  but  flexible
-            interface for menu programming.
+     * ncurses  supports  the  features of SVr4 curses including keyboard
+       mapping,  color,  form  drawing with ACS characters, and automatic
+       recognition of keypad and function keys.
+     * ncurses  provides  work-alike  replacements  of  SVr4 supplemental
+       libraries  based on curses, but which were not specified by X/Open
+       Curses:
+          + the panel library, supporting a stack of windows with backing
+            store
+          + the menu library, supporting a uniform but flexible interface
+            for menu programming
           + the   form   library,   supporting  data  collection  through
-            on-screen forms.
+            on-screen forms
      * ncurses's  terminal database is fully compatible with that used by
        SVr4 curses.
-          + ncurses  supports user-defined capabilities which it can see,
+          + ncurses  supports  user-defined capabilities that it can see,
             but  which are hidden from SVr4 curses applications using the
             same terminal database.
           + It  can  be optionally configured to match the format used in
@@ -397,11 +445,12 @@ Features of ncurses
        the HP-UX and AIX ports.
 
    The ncurses package also has many useful extensions over SVr4:
-     * The  API  is 8-bit clean and base-level conformant with the X/OPEN
-       curses  specification, XSI curses (that is, it implements all BASE
-       level  features,  and  most  EXTENDED  features). It includes many
-       function calls not supported under SVr4 curses (but portability of
-       all calls is documented so you can use the SVr4 subset only).
+     * The  API  is 8-bit clean and base-level conformant with the X/Open
+       Curses  specification, XSI curses (that is, it implements all BASE
+       level  features,  and  almost  all EXTENDED features). It includes
+       many   function   calls  not  supported  under  SVr4  curses  (but
+       portability  of  all  calls  is documented so you can use the SVr4
+       subset only).
      * Unlike  SVr3 curses, ncurses can write to the rightmost-bottommost
        corner  of  the  screen  if  your terminal has an insert-character
        capability.
@@ -461,10 +510,19 @@ Features of ncurses
        user's $HOME/.terminfo directory.
      * The  table-of-entries  utility  toe makes it easy for users to see
        exactly what terminal types are available on the system.
-     * The library meets the XSI requirement that every macro entry point
-       has  a  corresponding  function  which  may be linked (and will be
-       prototype-checked)  if  the  macro  definition  is  disabled  with
-       #undef.
+     * X/Open  Curses  permits  most  functions  it  specifies to be made
+       available as macros as well. ncurses does this
+          + to  improve  performance,  e.g.,  for  operations composed of
+            simpler functions such as cursor movement following by adding
+            text to the screen,
+          + to simplify the implementation by reusing functions which use
+            common parameters, e.g., the standard screen stdscr, and
+          + to provide functions that return values via their parameters
+       Except   for   the   last   case,  ncurses  provides  a  non-macro
+       implementation  of  the  function.  If  the  macro  definition  is
+       disabled with #undef, or by defining NCURSES_NOMACROS the function
+       may  be  linked  (and  its  calls  will  be  checked  against  the
+       prototype).
      * Extensive  documentation  is  provided (see the Additional Reading
        section of the ncurses FAQ for online documentation).
 
@@ -517,7 +575,8 @@ Applications using ncurses
    nvi
           New vi uses ncurses.
 
-          https://sites.google.com/a/bostic.com/keithbostic/vi
+          https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-
+          vi-editor-home-page
 
    ranger
           A console file manager with VI key bindings in Python.
@@ -539,7 +598,7 @@ Applications using ncurses
    minicom
           terminal emulator for serial modem connections
 
-          https://alioth.debian.org/projects/minicom/
+          https://salsa.debian.org/minicom-team/minicom
 
    mosh
           a replacement for ssh.
@@ -620,12 +679,12 @@ Development activities
 
    Patches to the current release are made available at
 
-     https://invisible-island.net/archives/ncurses/6.3/ and
-     https://invisible-mirror.net/archives/ncurses/6.3/ .
+     https://invisible-island.net/archives/ncurses/6.4/ and
+     https://invisible-mirror.net/archives/ncurses/6.4/ .
 
    There is an archive of the mailing list here:
 
-     http://lists.gnu.org/archive/html/bug-ncurses (also https)
+     https://lists.gnu.org/archive/html/bug-ncurses .
 
 Related resources
 
@@ -645,11 +704,12 @@ Other resources
    terminal description file once maintained by Eric Raymond . Unlike the
    older  version, the termcap and terminfo data are provided in the same
    file, which also provides several user-definable extensions beyond the
-   X/Open specification.
+   X/Open Curses specification.
 
    You  can  find  lots  of  information  on  terminal-related topics not
-   covered  in  the  terminfo  file  at  Richard  Shuford's archive . The
-   collection of computer manuals at bitsavers.org has also been useful.
+   covered  in the terminfo file in Richard Shuford's archive (original).
+   The  collection  of  computer  manuals  at bitsavers.org has also been
+   useful.
 
      * Overview
      * Release Notes
index 994e87ceed26b36b89f778647c6c33db793df25b..6fe1f946e7e6a9ee195ff4f25ca0eb4387ed29db 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright 2018-2022,2023 Thomas E. Dickey                                *
+dnl Copyright 2018-2023,2024 Thomas E. Dickey                                *
 dnl Copyright 2010-2017,2018 Free Software Foundation, Inc.                  *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -29,7 +29,7 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey
 dnl
-dnl $Id: aclocal.m4,v 1.198 2023/01/11 09:05:23 tom Exp $
+dnl $Id: aclocal.m4,v 1.210 2024/03/30 22:17:13 tom Exp $
 dnl Macros used in NCURSES Ada95 auto-configuration script.
 dnl
 dnl These macros are maintained separately from NCURSES.  The copyright on
@@ -594,7 +594,7 @@ AC_SUBST(BUILD_EXEEXT)
 AC_SUBST(BUILD_OBJEXT)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23
+dnl CF_C11_NORETURN version: 4 updated: 2023/02/18 17:41:25
 dnl ---------------
 AC_DEFUN([CF_C11_NORETURN],
 [
@@ -608,8 +608,7 @@ AC_MSG_RESULT($enable_stdnoreturn)
 if test $enable_stdnoreturn = yes; then
 AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
        [AC_TRY_COMPILE([
-#include <stdio.h>
-#include <stdlib.h>
+$ac_includes_default
 #include <stdnoreturn.h>
 static _Noreturn void giveup(void) { exit(0); }
        ],
@@ -633,7 +632,7 @@ AC_SUBST(HAVE_STDNORETURN_H)
 AC_SUBST(STDC_NORETURN)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20
+dnl CF_CC_ENV_FLAGS version: 11 updated: 2023/02/20 11:15:46
 dnl ---------------
 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
 dnl into CC.  This will not help with broken scripts that wrap the compiler
@@ -674,7 +673,7 @@ case "$CC" in
        AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
        # humor him...
        cf_prog=`echo "$CC" | sed -e 's/        / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
-       cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
+       cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
        CC="$cf_prog"
        for cf_arg in $cf_flags
        do
@@ -834,7 +833,7 @@ then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04
+dnl CF_CLANG_COMPILER version: 9 updated: 2023/02/18 17:41:25
 dnl -----------------
 dnl Check if the given compiler is really clang.  clang's C driver defines
 dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
@@ -856,7 +855,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
        AC_TRY_COMPILE([],[
 #ifdef __clang__
 #else
-make an error
+#error __clang__ is not defined
 #endif
 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
 ],[])
@@ -902,7 +901,7 @@ if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
 fi
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
+dnl CF_CONST_X_STRING version: 8 updated: 2023/12/01 17:22:50
 dnl -----------------
 dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
 dnl character-strings.
@@ -937,6 +936,7 @@ AC_TRY_COMPILE(
 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
        AC_TRY_COMPILE(
                [
+#undef  _CONST_X_STRING
 #define _CONST_X_STRING        /* X11R7.8 (perhaps) */
 #undef  XTSTRINGDEFINES        /* X11R5 and later */
 #include <stdlib.h>
@@ -962,7 +962,7 @@ esac
 ])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
+dnl CF_CONST_X_STRING version: 8 updated: 2023/12/01 17:22:50
 dnl -----------------
 dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
 dnl character-strings.
@@ -997,6 +997,7 @@ AC_TRY_COMPILE(
 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
        AC_TRY_COMPILE(
                [
+#undef  _CONST_X_STRING
 #define _CONST_X_STRING        /* X11R7.8 (perhaps) */
 #undef  XTSTRINGDEFINES        /* X11R5 and later */
 #include <stdlib.h>
@@ -1394,6 +1395,33 @@ fi
 AC_SUBST(EXTRA_CFLAGS)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_FUNC_GETTIME version: 2 updated: 2023/02/25 08:45:56
+dnl ---------------
+dnl Check for gettimeofday or clock_gettime.  In 2023, the former is still more
+dnl widely supported, but "deprecated" (2008), so we will use the latter if it
+dnl is available, to reduce compiler warnings.
+AC_DEFUN([CF_FUNC_GETTIME],[
+AC_CACHE_CHECK(for clock_gettime,cf_cv_func_clock_gettime,[
+               AC_TRY_LINK([#include <time.h>],
+               [struct timespec ts;
+               int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts],
+               [cf_cv_func_clock_gettime=yes],
+               [cf_cv_func_clock_gettime=no])
+])
+
+if test "$cf_cv_func_clock_gettime" = yes
+then
+       AC_DEFINE(HAVE_CLOCK_GETTIME,1,[Define to 1 if we have clock_gettime function])
+else
+AC_CHECK_FUNC(gettimeofday,
+       AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[
+
+AC_CHECK_LIB(bsd, gettimeofday,
+       AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function])
+       CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25
 dnl -----------------
 dnl Test for availability of useful gcc __attribute__ directives to quiet
@@ -1507,7 +1535,7 @@ rm -rf ./conftest*
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
+dnl CF_GCC_VERSION version: 9 updated: 2023/03/05 14:30:13
 dnl --------------
 dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
 dnl compatible), attempt to determine if icc/clang is actually used.
@@ -1516,7 +1544,7 @@ AC_REQUIRE([AC_PROG_CC])
 GCC_VERSION=none
 if test "$GCC" = yes ; then
        AC_MSG_CHECKING(version of $CC)
-       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
+       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
        test -z "$GCC_VERSION" && GCC_VERSION=unknown
        AC_MSG_RESULT($GCC_VERSION)
 fi
@@ -2100,7 +2128,7 @@ CPPFLAGS="-I. $CPPFLAGS"
 AC_SUBST(CPPFLAGS)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21
+dnl CF_INSTALL_OPTS version: 3 updated: 2023/06/03 15:17:30
 dnl ---------------
 dnl prompt for/fill-in useful install-program options
 AC_DEFUN([CF_INSTALL_OPTS],
@@ -2108,6 +2136,7 @@ AC_DEFUN([CF_INSTALL_OPTS],
 CF_INSTALL_OPT_S
 CF_INSTALL_OPT_P
 CF_INSTALL_OPT_O
+CF_INSTALL_OPT_STRIP_PROG
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42
@@ -2194,7 +2223,73 @@ fi
 AC_SUBST(INSTALL_OPT_S)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59
+dnl CF_INSTALL_OPT_STRIP_PROG version: 1 updated: 2023/06/03 15:17:30
+dnl -------------------------
+dnl Provide an option for overriding the strip program used in install "-s"
+dnl
+dnl coreutils install provides a --strip-program option
+dnl FreeBSD uses STRIPBIN environment variable, while NetBSD and OpenBSD use
+dnl STRIP environment variable.  Other versions of install do not support this.
+AC_DEFUN([CF_INSTALL_OPT_STRIP_PROG],
+[
+AC_REQUIRE([CF_INSTALL_OPT_S])
+if test -n "$INSTALL_OPT_S"
+then
+       AC_MSG_CHECKING(if you want to specify strip-program)
+       AC_ARG_WITH(strip-program,
+               [  --with-strip-program=XX specify program to use when stripping in install],
+               [with_strip_program=$withval],
+               [with_strip_program=no])
+       AC_MSG_RESULT($with_strip_program)
+       if test "$with_strip_program" != no
+       then
+               AC_MSG_CHECKING(if strip-program is supported with this installer)
+               cf_install_program=`echo "$INSTALL" | sed -e 's%[[ ]]*[[ ]]-.%%'`
+               check_install_strip=no
+               if test -f "$cf_install_program"
+               then
+                       check_install_version=`"$cf_install_program" --version 2>/dev/null | head -n 1 | grep coreutils`
+                       if test -n "$check_install_version"
+                       then
+                               check_install_strip="option"
+                       else
+                               for check_strip_variable in STRIPBIN STRIP
+                               do
+                                       if strings "$cf_install_program" | grep "^$check_strip_variable[$]" >/dev/null
+                                       then
+                                               check_install_strip="environ"
+                                               break
+                                       fi
+                               done
+                       fi
+               fi
+               AC_MSG_RESULT($check_install_strip)
+               case "$check_install_strip" in
+               (no)
+                       AC_MSG_WARN($cf_install_program does not support strip program option)
+                       with_strip_program=no
+                       ;;
+               (environ)
+                       cat >install.tmp <<-CF_EOF
+                       #! $SHELL
+                       STRIPBIN="$with_strip_program" \\
+                       STRIP="$with_strip_program" \\
+                       $INSTALL "[$]@"
+                       CF_EOF
+                       INSTALL="`pwd`/install.tmp"
+                       chmod +x "$INSTALL"
+                       CF_VERBOSE(created $INSTALL)
+                       ;;
+               (option)
+                       INSTALL_OPT_S="$INSTALL_OPT_S --strip-program=\"$with_strip_program\""
+                       ;;
+               esac
+       fi
+fi
+AC_SUBST(INSTALL_OPT_S)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INTEL_COMPILER version: 9 updated: 2023/02/18 17:41:25
 dnl -----------------
 dnl Check if the given compiler is really the Intel compiler for Linux.  It
 dnl tries to imitate gcc, but does not return an error when it finds a mismatch
@@ -2220,7 +2315,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
                AC_TRY_COMPILE([],[
 #ifdef __INTEL_COMPILER
 #else
-make an error
+#error __INTEL_COMPILER is not defined
 #endif
 ],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
@@ -2232,7 +2327,7 @@ cf_save_CFLAGS="$cf_save_CFLAGS -we147"
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_LARGEFILE version: 12 updated: 2020/03/19 20:23:48
+dnl CF_LARGEFILE version: 13 updated: 2023/12/03 19:09:59
 dnl ------------
 dnl Add checks for large file support.
 AC_DEFUN([CF_LARGEFILE],[
@@ -2266,11 +2361,15 @@ ifdef([AC_FUNC_FSEEKO],[
 #pragma GCC diagnostic error "-Wincompatible-pointer-types"
 #include <sys/types.h>
 #include <dirent.h>
+
+#ifndef __REDIRECT
+/* if transitional largefile support is setup, this is true */
+extern struct dirent64 * readdir(DIR *);
+#endif
                ],[
-               /* if transitional largefile support is setup, this is true */
-               extern struct dirent64 * readdir(DIR *);
-               struct dirent64 *x = readdir((DIR *)0);
-               struct dirent *y = readdir((DIR *)0);
+               DIR *dp = opendir(".");
+               struct dirent64 *x = readdir(dp);
+               struct dirent *y = readdir(dp);
                int z = x - y;
                (void)z;
                ],
@@ -2501,7 +2600,7 @@ AC_DEFUN([CF_LIB_TYPE],
        test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_LINK_DATAONLY version: 13 updated: 2020/02/08 15:59:30
+dnl CF_LINK_DATAONLY version: 15 updated: 2023/12/03 10:03:10
 dnl ----------------
 dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
 dnl only data (i.e., no functions), for example NeXT.  On those systems we'll
@@ -2523,17 +2622,21 @@ EOF
        rm -f conftest.$ac_ext data.o
        cat >conftest.$ac_ext <<EOF
 #line __oline__ "configure"
+extern int testfunc(void);
+#if defined(NeXT)
 int    testfunc(void)
 {
-#if defined(NeXT)
        ${cf_cv_main_return:-return}(1);        /* I'm told this linker is broken */
+}
 #else
-       extern int testdata[[3]];
+extern int testdata[[3]];
+int    testfunc(void)
+{
        return testdata[[0]] == 123
           &&  testdata[[1]] == 456
           &&  testdata[[2]] == 789;
-#endif
 }
+#endif
 EOF
        if AC_TRY_EVAL(ac_compile); then
                mv conftest.o func.o && \
@@ -2544,9 +2647,9 @@ EOF
        cf_saveLIBS="$LIBS"
        LIBS="conftest.a $LIBS"
        AC_TRY_RUN([
+       extern int testfunc(void);
        int main(void)
        {
-               extern int testfunc();
                ${cf_cv_main_return:-return} (!testfunc());
        }
        ],
@@ -2758,7 +2861,7 @@ fi
 test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_MKSTEMP version: 12 updated: 2023/01/05 17:53:11
+dnl CF_MKSTEMP version: 13 updated: 2023/12/01 17:22:50
 dnl ----------
 dnl Check for a working mkstemp.  This creates two files, checks that they are
 dnl successfully created and distinct (AmigaOS apparently fails on the last).
@@ -2773,7 +2876,7 @@ $ac_includes_default
 
 int main(void)
 {
-       char *tmpl = "conftestXXXXXX";
+       static char tmpl[] = "conftestXXXXXX";
        char name[2][80];
        int n;
        int result = 0;
@@ -2908,7 +3011,7 @@ AC_SUBST(cf_cv_type_of_bool)dnl
 
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_CC_CHECK version: 5 updated: 2020/12/31 20:19:42
+dnl CF_NCURSES_CC_CHECK version: 6 updated: 2023/02/18 17:47:58
 dnl -------------------
 dnl Check if we can compile with ncurses' header file
 dnl $1 is the cache variable to set
@@ -2925,7 +3028,7 @@ AC_DEFUN([CF_NCURSES_CC_CHECK],[
 #ifdef NCURSES_VERSION
 ]ifelse($3,ncursesw,[
 #ifndef WACS_BSSB
-       make an error
+       #error WACS_BSSB is not defined
 #endif
 ])[
 printf("%s\\n", NCURSES_VERSION);
@@ -2933,7 +3036,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
        ]
@@ -3256,7 +3359,7 @@ CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root)
 AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_VERSION version: 17 updated: 2023/01/05 18:54:02
+dnl CF_NCURSES_VERSION version: 18 updated: 2024/01/07 06:34:16
 dnl ------------------
 dnl Check for the version of ncurses, to aid in reporting bugs, etc.
 dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS.  We don't use
@@ -3286,7 +3389,7 @@ int main(void)
 # ifdef __NCURSES_H
        fprintf(fp, "old\\n");
 # else
-       make an error
+       #error expected ncurses header to define __NCURSES_H
 # endif
 #endif
        ${cf_cv_main_return:-return}(0);
@@ -3393,7 +3496,7 @@ case ".[$]$1" in
 esac
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_PKG_CONFIG version: 12 updated: 2021/10/10 20:18:09
+dnl CF_PKG_CONFIG version: 13 updated: 2023/10/28 11:59:01
 dnl -------------
 dnl Check for the package-config program, unless disabled by command-line.
 dnl
@@ -3402,7 +3505,7 @@ AC_DEFUN([CF_PKG_CONFIG],
 [
 AC_MSG_CHECKING(if you want to use pkg-config)
 AC_ARG_WITH(pkg-config,
-       [  --with-pkg-config{=path} enable/disable use of pkg-config],
+       [[  --with-pkg-config[=CMD] enable/disable use of pkg-config and its name CMD]],
        [cf_pkg_config=$withval],
        [cf_pkg_config=yes])
 AC_MSG_RESULT($cf_pkg_config)
@@ -3431,7 +3534,7 @@ fi
 AC_SUBST(PKG_CONFIG)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
+dnl CF_POSIX_C_SOURCE version: 12 updated: 2023/02/18 17:41:25
 dnl -----------------
 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
 dnl
@@ -3462,7 +3565,7 @@ AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
        CF_MSG_LOG(if the symbol is already defined go no further)
        AC_TRY_COMPILE([#include <sys/types.h>],[
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif],
        [cf_cv_posix_c_source=no],
        [cf_want_posix_source=no
@@ -3481,7 +3584,7 @@ make an error
         if test "$cf_want_posix_source" = yes ; then
                AC_TRY_COMPILE([#include <sys/types.h>],[
 #ifdef _POSIX_SOURCE
-make an error
+#error _POSIX_SOURCE is defined
 #endif],[],
                cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
         fi
@@ -3492,7 +3595,7 @@ make an error
         CF_MSG_LOG(if the second compile does not leave our definition intact error)
         AC_TRY_COMPILE([#include <sys/types.h>],[
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif],,
         [cf_cv_posix_c_source=no])
         CFLAGS="$cf_save_CFLAGS"
@@ -3880,7 +3983,7 @@ do
 done
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_SHARED_OPTS version: 107 updated: 2021/09/04 06:47:34
+dnl CF_SHARED_OPTS version: 111 updated: 2024/03/29 20:08:49
 dnl --------------
 dnl --------------
 dnl Attempt to determine the appropriate CC/LD options for creating a shared
@@ -3926,9 +4029,9 @@ AC_DEFUN([CF_SHARED_OPTS],
        cf_ld_rpath_opt=
        test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
 
-       AC_MSG_CHECKING(if release/abi version should be used for shared libs)
+       AC_MSG_CHECKING(whether to use release or ABI version in shared library file names)
        AC_ARG_WITH(shlib-version,
-       [  --with-shlib-version=X  Specify rel or abi version for shared libs],
+       [[  --with-shlib-version[={rel|abi}] use release or ABI version in shared library file names]],
        [test -z "$withval" && withval=auto
        case "$withval" in
        (yes)
@@ -3970,7 +4073,7 @@ AC_DEFUN([CF_SHARED_OPTS],
                for CC_SHARED_OPTS in -fPIC -fpic ''
                do
                        CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
-                       AC_TRY_COMPILE([#include <stdio.h>],[int x = 1],[break],[])
+                       AC_TRY_COMPILE([#include <stdio.h>],[int x = 1; (void)x],[break],[])
                done
                AC_MSG_RESULT($CC_SHARED_OPTS)
                CFLAGS="$cf_save_CFLAGS"
@@ -4340,11 +4443,11 @@ CF_EOF
                # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
                # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
                if test "$DFT_LWR_MODEL" = "shared" ; then
-                       LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
+                       LOCAL_LDFLAGS="-R\$(LOCAL_LIBDIR):\${libdir}"
                        LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
                fi
                if test "$cf_cv_enable_rpath" = yes ; then
-                       EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS"
+                       EXTRA_LDFLAGS="-R\${libdir} $EXTRA_LDFLAGS"
                fi
                CF_SHARED_SONAME
                if test "$GCC" != yes; then
@@ -4356,9 +4459,9 @@ CF_EOF
                        done
                        CFLAGS="$cf_save_CFLAGS"
                        CC_SHARED_OPTS=$cf_shared_opts
-                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -'$cf_cv_shared_soname' -o $[@]'
+                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -Wl,-h,'$cf_cv_shared_soname' -o $[@]'
                else
-                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -'$cf_cv_shared_soname' -o $[@]'
+                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -Wl,-h,'$cf_cv_shared_soname' -o $[@]'
                fi
                ;;
        (sysv5uw7*|unix_sv*)
@@ -4644,26 +4747,26 @@ weak_symbol(fopen);
 ])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_COMPILER version: 2 updated: 2010/06/26 17:35:58
+dnl CF_WITH_ADA_COMPILER version: 3 updated: 2023/10/28 11:59:01
 dnl --------------------
 dnl Command-line option to specify the Ada95 compiler.
 AC_DEFUN([CF_WITH_ADA_COMPILER],[
-AC_MSG_CHECKING(for ada-compiler)
+AC_MSG_CHECKING(for Ada95 compiler)
 AC_ARG_WITH(ada-compiler,
-       [  --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)],
+       [[  --with-ada-compiler[=CMD] use CMD as Ada95 compiler (default: gnatmake)]],
        [cf_ada_compiler=$withval],
        [cf_ada_compiler=gnatmake])
 AC_SUBST(cf_ada_compiler)
 AC_MSG_RESULT($cf_ada_compiler)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_INCLUDE version: 2 updated: 2010/06/26 17:35:58
+dnl CF_WITH_ADA_INCLUDE version: 3 updated: 2023/10/28 11:59:01
 dnl -------------------
 dnl Command-line option to specify where Ada includes will install.
 AC_DEFUN([CF_WITH_ADA_INCLUDE],[
-AC_MSG_CHECKING(for ada-include)
+AC_MSG_CHECKING(for Ada95 include directory)
 CF_WITH_PATH(ada-include,
-   [  --with-ada-include=DIR  Ada includes are in DIR],
+   [  --with-ada-include=DIR  find Ada95 includes in DIR],
    ADA_INCLUDE,
    PREFIX/share/ada/adainclude,
    [$]prefix/share/ada/adainclude)
@@ -4671,16 +4774,16 @@ AC_SUBST(ADA_INCLUDE)
 AC_MSG_RESULT($ADA_INCLUDE)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_LIBNAME version: 1 updated: 2019/09/07 18:59:41
+dnl CF_WITH_ADA_LIBNAME version: 3 updated: 2023/11/22 20:48:30
 dnl -------------------
 dnl CF_WITH_ADA_LIBNAME
 dnl -------------------
 dnl Command-line option to specify how to name the resulting Ada library.
 dnl $1 = default value
 AC_DEFUN([CF_WITH_ADA_LIBNAME],[
-AC_MSG_CHECKING(for ada-libname)
+AC_MSG_CHECKING(for Ada95 curses library name)
 AC_ARG_WITH(ada-libname,
-   [  --with-ada-libname=XXX  override default Ada library-name],
+   [[  --with-ada-libname[=XXX]  use XXX as Ada95 library name]],
    ADA_LIBNAME=[$]withval,
    ADA_LIBNAME=$1)
 case "x$ADA_LIBNAME" in
@@ -4692,13 +4795,13 @@ AC_SUBST(ADA_LIBNAME)
 AC_MSG_RESULT($ADA_LIBNAME)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58
+dnl CF_WITH_ADA_OBJECTS version: 3 updated: 2023/10/28 11:59:01
 dnl -------------------
 dnl Command-line option to specify where Ada objects will install.
 AC_DEFUN([CF_WITH_ADA_OBJECTS],[
-AC_MSG_CHECKING(for ada-objects)
+AC_MSG_CHECKING(for Ada95 object directory)
 CF_WITH_PATH(ada-objects,
-   [  --with-ada-objects=DIR  Ada objects are in DIR],
+   [  --with-ada-objects=DIR  find Ada95 objects in DIR],
    ADA_OBJECTS,
    PREFIX/lib/ada/adalib,
    [$]prefix/lib/ada/adalib)
@@ -4706,28 +4809,34 @@ AC_SUBST(ADA_OBJECTS)
 AC_MSG_RESULT($ADA_OBJECTS)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_SHAREDLIB version: 5 updated: 2018/07/21 19:10:35
+dnl CF_WITH_ADA_SHAREDLIB version: 6 updated: 2023/10/28 11:59:01
 dnl ---------------------
-dnl Command-line option to specify if an Ada95 shared-library should be built,
+dnl Command-line option to specify if an Ada95 shared library should be built,
 dnl and optionally what its soname should be.
 AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[
 AC_REQUIRE([CF_GNAT_PROJECTS])
-AC_MSG_CHECKING(if an Ada95 shared-library should be built)
+AC_MSG_CHECKING(whether to build an Ada95 shared library)
 AC_ARG_WITH(ada-sharedlib,
-       [  --with-ada-sharedlib=soname build shared-library (requires GNAT projects)],
+       [  --with-ada-sharedlib    build Ada95 shared library; requires GNAT project support],
        [with_ada_sharedlib=$withval],
        [with_ada_sharedlib=no])
-AC_MSG_RESULT($with_ada_sharedlib)
+cf_ada_sharedlib_warn=no
 
 if test "x$with_ada_sharedlib" != xno
 then
        if test "x$cf_gnat_projects" != xyes
        then
-               AC_MSG_WARN(disabling shared-library since GNAT projects are not supported)
                with_ada_sharedlib=no
+               cf_ada_sharedlib_warn=yes
        fi
 fi
 
+AC_MSG_RESULT($with_ada_sharedlib)
+if test "x$cf_ada_sharedlib_warn" != xno
+then
+       AC_MSG_WARN(disabling Ada95 shared library since GNAT projects are not supported)
+fi
+
 ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
 MAKE_ADA_SHAREDLIB="#"
 
@@ -4815,7 +4924,7 @@ eval $3="$withval"
 AC_SUBST($3)dnl
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PKG_CONFIG_LIBDIR version: 20 updated: 2022/01/29 17:03:42
+dnl CF_WITH_PKG_CONFIG_LIBDIR version: 23 updated: 2023/11/22 20:48:30
 dnl -------------------------
 dnl Allow the choice of the pkg-config library directory to be overridden.
 dnl
@@ -4826,7 +4935,8 @@ dnl b) $PKG_CONFIG_LIBDIR (tested second, added if set)
 dnl c) builtin-list (added if $PKG_CONFIG_LIBDIR is not set)
 dnl
 dnl pkgconf (used with some systems such as FreeBSD in place of pkg-config)
-dnl optionally ignores $PKG_CONFIG_LIBDIR.
+dnl optionally ignores $PKG_CONFIG_LIBDIR.  Very old versions of pkg-config,
+dnl e.g., Solaris 10 also do not recognize $PKG_CONFIG_LIBDIR.
 AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[
 
 case "$PKG_CONFIG" in
@@ -4839,11 +4949,17 @@ case "$PKG_CONFIG" in
 esac
 
 # if $PKG_CONFIG_LIBDIR is set, try to use that
-cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[[         ]]*,,'`
+if test -n "$PKG_CONFIG_PATH"; then
+       cf_search_path=`echo "$PKG_CONFIG_PATH" | sed -e 's/:/ /g' -e 's,^[[    ]]*,,' -e 's,[[         ]]*$,,'`
+elif test -n "$PKG_CONFIG_LIBDIR"; then
+       cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[[  ]]*,,' -e 's,[[         ]]*$,,'`
+else
+       cf_search_path=auto
+fi
 
 # if the option is used, let that override.  otherwise default to "libdir"
 AC_ARG_WITH(pkg-config-libdir,
-       [  --with-pkg-config-libdir=XXX use given directory for installing pc-files],
+       [[  --with-pkg-config-libdir[=XXX] use given directory for installing pc-files]],
        [cf_search_path=$withval],
        [test "x$PKG_CONFIG" != xnone && test -z "$cf_search_path" && cf_search_path=libdir])
 
@@ -5012,7 +5128,7 @@ AC_ARG_WITH(system-type,
 ])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_SOURCE version: 63 updated: 2022/12/29 10:10:26
+dnl CF_XOPEN_SOURCE version: 67 updated: 2023/09/06 18:55:27
 dnl ---------------
 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
 dnl or adapt to the vendor's definitions to get equivalent functionality,
@@ -5021,6 +5137,18 @@ dnl
 dnl Parameters:
 dnl    $1 is the nominal value for _XOPEN_SOURCE
 dnl    $2 is the nominal value for _POSIX_C_SOURCE
+dnl
+dnl The default case prefers _XOPEN_SOURCE over _POSIX_C_SOURCE if the
+dnl implementation predefines it, because X/Open and most implementations agree
+dnl that the latter is a legacy or "aligned" value.
+dnl
+dnl Because _XOPEN_SOURCE is preferred, if defining _POSIX_C_SOURCE turns
+dnl that off, then refrain from setting _POSIX_C_SOURCE explicitly.
+dnl
+dnl References:
+dnl https://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html
+dnl https://docs.oracle.com/cd/E19253-01/816-5175/standards-5/index.html
+dnl https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
 AC_DEFUN([CF_XOPEN_SOURCE],[
 AC_REQUIRE([AC_CANONICAL_HOST])
 AC_REQUIRE([CF_POSIX_VISIBLE])
@@ -5035,9 +5163,6 @@ case "$host_os" in
 (aix[[4-7]]*)
        cf_xopen_source="-D_ALL_SOURCE"
        ;;
-(msys)
-       cf_XOPEN_SOURCE=600
-       ;;
 (darwin[[0-8]].*)
        cf_xopen_source="-D_APPLE_C_SOURCE"
        ;;
@@ -5063,7 +5188,7 @@ case "$host_os" in
        cf_xopen_source="-D_SGI_SOURCE"
        cf_XOPEN_SOURCE=
        ;;
-(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
        CF_GNU_SOURCE($cf_XOPEN_SOURCE)
        ;;
 (minix*)
@@ -5115,8 +5240,8 @@ case "$host_os" in
        cf_save_xopen_cppflags="$CPPFLAGS"
        CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
        # Some of these niche implementations use copy/paste, double-check...
-       if test "$cf_cv_xopen_source" != no ; then
-               CF_VERBOSE(checking if _POSIX_C_SOURCE inteferes)
+       if test "$cf_cv_xopen_source" = no ; then
+               CF_VERBOSE(checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE)
                AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[
                        AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable)
                        CPPFLAGS="$cf_save_xopen_cppflags"])
@@ -5135,7 +5260,7 @@ if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
        AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
        AC_TRY_COMPILE([#include <stdlib.h>],[
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif],
        [cf_XOPEN_SOURCE_set=yes],
        [cf_XOPEN_SOURCE_set=no])
@@ -5144,7 +5269,7 @@ make an error
        then
                AC_TRY_COMPILE([#include <stdlib.h>],[
 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
-make an error
+#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
 #endif],
                [cf_XOPEN_SOURCE_set_ok=yes],
                [cf_XOPEN_SOURCE_set_ok=no])
@@ -5165,22 +5290,20 @@ dnl Trim something using sed, then trim extra whitespace
 dnl $1 = extra parameters, e.g., in CF_STRIP_G_OPT
 define([CF__SED_TRIMBLANKS],[sed ifelse($1,,,[$1] )-e 's%[[    ]]% %g' -e 's% [[ ]]*% %g' -e 's%^ %%' -e 's% [$]%%'])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF__XOPEN_SOURCE_BODY version: 1 updated: 2022/09/10 15:17:35
+dnl CF__XOPEN_SOURCE_BODY version: 2 updated: 2023/02/18 17:41:25
 dnl ---------------------
 dnl body of test when test-compiling for _XOPEN_SOURCE check
 define([CF__XOPEN_SOURCE_BODY],
 [
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF__XOPEN_SOURCE_HEAD version: 1 updated: 2022/09/10 15:17:03
+dnl CF__XOPEN_SOURCE_HEAD version: 2 updated: 2023/02/18 17:41:25
 dnl ---------------------
 dnl headers to include when test-compiling for _XOPEN_SOURCE check
 define([CF__XOPEN_SOURCE_HEAD],
 [
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 ])
index c1c92548485d96bc59d99793261fe4fcc8d2bae7..8c01a2936cdca5ca6f7ca6c0cc3d9365d72ff836 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
-# From configure.in Revision: 1.88 .
+# From configure.in Revision: 1.91 .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52.20230114.
+# Generated by Autoconf 2.52.20231210.
 #
 # Copyright 2003-2022,2023     Thomas E. Dickey
 # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
@@ -704,8 +704,9 @@ Optional Features:
 General Options:
   --with-system-type=XXX  test: override derived host system-type
   --disable-stripping     do not strip (debug info) installed executables
-  --with-pkg-config{=path} enable/disable use of pkg-config
-  --with-pkg-config-libdir=XXX use given directory for installing pc-files
+  --with-strip-program=XX specify program to use when stripping in install
+  --with-pkg-config[=CMD] enable/disable use of pkg-config and its name CMD
+  --with-pkg-config-libdir[=XXX] use given directory for installing pc-files
   --without-tests         suppress build with test-programs
   --enable-mixed-case     tic should assume mixed-case filenames
   --with-install-prefix   prefixes actual install-location ($DESTDIR)
@@ -721,7 +722,7 @@ Options to Specify the Libraries Built/Used:
   --with-curses-dir=DIR   directory in which (n)curses is installed
   --enable-widec          compile with wide-char/UTF-8 code
   --with-lib-prefix       override library-prefix
-  --with-shlib-version=X  Specify rel or abi version for shared libs
+  --with-shlib-version[={rel|abi}] use release or ABI version in shared library file names
   --enable-rpath-link     link sample programs with rpath option
 Fine-Tuning Your Configuration:
   --enable-broken_linker  compile with broken-linker support code
@@ -747,11 +748,11 @@ Testing/development Options:
   --with-trace            test: add trace() function to all models of ncurses
   --disable-gnat-projects test: disable GNAT projects even if usable
 Ada95 Binding Options:
-  --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)
-  --with-ada-include=DIR  Ada includes are in DIR (default: PREFIX/share/ada/adainclude)
-  --with-ada-objects=DIR  Ada objects are in DIR (default: PREFIX/lib/ada/adalib)
-  --with-ada-sharedlib=soname build shared-library (requires GNAT projects)
-  --with-ada-libname=XXX  override default Ada library-name
+  --with-ada-compiler[=CMD] use CMD as Ada95 compiler (default: gnatmake)
+  --with-ada-include=DIR  find Ada95 includes in DIR (default: PREFIX/share/ada/adainclude)
+  --with-ada-objects=DIR  find Ada95 objects in DIR (default: PREFIX/lib/ada/adalib)
+  --with-ada-sharedlib    build Ada95 shared library; requires GNAT project support
+  --with-ada-libname[=XXX]  use XXX as Ada95 library name
 
 Some influential environment variables:
   CC          C compiler command
@@ -822,7 +823,7 @@ This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
-generated by GNU Autoconf 2.52.20230114.  Invocation command line was
+generated by GNU Autoconf 2.52.20231210.  Invocation command line was
 
   $ $0 $@
 
@@ -946,7 +947,7 @@ if test -z "$CONFIG_SITE"; then
 fi
 for ac_site_file in $CONFIG_SITE; do
   if test -r "$ac_site_file"; then
-    { echo "$as_me:949: loading site script $ac_site_file" >&5
+    { echo "$as_me:950: loading site script $ac_site_file" >&5
 echo "$as_me: loading site script $ac_site_file" >&6;}
     cat "$ac_site_file" >&5
     . "$ac_site_file"
@@ -957,7 +958,7 @@ if test -r "$cache_file"; then
   # Some versions of bash will fail to source /dev/null (special
   # files actually), so we avoid doing that.
   if test -f "$cache_file"; then
-    { echo "$as_me:960: loading cache $cache_file" >&5
+    { echo "$as_me:961: loading cache $cache_file" >&5
 echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . $cache_file;;
@@ -965,7 +966,7 @@ echo "$as_me: loading cache $cache_file" >&6;}
     esac
   fi
 else
-  { echo "$as_me:968: creating cache $cache_file" >&5
+  { echo "$as_me:969: creating cache $cache_file" >&5
 echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
@@ -981,21 +982,21 @@ for ac_var in `(set) 2>&1 |
   eval ac_new_val="\$ac_env_${ac_var}_value"
   case "$ac_old_set,$ac_new_set" in
     set,)
-      { echo "$as_me:984: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+      { echo "$as_me:985: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { echo "$as_me:988: error: \`$ac_var' was not set in the previous run" >&5
+      { echo "$as_me:989: error: \`$ac_var' was not set in the previous run" >&5
 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
-        { echo "$as_me:994: error: \`$ac_var' has changed since the previous run:" >&5
+        { echo "$as_me:995: error: \`$ac_var' has changed since the previous run:" >&5
 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-        { echo "$as_me:996:   former value:  $ac_old_val" >&5
+        { echo "$as_me:997:   former value:  $ac_old_val" >&5
 echo "$as_me:   former value:  $ac_old_val" >&2;}
-        { echo "$as_me:998:   current value: $ac_new_val" >&5
+        { echo "$as_me:999:   current value: $ac_new_val" >&5
 echo "$as_me:   current value: $ac_new_val" >&2;}
         ac_cache_corrupted=:
       fi;;
@@ -1014,9 +1015,9 @@ echo "$as_me:   current value: $ac_new_val" >&2;}
   fi
 done
 if "$ac_cache_corrupted"; then
-  { echo "$as_me:1017: error: changes in the environment can compromise the build" >&5
+  { echo "$as_me:1018: error: changes in the environment can compromise the build" >&5
 echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:1019: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+  { { echo "$as_me:1020: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1045,10 +1046,10 @@ esac
 echo "#! $SHELL" >conftest.sh
 echo  "exit 0"   >>conftest.sh
 chmod +x conftest.sh
-if { (echo "$as_me:1048: PATH=\".;.\"; conftest.sh") >&5
+if { (echo "$as_me:1049: PATH=\".;.\"; conftest.sh") >&5
   (PATH=".;."; conftest.sh) 2>&5
   ac_status=$?
-  echo "$as_me:1051: \$? = $ac_status" >&5
+  echo "$as_me:1052: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   ac_path_separator=';'
 else
@@ -1080,7 +1081,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
   fi
 done
 if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:1083: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+  { { echo "$as_me:1084: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1090,11 +1091,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
 
 # Make sure we can run config.sub.
 $ac_config_sub sun4 >/dev/null 2>&1 ||
-  { { echo "$as_me:1093: error: cannot run $ac_config_sub" >&5
+  { { echo "$as_me:1094: error: cannot run $ac_config_sub" >&5
 echo "$as_me: error: cannot run $ac_config_sub" >&2;}
    { (exit 1); exit 1; }; }
 
-echo "$as_me:1097: checking build system type" >&5
+echo "$as_me:1098: checking build system type" >&5
 echo $ECHO_N "checking build system type... $ECHO_C" >&6
 if test "${ac_cv_build+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1103,23 +1104,23 @@ else
 test -z "$ac_cv_build_alias" &&
   ac_cv_build_alias=`$ac_config_guess`
 test -z "$ac_cv_build_alias" &&
-  { { echo "$as_me:1106: error: cannot guess build type; you must specify one" >&5
+  { { echo "$as_me:1107: error: cannot guess build type; you must specify one" >&5
 echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
    { (exit 1); exit 1; }; }
 ac_cv_build=`$ac_config_sub "$ac_cv_build_alias"` ||
-  { { echo "$as_me:1110: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+  { { echo "$as_me:1111: error: $ac_config_sub $ac_cv_build_alias failed." >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1115: result: $ac_cv_build" >&5
+echo "$as_me:1116: result: $ac_cv_build" >&5
 echo "${ECHO_T}$ac_cv_build" >&6
 build=$ac_cv_build
 build_cpu=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
 build_vendor=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 build_os=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
-echo "$as_me:1122: checking host system type" >&5
+echo "$as_me:1123: checking host system type" >&5
 echo $ECHO_N "checking host system type... $ECHO_C" >&6
 if test "${ac_cv_host+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1128,12 +1129,12 @@ else
 test -z "$ac_cv_host_alias" &&
   ac_cv_host_alias=$ac_cv_build_alias
 ac_cv_host=`$ac_config_sub "$ac_cv_host_alias"` ||
-  { { echo "$as_me:1131: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+  { { echo "$as_me:1132: error: $ac_config_sub $ac_cv_host_alias failed" >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1136: result: $ac_cv_host" >&5
+echo "$as_me:1137: result: $ac_cv_host" >&5
 echo "${ECHO_T}$ac_cv_host" >&6
 host=$ac_cv_host
 host_cpu=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1141,7 +1142,7 @@ host_vendor=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 host_os=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
 if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then
-       echo "$as_me:1144: checking target system type" >&5
+       echo "$as_me:1145: checking target system type" >&5
 echo $ECHO_N "checking target system type... $ECHO_C" >&6
 if test "${ac_cv_target+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1150,12 +1151,12 @@ else
 test "x$ac_cv_target_alias" = "x" &&
   ac_cv_target_alias=$ac_cv_host_alias
 ac_cv_target=`$ac_config_sub "$ac_cv_target_alias"` ||
-  { { echo "$as_me:1153: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+  { { echo "$as_me:1154: error: $ac_config_sub $ac_cv_target_alias failed" >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1158: result: $ac_cv_target" >&5
+echo "$as_me:1159: result: $ac_cv_target" >&5
 echo "${ECHO_T}$ac_cv_target" >&6
 target=$ac_cv_target
 target_cpu=`echo "$ac_cv_target" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1187,13 +1188,13 @@ else
 fi
 
 test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$as_me:1190: result: Configuring for $cf_cv_system_name" >&5
+test -n "$cf_cv_system_name" && echo "$as_me:1191: result: Configuring for $cf_cv_system_name" >&5
 echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
 
 if test ".$system_name" != ".$cf_cv_system_name" ; then
-       echo "$as_me:1194: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
+       echo "$as_me:1195: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
 echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6
-       { { echo "$as_me:1196: error: \"Please remove config.cache and try again.\"" >&5
+       { { echo "$as_me:1197: error: \"Please remove config.cache and try again.\"" >&5
 echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1201,7 +1202,7 @@ fi
 # Check whether --with-system-type or --without-system-type was given.
 if test "${with_system_type+set}" = set; then
   withval="$with_system_type"
-  { echo "$as_me:1204: WARNING: overriding system type to $withval" >&5
+  { echo "$as_me:1205: WARNING: overriding system type to $withval" >&5
 echo "$as_me: WARNING: overriding system type to $withval" >&2;}
        cf_cv_system_name=$withval
        host_os=$withval
@@ -1216,7 +1217,7 @@ for ac_prog in ggrep grep
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:1219: checking for $ac_word" >&5
+echo "$as_me:1220: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_GREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1231,7 +1232,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_GREP="$ac_prog"
-echo "$as_me:1234: found $ac_dir/$ac_word" >&5
+echo "$as_me:1235: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1239,10 +1240,10 @@ fi
 fi
 GREP=$ac_cv_prog_GREP
 if test -n "$GREP"; then
-  echo "$as_me:1242: result: $GREP" >&5
+  echo "$as_me:1243: result: $GREP" >&5
 echo "${ECHO_T}$GREP" >&6
 else
-  echo "$as_me:1245: result: no" >&5
+  echo "$as_me:1246: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1250,7 +1251,7 @@ fi
 done
 test -n "$GREP" || GREP=": "
 
-echo "$as_me:1253: checking for fgrep" >&5
+echo "$as_me:1254: checking for fgrep" >&5
 echo $ECHO_N "checking for fgrep... $ECHO_C" >&6
 if test "${ac_cv_path_FGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1262,7 +1263,7 @@ else
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:1265: checking for $ac_word" >&5
+echo "$as_me:1266: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_FGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1279,7 +1280,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_FGREP="$ac_dir/$ac_word"
-   echo "$as_me:1282: found $ac_dir/$ac_word" >&5
+   echo "$as_me:1283: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -1290,10 +1291,10 @@ fi
 FGREP=$ac_cv_path_FGREP
 
 if test -n "$FGREP"; then
-  echo "$as_me:1293: result: $FGREP" >&5
+  echo "$as_me:1294: result: $FGREP" >&5
 echo "${ECHO_T}$FGREP" >&6
 else
-  echo "$as_me:1296: result: no" >&5
+  echo "$as_me:1297: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1301,16 +1302,16 @@ fi
 done
 test -n "$FGREP" || FGREP=": "
 
-     test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:1304: error: cannot find workable fgrep" >&5
+     test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:1305: error: cannot find workable fgrep" >&5
 echo "$as_me: error: cannot find workable fgrep" >&2;}
    { (exit 1); exit 1; }; }
    fi
 fi
-echo "$as_me:1309: result: $ac_cv_path_FGREP" >&5
+echo "$as_me:1310: result: $ac_cv_path_FGREP" >&5
 echo "${ECHO_T}$ac_cv_path_FGREP" >&6
  FGREP="$ac_cv_path_FGREP"
 
-echo "$as_me:1313: checking for prefix" >&5
+echo "$as_me:1314: checking for prefix" >&5
 echo $ECHO_N "checking for prefix... $ECHO_C" >&6
 if test "x$prefix" = "xNONE" ; then
        case "$cf_cv_system_name" in
@@ -1322,11 +1323,11 @@ if test "x$prefix" = "xNONE" ; then
                ;;
        esac
 fi
-echo "$as_me:1325: result: $prefix" >&5
+echo "$as_me:1326: result: $prefix" >&5
 echo "${ECHO_T}$prefix" >&6
 
 if test "x$prefix" = "xNONE" ; then
-echo "$as_me:1329: checking for default include-directory" >&5
+echo "$as_me:1330: checking for default include-directory" >&5
 echo $ECHO_N "checking for default include-directory... $ECHO_C" >&6
 test -n "$verbose" && echo 1>&6
 for cf_symbol in \
@@ -1349,7 +1350,7 @@ do
        fi
        test -n "$verbose"  && echo "   tested $cf_dir" 1>&6
 done
-echo "$as_me:1352: result: $includedir" >&5
+echo "$as_me:1353: result: $includedir" >&5
 echo "${ECHO_T}$includedir" >&6
 fi
 
@@ -1366,7 +1367,7 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1369: checking for $ac_word" >&5
+echo "$as_me:1370: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1381,7 +1382,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1384: found $ac_dir/$ac_word" >&5
+echo "$as_me:1385: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1389,10 +1390,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1392: result: $CC" >&5
+  echo "$as_me:1393: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1395: result: no" >&5
+  echo "$as_me:1396: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1405,7 +1406,7 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:1408: checking for $ac_word" >&5
+echo "$as_me:1409: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1420,7 +1421,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1423: found $ac_dir/$ac_word" >&5
+echo "$as_me:1424: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1428,10 +1429,10 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:1431: result: $ac_ct_CC" >&5
+  echo "$as_me:1432: result: $ac_ct_CC" >&5
 echo "${ECHO_T}$ac_ct_CC" >&6
 else
-  echo "$as_me:1434: result: no" >&5
+  echo "$as_me:1435: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1441,32 +1442,32 @@ done
   CC=$ac_ct_CC
 fi
 
-test -z "$CC" && { { echo "$as_me:1444: error: no acceptable cc found in \$PATH" >&5
+test -z "$CC" && { { echo "$as_me:1445: error: no acceptable cc found in \$PATH" >&5
 echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
    { (exit 1); exit 1; }; }
 
 # Provide some information about the compiler.
-echo "$as_me:1449:" \
+echo "$as_me:1450:" \
      "checking for C compiler version" >&5
 ac_compiler=`set X $ac_compile; echo "$2"`
-{ (eval echo "$as_me:1452: \"$ac_compiler --version </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1453: \"$ac_compiler --version </dev/null >&5\"") >&5
   (eval $ac_compiler --version </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:1455: \$? = $ac_status" >&5
+  echo "$as_me:1456: \$? = $ac_status" >&5
   (exit "$ac_status"); }
-{ (eval echo "$as_me:1457: \"$ac_compiler -v </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1458: \"$ac_compiler -v </dev/null >&5\"") >&5
   (eval $ac_compiler -v </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:1460: \$? = $ac_status" >&5
+  echo "$as_me:1461: \$? = $ac_status" >&5
   (exit "$ac_status"); }
-{ (eval echo "$as_me:1462: \"$ac_compiler -V </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1463: \"$ac_compiler -V </dev/null >&5\"") >&5
   (eval $ac_compiler -V </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:1465: \$? = $ac_status" >&5
+  echo "$as_me:1466: \$? = $ac_status" >&5
   (exit "$ac_status"); }
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 1469 "configure"
+#line 1470 "configure"
 #include "confdefs.h"
 
 int
@@ -1482,13 +1483,13 @@ ac_clean_files="$ac_clean_files a.out a.exe"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-echo "$as_me:1485: checking for C compiler default output" >&5
+echo "$as_me:1486: checking for C compiler default output" >&5
 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
 ac_link_default=`echo "$ac_link" | sed 's/ -o *"conftest[^"]*"//'`
-if { (eval echo "$as_me:1488: \"$ac_link_default\"") >&5
+if { (eval echo "$as_me:1489: \"$ac_link_default\"") >&5
   (eval $ac_link_default) 2>&5
   ac_status=$?
-  echo "$as_me:1491: \$? = $ac_status" >&5
+  echo "$as_me:1492: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   # Find the output, starting from the most likely.  This scheme is
 # not robust to junk in `.', hence go to wildcards (a.*) only as a last
@@ -1511,34 +1512,34 @@ done
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-{ { echo "$as_me:1514: error: C compiler cannot create executables" >&5
+{ { echo "$as_me:1515: error: C compiler cannot create executables" >&5
 echo "$as_me: error: C compiler cannot create executables" >&2;}
    { (exit 77); exit 77; }; }
 fi
 
 ac_exeext=$ac_cv_exeext
-echo "$as_me:1520: result: $ac_file" >&5
+echo "$as_me:1521: result: $ac_file" >&5
 echo "${ECHO_T}$ac_file" >&6
 
 # Check the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
-echo "$as_me:1525: checking whether the C compiler works" >&5
+echo "$as_me:1526: checking whether the C compiler works" >&5
 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
 # If not cross compiling, check that we can run a simple program.
 if test "$cross_compiling" != yes; then
   if { ac_try='./$ac_file'
-  { (eval echo "$as_me:1531: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1532: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1534: \$? = $ac_status" >&5
+  echo "$as_me:1535: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
     cross_compiling=no
   else
     if test "$cross_compiling" = maybe; then
        cross_compiling=yes
     else
-       { { echo "$as_me:1541: error: cannot run C compiled programs.
+       { { echo "$as_me:1542: error: cannot run C compiled programs.
 If you meant to cross compile, use \`--host'." >&5
 echo "$as_me: error: cannot run C compiled programs.
 If you meant to cross compile, use \`--host'." >&2;}
@@ -1546,24 +1547,24 @@ If you meant to cross compile, use \`--host'." >&2;}
     fi
   fi
 fi
-echo "$as_me:1549: result: yes" >&5
+echo "$as_me:1550: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
 rm -f a.out a.exe "conftest$ac_cv_exeext"
 ac_clean_files=$ac_clean_files_save
 # Check the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
-echo "$as_me:1556: checking whether we are cross compiling" >&5
+echo "$as_me:1557: checking whether we are cross compiling" >&5
 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:1558: result: $cross_compiling" >&5
+echo "$as_me:1559: result: $cross_compiling" >&5
 echo "${ECHO_T}$cross_compiling" >&6
 
-echo "$as_me:1561: checking for executable suffix" >&5
+echo "$as_me:1562: checking for executable suffix" >&5
 echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:1563: \"$ac_link\"") >&5
+if { (eval echo "$as_me:1564: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:1566: \$? = $ac_status" >&5
+  echo "$as_me:1567: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
@@ -1579,25 +1580,25 @@ for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
   esac
 done
 else
-  { { echo "$as_me:1582: error: cannot compute EXEEXT: cannot compile and link" >&5
+  { { echo "$as_me:1583: error: cannot compute EXEEXT: cannot compile and link" >&5
 echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
 rm -f "conftest$ac_cv_exeext"
-echo "$as_me:1588: result: $ac_cv_exeext" >&5
+echo "$as_me:1589: result: $ac_cv_exeext" >&5
 echo "${ECHO_T}$ac_cv_exeext" >&6
 
 rm -f "conftest.$ac_ext"
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-echo "$as_me:1594: checking for object suffix" >&5
+echo "$as_me:1595: checking for object suffix" >&5
 echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
 if test "${ac_cv_objext+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 1600 "configure"
+#line 1601 "configure"
 #include "confdefs.h"
 
 int
@@ -1609,10 +1610,10 @@ main (void)
 }
 _ACEOF
 rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:1612: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1613: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1615: \$? = $ac_status" >&5
+  echo "$as_me:1616: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
   case $ac_file in
@@ -1624,24 +1625,24 @@ done
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-{ { echo "$as_me:1627: error: cannot compute OBJEXT: cannot compile" >&5
+{ { echo "$as_me:1628: error: cannot compute OBJEXT: cannot compile" >&5
 echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
 rm -f "conftest.$ac_cv_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:1634: result: $ac_cv_objext" >&5
+echo "$as_me:1635: result: $ac_cv_objext" >&5
 echo "${ECHO_T}$ac_cv_objext" >&6
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-echo "$as_me:1638: checking whether we are using the GNU C compiler" >&5
+echo "$as_me:1639: checking whether we are using the GNU C compiler" >&5
 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
 if test "${ac_cv_c_compiler_gnu+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 1644 "configure"
+#line 1645 "configure"
 #include "confdefs.h"
 
 int
@@ -1656,16 +1657,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1659: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1660: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1662: \$? = $ac_status" >&5
+  echo "$as_me:1663: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1665: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1666: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1668: \$? = $ac_status" >&5
+  echo "$as_me:1669: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_compiler_gnu=yes
 else
@@ -1677,19 +1678,19 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-echo "$as_me:1680: result: $ac_cv_c_compiler_gnu" >&5
+echo "$as_me:1681: result: $ac_cv_c_compiler_gnu" >&5
 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
 GCC=`test $ac_compiler_gnu = yes && echo yes`
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
 CFLAGS="-g"
-echo "$as_me:1686: checking whether $CC accepts -g" >&5
+echo "$as_me:1687: checking whether $CC accepts -g" >&5
 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
 if test "${ac_cv_prog_cc_g+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 1692 "configure"
+#line 1693 "configure"
 #include "confdefs.h"
 
 int
@@ -1701,16 +1702,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1704: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1705: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1707: \$? = $ac_status" >&5
+  echo "$as_me:1708: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1710: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1711: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1713: \$? = $ac_status" >&5
+  echo "$as_me:1714: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_prog_cc_g=yes
 else
@@ -1720,7 +1721,7 @@ ac_cv_prog_cc_g=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:1723: result: $ac_cv_prog_cc_g" >&5
+echo "$as_me:1724: result: $ac_cv_prog_cc_g" >&5
 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
@@ -1747,16 +1748,16 @@ cat >"conftest.$ac_ext" <<_ACEOF
 #endif
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1750: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1751: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1753: \$? = $ac_status" >&5
+  echo "$as_me:1754: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1756: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1757: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1759: \$? = $ac_status" >&5
+  echo "$as_me:1760: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   for ac_declaration in \
    ''\
@@ -1768,7 +1769,7 @@ if { (eval echo "$as_me:1750: \"$ac_compile\"") >&5
    'void exit (int);'
 do
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 1771 "configure"
+#line 1772 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 $ac_declaration
@@ -1781,16 +1782,16 @@ exit (42);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1784: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1785: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1787: \$? = $ac_status" >&5
+  echo "$as_me:1788: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1790: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1791: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1793: \$? = $ac_status" >&5
+  echo "$as_me:1794: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -1800,7 +1801,7 @@ continue
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 1803 "configure"
+#line 1804 "configure"
 #include "confdefs.h"
 $ac_declaration
 int
@@ -1812,16 +1813,16 @@ exit (42);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1815: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1816: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1818: \$? = $ac_status" >&5
+  echo "$as_me:1819: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1821: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1822: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1824: \$? = $ac_status" >&5
+  echo "$as_me:1825: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -1851,11 +1852,11 @@ ac_main_return="return"
 
 GCC_VERSION=none
 if test "$GCC" = yes ; then
-       echo "$as_me:1854: checking version of $CC" >&5
+       echo "$as_me:1855: checking version of $CC" >&5
 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
-       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
+       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[^(]*([^)][^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
        test -z "$GCC_VERSION" && GCC_VERSION=unknown
-       echo "$as_me:1858: result: $GCC_VERSION" >&5
+       echo "$as_me:1859: result: $GCC_VERSION" >&5
 echo "${ECHO_T}$GCC_VERSION" >&6
 fi
 
@@ -1864,12 +1865,12 @@ INTEL_COMPILER=no
 if test "$GCC" = yes ; then
        case "$host_os" in
        (linux*|gnu*)
-               echo "$as_me:1867: checking if this is really Intel C compiler" >&5
+               echo "$as_me:1868: checking if this is really Intel C compiler" >&5
 echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
                cf_save_CFLAGS="$CFLAGS"
                CFLAGS="$CFLAGS -no-gcc"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 1872 "configure"
+#line 1873 "configure"
 #include "confdefs.h"
 
 int
@@ -1878,7 +1879,7 @@ main (void)
 
 #ifdef __INTEL_COMPILER
 #else
-make an error
+#error __INTEL_COMPILER is not defined
 #endif
 
   ;
@@ -1886,16 +1887,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1889: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1890: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1892: \$? = $ac_status" >&5
+  echo "$as_me:1893: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1895: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1896: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1898: \$? = $ac_status" >&5
+  echo "$as_me:1899: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   INTEL_COMPILER=yes
 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
@@ -1906,7 +1907,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CFLAGS="$cf_save_CFLAGS"
-               echo "$as_me:1909: result: $INTEL_COMPILER" >&5
+               echo "$as_me:1910: result: $INTEL_COMPILER" >&5
 echo "${ECHO_T}$INTEL_COMPILER" >&6
                ;;
        esac
@@ -1915,11 +1916,11 @@ fi
 CLANG_COMPILER=no
 
 if test "$GCC" = yes ; then
-       echo "$as_me:1918: checking if this is really Clang C compiler" >&5
+       echo "$as_me:1919: checking if this is really Clang C compiler" >&5
 echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
        cf_save_CFLAGS="$CFLAGS"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 1922 "configure"
+#line 1923 "configure"
 #include "confdefs.h"
 
 int
@@ -1928,7 +1929,7 @@ main (void)
 
 #ifdef __clang__
 #else
-make an error
+#error __clang__ is not defined
 #endif
 
   ;
@@ -1936,16 +1937,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1939: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1940: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1942: \$? = $ac_status" >&5
+  echo "$as_me:1943: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1945: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1946: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1948: \$? = $ac_status" >&5
+  echo "$as_me:1949: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   CLANG_COMPILER=yes
 
@@ -1955,7 +1956,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        CFLAGS="$cf_save_CFLAGS"
-       echo "$as_me:1958: result: $CLANG_COMPILER" >&5
+       echo "$as_me:1959: result: $CLANG_COMPILER" >&5
 echo "${ECHO_T}$CLANG_COMPILER" >&6
 fi
 
@@ -1964,30 +1965,30 @@ CLANG_VERSION=none
 if test "x$CLANG_COMPILER" = "xyes" ; then
        case "$CC" in
        (c[1-9][0-9]|*/c[1-9][0-9])
-               { echo "$as_me:1967: WARNING: replacing broken compiler alias $CC" >&5
+               { echo "$as_me:1968: WARNING: replacing broken compiler alias $CC" >&5
 echo "$as_me: WARNING: replacing broken compiler alias $CC" >&2;}
                CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
                CC=clang
                ;;
        esac
 
-       echo "$as_me:1974: checking version of $CC" >&5
+       echo "$as_me:1975: checking version of $CC" >&5
 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
        CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
        test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
-       echo "$as_me:1978: result: $CLANG_VERSION" >&5
+       echo "$as_me:1979: result: $CLANG_VERSION" >&5
 echo "${ECHO_T}$CLANG_VERSION" >&6
 
        for cf_clang_opt in \
                -Qunused-arguments \
                -Wno-error=implicit-function-declaration
        do
-               echo "$as_me:1985: checking if option $cf_clang_opt works" >&5
+               echo "$as_me:1986: checking if option $cf_clang_opt works" >&5
 echo $ECHO_N "checking if option $cf_clang_opt works... $ECHO_C" >&6
                cf_save_CFLAGS="$CFLAGS"
                CFLAGS="$CFLAGS $cf_clang_opt"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 1990 "configure"
+#line 1991 "configure"
 #include "confdefs.h"
 
                        #include <stdio.h>
@@ -2001,16 +2002,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:2004: \"$ac_link\"") >&5
+if { (eval echo "$as_me:2005: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:2007: \$? = $ac_status" >&5
+  echo "$as_me:2008: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:2010: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2011: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2013: \$? = $ac_status" >&5
+  echo "$as_me:2014: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                        cf_clang_optok=yes
@@ -2021,13 +2022,13 @@ cat "conftest.$ac_ext" >&5
                        cf_clang_optok=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:2024: result: $cf_clang_optok" >&5
+               echo "$as_me:2025: result: $cf_clang_optok" >&5
 echo "${ECHO_T}$cf_clang_optok" >&6
                CFLAGS="$cf_save_CFLAGS"
                if test "$cf_clang_optok" = yes; then
                        test -n "$verbose" && echo "    adding option $cf_clang_opt" 1>&6
 
-echo "${as_me:-configure}:2030: testing adding option $cf_clang_opt ..." 1>&5
+echo "${as_me:-configure}:2031: testing adding option $cf_clang_opt ..." 1>&5
 
        test -n "$CFLAGS" && CFLAGS="$CFLAGS "
        CFLAGS="${CFLAGS}$cf_clang_opt"
@@ -2036,7 +2037,7 @@ echo "${as_me:-configure}:2030: testing adding option $cf_clang_opt ..." 1>&5
        done
 fi
 
-echo "$as_me:2039: checking for $CC option to accept ANSI C" >&5
+echo "$as_me:2040: checking for $CC option to accept ANSI C" >&5
 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
 if test "${ac_cv_prog_cc_stdc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2044,7 +2045,7 @@ else
   ac_cv_prog_cc_stdc=no
 ac_save_CC=$CC
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 2047 "configure"
+#line 2048 "configure"
 #include "confdefs.h"
 #include <stdarg.h>
 #include <stdio.h>
@@ -2091,16 +2092,16 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO
 do
   CC="$ac_save_CC $ac_arg"
   rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2094: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2095: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2097: \$? = $ac_status" >&5
+  echo "$as_me:2098: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2100: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2101: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2103: \$? = $ac_status" >&5
+  echo "$as_me:2104: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_prog_cc_stdc=$ac_arg
 break
@@ -2117,10 +2118,10 @@ fi
 
 case "x$ac_cv_prog_cc_stdc" in
   x|xno)
-    echo "$as_me:2120: result: none needed" >&5
+    echo "$as_me:2121: result: none needed" >&5
 echo "${ECHO_T}none needed" >&6 ;;
   *)
-    echo "$as_me:2123: result: $ac_cv_prog_cc_stdc" >&5
+    echo "$as_me:2124: result: $ac_cv_prog_cc_stdc" >&5
 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
     CC="$CC $ac_cv_prog_cc_stdc" ;;
 esac
@@ -2128,13 +2129,13 @@ esac
 # This should have been defined by AC_PROG_CC
 : "${CC:=cc}"
 
-echo "$as_me:2131: checking \$CFLAGS variable" >&5
+echo "$as_me:2132: checking \$CFLAGS variable" >&5
 echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6
 case "x$CFLAGS" in
 (*-[IUD]*)
-       echo "$as_me:2135: result: broken" >&5
+       echo "$as_me:2136: result: broken" >&5
 echo "${ECHO_T}broken" >&6
-       { echo "$as_me:2137: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5
+       { echo "$as_me:2138: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5
 echo "$as_me: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&2;}
        cf_flags="$CFLAGS"
        CFLAGS=
@@ -2242,22 +2243,22 @@ fi
        done
        ;;
 (*)
-       echo "$as_me:2245: result: ok" >&5
+       echo "$as_me:2246: result: ok" >&5
 echo "${ECHO_T}ok" >&6
        ;;
 esac
 
-echo "$as_me:2250: checking \$CC variable" >&5
+echo "$as_me:2251: checking \$CC variable" >&5
 echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
 case "$CC" in
 (*[\ \ ]-*)
-       echo "$as_me:2254: result: broken" >&5
+       echo "$as_me:2255: result: broken" >&5
 echo "${ECHO_T}broken" >&6
-       { echo "$as_me:2256: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
+       { echo "$as_me:2257: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
 echo "$as_me: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
        # humor him...
        cf_prog=`echo "$CC" | sed -e 's/        / /g' -e 's/[ ]* / /g' -e 's/[ ]*[ ]-[^ ].*//'`
-       cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'`
+       cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
        CC="$cf_prog"
        for cf_arg in $cf_flags
        do
@@ -2370,24 +2371,24 @@ fi
        done
        test -n "$verbose" && echo "    resulting CC: '$CC'" 1>&6
 
-echo "${as_me:-configure}:2373: testing resulting CC: '$CC' ..." 1>&5
+echo "${as_me:-configure}:2374: testing resulting CC: '$CC' ..." 1>&5
 
        test -n "$verbose" && echo "    resulting CFLAGS: '$CFLAGS'" 1>&6
 
-echo "${as_me:-configure}:2377: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
+echo "${as_me:-configure}:2378: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
 
        test -n "$verbose" && echo "    resulting CPPFLAGS: '$CPPFLAGS'" 1>&6
 
-echo "${as_me:-configure}:2381: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
+echo "${as_me:-configure}:2382: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
 
        ;;
 (*)
-       echo "$as_me:2385: result: ok" >&5
+       echo "$as_me:2386: result: ok" >&5
 echo "${ECHO_T}ok" >&6
        ;;
 esac
 
-echo "$as_me:2390: checking for egrep" >&5
+echo "$as_me:2391: checking for egrep" >&5
 echo $ECHO_N "checking for egrep... $ECHO_C" >&6
 if test "${ac_cv_path_EGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2399,7 +2400,7 @@ else
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:2402: checking for $ac_word" >&5
+echo "$as_me:2403: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_EGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2416,7 +2417,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_EGREP="$ac_dir/$ac_word"
-   echo "$as_me:2419: found $ac_dir/$ac_word" >&5
+   echo "$as_me:2420: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -2427,10 +2428,10 @@ fi
 EGREP=$ac_cv_path_EGREP
 
 if test -n "$EGREP"; then
-  echo "$as_me:2430: result: $EGREP" >&5
+  echo "$as_me:2431: result: $EGREP" >&5
 echo "${ECHO_T}$EGREP" >&6
 else
-  echo "$as_me:2433: result: no" >&5
+  echo "$as_me:2434: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -2438,12 +2439,12 @@ fi
 done
 test -n "$EGREP" || EGREP=": "
 
-     test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:2441: error: cannot find workable egrep" >&5
+     test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:2442: error: cannot find workable egrep" >&5
 echo "$as_me: error: cannot find workable egrep" >&2;}
    { (exit 1); exit 1; }; }
    fi
 fi
-echo "$as_me:2446: result: $ac_cv_path_EGREP" >&5
+echo "$as_me:2447: result: $ac_cv_path_EGREP" >&5
 echo "${ECHO_T}$ac_cv_path_EGREP" >&6
  EGREP="$ac_cv_path_EGREP"
 
@@ -2453,7 +2454,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS "conftest.$ac_ext" >&5'
 ac_link='$CC -o "conftest$ac_exeext" $CFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac_ext" $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 ac_main_return="return"
-echo "$as_me:2456: checking how to run the C preprocessor" >&5
+echo "$as_me:2457: checking how to run the C preprocessor" >&5
 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
@@ -2474,18 +2475,18 @@ do
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2477 "configure"
+#line 2478 "configure"
 #include "confdefs.h"
 #include <assert.h>
                      Syntax error
 _ACEOF
-if { (eval echo "$as_me:2482: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2483: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2488: \$? = $ac_status" >&5
+  echo "$as_me:2489: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2508,17 +2509,17 @@ rm -f conftest.err "conftest.$ac_ext"
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2511 "configure"
+#line 2512 "configure"
 #include "confdefs.h"
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:2515: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2516: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2521: \$? = $ac_status" >&5
+  echo "$as_me:2522: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2555,7 +2556,7 @@ fi
 else
   ac_cv_prog_CPP=$CPP
 fi
-echo "$as_me:2558: result: $CPP" >&5
+echo "$as_me:2559: result: $CPP" >&5
 echo "${ECHO_T}$CPP" >&6
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
@@ -2565,18 +2566,18 @@ do
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2568 "configure"
+#line 2569 "configure"
 #include "confdefs.h"
 #include <assert.h>
                      Syntax error
 _ACEOF
-if { (eval echo "$as_me:2573: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2574: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2579: \$? = $ac_status" >&5
+  echo "$as_me:2580: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2599,17 +2600,17 @@ rm -f conftest.err "conftest.$ac_ext"
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2602 "configure"
+#line 2603 "configure"
 #include "confdefs.h"
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:2606: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2607: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2612: \$? = $ac_status" >&5
+  echo "$as_me:2613: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2637,7 +2638,7 @@ rm -f conftest.err "conftest.$ac_ext"
 if $ac_preproc_ok; then
   :
 else
-  { { echo "$as_me:2640: error: C preprocessor \"$CPP\" fails sanity check" >&5
+  { { echo "$as_me:2641: error: C preprocessor \"$CPP\" fails sanity check" >&5
 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -2650,14 +2651,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 ac_main_return="return"
 
 if test $ac_cv_c_compiler_gnu = yes; then
-    echo "$as_me:2653: checking whether $CC needs -traditional" >&5
+    echo "$as_me:2654: checking whether $CC needs -traditional" >&5
 echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
 if test "${ac_cv_prog_gcc_traditional+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
     ac_pattern="Autoconf.*'x'"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2660 "configure"
+#line 2661 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 int Autoconf = TIOCGETP;
@@ -2672,7 +2673,7 @@ rm -rf conftest*
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 2675 "configure"
+#line 2676 "configure"
 #include "confdefs.h"
 #include <termio.h>
 int Autoconf = TCGETA;
@@ -2685,14 +2686,14 @@ rm -rf conftest*
 
   fi
 fi
-echo "$as_me:2688: result: $ac_cv_prog_gcc_traditional" >&5
+echo "$as_me:2689: result: $ac_cv_prog_gcc_traditional" >&5
 echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
   if test $ac_cv_prog_gcc_traditional = yes; then
     CC="$CC -traditional"
   fi
 fi
 
-echo "$as_me:2695: checking whether $CC understands -c and -o together" >&5
+echo "$as_me:2696: checking whether $CC understands -c and -o together" >&5
 echo $ECHO_N "checking whether $CC understands -c and -o together... $ECHO_C" >&6
 if test "${cf_cv_prog_CC_c_o+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2707,15 +2708,15 @@ CF_EOF
 # We do the test twice because some compilers refuse to overwrite an
 # existing .o file with -o, though they will create one.
 ac_try='$CC $CFLAGS $CPPFLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-if { (eval echo "$as_me:2710: \"$ac_try\"") >&5
+if { (eval echo "$as_me:2711: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2713: \$? = $ac_status" >&5
+  echo "$as_me:2714: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
-  test -f conftest2.$ac_objext && { (eval echo "$as_me:2715: \"$ac_try\"") >&5
+  test -f conftest2.$ac_objext && { (eval echo "$as_me:2716: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2718: \$? = $ac_status" >&5
+  echo "$as_me:2719: \$? = $ac_status" >&5
   (exit "$ac_status"); };
 then
   eval cf_cv_prog_CC_c_o=yes
@@ -2726,10 +2727,10 @@ rm -rf ./conftest*
 
 fi
 if test "$cf_cv_prog_CC_c_o" = yes; then
-  echo "$as_me:2729: result: yes" >&5
+  echo "$as_me:2730: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
-  echo "$as_me:2732: result: no" >&5
+  echo "$as_me:2733: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -2750,7 +2751,7 @@ for ac_prog in mawk gawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:2753: checking for $ac_word" >&5
+echo "$as_me:2754: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_AWK+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2765,7 +2766,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_AWK="$ac_prog"
-echo "$as_me:2768: found $ac_dir/$ac_word" >&5
+echo "$as_me:2769: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -2773,21 +2774,21 @@ fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  echo "$as_me:2776: result: $AWK" >&5
+  echo "$as_me:2777: result: $AWK" >&5
 echo "${ECHO_T}$AWK" >&6
 else
-  echo "$as_me:2779: result: no" >&5
+  echo "$as_me:2780: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
   test -n "$AWK" && break
 done
 
-test -z "$AWK" && { { echo "$as_me:2786: error: No awk program found" >&5
+test -z "$AWK" && { { echo "$as_me:2787: error: No awk program found" >&5
 echo "$as_me: error: No awk program found" >&2;}
    { (exit 1); exit 1; }; }
 
-echo "$as_me:2790: checking for egrep" >&5
+echo "$as_me:2791: checking for egrep" >&5
 echo $ECHO_N "checking for egrep... $ECHO_C" >&6
 if test "${ac_cv_prog_egrep+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2797,11 +2798,11 @@ else
                else ac_cv_prog_egrep='egrep'
        fi
 fi
-echo "$as_me:2800: result: $ac_cv_prog_egrep" >&5
+echo "$as_me:2801: result: $ac_cv_prog_egrep" >&5
 echo "${ECHO_T}$ac_cv_prog_egrep" >&6
        EGREP=$ac_cv_prog_egrep
 
-       test -z "$EGREP" && { { echo "$as_me:2804: error: No egrep program found" >&5
+       test -z "$EGREP" && { { echo "$as_me:2805: error: No egrep program found" >&5
 echo "$as_me: error: No egrep program found" >&2;}
    { (exit 1); exit 1; }; }
 
@@ -2817,7 +2818,7 @@ echo "$as_me: error: No egrep program found" >&2;}
 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:2820: checking for a BSD compatible install" >&5
+echo "$as_me:2821: checking for a BSD compatible install" >&5
 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
 if test -z "$INSTALL"; then
 if test "${ac_cv_path_install+set}" = set; then
@@ -2866,7 +2867,7 @@ fi
     INSTALL=$ac_install_sh
   fi
 fi
-echo "$as_me:2869: result: $INSTALL" >&5
+echo "$as_me:2870: result: $INSTALL" >&5
 echo "${ECHO_T}$INSTALL" >&6
 
 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -2877,18 +2878,18 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
-echo "$as_me:2880: checking whether ln -s works" >&5
+echo "$as_me:2881: checking whether ln -s works" >&5
 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
 LN_S=$as_ln_s
 if test "$LN_S" = "ln -s"; then
-  echo "$as_me:2884: result: yes" >&5
+  echo "$as_me:2885: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
-  echo "$as_me:2887: result: no, using $LN_S" >&5
+  echo "$as_me:2888: result: no, using $LN_S" >&5
 echo "${ECHO_T}no, using $LN_S" >&6
 fi
 
-echo "$as_me:2891: checking if $LN_S -f options work" >&5
+echo "$as_me:2892: checking if $LN_S -f options work" >&5
 echo $ECHO_N "checking if $LN_S -f options work... $ECHO_C" >&6
 
 rm -f conf$$.src conf$$dst
@@ -2900,7 +2901,7 @@ else
        cf_prog_ln_sf=no
 fi
 rm -f conf$$.dst conf$$src
-echo "$as_me:2903: result: $cf_prog_ln_sf" >&5
+echo "$as_me:2904: result: $cf_prog_ln_sf" >&5
 echo "${ECHO_T}$cf_prog_ln_sf" >&6
 
 test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
@@ -2917,7 +2918,7 @@ test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:2920: checking for a BSD compatible install" >&5
+echo "$as_me:2921: checking for a BSD compatible install" >&5
 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
 if test -z "$INSTALL"; then
 if test "${ac_cv_path_install+set}" = set; then
@@ -2966,7 +2967,7 @@ fi
     INSTALL=$ac_install_sh
   fi
 fi
-echo "$as_me:2969: result: $INSTALL" >&5
+echo "$as_me:2970: result: $INSTALL" >&5
 echo "${ECHO_T}$INSTALL" >&6
 
 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -2987,7 +2988,7 @@ case $INSTALL in
        ;;
 esac
 
-echo "$as_me:2990: checking if you want to install stripped executables" >&5
+echo "$as_me:2991: checking if you want to install stripped executables" >&5
 echo $ECHO_N "checking if you want to install stripped executables... $ECHO_C" >&6
 
 # Check whether --enable-stripping or --disable-stripping was given.
@@ -3004,7 +3005,7 @@ else
        enable_stripping=yes
 
 fi;
-echo "$as_me:3007: result: $enable_stripping" >&5
+echo "$as_me:3008: result: $enable_stripping" >&5
 echo "${ECHO_T}$enable_stripping" >&6
 
 if test "$enable_stripping" = yes
@@ -3015,7 +3016,7 @@ else
 fi
 
 : "${INSTALL:=install}"
-echo "$as_me:3018: checking if install accepts -p option" >&5
+echo "$as_me:3019: checking if install accepts -p option" >&5
 echo $ECHO_N "checking if install accepts -p option... $ECHO_C" >&6
 if test "${cf_cv_install_p+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3046,10 +3047,10 @@ else
        rm -rf ./conftest*
 
 fi
-echo "$as_me:3049: result: $cf_cv_install_p" >&5
+echo "$as_me:3050: result: $cf_cv_install_p" >&5
 echo "${ECHO_T}$cf_cv_install_p" >&6
 
-echo "$as_me:3052: checking if install needs to be told about ownership" >&5
+echo "$as_me:3053: checking if install needs to be told about ownership" >&5
 echo $ECHO_N "checking if install needs to be told about ownership... $ECHO_C" >&6
 case `$ac_config_guess` in
 (*minix)
@@ -3060,7 +3061,7 @@ case `$ac_config_guess` in
        ;;
 esac
 
-echo "$as_me:3063: result: $with_install_o" >&5
+echo "$as_me:3064: result: $with_install_o" >&5
 echo "${ECHO_T}$with_install_o" >&6
 if test "x$with_install_o" = xyes
 then
@@ -3069,7 +3070,73 @@ else
        INSTALL_OPT_O=
 fi
 
-echo "$as_me:3072: checking for long file names" >&5
+if test -n "$INSTALL_OPT_S"
+then
+       echo "$as_me:3075: checking if you want to specify strip-program" >&5
+echo $ECHO_N "checking if you want to specify strip-program... $ECHO_C" >&6
+
+# Check whether --with-strip-program or --without-strip-program was given.
+if test "${with_strip_program+set}" = set; then
+  withval="$with_strip_program"
+  with_strip_program=$withval
+else
+  with_strip_program=no
+fi;
+       echo "$as_me:3085: result: $with_strip_program" >&5
+echo "${ECHO_T}$with_strip_program" >&6
+       if test "$with_strip_program" != no
+       then
+               echo "$as_me:3089: checking if strip-program is supported with this installer" >&5
+echo $ECHO_N "checking if strip-program is supported with this installer... $ECHO_C" >&6
+               cf_install_program=`echo "$INSTALL" | sed -e 's%[ ]*[ ]-.%%'`
+               check_install_strip=no
+               if test -f "$cf_install_program"
+               then
+                       check_install_version=`"$cf_install_program" --version 2>/dev/null | head -n 1 | grep coreutils`
+                       if test -n "$check_install_version"
+                       then
+                               check_install_strip="option"
+                       else
+                               for check_strip_variable in STRIPBIN STRIP
+                               do
+                                       if strings "$cf_install_program" | grep "^$check_strip_variable$" >/dev/null
+                                       then
+                                               check_install_strip="environ"
+                                               break
+                                       fi
+                               done
+                       fi
+               fi
+               echo "$as_me:3110: result: $check_install_strip" >&5
+echo "${ECHO_T}$check_install_strip" >&6
+               case "$check_install_strip" in
+               (no)
+                       { echo "$as_me:3114: WARNING: $cf_install_program does not support strip program option" >&5
+echo "$as_me: WARNING: $cf_install_program does not support strip program option" >&2;}
+                       with_strip_program=no
+                       ;;
+               (environ)
+                       cat >install.tmp <<-CF_EOF
+                       #! $SHELL
+                       STRIPBIN="$with_strip_program" \\
+                       STRIP="$with_strip_program" \\
+                       $INSTALL "$@"
+                       CF_EOF
+                       INSTALL="`pwd`/install.tmp"
+                       chmod +x "$INSTALL"
+                       test -n "$verbose" && echo "    created $INSTALL" 1>&6
+
+echo "${as_me:-configure}:3129: testing created $INSTALL ..." 1>&5
+
+                       ;;
+               (option)
+                       INSTALL_OPT_S="$INSTALL_OPT_S --strip-program=\"$with_strip_program\""
+                       ;;
+               esac
+       fi
+fi
+
+echo "$as_me:3139: checking for long file names" >&5
 echo $ECHO_N "checking for long file names... $ECHO_C" >&6
 if test "${ac_cv_sys_long_file_names+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3108,7 +3175,7 @@ for ac_dir in  . $ac_tmpdirs `eval echo "$prefix/lib" "$exec_prefix/lib"` ; do
   rm -rf "$ac_xdir" 2>/dev/null
 done
 fi
-echo "$as_me:3111: result: $ac_cv_sys_long_file_names" >&5
+echo "$as_me:3178: result: $ac_cv_sys_long_file_names" >&5
 echo "${ECHO_T}$ac_cv_sys_long_file_names" >&6
 if test "$ac_cv_sys_long_file_names" = yes; then
 
@@ -3120,7 +3187,7 @@ fi
 
 # if we find pkg-config, check if we should install the ".pc" files.
 
-echo "$as_me:3123: checking if you want to use pkg-config" >&5
+echo "$as_me:3190: checking if you want to use pkg-config" >&5
 echo $ECHO_N "checking if you want to use pkg-config... $ECHO_C" >&6
 
 # Check whether --with-pkg-config or --without-pkg-config was given.
@@ -3130,7 +3197,7 @@ if test "${with_pkg_config+set}" = set; then
 else
   cf_pkg_config=yes
 fi;
-echo "$as_me:3133: result: $cf_pkg_config" >&5
+echo "$as_me:3200: result: $cf_pkg_config" >&5
 echo "${ECHO_T}$cf_pkg_config" >&6
 
 case "$cf_pkg_config" in
@@ -3142,7 +3209,7 @@ case "$cf_pkg_config" in
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
 set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-echo "$as_me:3145: checking for $ac_word" >&5
+echo "$as_me:3212: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3159,7 +3226,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word"
-   echo "$as_me:3162: found $ac_dir/$ac_word" >&5
+   echo "$as_me:3229: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -3170,10 +3237,10 @@ fi
 PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 
 if test -n "$PKG_CONFIG"; then
-  echo "$as_me:3173: result: $PKG_CONFIG" >&5
+  echo "$as_me:3240: result: $PKG_CONFIG" >&5
 echo "${ECHO_T}$PKG_CONFIG" >&6
 else
-  echo "$as_me:3176: result: no" >&5
+  echo "$as_me:3243: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3182,7 +3249,7 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then
   ac_pt_PKG_CONFIG=$PKG_CONFIG
   # Extract the first word of "pkg-config", so it can be a program name with args.
 set dummy pkg-config; ac_word=$2
-echo "$as_me:3185: checking for $ac_word" >&5
+echo "$as_me:3252: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3199,7 +3266,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_ac_pt_PKG_CONFIG="$ac_dir/$ac_word"
-   echo "$as_me:3202: found $ac_dir/$ac_word" >&5
+   echo "$as_me:3269: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -3211,10 +3278,10 @@ fi
 ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
 
 if test -n "$ac_pt_PKG_CONFIG"; then
-  echo "$as_me:3214: result: $ac_pt_PKG_CONFIG" >&5
+  echo "$as_me:3281: result: $ac_pt_PKG_CONFIG" >&5
 echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
 else
-  echo "$as_me:3217: result: no" >&5
+  echo "$as_me:3284: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3257,30 +3324,36 @@ case ".$PKG_CONFIG" in
        PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:3260: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
+       { { echo "$as_me:3327: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
 echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
 esac
 
 elif test "x$cf_pkg_config" != xno ; then
-       { echo "$as_me:3267: WARNING: pkg-config is not installed" >&5
+       { echo "$as_me:3334: WARNING: pkg-config is not installed" >&5
 echo "$as_me: WARNING: pkg-config is not installed" >&2;}
 fi
 
 case "$PKG_CONFIG" in
 (no|none|yes)
-       echo "$as_me:3273: checking for pkg-config library directory" >&5
+       echo "$as_me:3340: checking for pkg-config library directory" >&5
 echo $ECHO_N "checking for pkg-config library directory... $ECHO_C" >&6
        ;;
 (*)
-       echo "$as_me:3277: checking for $PKG_CONFIG library directory" >&5
+       echo "$as_me:3344: checking for $PKG_CONFIG library directory" >&5
 echo $ECHO_N "checking for $PKG_CONFIG library directory... $ECHO_C" >&6
        ;;
 esac
 
 # if $PKG_CONFIG_LIBDIR is set, try to use that
-cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[  ]*,,'`
+if test -n "$PKG_CONFIG_PATH"; then
+       cf_search_path=`echo "$PKG_CONFIG_PATH" | sed -e 's/:/ /g' -e 's,^[     ]*,,' -e 's,[   ]*$,,'`
+elif test -n "$PKG_CONFIG_LIBDIR"; then
+       cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[   ]*,,' -e 's,[   ]*$,,'`
+else
+       cf_search_path=auto
+fi
 
 # if the option is used, let that override.  otherwise default to "libdir"
 
@@ -3295,7 +3368,7 @@ fi;
 case "x$cf_search_path" in
 (xlibdir)
        PKG_CONFIG_LIBDIR='${libdir}/pkgconfig'
-       echo "$as_me:3298: result: $PKG_CONFIG_LIBDIR" >&5
+       echo "$as_me:3371: result: $PKG_CONFIG_LIBDIR" >&5
 echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
        cf_search_path=
        ;;
@@ -3306,16 +3379,16 @@ echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
        ;;
 (x/*)
        PKG_CONFIG_LIBDIR="$cf_search_path"
-       echo "$as_me:3309: result: $PKG_CONFIG_LIBDIR" >&5
+       echo "$as_me:3382: result: $PKG_CONFIG_LIBDIR" >&5
 echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
        cf_search_path=
        ;;
 (xyes|xauto)
-       echo "$as_me:3314: result: auto" >&5
+       echo "$as_me:3387: result: auto" >&5
 echo "${ECHO_T}auto" >&6
        cf_search_path=
        # Look for the library directory using the same prefix as the executable
-       echo "$as_me:3318: checking for search-list" >&5
+       echo "$as_me:3391: checking for search-list" >&5
 echo $ECHO_N "checking for search-list... $ECHO_C" >&6
        if test "x$PKG_CONFIG" != xnone
        then
@@ -3342,11 +3415,11 @@ echo $ECHO_N "checking for search-list... $ECHO_C" >&6
 "`
        fi
 
-       echo "$as_me:3345: result: $cf_search_path" >&5
+       echo "$as_me:3418: result: $cf_search_path" >&5
 echo "${ECHO_T}$cf_search_path" >&6
        ;;
 (*)
-       { { echo "$as_me:3349: error: Unexpected option value: $cf_search_path" >&5
+       { { echo "$as_me:3422: error: Unexpected option value: $cf_search_path" >&5
 echo "$as_me: error: Unexpected option value: $cf_search_path" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -3354,7 +3427,7 @@ esac
 
 if test -n "$cf_search_path"
 then
-       echo "$as_me:3357: checking for first directory" >&5
+       echo "$as_me:3430: checking for first directory" >&5
 echo $ECHO_N "checking for first directory... $ECHO_C" >&6
        cf_pkg_config_path=none
        for cf_config in $cf_search_path
@@ -3365,7 +3438,7 @@ echo $ECHO_N "checking for first directory... $ECHO_C" >&6
                        break
                fi
        done
-       echo "$as_me:3368: result: $cf_pkg_config_path" >&5
+       echo "$as_me:3441: result: $cf_pkg_config_path" >&5
 echo "${ECHO_T}$cf_pkg_config_path" >&6
 
        if test "x$cf_pkg_config_path" != xnone ; then
@@ -3375,7 +3448,7 @@ echo "${ECHO_T}$cf_pkg_config_path" >&6
 
        if test -z "$PKG_CONFIG_LIBDIR" && test -n "$cf_search_path"
        then
-               echo "$as_me:3378: checking for workaround" >&5
+               echo "$as_me:3451: checking for workaround" >&5
 echo $ECHO_N "checking for workaround... $ECHO_C" >&6
                if test "$prefix" = "NONE" ; then
                        cf_prefix="$ac_default_prefix"
@@ -3398,12 +3471,12 @@ echo $ECHO_N "checking for workaround... $ECHO_C" >&6
                        esac
                done
                test -z "$PKG_CONFIG_LIBDIR" && PKG_CONFIG_LIBDIR=$cf_backup
-               echo "$as_me:3401: result: $PKG_CONFIG_LIBDIR" >&5
+               echo "$as_me:3474: result: $PKG_CONFIG_LIBDIR" >&5
 echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
        fi
 fi
 
-echo "$as_me:3406: checking if you want to build test-programs" >&5
+echo "$as_me:3479: checking if you want to build test-programs" >&5
 echo $ECHO_N "checking if you want to build test-programs... $ECHO_C" >&6
 
 # Check whether --with-tests or --without-tests was given.
@@ -3413,10 +3486,10 @@ if test "${with_tests+set}" = set; then
 else
   cf_with_tests=yes
 fi;
-echo "$as_me:3416: result: $cf_with_tests" >&5
+echo "$as_me:3489: result: $cf_with_tests" >&5
 echo "${ECHO_T}$cf_with_tests" >&6
 
-echo "$as_me:3419: checking if we should assume mixed-case filenames" >&5
+echo "$as_me:3492: checking if we should assume mixed-case filenames" >&5
 echo $ECHO_N "checking if we should assume mixed-case filenames... $ECHO_C" >&6
 
 # Check whether --enable-mixed-case or --disable-mixed-case was given.
@@ -3426,11 +3499,11 @@ if test "${enable_mixed_case+set}" = set; then
 else
   enable_mixedcase=auto
 fi;
-echo "$as_me:3429: result: $enable_mixedcase" >&5
+echo "$as_me:3502: result: $enable_mixedcase" >&5
 echo "${ECHO_T}$enable_mixedcase" >&6
 if test "$enable_mixedcase" = "auto" ; then
 
-echo "$as_me:3433: checking if filesystem supports mixed-case filenames" >&5
+echo "$as_me:3506: checking if filesystem supports mixed-case filenames" >&5
 echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECHO_C" >&6
 if test "${cf_cv_mixedcase+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3457,7 +3530,7 @@ else
 fi
 
 fi
-echo "$as_me:3460: result: $cf_cv_mixedcase" >&5
+echo "$as_me:3533: result: $cf_cv_mixedcase" >&5
 echo "${ECHO_T}$cf_cv_mixedcase" >&6
 test "$cf_cv_mixedcase" = yes &&
 cat >>confdefs.h <<\EOF
@@ -3475,7 +3548,7 @@ EOF
 fi
 
 # do this after mixed-case option (tags/TAGS is not as important as tic).
-echo "$as_me:3478: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "$as_me:3551: checking whether ${MAKE-make} sets \${MAKE}" >&5
 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
 if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
@@ -3495,16 +3568,16 @@ fi
 rm -f conftest.make
 fi
 if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$as_me:3498: result: yes" >&5
+  echo "$as_me:3571: result: yes" >&5
 echo "${ECHO_T}yes" >&6
   SET_MAKE=
 else
-  echo "$as_me:3502: result: no" >&5
+  echo "$as_me:3575: result: no" >&5
 echo "${ECHO_T}no" >&6
   SET_MAKE="MAKE=${MAKE-make}"
 fi
 
-echo "$as_me:3507: checking for \".PHONY\" make-support" >&5
+echo "$as_me:3580: checking for \".PHONY\" make-support" >&5
 echo $ECHO_N "checking for \".PHONY\" make-support... $ECHO_C" >&6
 if test "${cf_cv_make_PHONY+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3559,7 +3632,7 @@ CF_EOF
        rm -rf conftest*
 
 fi
-echo "$as_me:3562: result: $cf_cv_make_PHONY" >&5
+echo "$as_me:3635: result: $cf_cv_make_PHONY" >&5
 echo "${ECHO_T}$cf_cv_make_PHONY" >&6
 MAKE_NO_PHONY="#"
 MAKE_PHONY="#"
@@ -3570,7 +3643,7 @@ for ac_prog in exctags ctags
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:3573: checking for $ac_word" >&5
+echo "$as_me:3646: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CTAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3585,7 +3658,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CTAGS="$ac_prog"
-echo "$as_me:3588: found $ac_dir/$ac_word" >&5
+echo "$as_me:3661: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3593,10 +3666,10 @@ fi
 fi
 CTAGS=$ac_cv_prog_CTAGS
 if test -n "$CTAGS"; then
-  echo "$as_me:3596: result: $CTAGS" >&5
+  echo "$as_me:3669: result: $CTAGS" >&5
 echo "${ECHO_T}$CTAGS" >&6
 else
-  echo "$as_me:3599: result: no" >&5
+  echo "$as_me:3672: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3607,7 +3680,7 @@ for ac_prog in exetags etags
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:3610: checking for $ac_word" >&5
+echo "$as_me:3683: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ETAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3622,7 +3695,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ETAGS="$ac_prog"
-echo "$as_me:3625: found $ac_dir/$ac_word" >&5
+echo "$as_me:3698: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3630,10 +3703,10 @@ fi
 fi
 ETAGS=$ac_cv_prog_ETAGS
 if test -n "$ETAGS"; then
-  echo "$as_me:3633: result: $ETAGS" >&5
+  echo "$as_me:3706: result: $ETAGS" >&5
 echo "${ECHO_T}$ETAGS" >&6
 else
-  echo "$as_me:3636: result: no" >&5
+  echo "$as_me:3709: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3642,7 +3715,7 @@ done
 
 # Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args.
 set dummy ${CTAGS:-ctags}; ac_word=$2
-echo "$as_me:3645: checking for $ac_word" >&5
+echo "$as_me:3718: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3657,7 +3730,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_MAKE_LOWER_TAGS="yes"
-echo "$as_me:3660: found $ac_dir/$ac_word" >&5
+echo "$as_me:3733: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3666,17 +3739,17 @@ fi
 fi
 MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS
 if test -n "$MAKE_LOWER_TAGS"; then
-  echo "$as_me:3669: result: $MAKE_LOWER_TAGS" >&5
+  echo "$as_me:3742: result: $MAKE_LOWER_TAGS" >&5
 echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
 else
-  echo "$as_me:3672: result: no" >&5
+  echo "$as_me:3745: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
 if test "$cf_cv_mixedcase" = yes ; then
        # Extract the first word of "${ETAGS:-etags}", so it can be a program name with args.
 set dummy ${ETAGS:-etags}; ac_word=$2
-echo "$as_me:3679: checking for $ac_word" >&5
+echo "$as_me:3752: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3691,7 +3764,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_MAKE_UPPER_TAGS="yes"
-echo "$as_me:3694: found $ac_dir/$ac_word" >&5
+echo "$as_me:3767: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3700,10 +3773,10 @@ fi
 fi
 MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS
 if test -n "$MAKE_UPPER_TAGS"; then
-  echo "$as_me:3703: result: $MAKE_UPPER_TAGS" >&5
+  echo "$as_me:3776: result: $MAKE_UPPER_TAGS" >&5
 echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
 else
-  echo "$as_me:3706: result: no" >&5
+  echo "$as_me:3779: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3723,7 +3796,7 @@ else
        MAKE_LOWER_TAGS="#"
 fi
 
-echo "$as_me:3726: checking for makeflags variable" >&5
+echo "$as_me:3799: checking for makeflags variable" >&5
 echo $ECHO_N "checking for makeflags variable... $ECHO_C" >&6
 if test "${cf_cv_makeflags+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3753,7 +3826,7 @@ CF_EOF
                        ;;
                (*)
 
-echo "${as_me:-configure}:3756: testing given option \"$cf_option\",no match \"$cf_result\" ..." 1>&5
+echo "${as_me:-configure}:3829: testing given option \"$cf_option\",no match \"$cf_result\" ..." 1>&5
 
                        ;;
                esac
@@ -3761,13 +3834,13 @@ echo "${as_me:-configure}:3756: testing given option \"$cf_option\",no match \"$
        rm -f cf_makeflags.tmp
 
 fi
-echo "$as_me:3764: result: $cf_cv_makeflags" >&5
+echo "$as_me:3837: result: $cf_cv_makeflags" >&5
 echo "${ECHO_T}$cf_cv_makeflags" >&6
 
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-echo "$as_me:3770: checking for $ac_word" >&5
+echo "$as_me:3843: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_RANLIB+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3782,7 +3855,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-echo "$as_me:3785: found $ac_dir/$ac_word" >&5
+echo "$as_me:3858: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3790,10 +3863,10 @@ fi
 fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
-  echo "$as_me:3793: result: $RANLIB" >&5
+  echo "$as_me:3866: result: $RANLIB" >&5
 echo "${ECHO_T}$RANLIB" >&6
 else
-  echo "$as_me:3796: result: no" >&5
+  echo "$as_me:3869: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3802,7 +3875,7 @@ if test -z "$ac_cv_prog_RANLIB"; then
   ac_ct_RANLIB=$RANLIB
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
-echo "$as_me:3805: checking for $ac_word" >&5
+echo "$as_me:3878: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3817,7 +3890,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_RANLIB="ranlib"
-echo "$as_me:3820: found $ac_dir/$ac_word" >&5
+echo "$as_me:3893: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3826,10 +3899,10 @@ fi
 fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
-  echo "$as_me:3829: result: $ac_ct_RANLIB" >&5
+  echo "$as_me:3902: result: $ac_ct_RANLIB" >&5
 echo "${ECHO_T}$ac_ct_RANLIB" >&6
 else
-  echo "$as_me:3832: result: no" >&5
+  echo "$as_me:3905: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3841,7 +3914,7 @@ fi
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ld; ac_word=$2
-echo "$as_me:3844: checking for $ac_word" >&5
+echo "$as_me:3917: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_LD+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3856,7 +3929,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_LD="${ac_tool_prefix}ld"
-echo "$as_me:3859: found $ac_dir/$ac_word" >&5
+echo "$as_me:3932: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3864,10 +3937,10 @@ fi
 fi
 LD=$ac_cv_prog_LD
 if test -n "$LD"; then
-  echo "$as_me:3867: result: $LD" >&5
+  echo "$as_me:3940: result: $LD" >&5
 echo "${ECHO_T}$LD" >&6
 else
-  echo "$as_me:3870: result: no" >&5
+  echo "$as_me:3943: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3876,7 +3949,7 @@ if test -z "$ac_cv_prog_LD"; then
   ac_ct_LD=$LD
   # Extract the first word of "ld", so it can be a program name with args.
 set dummy ld; ac_word=$2
-echo "$as_me:3879: checking for $ac_word" >&5
+echo "$as_me:3952: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_LD+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3891,7 +3964,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_LD="ld"
-echo "$as_me:3894: found $ac_dir/$ac_word" >&5
+echo "$as_me:3967: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3900,10 +3973,10 @@ fi
 fi
 ac_ct_LD=$ac_cv_prog_ac_ct_LD
 if test -n "$ac_ct_LD"; then
-  echo "$as_me:3903: result: $ac_ct_LD" >&5
+  echo "$as_me:3976: result: $ac_ct_LD" >&5
 echo "${ECHO_T}$ac_ct_LD" >&6
 else
-  echo "$as_me:3906: result: no" >&5
+  echo "$as_me:3979: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3915,7 +3988,7 @@ fi
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:3918: checking for $ac_word" >&5
+echo "$as_me:3991: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_AR+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3930,7 +4003,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_AR="${ac_tool_prefix}ar"
-echo "$as_me:3933: found $ac_dir/$ac_word" >&5
+echo "$as_me:4006: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3938,10 +4011,10 @@ fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  echo "$as_me:3941: result: $AR" >&5
+  echo "$as_me:4014: result: $AR" >&5
 echo "${ECHO_T}$AR" >&6
 else
-  echo "$as_me:3944: result: no" >&5
+  echo "$as_me:4017: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3950,7 +4023,7 @@ if test -z "$ac_cv_prog_AR"; then
   ac_ct_AR=$AR
   # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
-echo "$as_me:3953: checking for $ac_word" >&5
+echo "$as_me:4026: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3965,7 +4038,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_AR="ar"
-echo "$as_me:3968: found $ac_dir/$ac_word" >&5
+echo "$as_me:4041: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3974,10 +4047,10 @@ fi
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
-  echo "$as_me:3977: result: $ac_ct_AR" >&5
+  echo "$as_me:4050: result: $ac_ct_AR" >&5
 echo "${ECHO_T}$ac_ct_AR" >&6
 else
-  echo "$as_me:3980: result: no" >&5
+  echo "$as_me:4053: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3989,7 +4062,7 @@ fi
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:3992: checking for $ac_word" >&5
+echo "$as_me:4065: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_AR+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4004,7 +4077,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_AR="${ac_tool_prefix}ar"
-echo "$as_me:4007: found $ac_dir/$ac_word" >&5
+echo "$as_me:4080: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4012,10 +4085,10 @@ fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  echo "$as_me:4015: result: $AR" >&5
+  echo "$as_me:4088: result: $AR" >&5
 echo "${ECHO_T}$AR" >&6
 else
-  echo "$as_me:4018: result: no" >&5
+  echo "$as_me:4091: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4024,7 +4097,7 @@ if test -z "$ac_cv_prog_AR"; then
   ac_ct_AR=$AR
   # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
-echo "$as_me:4027: checking for $ac_word" >&5
+echo "$as_me:4100: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4039,7 +4112,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_AR="ar"
-echo "$as_me:4042: found $ac_dir/$ac_word" >&5
+echo "$as_me:4115: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4048,10 +4121,10 @@ fi
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
-  echo "$as_me:4051: result: $ac_ct_AR" >&5
+  echo "$as_me:4124: result: $ac_ct_AR" >&5
 echo "${ECHO_T}$ac_ct_AR" >&6
 else
-  echo "$as_me:4054: result: no" >&5
+  echo "$as_me:4127: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4060,7 +4133,7 @@ else
   AR="$ac_cv_prog_AR"
 fi
 
-echo "$as_me:4063: checking for options to update archives" >&5
+echo "$as_me:4136: checking for options to update archives" >&5
 echo $ECHO_N "checking for options to update archives... $ECHO_C" >&6
 if test "${cf_cv_ar_flags+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4097,13 +4170,13 @@ else
                        rm -f conftest.a
 
                        cat >"conftest.$ac_ext" <<EOF
-#line 4100 "configure"
+#line 4173 "configure"
 int    testdata[3] = { 123, 456, 789 };
 EOF
-                       if { (eval echo "$as_me:4103: \"$ac_compile\"") >&5
+                       if { (eval echo "$as_me:4176: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4106: \$? = $ac_status" >&5
+  echo "$as_me:4179: \$? = $ac_status" >&5
   (exit "$ac_status"); } ; then
                                echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&5
                                $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&5 1>/dev/null
@@ -4114,7 +4187,7 @@ EOF
                        else
                                test -n "$verbose" && echo "    cannot compile test-program" 1>&6
 
-echo "${as_me:-configure}:4117: testing cannot compile test-program ..." 1>&5
+echo "${as_me:-configure}:4190: testing cannot compile test-program ..." 1>&5
 
                                break
                        fi
@@ -4124,7 +4197,7 @@ echo "${as_me:-configure}:4117: testing cannot compile test-program ..." 1>&5
        esac
 
 fi
-echo "$as_me:4127: result: $cf_cv_ar_flags" >&5
+echo "$as_me:4200: result: $cf_cv_ar_flags" >&5
 echo "${ECHO_T}$cf_cv_ar_flags" >&6
 
 if test -n "$ARFLAGS" ; then
@@ -4135,17 +4208,17 @@ else
        ARFLAGS=$cf_cv_ar_flags
 fi
 
-       echo "$as_me:4138: checking for PATH separator" >&5
+       echo "$as_me:4211: checking for PATH separator" >&5
 echo $ECHO_N "checking for PATH separator... $ECHO_C" >&6
        case "$cf_cv_system_name" in
        (os2*)  PATH_SEPARATOR=';'  ;;
        (*)     ${PATH_SEPARATOR:=':'}  ;;
        esac
 
-       echo "$as_me:4145: result: $PATH_SEPARATOR" >&5
+       echo "$as_me:4218: result: $PATH_SEPARATOR" >&5
 echo "${ECHO_T}$PATH_SEPARATOR" >&6
 
-echo "$as_me:4148: checking if you have specified an install-prefix" >&5
+echo "$as_me:4221: checking if you have specified an install-prefix" >&5
 echo $ECHO_N "checking if you have specified an install-prefix... $ECHO_C" >&6
 
 # Check whether --with-install-prefix or --without-install-prefix was given.
@@ -4158,7 +4231,7 @@ if test "${with_install_prefix+set}" = set; then
                ;;
        esac
 fi;
-echo "$as_me:4161: result: $DESTDIR" >&5
+echo "$as_me:4234: result: $DESTDIR" >&5
 echo "${ECHO_T}$DESTDIR" >&6
 
 ###############################################################################
@@ -4186,7 +4259,7 @@ else
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:4189: checking for $ac_word" >&5
+echo "$as_me:4262: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_BUILD_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4201,7 +4274,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_BUILD_CC="$ac_prog"
-echo "$as_me:4204: found $ac_dir/$ac_word" >&5
+echo "$as_me:4277: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4209,10 +4282,10 @@ fi
 fi
 BUILD_CC=$ac_cv_prog_BUILD_CC
 if test -n "$BUILD_CC"; then
-  echo "$as_me:4212: result: $BUILD_CC" >&5
+  echo "$as_me:4285: result: $BUILD_CC" >&5
 echo "${ECHO_T}$BUILD_CC" >&6
 else
-  echo "$as_me:4215: result: no" >&5
+  echo "$as_me:4288: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4221,12 +4294,12 @@ done
 test -n "$BUILD_CC" || BUILD_CC="none"
 
 fi;
-       echo "$as_me:4224: checking for native build C compiler" >&5
+       echo "$as_me:4297: checking for native build C compiler" >&5
 echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6
-       echo "$as_me:4226: result: $BUILD_CC" >&5
+       echo "$as_me:4299: result: $BUILD_CC" >&5
 echo "${ECHO_T}$BUILD_CC" >&6
 
-       echo "$as_me:4229: checking for native build C preprocessor" >&5
+       echo "$as_me:4302: checking for native build C preprocessor" >&5
 echo $ECHO_N "checking for native build C preprocessor... $ECHO_C" >&6
 
 # Check whether --with-build-cpp or --without-build-cpp was given.
@@ -4236,10 +4309,10 @@ if test "${with_build_cpp+set}" = set; then
 else
   BUILD_CPP='${BUILD_CC} -E'
 fi;
-       echo "$as_me:4239: result: $BUILD_CPP" >&5
+       echo "$as_me:4312: result: $BUILD_CPP" >&5
 echo "${ECHO_T}$BUILD_CPP" >&6
 
-       echo "$as_me:4242: checking for native build C flags" >&5
+       echo "$as_me:4315: checking for native build C flags" >&5
 echo $ECHO_N "checking for native build C flags... $ECHO_C" >&6
 
 # Check whether --with-build-cflags or --without-build-cflags was given.
@@ -4247,10 +4320,10 @@ if test "${with_build_cflags+set}" = set; then
   withval="$with_build_cflags"
   BUILD_CFLAGS="$withval"
 fi;
-       echo "$as_me:4250: result: $BUILD_CFLAGS" >&5
+       echo "$as_me:4323: result: $BUILD_CFLAGS" >&5
 echo "${ECHO_T}$BUILD_CFLAGS" >&6
 
-       echo "$as_me:4253: checking for native build C preprocessor-flags" >&5
+       echo "$as_me:4326: checking for native build C preprocessor-flags" >&5
 echo $ECHO_N "checking for native build C preprocessor-flags... $ECHO_C" >&6
 
 # Check whether --with-build-cppflags or --without-build-cppflags was given.
@@ -4258,10 +4331,10 @@ if test "${with_build_cppflags+set}" = set; then
   withval="$with_build_cppflags"
   BUILD_CPPFLAGS="$withval"
 fi;
-       echo "$as_me:4261: result: $BUILD_CPPFLAGS" >&5
+       echo "$as_me:4334: result: $BUILD_CPPFLAGS" >&5
 echo "${ECHO_T}$BUILD_CPPFLAGS" >&6
 
-       echo "$as_me:4264: checking for native build linker-flags" >&5
+       echo "$as_me:4337: checking for native build linker-flags" >&5
 echo $ECHO_N "checking for native build linker-flags... $ECHO_C" >&6
 
 # Check whether --with-build-ldflags or --without-build-ldflags was given.
@@ -4269,10 +4342,10 @@ if test "${with_build_ldflags+set}" = set; then
   withval="$with_build_ldflags"
   BUILD_LDFLAGS="$withval"
 fi;
-       echo "$as_me:4272: result: $BUILD_LDFLAGS" >&5
+       echo "$as_me:4345: result: $BUILD_LDFLAGS" >&5
 echo "${ECHO_T}$BUILD_LDFLAGS" >&6
 
-       echo "$as_me:4275: checking for native build linker-libraries" >&5
+       echo "$as_me:4348: checking for native build linker-libraries" >&5
 echo $ECHO_N "checking for native build linker-libraries... $ECHO_C" >&6
 
 # Check whether --with-build-libs or --without-build-libs was given.
@@ -4280,7 +4353,7 @@ if test "${with_build_libs+set}" = set; then
   withval="$with_build_libs"
   BUILD_LIBS="$withval"
 fi;
-       echo "$as_me:4283: result: $BUILD_LIBS" >&5
+       echo "$as_me:4356: result: $BUILD_LIBS" >&5
 echo "${ECHO_T}$BUILD_LIBS" >&6
 
        # this assumes we're on Unix.
@@ -4289,7 +4362,7 @@ echo "${ECHO_T}$BUILD_LIBS" >&6
 
        : ${BUILD_CC:='${CC}'}
 
-       echo "$as_me:4292: checking if the build-compiler \"$BUILD_CC\" works" >&5
+       echo "$as_me:4365: checking if the build-compiler \"$BUILD_CC\" works" >&5
 echo $ECHO_N "checking if the build-compiler \"$BUILD_CC\" works... $ECHO_C" >&6
 
        cf_save_crossed=$cross_compiling
@@ -4303,7 +4376,7 @@ echo $ECHO_N "checking if the build-compiler \"$BUILD_CC\" works... $ECHO_C" >&6
   cf_ok_build_cc=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 4306 "configure"
+#line 4379 "configure"
 #include "confdefs.h"
 #include <stdio.h>
                int main(int argc, char *argv[])
@@ -4313,15 +4386,15 @@ else
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:4316: \"$ac_link\"") >&5
+if { (eval echo "$as_me:4389: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:4319: \$? = $ac_status" >&5
+  echo "$as_me:4392: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:4321: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4394: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4324: \$? = $ac_status" >&5
+  echo "$as_me:4397: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_ok_build_cc=yes
 else
@@ -4336,12 +4409,12 @@ fi
        cross_compiling=$cf_save_crossed
        ac_link=$cf_save_ac_link
 
-       echo "$as_me:4339: result: $cf_ok_build_cc" >&5
+       echo "$as_me:4412: result: $cf_ok_build_cc" >&5
 echo "${ECHO_T}$cf_ok_build_cc" >&6
 
        if test "$cf_ok_build_cc" != yes
        then
-               { { echo "$as_me:4344: error: Cross-build requires two compilers.
+               { { echo "$as_me:4417: error: Cross-build requires two compilers.
 Use --with-build-cc to specify the native compiler." >&5
 echo "$as_me: error: Cross-build requires two compilers.
 Use --with-build-cc to specify the native compiler." >&2;}
@@ -4366,7 +4439,7 @@ fi
 ### shared, for example.
 cf_list_models=""
 
-echo "$as_me:4369: checking if you want to build shared C-objects" >&5
+echo "$as_me:4442: checking if you want to build shared C-objects" >&5
 echo $ECHO_N "checking if you want to build shared C-objects... $ECHO_C" >&6
 
 # Check whether --with-shared or --without-shared was given.
@@ -4376,27 +4449,27 @@ if test "${with_shared+set}" = set; then
 else
   with_shared=no
 fi;
-echo "$as_me:4379: result: $with_shared" >&5
+echo "$as_me:4452: result: $with_shared" >&5
 echo "${ECHO_T}$with_shared" >&6
 test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared"
 
-echo "$as_me:4383: checking for specified models" >&5
+echo "$as_me:4456: checking for specified models" >&5
 echo $ECHO_N "checking for specified models... $ECHO_C" >&6
 test -z "$cf_list_models" && cf_list_models=normal
-echo "$as_me:4386: result: $cf_list_models" >&5
+echo "$as_me:4459: result: $cf_list_models" >&5
 echo "${ECHO_T}$cf_list_models" >&6
 
 ### Use the first model as the default, and save its suffix for use in building
 ### up test-applications.
-echo "$as_me:4391: checking for default model" >&5
+echo "$as_me:4464: checking for default model" >&5
 echo $ECHO_N "checking for default model... $ECHO_C" >&6
 DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
-echo "$as_me:4394: result: $DFT_LWR_MODEL" >&5
+echo "$as_me:4467: result: $DFT_LWR_MODEL" >&5
 echo "${ECHO_T}$DFT_LWR_MODEL" >&6
 
 DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
 
-echo "$as_me:4399: checking for specific curses-directory" >&5
+echo "$as_me:4472: checking for specific curses-directory" >&5
 echo $ECHO_N "checking for specific curses-directory... $ECHO_C" >&6
 
 # Check whether --with-curses-dir or --without-curses-dir was given.
@@ -4406,7 +4479,7 @@ if test "${with_curses_dir+set}" = set; then
 else
   cf_cv_curses_dir=no
 fi;
-echo "$as_me:4409: result: $cf_cv_curses_dir" >&5
+echo "$as_me:4482: result: $cf_cv_curses_dir" >&5
 echo "${ECHO_T}$cf_cv_curses_dir" >&6
 
 if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no"
@@ -4437,7 +4510,7 @@ case ".$withval" in
        withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:4440: error: expected a pathname, not \"$withval\"" >&5
+       { { echo "$as_me:4513: error: expected a pathname, not \"$withval\"" >&5
 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -4473,7 +4546,7 @@ if test -n "$cf_cv_curses_dir/include" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 4476 "configure"
+#line 4549 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -4485,16 +4558,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4488: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4561: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4491: \$? = $ac_status" >&5
+  echo "$as_me:4564: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4494: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4567: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4497: \$? = $ac_status" >&5
+  echo "$as_me:4570: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -4511,7 +4584,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:4514: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:4587: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -4547,7 +4620,7 @@ if test -n "$cf_cv_curses_dir/lib" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:4550: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:4623: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
@@ -4562,13 +4635,13 @@ cf_ncuconfig_root=ncurses
 cf_have_ncuconfig=no
 
 if test "x${PKG_CONFIG:=none}" != xnone; then
-       echo "$as_me:4565: checking pkg-config for $cf_ncuconfig_root" >&5
+       echo "$as_me:4638: checking pkg-config for $cf_ncuconfig_root" >&5
 echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
        if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
-               echo "$as_me:4568: result: yes" >&5
+               echo "$as_me:4641: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
-               echo "$as_me:4571: checking if the $cf_ncuconfig_root package files work" >&5
+               echo "$as_me:4644: checking if the $cf_ncuconfig_root package files work" >&5
 echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6
                cf_have_ncuconfig=unknown
 
@@ -4701,7 +4774,7 @@ done
 LIBS="$cf_add_libs"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 4704 "configure"
+#line 4777 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -4713,37 +4786,37 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:4716: \"$ac_link\"") >&5
+if { (eval echo "$as_me:4789: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:4719: \$? = $ac_status" >&5
+  echo "$as_me:4792: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:4722: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4795: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4725: \$? = $ac_status" >&5
+  echo "$as_me:4798: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_test_ncuconfig=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 4731 "configure"
+#line 4804 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
                                        int main(void)
                                        { const char *xx = curses_version(); return (xx == 0); }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:4738: \"$ac_link\"") >&5
+if { (eval echo "$as_me:4811: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:4741: \$? = $ac_status" >&5
+  echo "$as_me:4814: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:4743: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4816: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4746: \$? = $ac_status" >&5
+  echo "$as_me:4819: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_test_ncuconfig=yes
 else
@@ -4917,7 +4990,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 4920 "configure"
+#line 4993 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -4929,37 +5002,37 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:4932: \"$ac_link\"") >&5
+if { (eval echo "$as_me:5005: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:4935: \$? = $ac_status" >&5
+  echo "$as_me:5008: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:4938: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5011: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4941: \$? = $ac_status" >&5
+  echo "$as_me:5014: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_have_ncuconfig=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 4947 "configure"
+#line 5020 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
                                int main(void)
                                { const char *xx = curses_version(); return (xx == 0); }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:4954: \"$ac_link\"") >&5
+if { (eval echo "$as_me:5027: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:4957: \$? = $ac_status" >&5
+  echo "$as_me:5030: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:4959: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5032: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4962: \$? = $ac_status" >&5
+  echo "$as_me:5035: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_have_ncuconfig=yes
 else
@@ -4976,7 +5049,7 @@ cat "conftest.$ac_ext" >&5
 cf_have_ncuconfig=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:4979: result: $cf_have_ncuconfig" >&5
+               echo "$as_me:5052: result: $cf_have_ncuconfig" >&5
 echo "${ECHO_T}$cf_have_ncuconfig" >&6
                test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
                if test "$cf_have_ncuconfig" != "yes"
@@ -4992,7 +5065,7 @@ EOF
 
                        NCURSES_CONFIG_PKG=$cf_ncuconfig_root
 
-echo "$as_me:4995: checking for terminfo header" >&5
+echo "$as_me:5068: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5010,7 +5083,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 5013 "configure"
+#line 5086 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -5025,16 +5098,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5028: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5101: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5031: \$? = $ac_status" >&5
+  echo "$as_me:5104: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5034: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5107: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5037: \$? = $ac_status" >&5
+  echo "$as_me:5110: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -5050,7 +5123,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:5053: result: $cf_cv_term_header" >&5
+echo "$as_me:5126: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -5085,7 +5158,7 @@ esac
                fi
 
        else
-               echo "$as_me:5088: result: no" >&5
+               echo "$as_me:5161: result: no" >&5
 echo "${ECHO_T}no" >&6
                NCURSES_CONFIG_PKG=none
        fi
@@ -5101,7 +5174,7 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:5104: checking for $ac_word" >&5
+echo "$as_me:5177: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5116,7 +5189,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:5119: found $ac_dir/$ac_word" >&5
+echo "$as_me:5192: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5124,10 +5197,10 @@ fi
 fi
 NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG
 if test -n "$NCURSES_CONFIG"; then
-  echo "$as_me:5127: result: $NCURSES_CONFIG" >&5
+  echo "$as_me:5200: result: $NCURSES_CONFIG" >&5
 echo "${ECHO_T}$NCURSES_CONFIG" >&6
 else
-  echo "$as_me:5130: result: no" >&5
+  echo "$as_me:5203: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5140,7 +5213,7 @@ if test -z "$NCURSES_CONFIG"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:5143: checking for $ac_word" >&5
+echo "$as_me:5216: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5155,7 +5228,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog"
-echo "$as_me:5158: found $ac_dir/$ac_word" >&5
+echo "$as_me:5231: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5163,10 +5236,10 @@ fi
 fi
 ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG
 if test -n "$ac_ct_NCURSES_CONFIG"; then
-  echo "$as_me:5166: result: $ac_ct_NCURSES_CONFIG" >&5
+  echo "$as_me:5239: result: $ac_ct_NCURSES_CONFIG" >&5
 echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6
 else
-  echo "$as_me:5169: result: no" >&5
+  echo "$as_me:5242: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5323,7 +5396,7 @@ LIBS="$cf_add_libs"
 
                # even with config script, some packages use no-override for curses.h
 
-echo "$as_me:5326: checking if we have identified curses headers" >&5
+echo "$as_me:5399: checking if we have identified curses headers" >&5
 echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
 if test "${cf_cv_ncurses_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5335,7 +5408,7 @@ for cf_header in \
        curses.h ncurses/curses.h
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 5338 "configure"
+#line 5411 "configure"
 #include "confdefs.h"
 #include <${cf_header}>
 int
@@ -5347,16 +5420,16 @@ initscr(); endwin()
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5350: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5423: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5353: \$? = $ac_status" >&5
+  echo "$as_me:5426: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5356: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5429: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5359: \$? = $ac_status" >&5
+  echo "$as_me:5432: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_header=$cf_header; break
 else
@@ -5367,11 +5440,11 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:5370: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:5443: result: $cf_cv_ncurses_header" >&5
 echo "${ECHO_T}$cf_cv_ncurses_header" >&6
 
 if test "$cf_cv_ncurses_header" = none ; then
-       { { echo "$as_me:5374: error: No curses header-files found" >&5
+       { { echo "$as_me:5447: error: No curses header-files found" >&5
 echo "$as_me: error: No curses header-files found" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -5381,23 +5454,23 @@ fi
 for ac_header in $cf_cv_ncurses_header
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:5384: checking for $ac_header" >&5
+echo "$as_me:5457: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 5390 "configure"
+#line 5463 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:5394: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:5467: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:5400: \$? = $ac_status" >&5
+  echo "$as_me:5473: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -5416,7 +5489,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:5419: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:5492: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -5472,7 +5545,7 @@ if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 5475 "configure"
+#line 5548 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -5484,16 +5557,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5487: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5560: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5490: \$? = $ac_status" >&5
+  echo "$as_me:5563: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5493: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5566: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5496: \$? = $ac_status" >&5
+  echo "$as_me:5569: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -5510,7 +5583,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:5513: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:5586: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -5529,7 +5602,7 @@ fi
 
 }
 
-echo "$as_me:5532: checking for $cf_ncuhdr_root header in include-path" >&5
+echo "$as_me:5605: checking for $cf_ncuhdr_root header in include-path" >&5
 echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6
 if test "${cf_cv_ncurses_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5541,7 +5614,7 @@ else
        do
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 5544 "configure"
+#line 5617 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -5556,7 +5629,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
 
@@ -5565,16 +5638,16 @@ printf("old\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5568: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5641: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5571: \$? = $ac_status" >&5
+  echo "$as_me:5644: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5574: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5647: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5577: \$? = $ac_status" >&5
+  echo "$as_me:5650: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_h=$cf_header
 
@@ -5589,14 +5662,14 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        done
 
 fi
-echo "$as_me:5592: result: $cf_cv_ncurses_h" >&5
+echo "$as_me:5665: result: $cf_cv_ncurses_h" >&5
 echo "${ECHO_T}$cf_cv_ncurses_h" >&6
 
 if test "$cf_cv_ncurses_h" != no ; then
        cf_cv_ncurses_header=$cf_cv_ncurses_h
 else
 
-echo "$as_me:5599: checking for $cf_ncuhdr_root include-path" >&5
+echo "$as_me:5672: checking for $cf_ncuhdr_root include-path" >&5
 echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6
 if test "${cf_cv_ncurses_h2+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5717,7 +5790,7 @@ if test -n "$cf_incdir" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 5720 "configure"
+#line 5793 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -5729,16 +5802,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5732: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5805: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5735: \$? = $ac_status" >&5
+  echo "$as_me:5808: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5738: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5811: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5741: \$? = $ac_status" >&5
+  echo "$as_me:5814: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -5755,7 +5828,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:5758: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:5831: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -5778,7 +5851,7 @@ fi
                do
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 5781 "configure"
+#line 5854 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -5793,7 +5866,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
 
@@ -5802,16 +5875,16 @@ printf("old\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5805: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5878: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5808: \$? = $ac_status" >&5
+  echo "$as_me:5881: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5811: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5884: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5814: \$? = $ac_status" >&5
+  echo "$as_me:5887: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_h2=$cf_header
 
@@ -5832,12 +5905,12 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CPPFLAGS="$cf_save2_CPPFLAGS"
                test "$cf_cv_ncurses_h2" != no && break
        done
-       test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:5835: error: not found" >&5
+       test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:5908: error: not found" >&5
 echo "$as_me: error: not found" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:5840: result: $cf_cv_ncurses_h2" >&5
+echo "$as_me:5913: result: $cf_cv_ncurses_h2" >&5
 echo "${ECHO_T}$cf_cv_ncurses_h2" >&6
 
        cf_1st_incdir=`echo "$cf_cv_ncurses_h2" | sed -e 's%/[^/]*$%%'`
@@ -5873,7 +5946,7 @@ if test -n "$cf_1st_incdir" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 5876 "configure"
+#line 5949 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -5885,16 +5958,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5888: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5961: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5891: \$? = $ac_status" >&5
+  echo "$as_me:5964: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5894: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5967: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5897: \$? = $ac_status" >&5
+  echo "$as_me:5970: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -5911,7 +5984,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:5914: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:5987: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -5959,7 +6032,7 @@ EOF
        ;;
 esac
 
-echo "$as_me:5962: checking for terminfo header" >&5
+echo "$as_me:6035: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5977,7 +6050,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 5980 "configure"
+#line 6053 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -5992,16 +6065,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5995: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6068: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5998: \$? = $ac_status" >&5
+  echo "$as_me:6071: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6001: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6074: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6004: \$? = $ac_status" >&5
+  echo "$as_me:6077: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -6017,7 +6090,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:6020: result: $cf_cv_term_header" >&5
+echo "$as_me:6093: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -6055,7 +6128,7 @@ cat >>confdefs.h <<\EOF
 #define NCURSES 1
 EOF
 
-echo "$as_me:6058: checking for ncurses version" >&5
+echo "$as_me:6131: checking for ncurses version" >&5
 echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
 if test "${cf_cv_ncurses_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6081,10 +6154,10 @@ Autoconf "old"
 #endif
 EOF
        cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
-       { (eval echo "$as_me:6084: \"$cf_try\"") >&5
+       { (eval echo "$as_me:6157: \"$cf_try\"") >&5
   (eval $cf_try) 2>&5
   ac_status=$?
-  echo "$as_me:6087: \$? = $ac_status" >&5
+  echo "$as_me:6160: \$? = $ac_status" >&5
   (exit "$ac_status"); }
        if test -f conftest.out ; then
                cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out`
@@ -6094,7 +6167,7 @@ EOF
 
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6097 "configure"
+#line 6170 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -6114,22 +6187,22 @@ int main(void)
 # ifdef __NCURSES_H
        fprintf(fp, "old\\n");
 # else
-       make an error
+       #error expected ncurses header to define __NCURSES_H
 # endif
 #endif
        ${cf_cv_main_return:-return}(0);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:6124: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6197: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6127: \$? = $ac_status" >&5
+  echo "$as_me:6200: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:6129: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6202: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6132: \$? = $ac_status" >&5
+  echo "$as_me:6205: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -6143,7 +6216,7 @@ fi
        rm -f "$cf_tempfile"
 
 fi
-echo "$as_me:6146: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:6219: result: $cf_cv_ncurses_version" >&5
 echo "${ECHO_T}$cf_cv_ncurses_version" >&6
 test "$cf_cv_ncurses_version" = no ||
 cat >>confdefs.h <<\EOF
@@ -6156,7 +6229,7 @@ cf_nculib_root=ncurses
        # to link gpm.
 cf_ncurses_LIBS=""
 cf_ncurses_SAVE="$LIBS"
-echo "$as_me:6159: checking for Gpm_Open in -lgpm" >&5
+echo "$as_me:6232: checking for Gpm_Open in -lgpm" >&5
 echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6164,7 +6237,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6167 "configure"
+#line 6240 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -6173,7 +6246,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char Gpm_Open ();
+char Gpm_Open (void);
 int
 main (void)
 {
@@ -6183,16 +6256,16 @@ Gpm_Open ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6186: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6259: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6189: \$? = $ac_status" >&5
+  echo "$as_me:6262: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6192: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6265: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6195: \$? = $ac_status" >&5
+  echo "$as_me:6268: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_Gpm_Open=yes
 else
@@ -6203,10 +6276,10 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:6206: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:6279: result: $ac_cv_lib_gpm_Gpm_Open" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
 if test "$ac_cv_lib_gpm_Gpm_Open" = yes; then
-  echo "$as_me:6209: checking for initscr in -lgpm" >&5
+  echo "$as_me:6282: checking for initscr in -lgpm" >&5
 echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6214,7 +6287,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6217 "configure"
+#line 6290 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -6223,7 +6296,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char initscr ();
+char initscr (void);
 int
 main (void)
 {
@@ -6233,16 +6306,16 @@ initscr ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6236: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6309: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6239: \$? = $ac_status" >&5
+  echo "$as_me:6312: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6242: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6315: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6245: \$? = $ac_status" >&5
+  echo "$as_me:6318: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_initscr=yes
 else
@@ -6253,7 +6326,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:6256: result: $ac_cv_lib_gpm_initscr" >&5
+echo "$as_me:6329: result: $ac_cv_lib_gpm_initscr" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6
 if test "$ac_cv_lib_gpm_initscr" = yes; then
   LIBS="$cf_ncurses_SAVE"
@@ -6268,7 +6341,7 @@ case "$host_os" in
        # This is only necessary if you are linking against an obsolete
        # version of ncurses (but it should do no harm, since it is static).
        if test "$cf_nculib_root" = ncurses ; then
-               echo "$as_me:6271: checking for tgoto in -lmytinfo" >&5
+               echo "$as_me:6344: checking for tgoto in -lmytinfo" >&5
 echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
 if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6276,7 +6349,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmytinfo  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6279 "configure"
+#line 6352 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -6285,7 +6358,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char tgoto ();
+char tgoto (void);
 int
 main (void)
 {
@@ -6295,16 +6368,16 @@ tgoto ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6298: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6371: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6301: \$? = $ac_status" >&5
+  echo "$as_me:6374: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6304: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6377: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6307: \$? = $ac_status" >&5
+  echo "$as_me:6380: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_mytinfo_tgoto=yes
 else
@@ -6315,7 +6388,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:6318: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:6391: result: $ac_cv_lib_mytinfo_tgoto" >&5
 echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
 if test "$ac_cv_lib_mytinfo_tgoto" = yes; then
   cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
@@ -6364,13 +6437,13 @@ else
 
        eval 'cf_cv_have_lib_'"$cf_nculib_root"'=no'
        cf_libdir=""
-       echo "$as_me:6367: checking for initscr" >&5
+       echo "$as_me:6440: checking for initscr" >&5
 echo $ECHO_N "checking for initscr... $ECHO_C" >&6
 if test "${ac_cv_func_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6373 "configure"
+#line 6446 "configure"
 #include "confdefs.h"
 #define initscr autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -6401,16 +6474,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6404: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6477: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6407: \$? = $ac_status" >&5
+  echo "$as_me:6480: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6410: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6483: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6413: \$? = $ac_status" >&5
+  echo "$as_me:6486: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_initscr=yes
 else
@@ -6420,18 +6493,18 @@ ac_cv_func_initscr=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:6423: result: $ac_cv_func_initscr" >&5
+echo "$as_me:6496: result: $ac_cv_func_initscr" >&5
 echo "${ECHO_T}$ac_cv_func_initscr" >&6
 if test "$ac_cv_func_initscr" = yes; then
   eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
 else
 
                cf_save_LIBS="$LIBS"
-               echo "$as_me:6430: checking for initscr in -l$cf_nculib_root" >&5
+               echo "$as_me:6503: checking for initscr in -l$cf_nculib_root" >&5
 echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6
                LIBS="-l$cf_nculib_root $LIBS"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 6434 "configure"
+#line 6507 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -6443,25 +6516,25 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6446: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6519: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6449: \$? = $ac_status" >&5
+  echo "$as_me:6522: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6452: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6525: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6455: \$? = $ac_status" >&5
+  echo "$as_me:6528: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:6457: result: yes" >&5
+  echo "$as_me:6530: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                         eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
 
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:6464: result: no" >&5
+echo "$as_me:6537: result: no" >&5
 echo "${ECHO_T}no" >&6
 
 cf_search=
@@ -6529,11 +6602,11 @@ cf_search="$cf_library_path_list $cf_search"
 
                        for cf_libdir in $cf_search
                        do
-                               echo "$as_me:6532: checking for -l$cf_nculib_root in $cf_libdir" >&5
+                               echo "$as_me:6605: checking for -l$cf_nculib_root in $cf_libdir" >&5
 echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6
                                LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
                                cat >"conftest.$ac_ext" <<_ACEOF
-#line 6536 "configure"
+#line 6609 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -6545,25 +6618,25 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6548: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6621: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6551: \$? = $ac_status" >&5
+  echo "$as_me:6624: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6554: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6627: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6557: \$? = $ac_status" >&5
+  echo "$as_me:6630: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:6559: result: yes" >&5
+  echo "$as_me:6632: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                                         eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
                                         break
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:6566: result: no" >&5
+echo "$as_me:6639: result: no" >&5
 echo "${ECHO_T}no" >&6
                                         LIBS="$cf_save_LIBS"
 fi
@@ -6578,7 +6651,7 @@ fi
 eval 'cf_found_library="$cf_cv_have_lib_'"$cf_nculib_root"\"
 
 if test "$cf_found_library" = no ; then
-       { { echo "$as_me:6581: error: Cannot link $cf_nculib_root library" >&5
+       { { echo "$as_me:6654: error: Cannot link $cf_nculib_root library" >&5
 echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -6586,7 +6659,7 @@ fi
 fi
 
 if test -n "$cf_ncurses_LIBS" ; then
-       echo "$as_me:6589: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
+       echo "$as_me:6662: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
 echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6
        cf_ncurses_SAVE="$LIBS"
        for p in $cf_ncurses_LIBS ; do
@@ -6596,7 +6669,7 @@ echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS..
                fi
        done
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 6599 "configure"
+#line 6672 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -6608,23 +6681,23 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6611: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6684: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6614: \$? = $ac_status" >&5
+  echo "$as_me:6687: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6617: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6690: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6620: \$? = $ac_status" >&5
+  echo "$as_me:6693: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:6622: result: yes" >&5
+  echo "$as_me:6695: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:6627: result: no" >&5
+echo "$as_me:6700: result: no" >&5
 echo "${ECHO_T}no" >&6
                 LIBS="$cf_ncurses_SAVE"
 fi
@@ -6642,7 +6715,7 @@ else
        NCURSES_CONFIG=none
 fi
 
-echo "$as_me:6645: checking if you want wide-character code" >&5
+echo "$as_me:6718: checking if you want wide-character code" >&5
 echo $ECHO_N "checking if you want wide-character code... $ECHO_C" >&6
 
 # Check whether --enable-widec or --disable-widec was given.
@@ -6652,30 +6725,30 @@ if test "${enable_widec+set}" = set; then
 else
   with_widec=no
 fi;
-echo "$as_me:6655: result: $with_widec" >&5
+echo "$as_me:6728: result: $with_widec" >&5
 echo "${ECHO_T}$with_widec" >&6
 if test "$with_widec" = yes ; then
 
 for ac_header in wchar.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:6662: checking for $ac_header" >&5
+echo "$as_me:6735: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6668 "configure"
+#line 6741 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:6672: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:6745: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:6678: \$? = $ac_status" >&5
+  echo "$as_me:6751: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -6694,7 +6767,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:6697: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:6770: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -6704,7 +6777,7 @@ EOF
 fi
 done
 
-echo "$as_me:6707: checking for multibyte character support" >&5
+echo "$as_me:6780: checking for multibyte character support" >&5
 echo $ECHO_N "checking for multibyte character support... $ECHO_C" >&6
 if test "${cf_cv_utf8_lib+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6712,7 +6785,7 @@ else
 
        cf_save_LIBS="$LIBS"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 6715 "configure"
+#line 6788 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -6729,16 +6802,16 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6732: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6805: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6735: \$? = $ac_status" >&5
+  echo "$as_me:6808: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6738: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6811: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6741: \$? = $ac_status" >&5
+  echo "$as_me:6814: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_utf8_lib=yes
 else
@@ -6750,12 +6823,12 @@ cat "conftest.$ac_ext" >&5
 cf_cv_header_path_utf8=
 cf_cv_library_path_utf8=
 
-echo "${as_me:-configure}:6753: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:6826: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
 
 cf_save_LIBS="$LIBS"
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6758 "configure"
+#line 6831 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -6768,16 +6841,16 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6771: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6844: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6774: \$? = $ac_status" >&5
+  echo "$as_me:6847: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6777: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6850: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6780: \$? = $ac_status" >&5
+  echo "$as_me:6853: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_find_linkage_utf8=yes
@@ -6791,7 +6864,7 @@ cat "conftest.$ac_ext" >&5
 LIBS="-lutf8  $cf_save_LIBS"
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6794 "configure"
+#line 6867 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -6804,16 +6877,16 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6807: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6880: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6810: \$? = $ac_status" >&5
+  echo "$as_me:6883: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6813: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6886: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6816: \$? = $ac_status" >&5
+  echo "$as_me:6889: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_find_linkage_utf8=yes
@@ -6830,9 +6903,9 @@ cat "conftest.$ac_ext" >&5
 
        test -n "$verbose" && echo "    find linkage for utf8 library" 1>&6
 
-echo "${as_me:-configure}:6833: testing find linkage for utf8 library ..." 1>&5
+echo "${as_me:-configure}:6906: testing find linkage for utf8 library ..." 1>&5
 
-echo "${as_me:-configure}:6835: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:6908: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
 
        cf_save_CPPFLAGS="$CPPFLAGS"
        cf_test_CPPFLAGS="$CPPFLAGS"
@@ -6923,7 +6996,7 @@ cf_search="$cf_search $cf_header_path_list"
                if test -d "$cf_cv_header_path_utf8" ; then
                        test -n "$verbose" && echo "    ... testing $cf_cv_header_path_utf8" 1>&6
 
-echo "${as_me:-configure}:6926: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:6999: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
 
                        CPPFLAGS="$cf_save_CPPFLAGS"
 
@@ -6931,7 +7004,7 @@ echo "${as_me:-configure}:6926: testing ... testing $cf_cv_header_path_utf8 ..."
        CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 6934 "configure"
+#line 7007 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -6944,21 +7017,21 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:6947: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7020: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:6950: \$? = $ac_status" >&5
+  echo "$as_me:7023: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6953: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7026: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6956: \$? = $ac_status" >&5
+  echo "$as_me:7029: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                                test -n "$verbose" && echo "    ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6
 
-echo "${as_me:-configure}:6961: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:7034: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
 
                                cf_cv_find_linkage_utf8=maybe
                                cf_test_CPPFLAGS="$CPPFLAGS"
@@ -6976,7 +7049,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
        if test "$cf_cv_find_linkage_utf8" = maybe ; then
 
-echo "${as_me:-configure}:6979: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:7052: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
 
                cf_save_LIBS="$LIBS"
                cf_save_LDFLAGS="$LDFLAGS"
@@ -7051,13 +7124,13 @@ cf_search="$cf_library_path_list $cf_search"
                                if test -d "$cf_cv_library_path_utf8" ; then
                                        test -n "$verbose" && echo "    ... testing $cf_cv_library_path_utf8" 1>&6
 
-echo "${as_me:-configure}:7054: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:7127: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
 
                                        CPPFLAGS="$cf_test_CPPFLAGS"
                                        LIBS="-lutf8  $cf_save_LIBS"
                                        LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8"
                                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 7060 "configure"
+#line 7133 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -7070,21 +7143,21 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7073: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7146: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7076: \$? = $ac_status" >&5
+  echo "$as_me:7149: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7079: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7152: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7082: \$? = $ac_status" >&5
+  echo "$as_me:7155: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                                        test -n "$verbose" && echo "    ... found utf8 library in $cf_cv_library_path_utf8" 1>&6
 
-echo "${as_me:-configure}:7087: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:7160: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
 
                                        cf_cv_find_linkage_utf8=yes
                                        cf_cv_library_file_utf8="-lutf8"
@@ -7126,7 +7199,7 @@ fi
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:7129: result: $cf_cv_utf8_lib" >&5
+echo "$as_me:7202: result: $cf_cv_utf8_lib" >&5
 echo "${ECHO_T}$cf_cv_utf8_lib" >&6
 
 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
@@ -7164,7 +7237,7 @@ if test -n "$cf_cv_header_path_utf8" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 7167 "configure"
+#line 7240 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -7176,16 +7249,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:7179: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7252: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:7182: \$? = $ac_status" >&5
+  echo "$as_me:7255: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:7185: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7258: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7188: \$? = $ac_status" >&5
+  echo "$as_me:7261: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -7202,7 +7275,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:7205: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:7278: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -7238,7 +7311,7 @@ if test -n "$cf_cv_library_path_utf8" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:7241: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:7314: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
@@ -7268,13 +7341,13 @@ cf_ncuconfig_root=ncursesw
 cf_have_ncuconfig=no
 
 if test "x${PKG_CONFIG:=none}" != xnone; then
-       echo "$as_me:7271: checking pkg-config for $cf_ncuconfig_root" >&5
+       echo "$as_me:7344: checking pkg-config for $cf_ncuconfig_root" >&5
 echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
        if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
-               echo "$as_me:7274: result: yes" >&5
+               echo "$as_me:7347: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
-               echo "$as_me:7277: checking if the $cf_ncuconfig_root package files work" >&5
+               echo "$as_me:7350: checking if the $cf_ncuconfig_root package files work" >&5
 echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6
                cf_have_ncuconfig=unknown
 
@@ -7407,7 +7480,7 @@ done
 LIBS="$cf_add_libs"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 7410 "configure"
+#line 7483 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -7419,37 +7492,37 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7422: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7495: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7425: \$? = $ac_status" >&5
+  echo "$as_me:7498: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7428: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7501: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7431: \$? = $ac_status" >&5
+  echo "$as_me:7504: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_test_ncuconfig=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 7437 "configure"
+#line 7510 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
                                        int main(void)
                                        { const char *xx = curses_version(); return (xx == 0); }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:7444: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7517: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7447: \$? = $ac_status" >&5
+  echo "$as_me:7520: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:7449: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7522: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7452: \$? = $ac_status" >&5
+  echo "$as_me:7525: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_test_ncuconfig=yes
 else
@@ -7623,7 +7696,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 7626 "configure"
+#line 7699 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -7635,37 +7708,37 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7638: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7711: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7641: \$? = $ac_status" >&5
+  echo "$as_me:7714: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7644: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7717: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7647: \$? = $ac_status" >&5
+  echo "$as_me:7720: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_have_ncuconfig=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 7653 "configure"
+#line 7726 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
                                int main(void)
                                { const char *xx = curses_version(); return (xx == 0); }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:7660: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7733: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7663: \$? = $ac_status" >&5
+  echo "$as_me:7736: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:7665: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7738: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7668: \$? = $ac_status" >&5
+  echo "$as_me:7741: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_have_ncuconfig=yes
 else
@@ -7682,7 +7755,7 @@ cat "conftest.$ac_ext" >&5
 cf_have_ncuconfig=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:7685: result: $cf_have_ncuconfig" >&5
+               echo "$as_me:7758: result: $cf_have_ncuconfig" >&5
 echo "${ECHO_T}$cf_have_ncuconfig" >&6
                test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
                if test "$cf_have_ncuconfig" != "yes"
@@ -7698,7 +7771,7 @@ EOF
 
                        NCURSES_CONFIG_PKG=$cf_ncuconfig_root
 
-echo "$as_me:7701: checking for terminfo header" >&5
+echo "$as_me:7774: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7716,7 +7789,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 7719 "configure"
+#line 7792 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -7731,16 +7804,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:7734: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7807: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:7737: \$? = $ac_status" >&5
+  echo "$as_me:7810: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:7740: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7813: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7743: \$? = $ac_status" >&5
+  echo "$as_me:7816: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -7756,7 +7829,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:7759: result: $cf_cv_term_header" >&5
+echo "$as_me:7832: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -7791,7 +7864,7 @@ esac
                fi
 
        else
-               echo "$as_me:7794: result: no" >&5
+               echo "$as_me:7867: result: no" >&5
 echo "${ECHO_T}no" >&6
                NCURSES_CONFIG_PKG=none
        fi
@@ -7807,7 +7880,7 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:7810: checking for $ac_word" >&5
+echo "$as_me:7883: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7822,7 +7895,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:7825: found $ac_dir/$ac_word" >&5
+echo "$as_me:7898: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -7830,10 +7903,10 @@ fi
 fi
 NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG
 if test -n "$NCURSES_CONFIG"; then
-  echo "$as_me:7833: result: $NCURSES_CONFIG" >&5
+  echo "$as_me:7906: result: $NCURSES_CONFIG" >&5
 echo "${ECHO_T}$NCURSES_CONFIG" >&6
 else
-  echo "$as_me:7836: result: no" >&5
+  echo "$as_me:7909: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -7846,7 +7919,7 @@ if test -z "$NCURSES_CONFIG"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:7849: checking for $ac_word" >&5
+echo "$as_me:7922: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7861,7 +7934,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog"
-echo "$as_me:7864: found $ac_dir/$ac_word" >&5
+echo "$as_me:7937: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -7869,10 +7942,10 @@ fi
 fi
 ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG
 if test -n "$ac_ct_NCURSES_CONFIG"; then
-  echo "$as_me:7872: result: $ac_ct_NCURSES_CONFIG" >&5
+  echo "$as_me:7945: result: $ac_ct_NCURSES_CONFIG" >&5
 echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6
 else
-  echo "$as_me:7875: result: no" >&5
+  echo "$as_me:7948: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -8029,7 +8102,7 @@ LIBS="$cf_add_libs"
 
                # even with config script, some packages use no-override for curses.h
 
-echo "$as_me:8032: checking if we have identified curses headers" >&5
+echo "$as_me:8105: checking if we have identified curses headers" >&5
 echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
 if test "${cf_cv_ncurses_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8041,7 +8114,7 @@ for cf_header in \
        curses.h ncursesw/curses.h
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 8044 "configure"
+#line 8117 "configure"
 #include "confdefs.h"
 #include <${cf_header}>
 int
@@ -8053,16 +8126,16 @@ initscr(); endwin()
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8056: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8129: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8059: \$? = $ac_status" >&5
+  echo "$as_me:8132: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8062: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8135: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8065: \$? = $ac_status" >&5
+  echo "$as_me:8138: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_header=$cf_header; break
 else
@@ -8073,11 +8146,11 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:8076: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:8149: result: $cf_cv_ncurses_header" >&5
 echo "${ECHO_T}$cf_cv_ncurses_header" >&6
 
 if test "$cf_cv_ncurses_header" = none ; then
-       { { echo "$as_me:8080: error: No curses header-files found" >&5
+       { { echo "$as_me:8153: error: No curses header-files found" >&5
 echo "$as_me: error: No curses header-files found" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -8087,23 +8160,23 @@ fi
 for ac_header in $cf_cv_ncurses_header
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:8090: checking for $ac_header" >&5
+echo "$as_me:8163: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 8096 "configure"
+#line 8169 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:8100: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:8173: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:8106: \$? = $ac_status" >&5
+  echo "$as_me:8179: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -8122,7 +8195,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:8125: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:8198: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -8178,7 +8251,7 @@ if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 8181 "configure"
+#line 8254 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -8190,16 +8263,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8193: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8266: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8196: \$? = $ac_status" >&5
+  echo "$as_me:8269: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8199: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8272: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8202: \$? = $ac_status" >&5
+  echo "$as_me:8275: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -8216,7 +8289,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:8219: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:8292: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -8235,7 +8308,7 @@ fi
 
 }
 
-echo "$as_me:8238: checking for $cf_ncuhdr_root header in include-path" >&5
+echo "$as_me:8311: checking for $cf_ncuhdr_root header in include-path" >&5
 echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6
 if test "${cf_cv_ncurses_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8247,7 +8320,7 @@ else
        do
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 8250 "configure"
+#line 8323 "configure"
 #include "confdefs.h"
 
 #define _XOPEN_SOURCE_EXTENDED
@@ -8262,7 +8335,7 @@ main (void)
 #ifdef NCURSES_VERSION
 
 #ifndef WACS_BSSB
-       make an error
+       #error WACS_BSSB is not defined
 #endif
 
 printf("%s\\n", NCURSES_VERSION);
@@ -8270,7 +8343,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
 
@@ -8279,16 +8352,16 @@ printf("old\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8282: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8355: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8285: \$? = $ac_status" >&5
+  echo "$as_me:8358: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8288: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8361: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8291: \$? = $ac_status" >&5
+  echo "$as_me:8364: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_h=$cf_header
 
@@ -8303,14 +8376,14 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        done
 
 fi
-echo "$as_me:8306: result: $cf_cv_ncurses_h" >&5
+echo "$as_me:8379: result: $cf_cv_ncurses_h" >&5
 echo "${ECHO_T}$cf_cv_ncurses_h" >&6
 
 if test "$cf_cv_ncurses_h" != no ; then
        cf_cv_ncurses_header=$cf_cv_ncurses_h
 else
 
-echo "$as_me:8313: checking for $cf_ncuhdr_root include-path" >&5
+echo "$as_me:8386: checking for $cf_ncuhdr_root include-path" >&5
 echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6
 if test "${cf_cv_ncurses_h2+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8431,7 +8504,7 @@ if test -n "$cf_incdir" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 8434 "configure"
+#line 8507 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -8443,16 +8516,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8446: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8519: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8449: \$? = $ac_status" >&5
+  echo "$as_me:8522: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8452: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8525: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8455: \$? = $ac_status" >&5
+  echo "$as_me:8528: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -8469,7 +8542,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:8472: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:8545: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -8492,7 +8565,7 @@ fi
                do
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 8495 "configure"
+#line 8568 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -8507,7 +8580,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
 
@@ -8516,16 +8589,16 @@ printf("old\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8519: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8592: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8522: \$? = $ac_status" >&5
+  echo "$as_me:8595: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8525: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8598: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8528: \$? = $ac_status" >&5
+  echo "$as_me:8601: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_h2=$cf_header
 
@@ -8546,12 +8619,12 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CPPFLAGS="$cf_save2_CPPFLAGS"
                test "$cf_cv_ncurses_h2" != no && break
        done
-       test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:8549: error: not found" >&5
+       test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:8622: error: not found" >&5
 echo "$as_me: error: not found" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:8554: result: $cf_cv_ncurses_h2" >&5
+echo "$as_me:8627: result: $cf_cv_ncurses_h2" >&5
 echo "${ECHO_T}$cf_cv_ncurses_h2" >&6
 
        cf_1st_incdir=`echo "$cf_cv_ncurses_h2" | sed -e 's%/[^/]*$%%'`
@@ -8587,7 +8660,7 @@ if test -n "$cf_1st_incdir" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 8590 "configure"
+#line 8663 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -8599,16 +8672,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8602: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8675: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8605: \$? = $ac_status" >&5
+  echo "$as_me:8678: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8608: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8681: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8611: \$? = $ac_status" >&5
+  echo "$as_me:8684: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -8625,7 +8698,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:8628: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:8701: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -8673,7 +8746,7 @@ EOF
        ;;
 esac
 
-echo "$as_me:8676: checking for terminfo header" >&5
+echo "$as_me:8749: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8691,7 +8764,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 8694 "configure"
+#line 8767 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -8706,16 +8779,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8709: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8782: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8712: \$? = $ac_status" >&5
+  echo "$as_me:8785: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8715: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8788: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8718: \$? = $ac_status" >&5
+  echo "$as_me:8791: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -8731,7 +8804,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:8734: result: $cf_cv_term_header" >&5
+echo "$as_me:8807: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -8769,7 +8842,7 @@ cat >>confdefs.h <<\EOF
 #define NCURSES 1
 EOF
 
-echo "$as_me:8772: checking for ncurses version" >&5
+echo "$as_me:8845: checking for ncurses version" >&5
 echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
 if test "${cf_cv_ncurses_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8795,10 +8868,10 @@ Autoconf "old"
 #endif
 EOF
        cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
-       { (eval echo "$as_me:8798: \"$cf_try\"") >&5
+       { (eval echo "$as_me:8871: \"$cf_try\"") >&5
   (eval $cf_try) 2>&5
   ac_status=$?
-  echo "$as_me:8801: \$? = $ac_status" >&5
+  echo "$as_me:8874: \$? = $ac_status" >&5
   (exit "$ac_status"); }
        if test -f conftest.out ; then
                cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out`
@@ -8808,7 +8881,7 @@ EOF
 
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 8811 "configure"
+#line 8884 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -8828,22 +8901,22 @@ int main(void)
 # ifdef __NCURSES_H
        fprintf(fp, "old\\n");
 # else
-       make an error
+       #error expected ncurses header to define __NCURSES_H
 # endif
 #endif
        ${cf_cv_main_return:-return}(0);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:8838: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8911: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8841: \$? = $ac_status" >&5
+  echo "$as_me:8914: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:8843: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8916: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8846: \$? = $ac_status" >&5
+  echo "$as_me:8919: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -8857,7 +8930,7 @@ fi
        rm -f "$cf_tempfile"
 
 fi
-echo "$as_me:8860: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:8933: result: $cf_cv_ncurses_version" >&5
 echo "${ECHO_T}$cf_cv_ncurses_version" >&6
 test "$cf_cv_ncurses_version" = no ||
 cat >>confdefs.h <<\EOF
@@ -8870,7 +8943,7 @@ cf_nculib_root=ncursesw
        # to link gpm.
 cf_ncurses_LIBS=""
 cf_ncurses_SAVE="$LIBS"
-echo "$as_me:8873: checking for Gpm_Open in -lgpm" >&5
+echo "$as_me:8946: checking for Gpm_Open in -lgpm" >&5
 echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8878,7 +8951,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 8881 "configure"
+#line 8954 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -8887,7 +8960,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char Gpm_Open ();
+char Gpm_Open (void);
 int
 main (void)
 {
@@ -8897,16 +8970,16 @@ Gpm_Open ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:8900: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8973: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8903: \$? = $ac_status" >&5
+  echo "$as_me:8976: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:8906: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8979: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8909: \$? = $ac_status" >&5
+  echo "$as_me:8982: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_Gpm_Open=yes
 else
@@ -8917,10 +8990,10 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:8920: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:8993: result: $ac_cv_lib_gpm_Gpm_Open" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
 if test "$ac_cv_lib_gpm_Gpm_Open" = yes; then
-  echo "$as_me:8923: checking for initscr in -lgpm" >&5
+  echo "$as_me:8996: checking for initscr in -lgpm" >&5
 echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8928,7 +9001,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 8931 "configure"
+#line 9004 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -8937,7 +9010,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char initscr ();
+char initscr (void);
 int
 main (void)
 {
@@ -8947,16 +9020,16 @@ initscr ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:8950: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9023: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8953: \$? = $ac_status" >&5
+  echo "$as_me:9026: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:8956: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9029: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8959: \$? = $ac_status" >&5
+  echo "$as_me:9032: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_initscr=yes
 else
@@ -8967,7 +9040,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:8970: result: $ac_cv_lib_gpm_initscr" >&5
+echo "$as_me:9043: result: $ac_cv_lib_gpm_initscr" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6
 if test "$ac_cv_lib_gpm_initscr" = yes; then
   LIBS="$cf_ncurses_SAVE"
@@ -8982,7 +9055,7 @@ case "$host_os" in
        # This is only necessary if you are linking against an obsolete
        # version of ncurses (but it should do no harm, since it is static).
        if test "$cf_nculib_root" = ncurses ; then
-               echo "$as_me:8985: checking for tgoto in -lmytinfo" >&5
+               echo "$as_me:9058: checking for tgoto in -lmytinfo" >&5
 echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
 if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8990,7 +9063,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmytinfo  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 8993 "configure"
+#line 9066 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -8999,7 +9072,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char tgoto ();
+char tgoto (void);
 int
 main (void)
 {
@@ -9009,16 +9082,16 @@ tgoto ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:9012: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9085: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9015: \$? = $ac_status" >&5
+  echo "$as_me:9088: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:9018: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9091: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9021: \$? = $ac_status" >&5
+  echo "$as_me:9094: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_mytinfo_tgoto=yes
 else
@@ -9029,7 +9102,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:9032: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:9105: result: $ac_cv_lib_mytinfo_tgoto" >&5
 echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
 if test "$ac_cv_lib_mytinfo_tgoto" = yes; then
   cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
@@ -9078,13 +9151,13 @@ else
 
        eval 'cf_cv_have_lib_'"$cf_nculib_root"'=no'
        cf_libdir=""
-       echo "$as_me:9081: checking for initscr" >&5
+       echo "$as_me:9154: checking for initscr" >&5
 echo $ECHO_N "checking for initscr... $ECHO_C" >&6
 if test "${ac_cv_func_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 9087 "configure"
+#line 9160 "configure"
 #include "confdefs.h"
 #define initscr autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -9115,16 +9188,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:9118: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9191: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9121: \$? = $ac_status" >&5
+  echo "$as_me:9194: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:9124: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9197: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9127: \$? = $ac_status" >&5
+  echo "$as_me:9200: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_initscr=yes
 else
@@ -9134,18 +9207,18 @@ ac_cv_func_initscr=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:9137: result: $ac_cv_func_initscr" >&5
+echo "$as_me:9210: result: $ac_cv_func_initscr" >&5
 echo "${ECHO_T}$ac_cv_func_initscr" >&6
 if test "$ac_cv_func_initscr" = yes; then
   eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
 else
 
                cf_save_LIBS="$LIBS"
-               echo "$as_me:9144: checking for initscr in -l$cf_nculib_root" >&5
+               echo "$as_me:9217: checking for initscr in -l$cf_nculib_root" >&5
 echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6
                LIBS="-l$cf_nculib_root $LIBS"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 9148 "configure"
+#line 9221 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -9157,25 +9230,25 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:9160: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9233: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9163: \$? = $ac_status" >&5
+  echo "$as_me:9236: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:9166: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9239: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9169: \$? = $ac_status" >&5
+  echo "$as_me:9242: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:9171: result: yes" >&5
+  echo "$as_me:9244: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                         eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
 
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:9178: result: no" >&5
+echo "$as_me:9251: result: no" >&5
 echo "${ECHO_T}no" >&6
 
 cf_search=
@@ -9243,11 +9316,11 @@ cf_search="$cf_library_path_list $cf_search"
 
                        for cf_libdir in $cf_search
                        do
-                               echo "$as_me:9246: checking for -l$cf_nculib_root in $cf_libdir" >&5
+                               echo "$as_me:9319: checking for -l$cf_nculib_root in $cf_libdir" >&5
 echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6
                                LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
                                cat >"conftest.$ac_ext" <<_ACEOF
-#line 9250 "configure"
+#line 9323 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -9259,25 +9332,25 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:9262: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9335: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9265: \$? = $ac_status" >&5
+  echo "$as_me:9338: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:9268: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9341: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9271: \$? = $ac_status" >&5
+  echo "$as_me:9344: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:9273: result: yes" >&5
+  echo "$as_me:9346: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                                         eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
                                         break
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:9280: result: no" >&5
+echo "$as_me:9353: result: no" >&5
 echo "${ECHO_T}no" >&6
                                         LIBS="$cf_save_LIBS"
 fi
@@ -9292,7 +9365,7 @@ fi
 eval 'cf_found_library="$cf_cv_have_lib_'"$cf_nculib_root"\"
 
 if test "$cf_found_library" = no ; then
-       { { echo "$as_me:9295: error: Cannot link $cf_nculib_root library" >&5
+       { { echo "$as_me:9368: error: Cannot link $cf_nculib_root library" >&5
 echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -9300,7 +9373,7 @@ fi
 fi
 
 if test -n "$cf_ncurses_LIBS" ; then
-       echo "$as_me:9303: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
+       echo "$as_me:9376: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
 echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6
        cf_ncurses_SAVE="$LIBS"
        for p in $cf_ncurses_LIBS ; do
@@ -9310,7 +9383,7 @@ echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS..
                fi
        done
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 9313 "configure"
+#line 9386 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -9322,23 +9395,23 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:9325: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9398: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9328: \$? = $ac_status" >&5
+  echo "$as_me:9401: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:9331: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9404: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9334: \$? = $ac_status" >&5
+  echo "$as_me:9407: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:9336: result: yes" >&5
+  echo "$as_me:9409: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:9341: result: no" >&5
+echo "$as_me:9414: result: no" >&5
 echo "${ECHO_T}no" >&6
                 LIBS="$cf_ncurses_SAVE"
 fi
@@ -9362,13 +9435,13 @@ cf_ncuconfig_root=ncurses
 cf_have_ncuconfig=no
 
 if test "x${PKG_CONFIG:=none}" != xnone; then
-       echo "$as_me:9365: checking pkg-config for $cf_ncuconfig_root" >&5
+       echo "$as_me:9438: checking pkg-config for $cf_ncuconfig_root" >&5
 echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
        if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
-               echo "$as_me:9368: result: yes" >&5
+               echo "$as_me:9441: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
-               echo "$as_me:9371: checking if the $cf_ncuconfig_root package files work" >&5
+               echo "$as_me:9444: checking if the $cf_ncuconfig_root package files work" >&5
 echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6
                cf_have_ncuconfig=unknown
 
@@ -9501,7 +9574,7 @@ done
 LIBS="$cf_add_libs"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 9504 "configure"
+#line 9577 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -9513,37 +9586,37 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:9516: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9589: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9519: \$? = $ac_status" >&5
+  echo "$as_me:9592: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:9522: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9595: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9525: \$? = $ac_status" >&5
+  echo "$as_me:9598: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_test_ncuconfig=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 9531 "configure"
+#line 9604 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
                                        int main(void)
                                        { const char *xx = curses_version(); return (xx == 0); }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:9538: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9611: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9541: \$? = $ac_status" >&5
+  echo "$as_me:9614: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:9543: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9616: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9546: \$? = $ac_status" >&5
+  echo "$as_me:9619: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_test_ncuconfig=yes
 else
@@ -9717,7 +9790,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 9720 "configure"
+#line 9793 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -9729,37 +9802,37 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:9732: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9805: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9735: \$? = $ac_status" >&5
+  echo "$as_me:9808: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:9738: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9811: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9741: \$? = $ac_status" >&5
+  echo "$as_me:9814: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_have_ncuconfig=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 9747 "configure"
+#line 9820 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
                                int main(void)
                                { const char *xx = curses_version(); return (xx == 0); }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:9754: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9827: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9757: \$? = $ac_status" >&5
+  echo "$as_me:9830: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:9759: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9832: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9762: \$? = $ac_status" >&5
+  echo "$as_me:9835: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_have_ncuconfig=yes
 else
@@ -9776,7 +9849,7 @@ cat "conftest.$ac_ext" >&5
 cf_have_ncuconfig=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:9779: result: $cf_have_ncuconfig" >&5
+               echo "$as_me:9852: result: $cf_have_ncuconfig" >&5
 echo "${ECHO_T}$cf_have_ncuconfig" >&6
                test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
                if test "$cf_have_ncuconfig" != "yes"
@@ -9792,7 +9865,7 @@ EOF
 
                        NCURSES_CONFIG_PKG=$cf_ncuconfig_root
 
-echo "$as_me:9795: checking for terminfo header" >&5
+echo "$as_me:9868: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9810,7 +9883,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 9813 "configure"
+#line 9886 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -9825,16 +9898,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:9828: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9901: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:9831: \$? = $ac_status" >&5
+  echo "$as_me:9904: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:9834: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9907: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9837: \$? = $ac_status" >&5
+  echo "$as_me:9910: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -9850,7 +9923,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:9853: result: $cf_cv_term_header" >&5
+echo "$as_me:9926: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -9885,7 +9958,7 @@ esac
                fi
 
        else
-               echo "$as_me:9888: result: no" >&5
+               echo "$as_me:9961: result: no" >&5
 echo "${ECHO_T}no" >&6
                NCURSES_CONFIG_PKG=none
        fi
@@ -9901,7 +9974,7 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:9904: checking for $ac_word" >&5
+echo "$as_me:9977: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9916,7 +9989,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:9919: found $ac_dir/$ac_word" >&5
+echo "$as_me:9992: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -9924,10 +9997,10 @@ fi
 fi
 NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG
 if test -n "$NCURSES_CONFIG"; then
-  echo "$as_me:9927: result: $NCURSES_CONFIG" >&5
+  echo "$as_me:10000: result: $NCURSES_CONFIG" >&5
 echo "${ECHO_T}$NCURSES_CONFIG" >&6
 else
-  echo "$as_me:9930: result: no" >&5
+  echo "$as_me:10003: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -9940,7 +10013,7 @@ if test -z "$NCURSES_CONFIG"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:9943: checking for $ac_word" >&5
+echo "$as_me:10016: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9955,7 +10028,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog"
-echo "$as_me:9958: found $ac_dir/$ac_word" >&5
+echo "$as_me:10031: found $ac_dir/$ac_word" >&5
 break
 done
 
 fi
 ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG
 if test -n "$ac_ct_NCURSES_CONFIG"; then
-  echo "$as_me:9966: result: $ac_ct_NCURSES_CONFIG" >&5
+  echo "$as_me:10039: result: $ac_ct_NCURSES_CONFIG" >&5
 echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6
 else
-  echo "$as_me:9969: result: no" >&5
+  echo "$as_me:10042: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -10123,7 +10196,7 @@ LIBS="$cf_add_libs"
 
                # even with config script, some packages use no-override for curses.h
 
-echo "$as_me:10126: checking if we have identified curses headers" >&5
+echo "$as_me:10199: checking if we have identified curses headers" >&5
 echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
 if test "${cf_cv_ncurses_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10135,7 +10208,7 @@ for cf_header in \
        curses.h ncurses/curses.h
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 10138 "configure"
+#line 10211 "configure"
 #include "confdefs.h"
 #include <${cf_header}>
 int
@@ -10147,16 +10220,16 @@ initscr(); endwin()
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10150: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10223: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10153: \$? = $ac_status" >&5
+  echo "$as_me:10226: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10156: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10229: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10159: \$? = $ac_status" >&5
+  echo "$as_me:10232: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_header=$cf_header; break
 else
@@ -10167,11 +10240,11 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:10170: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:10243: result: $cf_cv_ncurses_header" >&5
 echo "${ECHO_T}$cf_cv_ncurses_header" >&6
 
 if test "$cf_cv_ncurses_header" = none ; then
-       { { echo "$as_me:10174: error: No curses header-files found" >&5
+       { { echo "$as_me:10247: error: No curses header-files found" >&5
 echo "$as_me: error: No curses header-files found" >&2;}
    { (exit 1); exit 1; }; }
 fi
 for ac_header in $cf_cv_ncurses_header
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:10184: checking for $ac_header" >&5
+echo "$as_me:10257: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 10190 "configure"
+#line 10263 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:10194: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:10267: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:10200: \$? = $ac_status" >&5
+  echo "$as_me:10273: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -10216,7 +10289,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:10219: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:10292: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -10272,7 +10345,7 @@ if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 10275 "configure"
+#line 10348 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -10284,16 +10357,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10287: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10360: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10290: \$? = $ac_status" >&5
+  echo "$as_me:10363: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10293: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10366: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10296: \$? = $ac_status" >&5
+  echo "$as_me:10369: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -10310,7 +10383,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:10313: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:10386: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -10329,7 +10402,7 @@ fi
 
 }
 
-echo "$as_me:10332: checking for $cf_ncuhdr_root header in include-path" >&5
+echo "$as_me:10405: checking for $cf_ncuhdr_root header in include-path" >&5
 echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6
 if test "${cf_cv_ncurses_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10341,7 +10414,7 @@ else
        do
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 10344 "configure"
+#line 10417 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -10356,7 +10429,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
 
@@ -10365,16 +10438,16 @@ printf("old\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10368: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10441: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10371: \$? = $ac_status" >&5
+  echo "$as_me:10444: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10374: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10447: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10377: \$? = $ac_status" >&5
+  echo "$as_me:10450: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_h=$cf_header
 
@@ -10389,14 +10462,14 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        done
 
 fi
-echo "$as_me:10392: result: $cf_cv_ncurses_h" >&5
+echo "$as_me:10465: result: $cf_cv_ncurses_h" >&5
 echo "${ECHO_T}$cf_cv_ncurses_h" >&6
 
 if test "$cf_cv_ncurses_h" != no ; then
        cf_cv_ncurses_header=$cf_cv_ncurses_h
 else
 
-echo "$as_me:10399: checking for $cf_ncuhdr_root include-path" >&5
+echo "$as_me:10472: checking for $cf_ncuhdr_root include-path" >&5
 echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6
 if test "${cf_cv_ncurses_h2+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10517,7 +10590,7 @@ if test -n "$cf_incdir" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 10520 "configure"
+#line 10593 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -10529,16 +10602,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10532: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10605: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10535: \$? = $ac_status" >&5
+  echo "$as_me:10608: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10538: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10611: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10541: \$? = $ac_status" >&5
+  echo "$as_me:10614: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -10555,7 +10628,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:10558: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:10631: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -10578,7 +10651,7 @@ fi
                do
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 10581 "configure"
+#line 10654 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -10593,7 +10666,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
 
@@ -10602,16 +10675,16 @@ printf("old\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10605: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10678: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10608: \$? = $ac_status" >&5
+  echo "$as_me:10681: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10611: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10684: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10614: \$? = $ac_status" >&5
+  echo "$as_me:10687: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_h2=$cf_header
 
@@ -10632,12 +10705,12 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CPPFLAGS="$cf_save2_CPPFLAGS"
                test "$cf_cv_ncurses_h2" != no && break
        done
-       test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:10635: error: not found" >&5
+       test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:10708: error: not found" >&5
 echo "$as_me: error: not found" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:10640: result: $cf_cv_ncurses_h2" >&5
+echo "$as_me:10713: result: $cf_cv_ncurses_h2" >&5
 echo "${ECHO_T}$cf_cv_ncurses_h2" >&6
 
        cf_1st_incdir=`echo "$cf_cv_ncurses_h2" | sed -e 's%/[^/]*$%%'`
@@ -10673,7 +10746,7 @@ if test -n "$cf_1st_incdir" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 10676 "configure"
+#line 10749 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -10685,16 +10758,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10688: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10761: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10691: \$? = $ac_status" >&5
+  echo "$as_me:10764: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10694: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10767: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10697: \$? = $ac_status" >&5
+  echo "$as_me:10770: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -10711,7 +10784,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:10714: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:10787: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -10759,7 +10832,7 @@ EOF
        ;;
 esac
 
-echo "$as_me:10762: checking for terminfo header" >&5
+echo "$as_me:10835: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10777,7 +10850,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 10780 "configure"
+#line 10853 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -10792,16 +10865,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10795: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10868: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10798: \$? = $ac_status" >&5
+  echo "$as_me:10871: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10801: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10874: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10804: \$? = $ac_status" >&5
+  echo "$as_me:10877: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -10817,7 +10890,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:10820: result: $cf_cv_term_header" >&5
+echo "$as_me:10893: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -10855,7 +10928,7 @@ cat >>confdefs.h <<\EOF
 #define NCURSES 1
 EOF
 
-echo "$as_me:10858: checking for ncurses version" >&5
+echo "$as_me:10931: checking for ncurses version" >&5
 echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
 if test "${cf_cv_ncurses_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10881,10 +10954,10 @@ Autoconf "old"
 #endif
 EOF
        cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
-       { (eval echo "$as_me:10884: \"$cf_try\"") >&5
+       { (eval echo "$as_me:10957: \"$cf_try\"") >&5
   (eval $cf_try) 2>&5
   ac_status=$?
-  echo "$as_me:10887: \$? = $ac_status" >&5
+  echo "$as_me:10960: \$? = $ac_status" >&5
   (exit "$ac_status"); }
        if test -f conftest.out ; then
                cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out`
@@ -10894,7 +10967,7 @@ EOF
 
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 10897 "configure"
+#line 10970 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -10914,22 +10987,22 @@ int main(void)
 # ifdef __NCURSES_H
        fprintf(fp, "old\\n");
 # else
-       make an error
+       #error expected ncurses header to define __NCURSES_H
 # endif
 #endif
        ${cf_cv_main_return:-return}(0);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:10924: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10997: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10927: \$? = $ac_status" >&5
+  echo "$as_me:11000: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:10929: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11002: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10932: \$? = $ac_status" >&5
+  echo "$as_me:11005: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -10943,7 +11016,7 @@ fi
        rm -f "$cf_tempfile"
 
 fi
-echo "$as_me:10946: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:11019: result: $cf_cv_ncurses_version" >&5
 echo "${ECHO_T}$cf_cv_ncurses_version" >&6
 test "$cf_cv_ncurses_version" = no ||
 cat >>confdefs.h <<\EOF
@@ -10956,7 +11029,7 @@ cf_nculib_root=ncurses
        # to link gpm.
 cf_ncurses_LIBS=""
 cf_ncurses_SAVE="$LIBS"
-echo "$as_me:10959: checking for Gpm_Open in -lgpm" >&5
+echo "$as_me:11032: checking for Gpm_Open in -lgpm" >&5
 echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10964,7 +11037,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 10967 "configure"
+#line 11040 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -10973,7 +11046,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char Gpm_Open ();
+char Gpm_Open (void);
 int
 main (void)
 {
@@ -10983,16 +11056,16 @@ Gpm_Open ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:10986: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11059: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10989: \$? = $ac_status" >&5
+  echo "$as_me:11062: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:10992: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11065: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10995: \$? = $ac_status" >&5
+  echo "$as_me:11068: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_Gpm_Open=yes
 else
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:11006: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:11079: result: $ac_cv_lib_gpm_Gpm_Open" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
 if test "$ac_cv_lib_gpm_Gpm_Open" = yes; then
-  echo "$as_me:11009: checking for initscr in -lgpm" >&5
+  echo "$as_me:11082: checking for initscr in -lgpm" >&5
 echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11014,7 +11087,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 11017 "configure"
+#line 11090 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -11023,7 +11096,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char initscr ();
+char initscr (void);
 int
 main (void)
 {
@@ -11033,16 +11106,16 @@ initscr ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:11036: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11109: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11039: \$? = $ac_status" >&5
+  echo "$as_me:11112: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:11042: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11115: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11045: \$? = $ac_status" >&5
+  echo "$as_me:11118: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_initscr=yes
 else
@@ -11053,7 +11126,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:11056: result: $ac_cv_lib_gpm_initscr" >&5
+echo "$as_me:11129: result: $ac_cv_lib_gpm_initscr" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6
 if test "$ac_cv_lib_gpm_initscr" = yes; then
   LIBS="$cf_ncurses_SAVE"
@@ -11068,7 +11141,7 @@ case "$host_os" in
        # This is only necessary if you are linking against an obsolete
        # version of ncurses (but it should do no harm, since it is static).
        if test "$cf_nculib_root" = ncurses ; then
-               echo "$as_me:11071: checking for tgoto in -lmytinfo" >&5
+               echo "$as_me:11144: checking for tgoto in -lmytinfo" >&5
 echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
 if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11076,7 +11149,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmytinfo  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 11079 "configure"
+#line 11152 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -11085,7 +11158,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char tgoto ();
+char tgoto (void);
 int
 main (void)
 {
@@ -11095,16 +11168,16 @@ tgoto ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:11098: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11171: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11101: \$? = $ac_status" >&5
+  echo "$as_me:11174: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:11104: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11177: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11107: \$? = $ac_status" >&5
+  echo "$as_me:11180: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_mytinfo_tgoto=yes
 else
@@ -11115,7 +11188,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:11118: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:11191: result: $ac_cv_lib_mytinfo_tgoto" >&5
 echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
 if test "$ac_cv_lib_mytinfo_tgoto" = yes; then
   cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
@@ -11164,13 +11237,13 @@ else
 
        eval 'cf_cv_have_lib_'"$cf_nculib_root"'=no'
        cf_libdir=""
-       echo "$as_me:11167: checking for initscr" >&5
+       echo "$as_me:11240: checking for initscr" >&5
 echo $ECHO_N "checking for initscr... $ECHO_C" >&6
 if test "${ac_cv_func_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 11173 "configure"
+#line 11246 "configure"
 #include "confdefs.h"
 #define initscr autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -11201,16 +11274,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:11204: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11277: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11207: \$? = $ac_status" >&5
+  echo "$as_me:11280: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:11210: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11283: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11213: \$? = $ac_status" >&5
+  echo "$as_me:11286: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_initscr=yes
 else
@@ -11220,18 +11293,18 @@ ac_cv_func_initscr=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:11223: result: $ac_cv_func_initscr" >&5
+echo "$as_me:11296: result: $ac_cv_func_initscr" >&5
 echo "${ECHO_T}$ac_cv_func_initscr" >&6
 if test "$ac_cv_func_initscr" = yes; then
   eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
 else
 
                cf_save_LIBS="$LIBS"
-               echo "$as_me:11230: checking for initscr in -l$cf_nculib_root" >&5
+               echo "$as_me:11303: checking for initscr in -l$cf_nculib_root" >&5
 echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6
                LIBS="-l$cf_nculib_root $LIBS"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 11234 "configure"
+#line 11307 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -11243,25 +11316,25 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:11246: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11319: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11249: \$? = $ac_status" >&5
+  echo "$as_me:11322: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:11252: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11325: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11255: \$? = $ac_status" >&5
+  echo "$as_me:11328: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:11257: result: yes" >&5
+  echo "$as_me:11330: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                         eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
 
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:11264: result: no" >&5
+echo "$as_me:11337: result: no" >&5
 echo "${ECHO_T}no" >&6
 
 cf_search=
@@ -11329,11 +11402,11 @@ cf_search="$cf_library_path_list $cf_search"
 
                        for cf_libdir in $cf_search
                        do
-                               echo "$as_me:11332: checking for -l$cf_nculib_root in $cf_libdir" >&5
+                               echo "$as_me:11405: checking for -l$cf_nculib_root in $cf_libdir" >&5
 echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6
                                LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
                                cat >"conftest.$ac_ext" <<_ACEOF
-#line 11336 "configure"
+#line 11409 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -11345,25 +11418,25 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:11348: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11421: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11351: \$? = $ac_status" >&5
+  echo "$as_me:11424: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:11354: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11427: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11357: \$? = $ac_status" >&5
+  echo "$as_me:11430: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:11359: result: yes" >&5
+  echo "$as_me:11432: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                                         eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
                                         break
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:11366: result: no" >&5
+echo "$as_me:11439: result: no" >&5
 echo "${ECHO_T}no" >&6
                                         LIBS="$cf_save_LIBS"
 fi
@@ -11378,7 +11451,7 @@ fi
 eval 'cf_found_library="$cf_cv_have_lib_'"$cf_nculib_root"\"
 
 if test "$cf_found_library" = no ; then
-       { { echo "$as_me:11381: error: Cannot link $cf_nculib_root library" >&5
+       { { echo "$as_me:11454: error: Cannot link $cf_nculib_root library" >&5
 echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -11386,7 +11459,7 @@ fi
 fi
 
 if test -n "$cf_ncurses_LIBS" ; then
-       echo "$as_me:11389: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
+       echo "$as_me:11462: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
 echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6
        cf_ncurses_SAVE="$LIBS"
        for p in $cf_ncurses_LIBS ; do
@@ -11396,7 +11469,7 @@ echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS..
                fi
        done
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 11399 "configure"
+#line 11472 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -11408,23 +11481,23 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:11411: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11484: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11414: \$? = $ac_status" >&5
+  echo "$as_me:11487: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:11417: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11490: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11420: \$? = $ac_status" >&5
+  echo "$as_me:11493: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:11422: result: yes" >&5
+  echo "$as_me:11495: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:11427: result: no" >&5
+echo "$as_me:11500: result: no" >&5
 echo "${ECHO_T}no" >&6
                 LIBS="$cf_ncurses_SAVE"
 fi
@@ -11477,10 +11550,10 @@ else
        AUTOCONF_$cf_name NCURSES_VERSION_$cf_name
 CF_EOF
                cf_try="$ac_cpp conftest.$ac_ext 2>&5 | fgrep AUTOCONF_$cf_name >conftest.out"
-               { (eval echo "$as_me:11480: \"$cf_try\"") >&5
+               { (eval echo "$as_me:11553: \"$cf_try\"") >&5
   (eval $cf_try) 2>&5
   ac_status=$?
-  echo "$as_me:11483: \$? = $ac_status" >&5
+  echo "$as_me:11556: \$? = $ac_status" >&5
   (exit "$ac_status"); }
                if test -f conftest.out ; then
                        cf_result=`sed -e "s/^.*AUTOCONF_${cf_name}[    ][      ]*//" conftest.out`
@@ -11498,10 +11571,10 @@ cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
 
 cf_cv_timestamp=`date`
 
-echo "$as_me:11501: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5
+echo "$as_me:11574: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5
 echo "${ECHO_T}Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&6
 
-echo "$as_me:11504: checking if you want to have a library-prefix" >&5
+echo "$as_me:11577: checking if you want to have a library-prefix" >&5
 echo $ECHO_N "checking if you want to have a library-prefix... $ECHO_C" >&6
 
 # Check whether --with-lib-prefix or --without-lib-prefix was given.
@@ -11511,7 +11584,7 @@ if test "${with_lib_prefix+set}" = set; then
 else
   with_lib_prefix=auto
 fi;
-echo "$as_me:11514: result: $with_lib_prefix" >&5
+echo "$as_me:11587: result: $with_lib_prefix" >&5
 echo "${ECHO_T}$with_lib_prefix" >&6
 
 if test "$with_lib_prefix" = auto
@@ -11549,7 +11622,7 @@ if test X"$CC_G_OPT" = X"" ; then
        test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT=''
 fi
 
-echo "$as_me:11552: checking for default loader flags" >&5
+echo "$as_me:11625: checking for default loader flags" >&5
 echo $ECHO_N "checking for default loader flags... $ECHO_C" >&6
 case $DFT_LWR_MODEL in
 (normal)  LD_MODEL=''   ;;
@@ -11557,13 +11630,13 @@ case $DFT_LWR_MODEL in
 (profile) LD_MODEL='-pg';;
 (shared)  LD_MODEL=''   ;;
 esac
-echo "$as_me:11560: result: $LD_MODEL" >&5
+echo "$as_me:11633: result: $LD_MODEL" >&5
 echo "${ECHO_T}$LD_MODEL" >&6
 
 LD_RPATH_OPT=
 if test "x$cf_cv_enable_rpath" != xno
 then
-       echo "$as_me:11566: checking for an rpath option" >&5
+       echo "$as_me:11639: checking for an rpath option" >&5
 echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
        case "$cf_cv_system_name" in
        (irix*)
@@ -11594,12 +11667,12 @@ echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
        (*)
                ;;
        esac
-       echo "$as_me:11597: result: $LD_RPATH_OPT" >&5
+       echo "$as_me:11670: result: $LD_RPATH_OPT" >&5
 echo "${ECHO_T}$LD_RPATH_OPT" >&6
 
        case "x$LD_RPATH_OPT" in
        (x-R*)
-               echo "$as_me:11602: checking if we need a space after rpath option" >&5
+               echo "$as_me:11675: checking if we need a space after rpath option" >&5
 echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6
                cf_save_LIBS="$LIBS"
 
@@ -11620,7 +11693,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 11623 "configure"
+#line 11696 "configure"
 #include "confdefs.h"
 
 int
@@ -11632,16 +11705,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:11635: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11708: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11638: \$? = $ac_status" >&5
+  echo "$as_me:11711: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:11641: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11714: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11644: \$? = $ac_status" >&5
+  echo "$as_me:11717: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_rpath_space=no
 else
@@ -11651,7 +11724,7 @@ cf_rpath_space=yes
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
                LIBS="$cf_save_LIBS"
-               echo "$as_me:11654: result: $cf_rpath_space" >&5
+               echo "$as_me:11727: result: $cf_rpath_space" >&5
 echo "${ECHO_T}$cf_rpath_space" >&6
                test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
                ;;
@@ -11673,8 +11746,8 @@ fi
        cf_ld_rpath_opt=
        test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
 
-       echo "$as_me:11676: checking if release/abi version should be used for shared libs" >&5
-echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6
+       echo "$as_me:11749: checking whether to use release or ABI version in shared library file names" >&5
+echo $ECHO_N "checking whether to use release or ABI version in shared library file names... $ECHO_C" >&6
 
 # Check whether --with-shlib-version or --without-shlib-version was given.
 if test "${with_shlib_version+set}" = set; then
@@ -11688,9 +11761,9 @@ if test "${with_shlib_version+set}" = set; then
                cf_cv_shlib_version=$withval
                ;;
        (*)
-               echo "$as_me:11691: result: $withval" >&5
+               echo "$as_me:11764: result: $withval" >&5
 echo "${ECHO_T}$withval" >&6
-               { { echo "$as_me:11693: error: option value must be one of: rel, abi, or auto" >&5
+               { { echo "$as_me:11766: error: option value must be one of: rel, abi, or auto" >&5
 echo "$as_me: error: option value must be one of: rel, abi, or auto" >&2;}
    { (exit 1); exit 1; }; }
                ;;
@@ -11699,7 +11772,7 @@ echo "$as_me: error: option value must be one of: rel, abi, or auto" >&2;}
 else
   cf_cv_shlib_version=auto
 fi;
-       echo "$as_me:11702: result: $cf_cv_shlib_version" >&5
+       echo "$as_me:11775: result: $cf_cv_shlib_version" >&5
 echo "${ECHO_T}$cf_cv_shlib_version" >&6
 
        cf_cv_rm_so_locs=no
@@ -11722,35 +11795,35 @@ echo "${ECHO_T}$cf_cv_shlib_version" >&6
 
        if test "$cf_try_fPIC" = yes
        then
-               echo "$as_me:11725: checking which $CC option to use" >&5
+               echo "$as_me:11798: checking which $CC option to use" >&5
 echo $ECHO_N "checking which $CC option to use... $ECHO_C" >&6
                cf_save_CFLAGS="$CFLAGS"
                for CC_SHARED_OPTS in -fPIC -fpic ''
                do
                        CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 11732 "configure"
+#line 11805 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
 main (void)
 {
-int x = 1
+int x = 1; (void)x
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11744: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11817: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11747: \$? = $ac_status" >&5
+  echo "$as_me:11820: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11750: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11823: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11753: \$? = $ac_status" >&5
+  echo "$as_me:11826: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -11759,7 +11832,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                done
-               echo "$as_me:11762: result: $CC_SHARED_OPTS" >&5
+               echo "$as_me:11835: result: $CC_SHARED_OPTS" >&5
 echo "${ECHO_T}$CC_SHARED_OPTS" >&6
                CFLAGS="$cf_save_CFLAGS"
        fi
@@ -11830,7 +11903,7 @@ CF_EOF
                MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $@` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $@'
                test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
                cf_cv_shlib_version_infix=yes
-               echo "$as_me:11833: checking if ld -search_paths_first works" >&5
+               echo "$as_me:11906: checking if ld -search_paths_first works" >&5
 echo $ECHO_N "checking if ld -search_paths_first works... $ECHO_C" >&6
 if test "${cf_cv_ldflags_search_paths_first+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11839,7 +11912,7 @@ else
                        cf_save_LDFLAGS=$LDFLAGS
                        LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 11842 "configure"
+#line 11915 "configure"
 #include "confdefs.h"
 
 int
@@ -11851,16 +11924,16 @@ int i;
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:11854: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11927: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11857: \$? = $ac_status" >&5
+  echo "$as_me:11930: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:11860: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11933: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11863: \$? = $ac_status" >&5
+  echo "$as_me:11936: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ldflags_search_paths_first=yes
 else
@@ -11871,7 +11944,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
                                LDFLAGS=$cf_save_LDFLAGS
 fi
-echo "$as_me:11874: result: $cf_cv_ldflags_search_paths_first" >&5
+echo "$as_me:11947: result: $cf_cv_ldflags_search_paths_first" >&5
 echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
                if test "$cf_cv_ldflags_search_paths_first" = yes; then
                        LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
@@ -12201,11 +12274,11 @@ CF_EOF
                # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
                # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
                if test "$DFT_LWR_MODEL" = "shared" ; then
-                       LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
+                       LOCAL_LDFLAGS="-R\$(LOCAL_LIBDIR):\${libdir}"
                        LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
                fi
                if test "$cf_cv_enable_rpath" = yes ; then
-                       EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS"
+                       EXTRA_LDFLAGS="-R\${libdir} $EXTRA_LDFLAGS"
                fi
 
        test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
@@ -12221,7 +12294,7 @@ CF_EOF
                        do
                                CFLAGS="$cf_shared_opts $cf_save_CFLAGS"
                                cat >"conftest.$ac_ext" <<_ACEOF
-#line 12224 "configure"
+#line 12297 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -12233,16 +12306,16 @@ printf("Hello\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12236: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12309: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12239: \$? = $ac_status" >&5
+  echo "$as_me:12312: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12242: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12315: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12245: \$? = $ac_status" >&5
+  echo "$as_me:12318: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -12253,9 +12326,9 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                        done
                        CFLAGS="$cf_save_CFLAGS"
                        CC_SHARED_OPTS=$cf_shared_opts
-                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -'$cf_cv_shared_soname' -o $@'
+                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -Wl,-h,'$cf_cv_shared_soname' -o $@'
                else
-                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -'$cf_cv_shared_soname' -o $@'
+                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -Wl,-h,'$cf_cv_shared_soname' -o $@'
                fi
                ;;
        (sysv5uw7*|unix_sv*)
@@ -12279,7 +12352,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                        test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
                        ;;
                (*)
-                       { echo "$as_me:12282: WARNING: ignored --with-shlib-version" >&5
+                       { echo "$as_me:12355: WARNING: ignored --with-shlib-version" >&5
 echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
                        ;;
                esac
@@ -12289,7 +12362,7 @@ echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
        if test -n "$cf_try_cflags"
        then
 cat > conftest.$ac_ext <<EOF
-#line 12292 "${as_me:-configure}"
+#line 12365 "${as_me:-configure}"
 #include <stdio.h>
 int main(int argc, char *argv[])
 {
@@ -12301,18 +12374,18 @@ EOF
                for cf_opt in $cf_try_cflags
                do
                        CFLAGS="$cf_save_CFLAGS -$cf_opt"
-                       echo "$as_me:12304: checking if CFLAGS option -$cf_opt works" >&5
+                       echo "$as_me:12377: checking if CFLAGS option -$cf_opt works" >&5
 echo $ECHO_N "checking if CFLAGS option -$cf_opt works... $ECHO_C" >&6
-                       if { (eval echo "$as_me:12306: \"$ac_compile\"") >&5
+                       if { (eval echo "$as_me:12379: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12309: \$? = $ac_status" >&5
+  echo "$as_me:12382: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                               echo "$as_me:12311: result: yes" >&5
+                               echo "$as_me:12384: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                                cf_save_CFLAGS="$CFLAGS"
                        else
-                               echo "$as_me:12315: result: no" >&5
+                               echo "$as_me:12388: result: no" >&5
 echo "${ECHO_T}no" >&6
                        fi
                done
@@ -12327,17 +12400,17 @@ echo "${ECHO_T}no" >&6
 
        test -n "$verbose" && echo "    CC_SHARED_OPTS: $CC_SHARED_OPTS" 1>&6
 
-echo "${as_me:-configure}:12330: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5
+echo "${as_me:-configure}:12403: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5
 
        test -n "$verbose" && echo "    MK_SHARED_LIB:  $MK_SHARED_LIB" 1>&6
 
-echo "${as_me:-configure}:12334: testing MK_SHARED_LIB:  $MK_SHARED_LIB ..." 1>&5
+echo "${as_me:-configure}:12407: testing MK_SHARED_LIB:  $MK_SHARED_LIB ..." 1>&5
 
 # The test/sample programs in the original tree link using rpath option.
 # Make it optional for packagers.
 if test -n "$LOCAL_LDFLAGS"
 then
-       echo "$as_me:12340: checking if you want to link sample programs with rpath option" >&5
+       echo "$as_me:12413: checking if you want to link sample programs with rpath option" >&5
 echo $ECHO_N "checking if you want to link sample programs with rpath option... $ECHO_C" >&6
 
 # Check whether --enable-rpath-link or --disable-rpath-link was given.
@@ -12347,7 +12420,7 @@ if test "${enable_rpath_link+set}" = set; then
 else
   with_rpath_link=yes
 fi;
-       echo "$as_me:12350: result: $with_rpath_link" >&5
+       echo "$as_me:12423: result: $with_rpath_link" >&5
 echo "${ECHO_T}$with_rpath_link" >&6
        if test "$with_rpath_link" = no
        then
@@ -12360,7 +12433,7 @@ fi
 
 ###   use option --enable-broken-linker to force on use of broken-linker support
 
-echo "$as_me:12363: checking if you want broken-linker support code" >&5
+echo "$as_me:12436: checking if you want broken-linker support code" >&5
 echo $ECHO_N "checking if you want broken-linker support code... $ECHO_C" >&6
 
 # Check whether --enable-broken_linker or --disable-broken_linker was given.
@@ -12370,7 +12443,7 @@ if test "${enable_broken_linker+set}" = set; then
 else
   with_broken_linker=no
 fi;
-echo "$as_me:12373: result: $with_broken_linker" >&5
+echo "$as_me:12446: result: $with_broken_linker" >&5
 echo "${ECHO_T}$with_broken_linker" >&6
 
 : "${BROKEN_LINKER:=0}"
 
 # Check to define _XOPEN_SOURCE "automatically"
 
-echo "$as_me:12388: checking if the POSIX test-macros are already defined" >&5
+echo "$as_me:12461: checking if the POSIX test-macros are already defined" >&5
 echo $ECHO_N "checking if the POSIX test-macros are already defined... $ECHO_C" >&6
 if test "${cf_cv_posix_visible+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 12395 "configure"
+#line 12468 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -12411,16 +12484,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12414: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12487: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12417: \$? = $ac_status" >&5
+  echo "$as_me:12490: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12420: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12493: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12423: \$? = $ac_status" >&5
+  echo "$as_me:12496: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_posix_visible=no
 else
@@ -12431,7 +12504,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:12434: result: $cf_cv_posix_visible" >&5
+echo "$as_me:12507: result: $cf_cv_posix_visible" >&5
 echo "${ECHO_T}$cf_cv_posix_visible" >&6
 
 if test "$cf_cv_posix_visible" = no; then
@@ -12444,9 +12517,6 @@ case "$host_os" in
 (aix[4-7]*)
        cf_xopen_source="-D_ALL_SOURCE"
        ;;
-(msys)
-       cf_XOPEN_SOURCE=600
-       ;;
 (darwin[0-8].*)
        cf_xopen_source="-D_APPLE_C_SOURCE"
        ;;
@@ -12472,18 +12542,18 @@ case "$host_os" in
        cf_xopen_source="-D_SGI_SOURCE"
        cf_XOPEN_SOURCE=
        ;;
-(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
 
 cf_gnu_xopen_source=$cf_XOPEN_SOURCE
 
-echo "$as_me:12479: checking if this is the GNU C library" >&5
+echo "$as_me:12549: checking if this is the GNU C library" >&5
 echo $ECHO_N "checking if this is the GNU C library... $ECHO_C" >&6
 if test "${cf_cv_gnu_library+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 12486 "configure"
+#line 12556 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -12502,16 +12572,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12505: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12575: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12508: \$? = $ac_status" >&5
+  echo "$as_me:12578: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12511: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12581: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12514: \$? = $ac_status" >&5
+  echo "$as_me:12584: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_library=yes
 else
@@ -12522,7 +12592,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:12525: result: $cf_cv_gnu_library" >&5
+echo "$as_me:12595: result: $cf_cv_gnu_library" >&5
 echo "${ECHO_T}$cf_cv_gnu_library" >&6
 
 if test x$cf_cv_gnu_library = xyes; then
@@ -12530,7 +12600,7 @@ if test x$cf_cv_gnu_library = xyes; then
        # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
        # was changed to help a little.  newlib incorporated the change about 4
        # years later.
-       echo "$as_me:12533: checking if _DEFAULT_SOURCE can be used as a basis" >&5
+       echo "$as_me:12603: checking if _DEFAULT_SOURCE can be used as a basis" >&5
 echo $ECHO_N "checking if _DEFAULT_SOURCE can be used as a basis... $ECHO_C" >&6
 if test "${cf_cv_gnu_library_219+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12542,7 +12612,7 @@ else
        CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 12545 "configure"
+#line 12615 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -12561,16 +12631,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12564: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12634: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12567: \$? = $ac_status" >&5
+  echo "$as_me:12637: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12570: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12640: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12573: \$? = $ac_status" >&5
+  echo "$as_me:12643: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_library_219=yes
 else
@@ -12582,12 +12652,12 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CPPFLAGS="$cf_save"
 
 fi
-echo "$as_me:12585: result: $cf_cv_gnu_library_219" >&5
+echo "$as_me:12655: result: $cf_cv_gnu_library_219" >&5
 echo "${ECHO_T}$cf_cv_gnu_library_219" >&6
 
        if test "x$cf_cv_gnu_library_219" = xyes; then
                cf_save="$CPPFLAGS"
-               echo "$as_me:12590: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5
+               echo "$as_me:12660: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5
 echo $ECHO_N "checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_gnu_dftsrc_219+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12692,7 +12762,7 @@ if test -n "$cf_new_extra_cppflags" ; then
 fi
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 12695 "configure"
+#line 12765 "configure"
 #include "confdefs.h"
 
                                #include <limits.h>
@@ -12712,16 +12782,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12715: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12785: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12718: \$? = $ac_status" >&5
+  echo "$as_me:12788: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12721: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12791: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12724: \$? = $ac_status" >&5
+  echo "$as_me:12794: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_dftsrc_219=yes
 else
@@ -12732,7 +12802,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:12735: result: $cf_cv_gnu_dftsrc_219" >&5
+echo "$as_me:12805: result: $cf_cv_gnu_dftsrc_219" >&5
 echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6
                test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
        else
@@ -12741,14 +12811,14 @@ echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6
 
        if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
 
-               echo "$as_me:12744: checking if we must define _GNU_SOURCE" >&5
+               echo "$as_me:12814: checking if we must define _GNU_SOURCE" >&5
 echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_gnu_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 12751 "configure"
+#line 12821 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -12763,16 +12833,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12766: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12836: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12769: \$? = $ac_status" >&5
+  echo "$as_me:12839: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12772: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12842: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12775: \$? = $ac_status" >&5
+  echo "$as_me:12845: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_source=no
 else
@@ -12879,7 +12949,7 @@ if test -n "$cf_new_extra_cppflags" ; then
 fi
 
                         cat >"conftest.$ac_ext" <<_ACEOF
-#line 12882 "configure"
+#line 12952 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -12894,16 +12964,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12897: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12967: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12900: \$? = $ac_status" >&5
+  echo "$as_me:12970: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12903: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12973: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12906: \$? = $ac_status" >&5
+  echo "$as_me:12976: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_source=no
 else
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:12921: result: $cf_cv_gnu_source" >&5
+echo "$as_me:12991: result: $cf_cv_gnu_source" >&5
 echo "${ECHO_T}$cf_cv_gnu_source" >&6
 
                if test "$cf_cv_gnu_source" = yes
                then
-               echo "$as_me:12926: checking if we should also define _DEFAULT_SOURCE" >&5
+               echo "$as_me:12996: checking if we should also define _DEFAULT_SOURCE" >&5
 echo $ECHO_N "checking if we should also define _DEFAULT_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_default_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12933,7 +13003,7 @@ else
        CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 12936 "configure"
+#line 13006 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -12948,16 +13018,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12951: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13021: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12954: \$? = $ac_status" >&5
+  echo "$as_me:13024: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12957: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13027: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12960: \$? = $ac_status" >&5
+  echo "$as_me:13030: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_default_source=no
 else
@@ -12968,7 +13038,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:12971: result: $cf_cv_default_source" >&5
+echo "$as_me:13041: result: $cf_cv_default_source" >&5
 echo "${ECHO_T}$cf_cv_default_source" >&6
                        if test "$cf_cv_default_source" = yes
                        then
@@ -13005,16 +13075,16 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
        sed     -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?[         ]/ /g' \
                -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?$//g'`
 
-echo "$as_me:13008: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:13078: checking if we should define _POSIX_C_SOURCE" >&5
 echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_posix_c_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
-echo "${as_me:-configure}:13014: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:13084: testing if the symbol is already defined go no further ..." 1>&5
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 13017 "configure"
+#line 13087 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -13022,23 +13092,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13032: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13102: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13035: \$? = $ac_status" >&5
+  echo "$as_me:13105: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13038: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13108: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13041: \$? = $ac_status" >&5
+  echo "$as_me:13111: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_posix_c_source=no
 else
@@ -13059,7 +13129,7 @@ cf_want_posix_source=no
         esac
         if test "$cf_want_posix_source" = yes ; then
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 13062 "configure"
+#line 13132 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -13067,23 +13137,23 @@ main (void)
 {
 
 #ifdef _POSIX_SOURCE
-make an error
+#error _POSIX_SOURCE is defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13077: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13147: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13080: \$? = $ac_status" >&5
+  echo "$as_me:13150: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13083: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13153: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13086: \$? = $ac_status" >&5
+  echo "$as_me:13156: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -13094,7 +13164,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
         fi
 
-echo "${as_me:-configure}:13097: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:13167: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
 
         CFLAGS="$cf_trim_CFLAGS"
         CPPFLAGS="$cf_trim_CPPFLAGS"
@@ -13102,10 +13172,10 @@ echo "${as_me:-configure}:13097: testing ifdef from value $cf_POSIX_C_SOURCE ...
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
 
-echo "${as_me:-configure}:13105: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:13175: testing if the second compile does not leave our definition intact error ..." 1>&5
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 13108 "configure"
+#line 13178 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -13113,23 +13183,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13123: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13193: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13126: \$? = $ac_status" >&5
+  echo "$as_me:13196: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13129: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13199: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13132: \$? = $ac_status" >&5
+  echo "$as_me:13202: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -13145,7 +13215,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:13148: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:13218: result: $cf_cv_posix_c_source" >&5
 echo "${ECHO_T}$cf_cv_posix_c_source" >&6
 
 if test "$cf_cv_posix_c_source" != no ; then
@@ -13262,7 +13332,7 @@ fi # cf_cv_posix_visible
        # OpenBSD 6.x has broken locale support, both compile-time and runtime.
        # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
        # Abusing the conformance level is a workaround.
-       { echo "$as_me:13265: WARNING: this system does not provide usable locale support" >&5
+       { echo "$as_me:13335: WARNING: this system does not provide usable locale support" >&5
 echo "$as_me: WARNING: this system does not provide usable locale support" >&2;}
        cf_xopen_source="-D_BSD_SOURCE"
        cf_XOPEN_SOURCE=700
@@ -13294,26 +13364,24 @@ echo "$as_me: WARNING: this system does not provide usable locale support" >&2;}
        ;;
 (*)
 
-echo "$as_me:13297: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:13367: checking if we should define _XOPEN_SOURCE" >&5
 echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_xopen_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 13304 "configure"
+#line 13374 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -13321,16 +13389,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13324: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13392: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13327: \$? = $ac_status" >&5
+  echo "$as_me:13395: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13330: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13398: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13333: \$? = $ac_status" >&5
+  echo "$as_me:13401: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -13342,19 +13410,17 @@ cf_save="$CPPFLAGS"
        CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 13345 "configure"
+#line 13413 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -13362,16 +13428,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13365: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13431: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13368: \$? = $ac_status" >&5
+  echo "$as_me:13434: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13371: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13437: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13374: \$? = $ac_status" >&5
+  echo "$as_me:13440: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -13386,7 +13452,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:13389: result: $cf_cv_xopen_source" >&5
+echo "$as_me:13455: result: $cf_cv_xopen_source" >&5
 echo "${ECHO_T}$cf_cv_xopen_source" >&6
 
 if test "$cf_cv_xopen_source" != no ; then
@@ -13546,16 +13612,16 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
        sed     -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?[         ]/ /g' \
                -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?$//g'`
 
-echo "$as_me:13549: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:13615: checking if we should define _POSIX_C_SOURCE" >&5
 echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_posix_c_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
-echo "${as_me:-configure}:13555: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:13621: testing if the symbol is already defined go no further ..." 1>&5
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 13558 "configure"
+#line 13624 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -13563,23 +13629,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13573: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13639: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13576: \$? = $ac_status" >&5
+  echo "$as_me:13642: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13579: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13645: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13582: \$? = $ac_status" >&5
+  echo "$as_me:13648: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_posix_c_source=no
 else
@@ -13600,7 +13666,7 @@ cf_want_posix_source=no
         esac
         if test "$cf_want_posix_source" = yes ; then
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 13603 "configure"
+#line 13669 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -13608,23 +13674,23 @@ main (void)
 {
 
 #ifdef _POSIX_SOURCE
-make an error
+#error _POSIX_SOURCE is defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13618: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13684: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13621: \$? = $ac_status" >&5
+  echo "$as_me:13687: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13624: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13690: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13627: \$? = $ac_status" >&5
+  echo "$as_me:13693: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -13635,7 +13701,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
         fi
 
-echo "${as_me:-configure}:13638: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:13704: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
 
         CFLAGS="$cf_trim_CFLAGS"
         CPPFLAGS="$cf_trim_CPPFLAGS"
@@ -13643,10 +13709,10 @@ echo "${as_me:-configure}:13638: testing ifdef from value $cf_POSIX_C_SOURCE ...
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
 
-echo "${as_me:-configure}:13646: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:13712: testing if the second compile does not leave our definition intact error ..." 1>&5
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 13649 "configure"
+#line 13715 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -13654,23 +13720,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13664: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13730: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13667: \$? = $ac_status" >&5
+  echo "$as_me:13733: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13670: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13736: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13673: \$? = $ac_status" >&5
+  echo "$as_me:13739: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -13686,7 +13752,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:13689: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:13755: result: $cf_cv_posix_c_source" >&5
 echo "${ECHO_T}$cf_cv_posix_c_source" >&6
 
 if test "$cf_cv_posix_c_source" != no ; then
 fi # cf_cv_posix_visible
 
        # Some of these niche implementations use copy/paste, double-check...
-       if test "$cf_cv_xopen_source" != no ; then
-               test -n "$verbose" && echo "    checking if _POSIX_C_SOURCE inteferes" 1>&6
+       if test "$cf_cv_xopen_source" = no ; then
+               test -n "$verbose" && echo "    checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE" 1>&6
 
-echo "${as_me:-configure}:13802: testing checking if _POSIX_C_SOURCE inteferes ..." 1>&5
+echo "${as_me:-configure}:13868: testing checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE ..." 1>&5
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 13805 "configure"
+#line 13871 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -13822,23 +13886,23 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13825: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13889: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13828: \$? = $ac_status" >&5
+  echo "$as_me:13892: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13831: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13895: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13834: \$? = $ac_status" >&5
+  echo "$as_me:13898: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 
-                       { echo "$as_me:13841: WARNING: _POSIX_C_SOURCE definition is not usable" >&5
+                       { echo "$as_me:13905: WARNING: _POSIX_C_SOURCE definition is not usable" >&5
 echo "$as_me: WARNING: _POSIX_C_SOURCE definition is not usable" >&2;}
                        CPPFLAGS="$cf_save_xopen_cppflags"
 fi
@@ -13861,7 +13925,7 @@ do
        test "$CFLAGS" != "$cf_old_cflag" || break
        test -n "$verbose" && echo "    removing old option $cf_add_cflags from CFLAGS" 1>&6
 
-echo "${as_me:-configure}:13864: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5
+echo "${as_me:-configure}:13928: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5
 
        CFLAGS="$cf_old_cflag"
 done
@@ -13873,7 +13937,7 @@ do
        test "$CPPFLAGS" != "$cf_old_cflag" || break
        test -n "$verbose" && echo "    removing old option $cf_add_cflags from CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:13876: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:13940: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5
 
        CPPFLAGS="$cf_old_cflag"
 done
@@ -13961,7 +14025,7 @@ done
 if test -n "$cf_new_cflags" ; then
        test -n "$verbose" && echo "    add to \$CFLAGS $cf_new_cflags" 1>&6
 
-echo "${as_me:-configure}:13964: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+echo "${as_me:-configure}:14028: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
 
        test -n "$CFLAGS" && CFLAGS="$CFLAGS "
        CFLAGS="${CFLAGS}$cf_new_cflags"
@@ -13971,7 +14035,7 @@ fi
 if test -n "$cf_new_cppflags" ; then
        test -n "$verbose" && echo "    add to \$CPPFLAGS $cf_new_cppflags" 1>&6
 
-echo "${as_me:-configure}:13974: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+echo "${as_me:-configure}:14038: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
 
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
@@ -13981,7 +14045,7 @@ fi
 if test -n "$cf_new_extra_cppflags" ; then
        test -n "$verbose" && echo "    add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
 
-echo "${as_me:-configure}:13984: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+echo "${as_me:-configure}:14048: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
 
        test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
        EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
@@ -13993,10 +14057,10 @@ done
 fi
 
 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
-       echo "$as_me:13996: checking if _XOPEN_SOURCE really is set" >&5
+       echo "$as_me:14060: checking if _XOPEN_SOURCE really is set" >&5
 echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 13999 "configure"
+#line 14063 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 int
@@ -14004,23 +14068,23 @@ main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14014: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14078: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14017: \$? = $ac_status" >&5
+  echo "$as_me:14081: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14020: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14084: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14023: \$? = $ac_status" >&5
+  echo "$as_me:14087: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_XOPEN_SOURCE_set=yes
 else
@@ -14029,12 +14093,12 @@ cat "conftest.$ac_ext" >&5
 cf_XOPEN_SOURCE_set=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-       echo "$as_me:14032: result: $cf_XOPEN_SOURCE_set" >&5
+       echo "$as_me:14096: result: $cf_XOPEN_SOURCE_set" >&5
 echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6
        if test "$cf_XOPEN_SOURCE_set" = yes
        then
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 14037 "configure"
+#line 14101 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 int
@@ -14042,23 +14106,23 @@ main (void)
 {
 
 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
-make an error
+#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14052: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14116: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14055: \$? = $ac_status" >&5
+  echo "$as_me:14119: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14058: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14122: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14061: \$? = $ac_status" >&5
+  echo "$as_me:14125: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_XOPEN_SOURCE_set_ok=yes
 else
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_XOPEN_SOURCE_set_ok" = no
                then
-                       { echo "$as_me:14072: WARNING: _XOPEN_SOURCE is lower than requested" >&5
+                       { echo "$as_me:14136: WARNING: _XOPEN_SOURCE is lower than requested" >&5
 echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;}
                fi
        else
 
-echo "$as_me:14077: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:14141: checking if we should define _XOPEN_SOURCE" >&5
 echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_xopen_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 14084 "configure"
+#line 14148 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -14101,16 +14163,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14104: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14166: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14107: \$? = $ac_status" >&5
+  echo "$as_me:14169: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14110: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14172: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14113: \$? = $ac_status" >&5
+  echo "$as_me:14175: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -14122,19 +14184,17 @@ cf_save="$CPPFLAGS"
        CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 14125 "configure"
+#line 14187 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -14142,16 +14202,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14145: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14205: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14148: \$? = $ac_status" >&5
+  echo "$as_me:14208: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14151: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14211: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14154: \$? = $ac_status" >&5
+  echo "$as_me:14214: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -14166,7 +14226,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:14169: result: $cf_cv_xopen_source" >&5
+echo "$as_me:14229: result: $cf_cv_xopen_source" >&5
 echo "${ECHO_T}$cf_cv_xopen_source" >&6
 
 if test "$cf_cv_xopen_source" != no ; then
 fi
 fi # cf_cv_posix_visible
 
-# Check whether --enable-largefile or --disable-largefile was given.
-if test "${enable_largefile+set}" = set; then
-  enableval="$enable_largefile"
+echo "$as_me:14376: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 14382 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
 
-fi;
-if test "$enable_largefile" != no; then
+_ACEOF
+if { (eval echo "$as_me:14390: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+  (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  $EGREP -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:14396: \$? = $ac_status" >&5
+  (exit "$ac_status"); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+  cat "conftest.$ac_ext" >&5
+  ac_cv_header_stdc=no
+fi
+rm -f conftest.err "conftest.$ac_ext"
 
-  echo "$as_me:14323: checking for special C compiler options needed for large files" >&5
-echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
-if test "${ac_cv_sys_largefile_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 14418 "configure"
+#include "confdefs.h"
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
 else
-  ac_cv_sys_largefile_CC=no
-     if test "$GCC" != yes; then
-       ac_save_CC=$CC
-       while :; do
-        # IRIX 6.2 and later do not support large files by default,
-        # so use the C compiler's -n32 option if that helps.
-         cat >"conftest.$ac_ext" <<_ACEOF
-#line 14335 "configure"
+  ac_cv_header_stdc=no
+fi
+rm -rf conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 14436 "configure"
 #include "confdefs.h"
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -rf conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 14457 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+                     || ('j' <= (c) && (c) <= 'r') \
+                     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
 int
 main (void)
 {
-
-  ;
-  return 0;
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+        || toupper (i) != TOUPPER (i))
+      $ac_main_return(2);
+  $ac_main_return (0);
 }
 _ACEOF
-        rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14355: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
+rm -f "conftest$ac_exeext"
+if { (eval echo "$as_me:14483: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:14358: \$? = $ac_status" >&5
-  (exit "$ac_status"); } &&
-         { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14361: \"$ac_try\"") >&5
+  echo "$as_me:14486: \$? = $ac_status" >&5
+  (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
+  { (eval echo "$as_me:14488: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14364: \$? = $ac_status" >&5
+  echo "$as_me:14491: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  break
+  :
 else
-  echo "$as_me: failed program was:" >&5
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
+ac_cv_header_stdc=no
+fi
+rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
+fi
+fi
+fi
+echo "$as_me:14504: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
 fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:14520: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 14526 "configure"
+#include "confdefs.h"
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
 rm -f "conftest.$ac_objext"
-        CC="$CC -n32"
-        rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14374: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14532: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14377: \$? = $ac_status" >&5
+  echo "$as_me:14535: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14380: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14538: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14383: \$? = $ac_status" >&5
+  echo "$as_me:14541: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  ac_cv_sys_largefile_CC=' -n32'; break
+  eval "$as_ac_Header=yes"
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
+eval "$as_ac_Header=no"
 fi
-rm -f "conftest.$ac_objext"
-         break
-       done
-       CC=$ac_save_CC
-       rm -f "conftest.$ac_ext"
-    fi
+rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:14397: result: $ac_cv_sys_largefile_CC" >&5
-echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
-  if test "$ac_cv_sys_largefile_CC" != no; then
-    CC=$CC$ac_cv_sys_largefile_CC
-  fi
+echo "$as_me:14551: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
+if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
 
-  echo "$as_me:14403: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
-if test "${ac_cv_sys_file_offset_bits+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+fi
+done
+
+echo "$as_me:14561: checking whether exit is declared" >&5
+echo $ECHO_N "checking whether exit is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_exit+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 14567 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main (void)
+{
+#ifndef exit
+  (void) exit;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext"
+if { (eval echo "$as_me:14582: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:14585: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest.$ac_objext"'
+  { (eval echo "$as_me:14588: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:14591: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  ac_cv_have_decl_exit=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+ac_cv_have_decl_exit=no
+fi
+rm -f "conftest.$ac_objext" "conftest.$ac_ext"
+fi
+echo "$as_me:14601: result: $ac_cv_have_decl_exit" >&5
+echo "${ECHO_T}$ac_cv_have_decl_exit" >&6
+
+# Check whether --enable-largefile or --disable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+  enableval="$enable_largefile"
+
+fi;
+if test "$enable_largefile" != no; then
+
+  echo "$as_me:14611: checking for special C compiler options needed for large files" >&5
+echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+        # IRIX 6.2 and later do not support large files by default,
+        # so use the C compiler's -n32 option if that helps.
+         cat >"conftest.$ac_ext" <<_ACEOF
+#line 14623 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+        rm -f "conftest.$ac_objext"
+if { (eval echo "$as_me:14643: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:14646: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest.$ac_objext"'
+  { (eval echo "$as_me:14649: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:14652: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+fi
+rm -f "conftest.$ac_objext"
+        CC="$CC -n32"
+        rm -f "conftest.$ac_objext"
+if { (eval echo "$as_me:14662: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:14665: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest.$ac_objext"'
+  { (eval echo "$as_me:14668: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:14671: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  ac_cv_sys_largefile_CC=' -n32'; break
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+fi
+rm -f "conftest.$ac_objext"
+         break
+       done
+       CC=$ac_save_CC
+       rm -f "conftest.$ac_ext"
+    fi
+fi
+echo "$as_me:14685: result: $ac_cv_sys_largefile_CC" >&5
+echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  echo "$as_me:14691: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
   while :; do
   ac_cv_sys_file_offset_bits=no
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14411 "configure"
+#line 14699 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
@@ -14428,16 +14716,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14431: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14719: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14434: \$? = $ac_status" >&5
+  echo "$as_me:14722: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14437: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14725: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14440: \$? = $ac_status" >&5
+  echo "$as_me:14728: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -14446,7 +14734,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14449 "configure"
+#line 14737 "configure"
 #include "confdefs.h"
 #define _FILE_OFFSET_BITS 64
 #include <sys/types.h>
@@ -14467,16 +14755,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14470: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14758: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14473: \$? = $ac_status" >&5
+  echo "$as_me:14761: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14476: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14764: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14479: \$? = $ac_status" >&5
+  echo "$as_me:14767: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sys_file_offset_bits=64; break
 else
@@ -14487,7 +14775,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   break
 done
 fi
-echo "$as_me:14490: result: $ac_cv_sys_file_offset_bits" >&5
+echo "$as_me:14778: result: $ac_cv_sys_file_offset_bits" >&5
 echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
 if test "$ac_cv_sys_file_offset_bits" != no; then
 
@@ -14497,7 +14785,7 @@ EOF
 
 fi
 rm -rf conftest*
-  echo "$as_me:14500: checking for _LARGE_FILES value needed for large files" >&5
+  echo "$as_me:14788: checking for _LARGE_FILES value needed for large files" >&5
 echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
 if test "${ac_cv_sys_large_files+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14505,7 +14793,7 @@ else
   while :; do
   ac_cv_sys_large_files=no
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14508 "configure"
+#line 14796 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
@@ -14525,16 +14813,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14528: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14816: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14531: \$? = $ac_status" >&5
+  echo "$as_me:14819: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14534: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14822: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14537: \$? = $ac_status" >&5
+  echo "$as_me:14825: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -14543,7 +14831,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14546 "configure"
+#line 14834 "configure"
 #include "confdefs.h"
 #define _LARGE_FILES 1
 #include <sys/types.h>
@@ -14564,16 +14852,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14567: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14855: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14570: \$? = $ac_status" >&5
+  echo "$as_me:14858: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14573: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14861: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14576: \$? = $ac_status" >&5
+  echo "$as_me:14864: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sys_large_files=1; break
 else
@@ -14584,7 +14872,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   break
 done
 fi
-echo "$as_me:14587: result: $ac_cv_sys_large_files" >&5
+echo "$as_me:14875: result: $ac_cv_sys_large_files" >&5
 echo "${ECHO_T}$ac_cv_sys_large_files" >&6
 if test "$ac_cv_sys_large_files" != no; then
 
@@ -14597,7 +14885,7 @@ rm -rf conftest*
 fi
 
        if test "$enable_largefile" != no ; then
-       echo "$as_me:14600: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+       echo "$as_me:14888: checking for _LARGEFILE_SOURCE value needed for large files" >&5
 echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6
 if test "${ac_cv_sys_largefile_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14605,28 +14893,31 @@ else
   while :; do
   ac_cv_sys_largefile_source=no
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14608 "configure"
+#line 14896 "configure"
 #include "confdefs.h"
 #include <stdio.h>
+    #include <sys/types.h>
 int
 main (void)
 {
-return !fseeko;
+
+    int (*my_fseeko)(FILE *, off_t, int) = fseeko;
+    return my_fseeko(stdin, 0, 0);
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14620: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14911: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14623: \$? = $ac_status" >&5
+  echo "$as_me:14914: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14626: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14917: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14629: \$? = $ac_status" >&5
+  echo "$as_me:14920: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -14635,29 +14926,32 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14638 "configure"
+#line 14929 "configure"
 #include "confdefs.h"
 #define _LARGEFILE_SOURCE 1
 #include <stdio.h>
+    #include <sys/types.h>
 int
 main (void)
 {
-return !fseeko;
+
+    int (*my_fseeko)(FILE *, off_t, int) = fseeko;
+    return my_fseeko(stdin, 0, 0);
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14651: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14945: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14654: \$? = $ac_status" >&5
+  echo "$as_me:14948: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14657: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14951: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14660: \$? = $ac_status" >&5
+  echo "$as_me:14954: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sys_largefile_source=1; break
 else
@@ -14668,7 +14962,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   break
 done
 fi
-echo "$as_me:14671: result: $ac_cv_sys_largefile_source" >&5
+echo "$as_me:14965: result: $ac_cv_sys_largefile_source" >&5
 echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6
 if test "$ac_cv_sys_largefile_source" != no; then
 
@@ -14682,34 +14976,36 @@ rm -rf conftest*
 # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
 # in glibc 2.1.3, but that breaks too many other things.
 # If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-echo "$as_me:14685: checking for fseeko" >&5
+echo "$as_me:14979: checking for fseeko" >&5
 echo $ECHO_N "checking for fseeko... $ECHO_C" >&6
 if test "${ac_cv_func_fseeko+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14691 "configure"
+#line 14985 "configure"
 #include "confdefs.h"
 #include <stdio.h>
+                             #include <sys/types.h>
 int
 main (void)
 {
-return fseeko && fseeko (stdin, 0, 0);
+int (*my_fseeko)(FILE *, off_t, int) = fseeko;
+                            return my_fseeko && my_fseeko (stdin, 0, 0);
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:14703: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14999: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:14706: \$? = $ac_status" >&5
+  echo "$as_me:15002: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:14709: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15005: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14712: \$? = $ac_status" >&5
+  echo "$as_me:15008: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_fseeko=yes
 else
@@ -14719,7 +15015,7 @@ ac_cv_func_fseeko=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:14722: result: $ac_cv_func_fseeko" >&5
+echo "$as_me:15018: result: $ac_cv_func_fseeko" >&5
 echo "${ECHO_T}$ac_cv_func_fseeko" >&6
 if test $ac_cv_func_fseeko = yes; then
 
 
        fi
 
-       echo "$as_me:14761: checking whether to use struct dirent64" >&5
+       echo "$as_me:15057: checking whether to use struct dirent64" >&5
 echo $ECHO_N "checking whether to use struct dirent64... $ECHO_C" >&6
 if test "${cf_cv_struct_dirent64+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 14768 "configure"
+#line 15064 "configure"
 #include "confdefs.h"
 
 #pragma GCC diagnostic error "-Wincompatible-pointer-types"
 #include <sys/types.h>
 #include <dirent.h>
 
+#ifndef __REDIRECT
+/* if transitional largefile support is setup, this is true */
+extern struct dirent64 * readdir(DIR *);
+#endif
+
 int
 main (void)
 {
 
-               /* if transitional largefile support is setup, this is true */
-               extern struct dirent64 * readdir(DIR *);
-               struct dirent64 *x = readdir((DIR *)0);
-               struct dirent *y = readdir((DIR *)0);
+               DIR *dp = opendir(".");
+               struct dirent64 *x = readdir(dp);
+               struct dirent *y = readdir(dp);
                int z = x - y;
                (void)z;
 
@@ -14788,16 +15088,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14791: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15091: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14794: \$? = $ac_status" >&5
+  echo "$as_me:15094: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14797: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15097: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14800: \$? = $ac_status" >&5
+  echo "$as_me:15100: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_struct_dirent64=yes
 else
@@ -14808,7 +15108,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:14811: result: $cf_cv_struct_dirent64" >&5
+echo "$as_me:15111: result: $cf_cv_struct_dirent64" >&5
 echo "${ECHO_T}$cf_cv_struct_dirent64" >&6
        test "$cf_cv_struct_dirent64" = yes &&
 cat >>confdefs.h <<\EOF
@@ -14818,7 +15118,7 @@ EOF
        fi
 
 ### Enable compiling-in rcs id's
-echo "$as_me:14821: checking if RCS identifiers should be compiled-in" >&5
+echo "$as_me:15121: checking if RCS identifiers should be compiled-in" >&5
 echo $ECHO_N "checking if RCS identifiers should be compiled-in... $ECHO_C" >&6
 
 # Check whether --with-rcs-ids or --without-rcs-ids was given.
@@ -14828,7 +15128,7 @@ if test "${with_rcs_ids+set}" = set; then
 else
   with_rcs_ids=no
 fi;
-echo "$as_me:14831: result: $with_rcs_ids" >&5
+echo "$as_me:15131: result: $with_rcs_ids" >&5
 echo "${ECHO_T}$with_rcs_ids" >&6
 test "$with_rcs_ids" = yes &&
 cat >>confdefs.h <<\EOF
@@ -14838,7 +15138,7 @@ EOF
 ###############################################################################
 
 ### Note that some functions (such as const) are normally disabled anyway.
-echo "$as_me:14841: checking if you want to build with function extensions" >&5
+echo "$as_me:15141: checking if you want to build with function extensions" >&5
 echo $ECHO_N "checking if you want to build with function extensions... $ECHO_C" >&6
 
 # Check whether --enable-ext-funcs or --disable-ext-funcs was given.
@@ -14848,7 +15148,7 @@ if test "${enable_ext_funcs+set}" = set; then
 else
   with_ext_funcs=yes
 fi;
-echo "$as_me:14851: result: $with_ext_funcs" >&5
+echo "$as_me:15151: result: $with_ext_funcs" >&5
 echo "${ECHO_T}$with_ext_funcs" >&6
 if test "$with_ext_funcs" = yes ; then
        NCURSES_EXT_FUNCS=1
@@ -14866,7 +15166,7 @@ else
 fi
 
 ###   use option --enable-const to turn on use of const beyond that in XSI.
-echo "$as_me:14869: checking for extended use of const keyword" >&5
+echo "$as_me:15169: checking for extended use of const keyword" >&5
 echo $ECHO_N "checking for extended use of const keyword... $ECHO_C" >&6
 
 # Check whether --enable-const or --disable-const was given.
@@ -14876,7 +15176,7 @@ if test "${enable_const+set}" = set; then
 else
   with_ext_const=no
 fi;
-echo "$as_me:14879: result: $with_ext_const" >&5
+echo "$as_me:15179: result: $with_ext_const" >&5
 echo "${ECHO_T}$with_ext_const" >&6
 NCURSES_CONST='/*nothing*/'
 if test "$with_ext_const" = yes ; then
@@ -14886,7 +15186,7 @@ fi
 ###############################################################################
 # These options are relatively safe to experiment with.
 
-echo "$as_me:14889: checking if you want all development code" >&5
+echo "$as_me:15189: checking if you want all development code" >&5
 echo $ECHO_N "checking if you want all development code... $ECHO_C" >&6
 
 # Check whether --with-develop or --without-develop was given.
@@ -14896,7 +15196,7 @@ if test "${with_develop+set}" = set; then
 else
   with_develop=no
 fi;
-echo "$as_me:14899: result: $with_develop" >&5
+echo "$as_me:15199: result: $with_develop" >&5
 echo "${ECHO_T}$with_develop" >&6
 
 ###############################################################################
@@ -14905,7 +15205,7 @@ echo "${ECHO_T}$with_develop" >&6
 # This is still experimental (20080329), but should ultimately be moved to
 # the script-block --with-normal, etc.
 
-echo "$as_me:14908: checking if you want to link with the pthread library" >&5
+echo "$as_me:15208: checking if you want to link with the pthread library" >&5
 echo $ECHO_N "checking if you want to link with the pthread library... $ECHO_C" >&6
 
 # Check whether --with-pthread or --without-pthread was given.
@@ -14915,27 +15215,27 @@ if test "${with_pthread+set}" = set; then
 else
   with_pthread=no
 fi;
-echo "$as_me:14918: result: $with_pthread" >&5
+echo "$as_me:15218: result: $with_pthread" >&5
 echo "${ECHO_T}$with_pthread" >&6
 
 if test "$with_pthread" != no ; then
-       echo "$as_me:14922: checking for pthread.h" >&5
+       echo "$as_me:15222: checking for pthread.h" >&5
 echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6
 if test "${ac_cv_header_pthread_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14928 "configure"
+#line 15228 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 _ACEOF
-if { (eval echo "$as_me:14932: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:15232: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:14938: \$? = $ac_status" >&5
+  echo "$as_me:15238: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -14954,7 +15254,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:14957: result: $ac_cv_header_pthread_h" >&5
+echo "$as_me:15257: result: $ac_cv_header_pthread_h" >&5
 echo "${ECHO_T}$ac_cv_header_pthread_h" >&6
 if test "$ac_cv_header_pthread_h" = yes; then
 
@@ -14964,7 +15264,7 @@ EOF
 
        for cf_lib_pthread in pthread c_r
        do
-           echo "$as_me:14967: checking if we can link with the $cf_lib_pthread library" >&5
+           echo "$as_me:15267: checking if we can link with the $cf_lib_pthread library" >&5
 echo $ECHO_N "checking if we can link with the $cf_lib_pthread library... $ECHO_C" >&6
            cf_save_LIBS="$LIBS"
 
@@ -14985,7 +15285,7 @@ done
 LIBS="$cf_add_libs"
 
            cat >"conftest.$ac_ext" <<_ACEOF
-#line 14988 "configure"
+#line 15288 "configure"
 #include "confdefs.h"
 
 #include <pthread.h>
@@ -15002,16 +15302,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:15005: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15305: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:15008: \$? = $ac_status" >&5
+  echo "$as_me:15308: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:15011: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15311: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15014: \$? = $ac_status" >&5
+  echo "$as_me:15314: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   with_pthread=yes
 else
@@ -15021,7 +15321,7 @@ with_pthread=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
            LIBS="$cf_save_LIBS"
-           echo "$as_me:15024: result: $with_pthread" >&5
+           echo "$as_me:15324: result: $with_pthread" >&5
 echo "${ECHO_T}$with_pthread" >&6
            test "$with_pthread" = yes && break
        done
@@ -15049,7 +15349,7 @@ cat >>confdefs.h <<\EOF
 EOF
 
        else
-           { { echo "$as_me:15052: error: Cannot link with pthread library" >&5
+           { { echo "$as_me:15352: error: Cannot link with pthread library" >&5
 echo "$as_me: error: Cannot link with pthread library" >&2;}
    { (exit 1); exit 1; }; }
        fi
@@ -15058,7 +15358,7 @@ fi
 
 fi
 
-echo "$as_me:15061: checking if you want to use weak-symbols for pthreads" >&5
+echo "$as_me:15361: checking if you want to use weak-symbols for pthreads" >&5
 echo $ECHO_N "checking if you want to use weak-symbols for pthreads... $ECHO_C" >&6
 
 # Check whether --enable-weak-symbols or --disable-weak-symbols was given.
@@ -15068,18 +15368,18 @@ if test "${enable_weak_symbols+set}" = set; then
 else
   use_weak_symbols=no
 fi;
-echo "$as_me:15071: result: $use_weak_symbols" >&5
+echo "$as_me:15371: result: $use_weak_symbols" >&5
 echo "${ECHO_T}$use_weak_symbols" >&6
 if test "$use_weak_symbols" = yes ; then
 
-echo "$as_me:15075: checking if $CC supports weak symbols" >&5
+echo "$as_me:15375: checking if $CC supports weak symbols" >&5
 echo $ECHO_N "checking if $CC supports weak symbols... $ECHO_C" >&6
 if test "${cf_cv_weak_symbols+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 15082 "configure"
+#line 15382 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -15105,16 +15405,16 @@ weak_symbol(fopen);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:15108: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15408: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:15111: \$? = $ac_status" >&5
+  echo "$as_me:15411: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:15114: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15414: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15117: \$? = $ac_status" >&5
+  echo "$as_me:15417: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_weak_symbols=yes
 else
@@ -15125,7 +15425,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:15128: result: $cf_cv_weak_symbols" >&5
+echo "$as_me:15428: result: $cf_cv_weak_symbols" >&5
 echo "${ECHO_T}$cf_cv_weak_symbols" >&6
 
 else
@@ -15154,13 +15454,13 @@ EOF
 fi
 
 # OpenSUSE is installing ncurses6, using reentrant option.
-echo "$as_me:15157: checking for _nc_TABSIZE" >&5
+echo "$as_me:15457: checking for _nc_TABSIZE" >&5
 echo $ECHO_N "checking for _nc_TABSIZE... $ECHO_C" >&6
 if test "${ac_cv_func__nc_TABSIZE+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 15163 "configure"
+#line 15463 "configure"
 #include "confdefs.h"
 #define _nc_TABSIZE autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -15191,16 +15491,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:15194: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15494: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:15197: \$? = $ac_status" >&5
+  echo "$as_me:15497: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:15200: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15500: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15203: \$? = $ac_status" >&5
+  echo "$as_me:15503: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func__nc_TABSIZE=yes
 else
@@ -15210,7 +15510,7 @@ ac_cv_func__nc_TABSIZE=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:15213: result: $ac_cv_func__nc_TABSIZE" >&5
+echo "$as_me:15513: result: $ac_cv_func__nc_TABSIZE" >&5
 echo "${ECHO_T}$ac_cv_func__nc_TABSIZE" >&6
 if test "$ac_cv_func__nc_TABSIZE" = yes; then
   assume_reentrant=yes
@@ -15222,7 +15522,7 @@ fi
 # opaque outside of that, so there is no --enable-opaque option.  We can use
 # this option without --with-pthreads, but this will be always set for
 # pthreads.
-echo "$as_me:15225: checking if you want experimental reentrant code" >&5
+echo "$as_me:15525: checking if you want experimental reentrant code" >&5
 echo $ECHO_N "checking if you want experimental reentrant code... $ECHO_C" >&6
 
 # Check whether --enable-reentrant or --disable-reentrant was given.
@@ -15232,7 +15532,7 @@ if test "${enable_reentrant+set}" = set; then
 else
   with_reentrant=$assume_reentrant
 fi;
-echo "$as_me:15235: result: $with_reentrant" >&5
+echo "$as_me:15535: result: $with_reentrant" >&5
 echo "${ECHO_T}$with_reentrant" >&6
 if test "$with_reentrant" = yes ; then
        cf_cv_enable_reentrant=1
@@ -15255,7 +15555,7 @@ fi
 
 ### Allow using a different wrap-prefix
 if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
-       echo "$as_me:15258: checking for prefix used to wrap public variables" >&5
+       echo "$as_me:15558: checking for prefix used to wrap public variables" >&5
 echo $ECHO_N "checking for prefix used to wrap public variables... $ECHO_C" >&6
 
 # Check whether --with-wrap-prefix or --without-wrap-prefix was given.
@@ -15265,7 +15565,7 @@ if test "${with_wrap_prefix+set}" = set; then
 else
   NCURSES_WRAP_PREFIX=_nc_
 fi;
-       echo "$as_me:15268: result: $NCURSES_WRAP_PREFIX" >&5
+       echo "$as_me:15568: result: $NCURSES_WRAP_PREFIX" >&5
 echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6
 else
        NCURSES_WRAP_PREFIX=_nc_
@@ -15279,7 +15579,7 @@ EOF
 
 ###    use option --disable-echo to suppress full display compiling commands
 
-echo "$as_me:15282: checking if you want to see long compiling messages" >&5
+echo "$as_me:15582: checking if you want to see long compiling messages" >&5
 echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6
 
 # Check whether --enable-echo or --disable-echo was given.
@@ -15313,10 +15613,10 @@ else
        ECHO_CC=''
 
 fi;
-echo "$as_me:15316: result: $enableval" >&5
+echo "$as_me:15616: result: $enableval" >&5
 echo "${ECHO_T}$enableval" >&6
 
-echo "$as_me:15319: checking if you want to use C11 _Noreturn feature" >&5
+echo "$as_me:15619: checking if you want to use C11 _Noreturn feature" >&5
 echo $ECHO_N "checking if you want to use C11 _Noreturn feature... $ECHO_C" >&6
 
 # Check whether --enable-stdnoreturn or --disable-stdnoreturn was given.
@@ -15333,21 +15633,20 @@ else
        enable_stdnoreturn=no
 
 fi;
-echo "$as_me:15336: result: $enable_stdnoreturn" >&5
+echo "$as_me:15636: result: $enable_stdnoreturn" >&5
 echo "${ECHO_T}$enable_stdnoreturn" >&6
 
 if test $enable_stdnoreturn = yes; then
-echo "$as_me:15340: checking for C11 _Noreturn feature" >&5
+echo "$as_me:15640: checking for C11 _Noreturn feature" >&5
 echo $ECHO_N "checking for C11 _Noreturn feature... $ECHO_C" >&6
 if test "${cf_cv_c11_noreturn+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 15346 "configure"
+#line 15646 "configure"
 #include "confdefs.h"
 
-#include <stdio.h>
-#include <stdlib.h>
+$ac_includes_default
 #include <stdnoreturn.h>
 static _Noreturn void giveup(void) { exit(0); }
 
@@ -15360,16 +15659,16 @@ if (feof(stdin)) giveup()
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:15363: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15662: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:15366: \$? = $ac_status" >&5
+  echo "$as_me:15665: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:15369: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15668: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15372: \$? = $ac_status" >&5
+  echo "$as_me:15671: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_c11_noreturn=yes
 else
@@ -15380,7 +15679,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:15383: result: $cf_cv_c11_noreturn" >&5
+echo "$as_me:15682: result: $cf_cv_c11_noreturn" >&5
 echo "${ECHO_T}$cf_cv_c11_noreturn" >&6
 else
        cf_cv_c11_noreturn=no,
@@ -15436,16 +15735,16 @@ then
                then
                        test -n "$verbose" && echo "    repairing CFLAGS: $CFLAGS" 1>&6
 
-echo "${as_me:-configure}:15439: testing repairing CFLAGS: $CFLAGS ..." 1>&5
+echo "${as_me:-configure}:15738: testing repairing CFLAGS: $CFLAGS ..." 1>&5
 
                        CFLAGS="$cf_temp_flags"
                        test -n "$verbose" && echo "    ... fixed $CFLAGS" 1>&6
 
-echo "${as_me:-configure}:15444: testing ... fixed $CFLAGS ..." 1>&5
+echo "${as_me:-configure}:15743: testing ... fixed $CFLAGS ..." 1>&5
 
                        test -n "$verbose" && echo "    ... extra $EXTRA_CFLAGS" 1>&6
 
-echo "${as_me:-configure}:15448: testing ... extra $EXTRA_CFLAGS ..." 1>&5
+echo "${as_me:-configure}:15747: testing ... extra $EXTRA_CFLAGS ..." 1>&5
 
                fi
                ;;
@@ -15484,16 +15783,16 @@ then
                then
                        test -n "$verbose" && echo "    repairing CPPFLAGS: $CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:15487: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:15786: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5
 
                        CPPFLAGS="$cf_temp_flags"
                        test -n "$verbose" && echo "    ... fixed $CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:15492: testing ... fixed $CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:15791: testing ... fixed $CPPFLAGS ..." 1>&5
 
                        test -n "$verbose" && echo "    ... extra $EXTRA_CFLAGS" 1>&6
 
-echo "${as_me:-configure}:15496: testing ... extra $EXTRA_CFLAGS ..." 1>&5
+echo "${as_me:-configure}:15795: testing ... extra $EXTRA_CFLAGS ..." 1>&5
 
                fi
                ;;
@@ -15532,23 +15831,23 @@ then
                then
                        test -n "$verbose" && echo "    repairing LDFLAGS: $LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:15535: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:15834: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5
 
                        LDFLAGS="$cf_temp_flags"
                        test -n "$verbose" && echo "    ... fixed $LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:15540: testing ... fixed $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:15839: testing ... fixed $LDFLAGS ..." 1>&5
 
                        test -n "$verbose" && echo "    ... extra $EXTRA_CFLAGS" 1>&6
 
-echo "${as_me:-configure}:15544: testing ... extra $EXTRA_CFLAGS ..." 1>&5
+echo "${as_me:-configure}:15843: testing ... extra $EXTRA_CFLAGS ..." 1>&5
 
                fi
                ;;
        esac
 fi
 
-echo "$as_me:15551: checking if you want to turn on gcc warnings" >&5
+echo "$as_me:15850: checking if you want to turn on gcc warnings" >&5
 echo $ECHO_N "checking if you want to turn on gcc warnings... $ECHO_C" >&6
 
 # Check whether --enable-warnings or --disable-warnings was given.
@@ -15565,7 +15864,7 @@ else
        enable_warnings=no
 
 fi;
-echo "$as_me:15568: result: $enable_warnings" >&5
+echo "$as_me:15867: result: $enable_warnings" >&5
 echo "${ECHO_T}$enable_warnings" >&6
 if test "$enable_warnings" = "yes"
 then
@@ -15589,7 +15888,7 @@ do
 done
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 15592 "configure"
+#line 15891 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -15604,28 +15903,29 @@ String foo = malloc(1); free((void*)foo)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:15607: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15906: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:15610: \$? = $ac_status" >&5
+  echo "$as_me:15909: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:15613: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15912: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15616: \$? = $ac_status" >&5
+  echo "$as_me:15915: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
-echo "$as_me:15619: checking for X11/Xt const-feature" >&5
+echo "$as_me:15918: checking for X11/Xt const-feature" >&5
 echo $ECHO_N "checking for X11/Xt const-feature... $ECHO_C" >&6
 if test "${cf_cv_const_x_string+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 15626 "configure"
+#line 15925 "configure"
 #include "confdefs.h"
 
+#undef  _CONST_X_STRING
 #define _CONST_X_STRING        /* X11R7.8 (perhaps) */
 #undef  XTSTRINGDEFINES        /* X11R5 and later */
 #include <stdlib.h>
@@ -15640,16 +15940,16 @@ String foo = malloc(1); *foo = 0
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:15643: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15943: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:15646: \$? = $ac_status" >&5
+  echo "$as_me:15946: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:15649: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15949: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15652: \$? = $ac_status" >&5
+  echo "$as_me:15952: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                        cf_cv_const_x_string=no
@@ -15664,7 +15964,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:15667: result: $cf_cv_const_x_string" >&5
+echo "$as_me:15967: result: $cf_cv_const_x_string" >&5
 echo "${ECHO_T}$cf_cv_const_x_string" >&6
 
 LIBS="$cf_save_LIBS_CF_CONST_X_STRING"
@@ -15693,7 +15993,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
  fi
 cat > "conftest.$ac_ext" <<EOF
-#line 15696 "${as_me:-configure}"
+#line 15996 "${as_me:-configure}"
 int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
 if test "$INTEL_COMPILER" = yes
@@ -15709,7 +16009,7 @@ then
 # remark #981: operands are evaluated in unspecified order
 # warning #279: controlling expression is constant
 
-       { echo "$as_me:15712: checking for $CC warning options..." >&5
+       { echo "$as_me:16012: checking for $CC warning options..." >&5
 echo "$as_me: checking for $CC warning options..." >&6;}
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
@@ -15725,12 +16025,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
                wd981
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo "$as_me:15728: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:16028: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:15731: \$? = $ac_status" >&5
+  echo "$as_me:16031: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:15733: result: ... -$cf_opt" >&5
+                       test -n "$verbose" && echo "$as_me:16033: result: ... -$cf_opt" >&5
 echo "${ECHO_T}... -$cf_opt" >&6
                        EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
                fi
@@ -15738,7 +16038,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
        CFLAGS="$cf_save_CFLAGS"
 elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
 then
-       { echo "$as_me:15741: checking for $CC warning options..." >&5
+       { echo "$as_me:16041: checking for $CC warning options..." >&5
 echo "$as_me: checking for $CC warning options..." >&6;}
        cf_save_CFLAGS="$CFLAGS"
        cf_warn_CONST=""
@@ -15761,12 +16061,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
                Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas Wswitch-enum
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo "$as_me:15764: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:16064: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:15767: \$? = $ac_status" >&5
+  echo "$as_me:16067: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:15769: result: ... -$cf_opt" >&5
+                       test -n "$verbose" && echo "$as_me:16069: result: ... -$cf_opt" >&5
 echo "${ECHO_T}... -$cf_opt" >&6
                        case "$cf_opt" in
                        (Winline)
@@ -15774,7 +16074,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
                                ([34].*)
                                        test -n "$verbose" && echo "    feature is broken in gcc $GCC_VERSION" 1>&6
 
-echo "${as_me:-configure}:15777: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:16077: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
 
                                        continue;;
                                esac
@@ -15784,7 +16084,7 @@ echo "${as_me:-configure}:15777: testing feature is broken in gcc $GCC_VERSION .
                                ([12].*)
                                        test -n "$verbose" && echo "    feature is broken in gcc $GCC_VERSION" 1>&6
 
-echo "${as_me:-configure}:15787: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:16087: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
 
                                        continue;;
                                esac
@@ -15817,10 +16117,10 @@ cat > conftest.i <<EOF
 EOF
 if test "$GCC" = yes
 then
-       { echo "$as_me:15820: checking for $CC __attribute__ directives..." >&5
+       { echo "$as_me:16120: checking for $CC __attribute__ directives..." >&5
 echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
 cat > "conftest.$ac_ext" <<EOF
-#line 15823 "${as_me:-configure}"
+#line 16123 "${as_me:-configure}"
 #include <stdio.h>
 #include "confdefs.h"
 #include "conftest.h"
@@ -15870,12 +16170,12 @@ EOF
                        ;;
                esac
 
-               if { (eval echo "$as_me:15873: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:16173: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:15876: \$? = $ac_status" >&5
+  echo "$as_me:16176: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:15878: result: ... $cf_attribute" >&5
+                       test -n "$verbose" && echo "$as_me:16178: result: ... $cf_attribute" >&5
 echo "${ECHO_T}... $cf_attribute" >&6
                        cat conftest.h >>confdefs.h
                        case "$cf_attribute" in
@@ -15943,7 +16243,7 @@ if test "x$enable_warnings" = "xyes"; then
 fi
 
 ###    use option --enable-assertions to turn on generation of assertion code
-echo "$as_me:15946: checking if you want to enable runtime assertions" >&5
+echo "$as_me:16246: checking if you want to enable runtime assertions" >&5
 echo $ECHO_N "checking if you want to enable runtime assertions... $ECHO_C" >&6
 
 # Check whether --enable-assertions or --disable-assertions was given.
@@ -15953,7 +16253,7 @@ if test "${enable_assertions+set}" = set; then
 else
   with_assertions=no
 fi;
-echo "$as_me:15956: result: $with_assertions" >&5
+echo "$as_me:16256: result: $with_assertions" >&5
 echo "${ECHO_T}$with_assertions" >&6
 if test -n "$GCC"
 then
@@ -16006,7 +16306,7 @@ case "$CFLAGS $CPPFLAGS" in
        ;;
 esac
 
-echo "$as_me:16009: checking whether to add trace feature to all models" >&5
+echo "$as_me:16309: checking whether to add trace feature to all models" >&5
 echo $ECHO_N "checking whether to add trace feature to all models... $ECHO_C" >&6
 
 # Check whether --with-trace or --without-trace was given.
@@ -16016,7 +16316,7 @@ if test "${with_trace+set}" = set; then
 else
   cf_with_trace=$cf_all_traces
 fi;
-echo "$as_me:16019: result: $cf_with_trace" >&5
+echo "$as_me:16319: result: $cf_with_trace" >&5
 echo "${ECHO_T}$cf_with_trace" >&6
 
 if test "$cf_with_trace" = yes ; then
@@ -16124,7 +16424,7 @@ else
        ADA_TRACE=FALSE
 fi
 
-echo "$as_me:16127: checking if we want to use GNAT projects" >&5
+echo "$as_me:16427: checking if we want to use GNAT projects" >&5
 echo $ECHO_N "checking if we want to use GNAT projects... $ECHO_C" >&6
 
 # Check whether --enable-gnat-projects or --disable-gnat-projects was given.
@@ -16141,21 +16441,21 @@ else
        enable_gnat_projects=yes
 
 fi;
-echo "$as_me:16144: result: $enable_gnat_projects" >&5
+echo "$as_me:16444: result: $enable_gnat_projects" >&5
 echo "${ECHO_T}$enable_gnat_projects" >&6
 
 ###    Checks for libraries.
 case $cf_cv_system_name in
 (*mingw32*)
 
-echo "$as_me:16151: checking if ssp library is needed" >&5
+echo "$as_me:16451: checking if ssp library is needed" >&5
 echo $ECHO_N "checking if ssp library is needed... $ECHO_C" >&6
 if test "${cf_cv_need_libssp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 16158 "configure"
+#line 16458 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -16172,16 +16472,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16175: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16475: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16178: \$? = $ac_status" >&5
+  echo "$as_me:16478: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16181: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16481: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16184: \$? = $ac_status" >&5
+  echo "$as_me:16484: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_need_libssp=no
 else
@@ -16191,7 +16491,7 @@ cat "conftest.$ac_ext" >&5
        cf_save_LIBS="$LIBS"
        LIBS="$LIBS -lssp"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 16194 "configure"
+#line 16494 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -16208,16 +16508,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16211: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16511: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16214: \$? = $ac_status" >&5
+  echo "$as_me:16514: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16217: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16517: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16220: \$? = $ac_status" >&5
+  echo "$as_me:16520: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_need_libssp=yes
 else
@@ -16231,7 +16531,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:16234: result: $cf_cv_need_libssp" >&5
+echo "$as_me:16534: result: $cf_cv_need_libssp" >&5
 echo "${ECHO_T}$cf_cv_need_libssp" >&6
 
 if test "x$cf_cv_need_libssp" = xyes
 
        ;;
 (*)
-echo "$as_me:16260: checking for gettimeofday" >&5
+
+echo "$as_me:16561: checking for clock_gettime" >&5
+echo $ECHO_N "checking for clock_gettime... $ECHO_C" >&6
+if test "${cf_cv_func_clock_gettime+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+               cat >"conftest.$ac_ext" <<_ACEOF
+#line 16568 "configure"
+#include "confdefs.h"
+#include <time.h>
+int
+main (void)
+{
+struct timespec ts;
+               int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext" "conftest$ac_exeext"
+if { (eval echo "$as_me:16581: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:16584: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest$ac_exeext"'
+  { (eval echo "$as_me:16587: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:16590: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  cf_cv_func_clock_gettime=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+cf_cv_func_clock_gettime=no
+fi
+rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
+
+fi
+echo "$as_me:16601: result: $cf_cv_func_clock_gettime" >&5
+echo "${ECHO_T}$cf_cv_func_clock_gettime" >&6
+
+if test "$cf_cv_func_clock_gettime" = yes
+then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_CLOCK_GETTIME 1
+EOF
+
+else
+echo "$as_me:16612: checking for gettimeofday" >&5
 echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6
 if test "${ac_cv_func_gettimeofday+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 16266 "configure"
+#line 16618 "configure"
 #include "confdefs.h"
 #define gettimeofday autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -16294,16 +16646,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16297: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16649: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16300: \$? = $ac_status" >&5
+  echo "$as_me:16652: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16303: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16655: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16306: \$? = $ac_status" >&5
+  echo "$as_me:16658: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_gettimeofday=yes
 else
@@ -16313,16 +16665,17 @@ ac_cv_func_gettimeofday=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:16316: result: $ac_cv_func_gettimeofday" >&5
+echo "$as_me:16668: result: $ac_cv_func_gettimeofday" >&5
 echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6
 if test "$ac_cv_func_gettimeofday" = yes; then
-  cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
 #define HAVE_GETTIMEOFDAY 1
 EOF
 
 else
 
-echo "$as_me:16325: checking for gettimeofday in -lbsd" >&5
+echo "$as_me:16678: checking for gettimeofday in -lbsd" >&5
 echo $ECHO_N "checking for gettimeofday in -lbsd... $ECHO_C" >&6
 if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16330,7 +16683,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 16333 "configure"
+#line 16686 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -16339,7 +16692,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char gettimeofday ();
+char gettimeofday (void);
 int
 main (void)
 {
@@ -16349,16 +16702,16 @@ gettimeofday ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16352: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16705: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16355: \$? = $ac_status" >&5
+  echo "$as_me:16708: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16358: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16711: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16361: \$? = $ac_status" >&5
+  echo "$as_me:16714: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_bsd_gettimeofday=yes
 else
@@ -16369,7 +16722,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:16372: result: $ac_cv_lib_bsd_gettimeofday" >&5
+echo "$as_me:16725: result: $ac_cv_lib_bsd_gettimeofday" >&5
 echo "${ECHO_T}$ac_cv_lib_bsd_gettimeofday" >&6
 if test "$ac_cv_lib_bsd_gettimeofday" = yes; then
 
@@ -16377,206 +16730,38 @@ cat >>confdefs.h <<\EOF
 #define HAVE_GETTIMEOFDAY 1
 EOF
 
-       LIBS="$LIBS -lbsd"
-fi
-
-fi
-       ;;
-esac
-
-###    Checks for header files.
-echo "$as_me:16388: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 16394 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-_ACEOF
-if { (eval echo "$as_me:16402: \"$ac_cpp "conftest.$ac_ext"\"") >&5
-  (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  $EGREP -v '^ *\+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:16408: \$? = $ac_status" >&5
-  (exit "$ac_status"); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_cv_header_stdc=yes
-else
-  echo "$as_me: failed program was:" >&5
-  cat "conftest.$ac_ext" >&5
-  ac_cv_header_stdc=no
-fi
-rm -f conftest.err "conftest.$ac_ext"
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 16430 "configure"
-#include "confdefs.h"
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -rf conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 16448 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -rf conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 16469 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
-                     || ('j' <= (c) && (c) <= 'r') \
-                     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lbsd; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+       for cf_add_2lib in $cf_add_libs; do
+               if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+                       cf_add_1lib=
+                       break
+               fi
+       done
+       test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
 
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main (void)
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-        || toupper (i) != TOUPPER (i))
-      $ac_main_return(2);
-  $ac_main_return (0);
-}
-_ACEOF
-rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:16495: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:16498: \$? = $ac_status" >&5
-  (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:16500: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:16503: \$? = $ac_status" >&5
-  (exit "$ac_status"); }; }; then
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat "conftest.$ac_ext" >&5
-ac_cv_header_stdc=no
 fi
-rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
-fi
-fi
-fi
-echo "$as_me:16516: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
 
 fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                  inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:16532: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 16538 "configure"
-#include "confdefs.h"
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:16544: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:16547: \$? = $ac_status" >&5
-  (exit "$ac_status"); } &&
-         { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:16550: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:16553: \$? = $ac_status" >&5
-  (exit "$ac_status"); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-cat "conftest.$ac_ext" >&5
-eval "$as_ac_Header=no"
 fi
-rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-fi
-echo "$as_me:16563: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
-echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
-if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
-  cat >>confdefs.h <<EOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-EOF
 
-fi
-done
+       ;;
+esac
 
-echo "$as_me:16573: checking for signed char" >&5
+###    Checks for header files.
+echo "$as_me:16758: checking for signed char" >&5
 echo $ECHO_N "checking for signed char... $ECHO_C" >&6
 if test "${ac_cv_type_signed_char+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 16579 "configure"
+#line 16764 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -16591,16 +16776,16 @@ if (sizeof (signed char))
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:16594: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16779: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:16597: \$? = $ac_status" >&5
+  echo "$as_me:16782: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:16600: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16785: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16603: \$? = $ac_status" >&5
+  echo "$as_me:16788: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_type_signed_char=yes
 else
@@ -16610,10 +16795,10 @@ ac_cv_type_signed_char=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:16613: result: $ac_cv_type_signed_char" >&5
+echo "$as_me:16798: result: $ac_cv_type_signed_char" >&5
 echo "${ECHO_T}$ac_cv_type_signed_char" >&6
 
-echo "$as_me:16616: checking size of signed char" >&5
+echo "$as_me:16801: checking size of signed char" >&5
 echo $ECHO_N "checking size of signed char... $ECHO_C" >&6
 if test "${ac_cv_sizeof_signed_char+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16622,7 +16807,7 @@ else
   if test "$cross_compiling" = yes; then
   # Depending upon the size, compute the lo and hi bounds.
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 16625 "configure"
+#line 16810 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -16634,21 +16819,21 @@ int _array_ [1 - 2 * !((sizeof (signed char)) >= 0)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:16637: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16822: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:16640: \$? = $ac_status" >&5
+  echo "$as_me:16825: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:16643: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16828: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16646: \$? = $ac_status" >&5
+  echo "$as_me:16831: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_lo=0 ac_mid=0
   while :; do
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 16651 "configure"
+#line 16836 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -16660,16 +16845,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:16663: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16848: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:16666: \$? = $ac_status" >&5
+  echo "$as_me:16851: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:16669: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16854: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16672: \$? = $ac_status" >&5
+  echo "$as_me:16857: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_hi=$ac_mid; break
 else
@@ -16685,7 +16870,7 @@ cat "conftest.$ac_ext" >&5
 ac_hi=-1 ac_mid=-1
   while :; do
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 16688 "configure"
+#line 16873 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -16697,16 +16882,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) >= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:16700: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16885: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:16703: \$? = $ac_status" >&5
+  echo "$as_me:16888: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:16706: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16891: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16709: \$? = $ac_status" >&5
+  echo "$as_me:16894: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_lo=$ac_mid; break
 else
@@ -16722,7 +16907,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 while test "x$ac_lo" != "x$ac_hi"; do
   ac_mid=`expr '(' "$ac_hi" - "$ac_lo" ')' / 2 + "$ac_lo"`
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 16725 "configure"
+#line 16910 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -16734,16 +16919,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:16737: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16922: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:16740: \$? = $ac_status" >&5
+  echo "$as_me:16925: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:16743: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16928: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16746: \$? = $ac_status" >&5
+  echo "$as_me:16931: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_hi=$ac_mid
 else
@@ -16756,12 +16941,12 @@ done
 ac_cv_sizeof_signed_char=$ac_lo
 else
   if test "$cross_compiling" = yes; then
-  { { echo "$as_me:16759: error: cannot run test program while cross compiling" >&5
+  { { echo "$as_me:16944: error: cannot run test program while cross compiling" >&5
 echo "$as_me: error: cannot run test program while cross compiling" >&2;}
    { (exit 1); exit 1; }; }
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 16764 "configure"
+#line 16949 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -16777,15 +16962,15 @@ fclose (f);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:16780: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16965: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16783: \$? = $ac_status" >&5
+  echo "$as_me:16968: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:16785: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16970: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16788: \$? = $ac_status" >&5
+  echo "$as_me:16973: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sizeof_signed_char=`cat conftest.val`
 else
@@ -16801,160 +16986,22 @@ else
   ac_cv_sizeof_signed_char=0
 fi
 fi
-echo "$as_me:16804: result: $ac_cv_sizeof_signed_char" >&5
+echo "$as_me:16989: result: $ac_cv_sizeof_signed_char" >&5
 echo "${ECHO_T}$ac_cv_sizeof_signed_char" >&6
 cat >>confdefs.h <<EOF
 #define SIZEOF_SIGNED_CHAR $ac_cv_sizeof_signed_char
 EOF
 
-echo "$as_me:16810: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 16816 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-_ACEOF
-if { (eval echo "$as_me:16824: \"$ac_cpp "conftest.$ac_ext"\"") >&5
-  (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  $EGREP -v '^ *\+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:16830: \$? = $ac_status" >&5
-  (exit "$ac_status"); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_cv_header_stdc=yes
-else
-  echo "$as_me: failed program was:" >&5
-  cat "conftest.$ac_ext" >&5
-  ac_cv_header_stdc=no
-fi
-rm -f conftest.err "conftest.$ac_ext"
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 16852 "configure"
-#include "confdefs.h"
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -rf conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 16870 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -rf conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 16891 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
-                     || ('j' <= (c) && (c) <= 'r') \
-                     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main (void)
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-        || toupper (i) != TOUPPER (i))
-      $ac_main_return(2);
-  $ac_main_return (0);
-}
-_ACEOF
-rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:16917: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:16920: \$? = $ac_status" >&5
-  (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:16922: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:16925: \$? = $ac_status" >&5
-  (exit "$ac_status"); }; }; then
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat "conftest.$ac_ext" >&5
-ac_cv_header_stdc=no
-fi
-rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
-fi
-fi
-fi
-echo "$as_me:16938: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
 ac_header_dirent=no
 for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
   as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-echo "$as_me:16951: checking for $ac_hdr that defines DIR" >&5
+echo "$as_me:16998: checking for $ac_hdr that defines DIR" >&5
 echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 16957 "configure"
+#line 17004 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -16969,16 +17016,16 @@ return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:16972: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17019: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:16975: \$? = $ac_status" >&5
+  echo "$as_me:17022: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:16978: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17025: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16981: \$? = $ac_status" >&5
+  echo "$as_me:17028: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_Header=yes"
 else
@@ -16988,7 +17035,7 @@ eval "$as_ac_Header=no"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:16991: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:17038: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -17001,7 +17048,7 @@ fi
 done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
-  echo "$as_me:17004: checking for opendir in -ldir" >&5
+  echo "$as_me:17051: checking for opendir in -ldir" >&5
 echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6
 if test "${ac_cv_lib_dir_opendir+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17009,7 +17056,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldir  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 17012 "configure"
+#line 17059 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -17018,7 +17065,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char opendir ();
+char opendir (void);
 int
 main (void)
 {
@@ -17028,16 +17075,16 @@ opendir ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17031: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17078: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17034: \$? = $ac_status" >&5
+  echo "$as_me:17081: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:17037: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17084: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17040: \$? = $ac_status" >&5
+  echo "$as_me:17087: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dir_opendir=yes
 else
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:17051: result: $ac_cv_lib_dir_opendir" >&5
+echo "$as_me:17098: result: $ac_cv_lib_dir_opendir" >&5
 echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6
 if test "$ac_cv_lib_dir_opendir" = yes; then
   LIBS="$LIBS -ldir"
 fi
 
 else
-  echo "$as_me:17058: checking for opendir in -lx" >&5
+  echo "$as_me:17105: checking for opendir in -lx" >&5
 echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6
 if test "${ac_cv_lib_x_opendir+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17063,7 +17110,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lx  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 17066 "configure"
+#line 17113 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -17072,7 +17119,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char opendir ();
+char opendir (void);
 int
 main (void)
 {
@@ -17082,16 +17129,16 @@ opendir ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17085: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17132: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17088: \$? = $ac_status" >&5
+  echo "$as_me:17135: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:17091: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17138: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17094: \$? = $ac_status" >&5
+  echo "$as_me:17141: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_x_opendir=yes
 else
@@ -17102,7 +17149,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:17105: result: $ac_cv_lib_x_opendir" >&5
+echo "$as_me:17152: result: $ac_cv_lib_x_opendir" >&5
 echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6
 if test "$ac_cv_lib_x_opendir" = yes; then
   LIBS="$LIBS -lx"
 
 fi
 
-echo "$as_me:17113: checking whether time.h and sys/time.h may both be included" >&5
+echo "$as_me:17160: checking whether time.h and sys/time.h may both be included" >&5
 echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
 if test "${ac_cv_header_time+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17119 "configure"
+#line 17166 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -17132,16 +17179,16 @@ return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:17135: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17182: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17138: \$? = $ac_status" >&5
+  echo "$as_me:17185: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:17141: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17188: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17144: \$? = $ac_status" >&5
+  echo "$as_me:17191: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_header_time=yes
 else
@@ -17151,7 +17198,7 @@ ac_cv_header_time=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:17154: result: $ac_cv_header_time" >&5
+echo "$as_me:17201: result: $ac_cv_header_time" >&5
 echo "${ECHO_T}$ac_cv_header_time" >&6
 if test $ac_cv_header_time = yes; then
 
@@ -17169,13 +17216,13 @@ ac_link='$CC -o "conftest$ac_exeext" $CFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac_ex
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 ac_main_return="return"
 
-echo "$as_me:17172: checking for an ANSI C-conforming const" >&5
+echo "$as_me:17219: checking for an ANSI C-conforming const" >&5
 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
 if test "${ac_cv_c_const+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17178 "configure"
+#line 17225 "configure"
 #include "confdefs.h"
 
 int
@@ -17185,13 +17232,13 @@ main (void)
 #ifndef __cplusplus
   /* Ultrix mips cc rejects this.  */
   typedef int charset[2];
-  const charset x;
+  const charset x; (void)x;
   /* SunOS 4.1.1 cc rejects this.  */
   char const *const *ccp;
   char **p;
   /* NEC SVR4.0.2 mips cc rejects this.  */
   struct point {int x, y;};
-  static struct point const zero = {0,0};
+  static struct point const zero = {0,0}; (void)zero;
   /* AIX XL C 1.02.0.0 rejects this.
      It does not let you subtract one const X* pointer from another in
      an arm of an if-expression whose if-part is not a constant
@@ -17207,16 +17254,19 @@ main (void)
     char const *s = 0 ? (char *) 0 : (char const *) 0;
 
     *t++ = 0;
+       (void)s;
   }
   { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
     int x[] = {25, 17};
     const int *foo = &x[0];
     ++foo;
+       (void)foo;
   }
   { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
     typedef const int *iptr;
     iptr p = 0;
     ++p;
+       (void)p;
   }
   { /* AIX XL C 1.02.0.0 rejects this saying
        "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
@@ -17225,6 +17275,7 @@ main (void)
   }
   { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
     const int foo = 10;
+       (void)foo;
   }
 #endif
 
@@ -17233,16 +17284,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:17236: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17287: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17239: \$? = $ac_status" >&5
+  echo "$as_me:17290: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:17242: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17293: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17245: \$? = $ac_status" >&5
+  echo "$as_me:17296: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_c_const=yes
 else
@@ -17252,7 +17303,7 @@ ac_cv_c_const=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:17255: result: $ac_cv_c_const" >&5
+echo "$as_me:17306: result: $ac_cv_c_const" >&5
 echo "${ECHO_T}$ac_cv_c_const" >&6
 if test $ac_cv_c_const = no; then
 
@@ -17264,7 +17315,7 @@ fi
 
 ###    Checks for external-data
 
-echo "$as_me:17267: checking if data-only library module links" >&5
+echo "$as_me:17318: checking if data-only library module links" >&5
 echo $ECHO_N "checking if data-only library module links... $ECHO_C" >&6
 if test "${cf_cv_link_dataonly+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17272,36 +17323,40 @@ else
 
        rm -f conftest.a
        cat >conftest.$ac_ext <<EOF
-#line 17275 "configure"
+#line 17326 "configure"
 int    testdata[3] = { 123, 456, 789 };
 EOF
-       if { (eval echo "$as_me:17278: \"$ac_compile\"") >&5
+       if { (eval echo "$as_me:17329: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17281: \$? = $ac_status" >&5
+  echo "$as_me:17332: \$? = $ac_status" >&5
   (exit "$ac_status"); } ; then
                mv conftest.o data.o && \
                ( $AR $ARFLAGS conftest.a data.o ) 2>&5 1>/dev/null
        fi
        rm -f conftest.$ac_ext data.o
        cat >conftest.$ac_ext <<EOF
-#line 17288 "configure"
+#line 17339 "configure"
+extern int testfunc(void);
+#if defined(NeXT)
 int    testfunc(void)
 {
-#if defined(NeXT)
        ${cf_cv_main_return:-return}(1);        /* I'm told this linker is broken */
+}
 #else
-       extern int testdata[3];
+extern int testdata[3];
+int    testfunc(void)
+{
        return testdata[0] == 123
           &&  testdata[1] == 456
           &&  testdata[2] == 789;
-#endif
 }
+#endif
 EOF
-       if { (eval echo "$as_me:17301: \"$ac_compile\"") >&5
+       if { (eval echo "$as_me:17356: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17304: \$? = $ac_status" >&5
+  echo "$as_me:17359: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
                mv conftest.o func.o && \
                ( $AR $ARFLAGS conftest.a func.o ) 2>&5 1>/dev/null
@@ -17314,26 +17369,26 @@ EOF
   cf_cv_link_dataonly=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17317 "configure"
+#line 17372 "configure"
 #include "confdefs.h"
 
+       extern int testfunc(void);
        int main(void)
        {
-               extern int testfunc();
                ${cf_cv_main_return:-return} (!testfunc());
        }
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:17328: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17383: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17331: \$? = $ac_status" >&5
+  echo "$as_me:17386: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:17333: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17388: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17336: \$? = $ac_status" >&5
+  echo "$as_me:17391: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_link_dataonly=yes
 else
@@ -17348,7 +17403,7 @@ fi
 
 fi
 
-echo "$as_me:17351: result: $cf_cv_link_dataonly" >&5
+echo "$as_me:17406: result: $cf_cv_link_dataonly" >&5
 echo "${ECHO_T}$cf_cv_link_dataonly" >&6
 
 if test "$cf_cv_link_dataonly" = no ; then
@@ -17367,23 +17422,23 @@ unistd.h \
 
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:17370: checking for $ac_header" >&5
+echo "$as_me:17425: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17376 "configure"
+#line 17431 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:17380: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:17435: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:17386: \$? = $ac_status" >&5
+  echo "$as_me:17441: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -17402,7 +17457,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:17405: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:17460: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -17412,7 +17467,7 @@ EOF
 fi
 done
 
-echo "$as_me:17415: checking for working mkstemp" >&5
+echo "$as_me:17470: checking for working mkstemp" >&5
 echo $ECHO_N "checking for working mkstemp... $ECHO_C" >&6
 if test "${cf_cv_func_mkstemp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17423,14 +17478,14 @@ if test "$cross_compiling" = yes; then
   cf_cv_func_mkstemp=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17426 "configure"
+#line 17481 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
 
 int main(void)
 {
-       char *tmpl = "conftestXXXXXX";
+       static char tmpl[] = "conftestXXXXXX";
        char name[2][80];
        int n;
        int result = 0;
@@ -17458,15 +17513,15 @@ int main(void)
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:17461: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17516: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17464: \$? = $ac_status" >&5
+  echo "$as_me:17519: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:17466: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17521: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17469: \$? = $ac_status" >&5
+  echo "$as_me:17524: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_func_mkstemp=yes
 
@@ -17481,16 +17536,16 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes
 fi
 
 fi
-echo "$as_me:17484: result: $cf_cv_func_mkstemp" >&5
+echo "$as_me:17539: result: $cf_cv_func_mkstemp" >&5
 echo "${ECHO_T}$cf_cv_func_mkstemp" >&6
 if test "x$cf_cv_func_mkstemp" = xmaybe ; then
-       echo "$as_me:17487: checking for mkstemp" >&5
+       echo "$as_me:17542: checking for mkstemp" >&5
 echo $ECHO_N "checking for mkstemp... $ECHO_C" >&6
 if test "${ac_cv_func_mkstemp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17493 "configure"
+#line 17548 "configure"
 #include "confdefs.h"
 #define mkstemp autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -17521,16 +17576,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17524: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17579: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17527: \$? = $ac_status" >&5
+  echo "$as_me:17582: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:17530: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17585: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17533: \$? = $ac_status" >&5
+  echo "$as_me:17588: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_mkstemp=yes
 else
@@ -17540,7 +17595,7 @@ ac_cv_func_mkstemp=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:17543: result: $ac_cv_func_mkstemp" >&5
+echo "$as_me:17598: result: $ac_cv_func_mkstemp" >&5
 echo "${ECHO_T}$ac_cv_func_mkstemp" >&6
 
 fi
@@ -17569,7 +17624,7 @@ cf_upper_prog_gnat=`echo "${cf_prog_gnat}" | sed y%abcdefghijklmnopqrstuvwxyz./-
        unset cf_TEMP_gnat
        # Extract the first word of "$cf_prog_gnat", so it can be a program name with args.
 set dummy $cf_prog_gnat; ac_word=$2
-echo "$as_me:17572: checking for $ac_word" >&5
+echo "$as_me:17627: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_cf_TEMP_gnat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17586,7 +17641,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_cf_TEMP_gnat="$ac_dir/$ac_word"
-   echo "$as_me:17589: found $ac_dir/$ac_word" >&5
+   echo "$as_me:17644: found $ac_dir/$ac_word" >&5
    break
 fi
 done
 cf_TEMP_gnat=$ac_cv_path_cf_TEMP_gnat
 
 if test -n "$cf_TEMP_gnat"; then
-  echo "$as_me:17601: result: $cf_TEMP_gnat" >&5
+  echo "$as_me:17656: result: $cf_TEMP_gnat" >&5
 echo "${ECHO_T}$cf_TEMP_gnat" >&6
 else
-  echo "$as_me:17604: result: no" >&5
+  echo "$as_me:17659: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -17611,7 +17666,7 @@ fi
                unset cf_cv_gnat_version
                unset cf_TEMP_gnat
 
-echo "$as_me:17614: checking for $cf_prog_gnat version" >&5
+echo "$as_me:17669: checking for $cf_prog_gnat version" >&5
 echo $ECHO_N "checking for $cf_prog_gnat version... $ECHO_C" >&6
 if test "${cf_cv_gnat_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17622,7 +17677,7 @@ cf_cv_gnat_version=`$cf_prog_gnat --version 2>&1 | \
        sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
 
 fi
-echo "$as_me:17625: result: $cf_cv_gnat_version" >&5
+echo "$as_me:17680: result: $cf_cv_gnat_version" >&5
 echo "${ECHO_T}$cf_cv_gnat_version" >&6
 test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
 eval cf_TEMP_gnat=$cf_cv_gnat_version; unset cf_cv_gnat_version
@@ -17651,7 +17706,7 @@ else
                        cd conftest.src
                        for cf_gprconfig in Ada C
                        do
-                               echo "$as_me:17654: checking for gprconfig name for $cf_gprconfig" >&5
+                               echo "$as_me:17709: checking for gprconfig name for $cf_gprconfig" >&5
 echo $ECHO_N "checking for gprconfig name for $cf_gprconfig... $ECHO_C" >&6
                                if test "$cf_gprconfig" = C
                                then
@@ -17670,10 +17725,10 @@ echo $ECHO_N "checking for gprconfig name for $cf_gprconfig... $ECHO_C" >&6
                                if test -n "$cf_gprconfig_value"
                                then
                                        eval "cf_ada_config_$cf_gprconfig=$cf_gprconfig_value"
-                                       echo "$as_me:17673: result: $cf_gprconfig_value" >&5
+                                       echo "$as_me:17728: result: $cf_gprconfig_value" >&5
 echo "${ECHO_T}$cf_gprconfig_value" >&6
                                else
-                                       echo "$as_me:17676: result: missing" >&5
+                                       echo "$as_me:17731: result: missing" >&5
 echo "${ECHO_T}missing" >&6
                                        cf_ada_config="#"
                                        break
@@ -17686,7 +17741,7 @@ echo "${ECHO_T}missing" >&6
        if test "x$cf_ada_config" != "x#"
        then
 
-echo "$as_me:17689: checking for gnat version" >&5
+echo "$as_me:17744: checking for gnat version" >&5
 echo $ECHO_N "checking for gnat version... $ECHO_C" >&6
 if test "${cf_cv_gnat_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17697,7 +17752,7 @@ cf_cv_gnat_version=`${cf_ada_make:-gnatmake} --version 2>&1 | \
        sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
 
 fi
-echo "$as_me:17700: result: $cf_cv_gnat_version" >&5
+echo "$as_me:17755: result: $cf_cv_gnat_version" >&5
 echo "${ECHO_T}$cf_cv_gnat_version" >&6
 test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
 
@@ -17706,7 +17761,7 @@ case "$cf_cv_gnat_version" in
        cf_cv_prog_gnat_correct=yes
        ;;
 (*)
-       { echo "$as_me:17709: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5
+       { echo "$as_me:17764: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5
 echo "$as_me: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&2;}
        cf_cv_prog_gnat_correct=no
        ;;
@@ -17714,7 +17769,7 @@ esac
 
                # Extract the first word of "m4", so it can be a program name with args.
 set dummy m4; ac_word=$2
-echo "$as_me:17717: checking for $ac_word" >&5
+echo "$as_me:17772: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_M4_exists+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17729,7 +17784,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_M4_exists="yes"
-echo "$as_me:17732: found $ac_dir/$ac_word" >&5
+echo "$as_me:17787: found $ac_dir/$ac_word" >&5
 break
 done
 
 fi
 M4_exists=$ac_cv_prog_M4_exists
 if test -n "$M4_exists"; then
-  echo "$as_me:17741: result: $M4_exists" >&5
+  echo "$as_me:17796: result: $M4_exists" >&5
 echo "${ECHO_T}$M4_exists" >&6
 else
-  echo "$as_me:17744: result: no" >&5
+  echo "$as_me:17799: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
                if test "$ac_cv_prog_M4_exists" = no; then
                        cf_cv_prog_gnat_correct=no
-                       { echo "$as_me:17750: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&5
+                       { echo "$as_me:17805: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&5
 echo "$as_me: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&2;}
                fi
                if test "$cf_cv_prog_gnat_correct" = yes; then
-                       echo "$as_me:17754: checking if GNAT works" >&5
+                       echo "$as_me:17809: checking if GNAT works" >&5
 echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6
 
 rm -rf ./conftest* ./*~conftest*
@@ -17779,7 +17834,7 @@ else
 fi
 rm -rf ./conftest* ./*~conftest*
 
-                       echo "$as_me:17782: result: $cf_cv_prog_gnat_correct" >&5
+                       echo "$as_me:17837: result: $cf_cv_prog_gnat_correct" >&5
 echo "${ECHO_T}$cf_cv_prog_gnat_correct" >&6
                fi
        else
@@ -17789,7 +17844,7 @@ fi
 
        if test "$cf_cv_prog_gnat_correct" = yes; then
 
-       echo "$as_me:17792: checking optimization options for ADAFLAGS" >&5
+       echo "$as_me:17847: checking optimization options for ADAFLAGS" >&5
 echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6
        case "$CFLAGS" in
        (*-g*)
@@ -17806,10 +17861,10 @@ echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6
 
                ;;
        esac
-       echo "$as_me:17809: result: $ADAFLAGS" >&5
+       echo "$as_me:17864: result: $ADAFLAGS" >&5
 echo "${ECHO_T}$ADAFLAGS" >&6
 
-echo "$as_me:17812: checking if GNATPREP supports -T option" >&5
+echo "$as_me:17867: checking if GNATPREP supports -T option" >&5
 echo $ECHO_N "checking if GNATPREP supports -T option... $ECHO_C" >&6
 if test "${cf_cv_gnatprep_opt_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17819,11 +17874,11 @@ cf_cv_gnatprep_opt_t=no
 gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
 
 fi
-echo "$as_me:17822: result: $cf_cv_gnatprep_opt_t" >&5
+echo "$as_me:17877: result: $cf_cv_gnatprep_opt_t" >&5
 echo "${ECHO_T}$cf_cv_gnatprep_opt_t" >&6
 test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
 
-echo "$as_me:17826: checking if GNAT supports generics" >&5
+echo "$as_me:17881: checking if GNAT supports generics" >&5
 echo $ECHO_N "checking if GNAT supports generics... $ECHO_C" >&6
 case "$cf_cv_gnat_version" in
 (3.1[1-9]*|3.[2-9]*|[4-9].*|[1-9][0-9].[0-9]*|20[0-9][0-9])
@@ -17833,7 +17888,7 @@ case "$cf_cv_gnat_version" in
        cf_gnat_generics=no
        ;;
 esac
-echo "$as_me:17836: result: $cf_gnat_generics" >&5
+echo "$as_me:17891: result: $cf_gnat_generics" >&5
 echo "${ECHO_T}$cf_gnat_generics" >&6
 
 if test "$cf_gnat_generics" = yes
@@ -17845,7 +17900,7 @@ else
        cf_generic_objects=
 fi
 
-echo "$as_me:17848: checking if GNAT supports SIGINT" >&5
+echo "$as_me:17903: checking if GNAT supports SIGINT" >&5
 echo $ECHO_N "checking if GNAT supports SIGINT... $ECHO_C" >&6
 if test "${cf_cv_gnat_sigint+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17893,7 +17948,7 @@ fi
 rm -rf ./conftest* ./*~conftest*
 
 fi
-echo "$as_me:17896: result: $cf_cv_gnat_sigint" >&5
+echo "$as_me:17951: result: $cf_cv_gnat_sigint" >&5
 echo "${ECHO_T}$cf_cv_gnat_sigint" >&6
 
 if test "$cf_cv_gnat_sigint" = yes ; then
@@ -17906,7 +17961,7 @@ cf_gnat_libraries=no
 cf_gnat_projects=no
 
 if test "$enable_gnat_projects" != no ; then
-echo "$as_me:17909: checking if GNAT supports project files" >&5
+echo "$as_me:17964: checking if GNAT supports project files" >&5
 echo $ECHO_N "checking if GNAT supports project files... $ECHO_C" >&6
 case "$cf_cv_gnat_version" in
 (3.[0-9]*)
@@ -17969,15 +18024,15 @@ CF_EOF
        esac
        ;;
 esac
-echo "$as_me:17972: result: $cf_gnat_projects" >&5
+echo "$as_me:18027: result: $cf_gnat_projects" >&5
 echo "${ECHO_T}$cf_gnat_projects" >&6
 fi # enable_gnat_projects
 
 if test "$cf_gnat_projects" = yes
 then
-       echo "$as_me:17978: checking if GNAT supports libraries" >&5
+       echo "$as_me:18033: checking if GNAT supports libraries" >&5
 echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6
-       echo "$as_me:17980: result: $cf_gnat_libraries" >&5
+       echo "$as_me:18035: result: $cf_gnat_libraries" >&5
 echo "${ECHO_T}$cf_gnat_libraries" >&6
 fi
 
@@ -17997,7 +18052,7 @@ then
        then
                USE_GNAT_MAKE_GPR=""
        else
-               { echo "$as_me:18000: WARNING: use old makefile rules since tools are missing" >&5
+               { echo "$as_me:18055: WARNING: use old makefile rules since tools are missing" >&5
 echo "$as_me: WARNING: use old makefile rules since tools are missing" >&2;}
        fi
 fi
@@ -18009,8 +18064,8 @@ else
        USE_GNAT_LIBRARIES="#"
 fi
 
-echo "$as_me:18012: checking for ada-compiler" >&5
-echo $ECHO_N "checking for ada-compiler... $ECHO_C" >&6
+echo "$as_me:18067: checking for Ada95 compiler" >&5
+echo $ECHO_N "checking for Ada95 compiler... $ECHO_C" >&6
 
 # Check whether --with-ada-compiler or --without-ada-compiler was given.
 if test "${with_ada_compiler+set}" = set; then
@@ -18020,13 +18075,13 @@ else
   cf_ada_compiler=gnatmake
 fi;
 
-echo "$as_me:18023: result: $cf_ada_compiler" >&5
+echo "$as_me:18078: result: $cf_ada_compiler" >&5
 echo "${ECHO_T}$cf_ada_compiler" >&6
 
                cf_ada_package=terminal_interface
 
-echo "$as_me:18028: checking for ada-include" >&5
-echo $ECHO_N "checking for ada-include... $ECHO_C" >&6
+echo "$as_me:18083: checking for Ada95 include directory" >&5
+echo $ECHO_N "checking for Ada95 include directory... $ECHO_C" >&6
 
 # Check whether --with-ada-include or --without-ada-include was given.
 if test "${with_ada_include+set}" = set; then
@@ -18061,7 +18116,7 @@ case ".$withval" in
        withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:18064: error: expected a pathname, not \"$withval\"" >&5
+       { { echo "$as_me:18119: error: expected a pathname, not \"$withval\"" >&5
 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -18070,11 +18125,11 @@ esac
 fi
 eval ADA_INCLUDE="$withval"
 
-echo "$as_me:18073: result: $ADA_INCLUDE" >&5
+echo "$as_me:18128: result: $ADA_INCLUDE" >&5
 echo "${ECHO_T}$ADA_INCLUDE" >&6
 
-echo "$as_me:18076: checking for ada-objects" >&5
-echo $ECHO_N "checking for ada-objects... $ECHO_C" >&6
+echo "$as_me:18131: checking for Ada95 object directory" >&5
+echo $ECHO_N "checking for Ada95 object directory... $ECHO_C" >&6
 
 # Check whether --with-ada-objects or --without-ada-objects was given.
 if test "${with_ada_objects+set}" = set; then
@@ -18109,7 +18164,7 @@ case ".$withval" in
        withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:18112: error: expected a pathname, not \"$withval\"" >&5
+       { { echo "$as_me:18167: error: expected a pathname, not \"$withval\"" >&5
 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -18118,11 +18173,11 @@ esac
 fi
 eval ADA_OBJECTS="$withval"
 
-echo "$as_me:18121: result: $ADA_OBJECTS" >&5
+echo "$as_me:18176: result: $ADA_OBJECTS" >&5
 echo "${ECHO_T}$ADA_OBJECTS" >&6
 
-echo "$as_me:18124: checking if an Ada95 shared-library should be built" >&5
-echo $ECHO_N "checking if an Ada95 shared-library should be built... $ECHO_C" >&6
+echo "$as_me:18179: checking whether to build an Ada95 shared library" >&5
+echo $ECHO_N "checking whether to build an Ada95 shared library... $ECHO_C" >&6
 
 # Check whether --with-ada-sharedlib or --without-ada-sharedlib was given.
 if test "${with_ada_sharedlib+set}" = set; then
@@ -18131,19 +18186,25 @@ if test "${with_ada_sharedlib+set}" = set; then
 else
   with_ada_sharedlib=no
 fi;
-echo "$as_me:18134: result: $with_ada_sharedlib" >&5
-echo "${ECHO_T}$with_ada_sharedlib" >&6
+cf_ada_sharedlib_warn=no
 
 if test "x$with_ada_sharedlib" != xno
 then
        if test "x$cf_gnat_projects" != xyes
        then
-               { echo "$as_me:18141: WARNING: disabling shared-library since GNAT projects are not supported" >&5
-echo "$as_me: WARNING: disabling shared-library since GNAT projects are not supported" >&2;}
                with_ada_sharedlib=no
+               cf_ada_sharedlib_warn=yes
        fi
 fi
 
+echo "$as_me:18200: result: $with_ada_sharedlib" >&5
+echo "${ECHO_T}$with_ada_sharedlib" >&6
+if test "x$cf_ada_sharedlib_warn" != xno
+then
+       { echo "$as_me:18204: WARNING: disabling Ada95 shared library since GNAT projects are not supported" >&5
+echo "$as_me: WARNING: disabling Ada95 shared library since GNAT projects are not supported" >&2;}
+fi
+
 ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
 MAKE_ADA_SHAREDLIB="#"
 
@@ -18158,8 +18219,8 @@ fi
 
                # allow the Ada binding to be renamed
 
-echo "$as_me:18161: checking for ada-libname" >&5
-echo $ECHO_N "checking for ada-libname... $ECHO_C" >&6
+echo "$as_me:18222: checking for Ada95 curses library name" >&5
+echo $ECHO_N "checking for Ada95 curses library name... $ECHO_C" >&6
 
 # Check whether --with-ada-libname or --without-ada-libname was given.
 if test "${with_ada_libname+set}" = set; then
@@ -18174,16 +18235,16 @@ case "x$ADA_LIBNAME" in
        ;;
 esac
 
-echo "$as_me:18177: result: $ADA_LIBNAME" >&5
+echo "$as_me:18238: result: $ADA_LIBNAME" >&5
 echo "${ECHO_T}$ADA_LIBNAME" >&6
 
        else
-               { { echo "$as_me:18181: error: No usable Ada compiler found" >&5
+               { { echo "$as_me:18242: error: No usable Ada compiler found" >&5
 echo "$as_me: error: No usable Ada compiler found" >&2;}
    { (exit 1); exit 1; }; }
        fi
 else
-       { { echo "$as_me:18186: error: The Ada compiler is needed for this package" >&5
+       { { echo "$as_me:18247: error: The Ada compiler is needed for this package" >&5
 echo "$as_me: error: The Ada compiler is needed for this package" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -18223,7 +18284,7 @@ elif test "$includedir" != "/usr/include"; then
 fi
 
 ### Build up pieces for makefile rules
-echo "$as_me:18226: checking default library suffix" >&5
+echo "$as_me:18287: checking default library suffix" >&5
 echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
 
        case $DFT_LWR_MODEL in
@@ -18234,10 +18295,10 @@ echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
        (shared)  DFT_ARG_SUFFIX=''   ;;
        esac
        test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}"
-echo "$as_me:18237: result: $DFT_ARG_SUFFIX" >&5
+echo "$as_me:18298: result: $DFT_ARG_SUFFIX" >&5
 echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6
 
-echo "$as_me:18240: checking default library-dependency suffix" >&5
+echo "$as_me:18301: checking default library-dependency suffix" >&5
 echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
 
        case X$DFT_LWR_MODEL in
@@ -18320,10 +18381,10 @@ echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
                DFT_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_LIB_SUFFIX}"
                DFT_DEP_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_DEP_SUFFIX}"
        fi
-echo "$as_me:18323: result: $DFT_DEP_SUFFIX" >&5
+echo "$as_me:18384: result: $DFT_DEP_SUFFIX" >&5
 echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6
 
-echo "$as_me:18326: checking default object directory" >&5
+echo "$as_me:18387: checking default object directory" >&5
 echo $ECHO_N "checking default object directory... $ECHO_C" >&6
 
        case $DFT_LWR_MODEL in
@@ -18339,7 +18400,7 @@ echo $ECHO_N "checking default object directory... $ECHO_C" >&6
                        DFT_OBJ_SUBDIR='obj_s' ;;
                esac
        esac
-echo "$as_me:18342: result: $DFT_OBJ_SUBDIR" >&5
+echo "$as_me:18403: result: $DFT_OBJ_SUBDIR" >&5
 echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6
 
 ### Set up low-level terminfo dependencies for makefiles.
@@ -18412,7 +18473,7 @@ cat >confcache <<\_ACEOF
 # config.status only pays attention to the cache file if you give it
 # the --recheck option to rerun configure.
 #
-# `ac_cv_env_foo' variables (set or unset) will be overriden when
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
 # loading this file, other *unset* `ac_cv_foo' will be assigned the
 # following values.
 
@@ -18481,7 +18542,7 @@ DEFS=-DHAVE_CONFIG_H
 : "${CONFIG_STATUS=./config.status}"
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:18484: creating $CONFIG_STATUS" >&5
+{ echo "$as_me:18545: creating $CONFIG_STATUS" >&5
 echo "$as_me: creating $CONFIG_STATUS" >&6;}
 cat >"$CONFIG_STATUS" <<_ACEOF
 #! $SHELL
@@ -18617,7 +18678,7 @@ EOF
 cat >>"$CONFIG_STATUS" <<EOF
 ac_cs_version="\\
 config.status
-configured by $0, generated by GNU Autoconf 2.52.20230114,
+configured by $0, generated by GNU Autoconf 2.52.20231210,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
 Copyright 2003-2022,2023       Thomas E. Dickey
@@ -18662,7 +18723,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
     echo "$ac_cs_version"; exit 0 ;;
   --he | --h)
     # Conflict between --help and --header
-    { { echo "$as_me:18665: error: ambiguous option: $1
+    { { echo "$as_me:18726: error: ambiguous option: $1
 Try \`$0 --help' for more information." >&5
 echo "$as_me: error: ambiguous option: $1
 Try \`$0 --help' for more information." >&2;}
@@ -18681,7 +18742,7 @@ Try \`$0 --help' for more information." >&2;}
     ac_need_defaults=false;;
 
   # This is an error.
-  -*) { { echo "$as_me:18684: error: unrecognized option: $1
+  -*) { { echo "$as_me:18745: error: unrecognized option: $1
 Try \`$0 --help' for more information." >&5
 echo "$as_me: error: unrecognized option: $1
 Try \`$0 --help' for more information." >&2;}
@@ -18700,7 +18761,7 @@ cat >&5 << _ACEOF
 ## Running config.status.  ##
 ## ----------------------- ##
 
-This file was extended by $as_me 2.52.20230114, executed with
+This file was extended by $as_me 2.52.20231210, executed with
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
   CONFIG_LINKS    = $CONFIG_LINKS
@@ -18756,7 +18817,7 @@ do
   "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
   "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
   "include/ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/ncurses_cfg.h:include/ncurses_cfg.hin" ;;
-  *) { { echo "$as_me:18759: error: invalid argument: $ac_config_target" >&5
+  *) { { echo "$as_me:18820: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
    { (exit 1); exit 1; }; };;
   esac
@@ -19117,7 +19178,7 @@ done; }
   esac
 
   if test x"$ac_file" != x-; then
-    { echo "$as_me:19120: creating $ac_file" >&5
+    { echo "$as_me:19181: creating $ac_file" >&5
 echo "$as_me: creating $ac_file" >&6;}
     rm -f "$ac_file"
   fi
@@ -19135,7 +19196,7 @@ echo "$as_me: creating $ac_file" >&6;}
       -) echo "$tmp"/stdin ;;
       [\\/$]*)
          # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:19138: error: cannot find input file: $f" >&5
+         test -f "$f" || { { echo "$as_me:19199: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          echo "$f";;
@@ -19148,7 +19209,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
            echo "$srcdir/$f"
          else
            # /dev/null tree
-           { { echo "$as_me:19151: error: cannot find input file: $f" >&5
+           { { echo "$as_me:19212: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          fi;;
@@ -19164,7 +19225,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
       if test -n "$ac_seen"; then
         ac_used=`grep '@datarootdir@' "$ac_item"`
         if test -z "$ac_used"; then
-          { echo "$as_me:19167: WARNING: datarootdir was used implicitly but not set:
+          { echo "$as_me:19228: WARNING: datarootdir was used implicitly but not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: datarootdir was used implicitly but not set:
 $ac_seen" >&2;}
@@ -19173,7 +19234,7 @@ $ac_seen" >&2;}
       fi
       ac_seen=`grep '${datarootdir}' "$ac_item"`
       if test -n "$ac_seen"; then
-        { echo "$as_me:19176: WARNING: datarootdir was used explicitly but not set:
+        { echo "$as_me:19237: WARNING: datarootdir was used explicitly but not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: datarootdir was used explicitly but not set:
 $ac_seen" >&2;}
@@ -19201,11 +19262,11 @@ s,@INSTALL@,$ac_INSTALL,;t t
 " $ac_file_inputs | (eval "$ac_sed_cmds") >"$tmp"/out
   rm -f "$tmp"/stdin
 EOF
-: "${FGREP:=grep -F}"
-: "${EGREP:=grep -E}"
+test -n "${FGREP}" || FGREP="grep -F"
+test -n "${EGREP}" || EGREP="grep -E"
 cat >>"$CONFIG_STATUS" <<EOF
-  : "\${FGREP:=$FGREP}"
-  : "\${EGREP:=$EGREP}"
+  test -n "\${FGREP}" || FGREP="$FGREP"
+  test -n "\${EGREP}" || EGREP="$EGREP"
 EOF
 cat >>"$CONFIG_STATUS" <<\EOF
   if test x"$ac_file" != x-; then
@@ -19218,7 +19279,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
             ac_init=`$EGREP '[         ]*'$ac_name'[   ]*=' "$ac_file"`
             if test -z "$ac_init"; then
               ac_seen=`echo "$ac_seen" |sed -e 's,^,'"$ac_file"':,'`
-              { echo "$as_me:19221: WARNING: Variable $ac_name is used but was not set:
+              { echo "$as_me:19282: WARNING: Variable $ac_name is used but was not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: Variable $ac_name is used but was not set:
 $ac_seen" >&2;}
@@ -19229,7 +19290,7 @@ $ac_seen" >&2;}
     $EGREP -n '@[A-Z_][A-Z_0-9]+@' "$ac_file" >>"$tmp"/out
     if test -s "$tmp"/out; then
       ac_seen=`sed -e 's,^,'"$ac_file"':,' < "$tmp"/out`
-      { echo "$as_me:19232: WARNING: Some variables may not be substituted:
+      { echo "$as_me:19293: WARNING: Some variables may not be substituted:
 $ac_seen" >&5
 echo "$as_me: WARNING: Some variables may not be substituted:
 $ac_seen" >&2;}
@@ -19278,7 +19339,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
   * )   ac_file_in=$ac_file.in ;;
   esac
 
-  test x"$ac_file" != x- && { echo "$as_me:19281: creating $ac_file" >&5
+  test x"$ac_file" != x- && { echo "$as_me:19342: creating $ac_file" >&5
 echo "$as_me: creating $ac_file" >&6;}
 
   # First look for the input files in the build tree, otherwise in the
@@ -19289,7 +19350,7 @@ echo "$as_me: creating $ac_file" >&6;}
       -) echo "$tmp"/stdin ;;
       [\\/$]*)
          # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:19292: error: cannot find input file: $f" >&5
+         test -f "$f" || { { echo "$as_me:19353: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          echo $f;;
@@ -19302,7 +19363,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
            echo "$srcdir/$f"
          else
            # /dev/null tree
-           { { echo "$as_me:19305: error: cannot find input file: $f" >&5
+           { { echo "$as_me:19366: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          fi;;
@@ -19360,7 +19421,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
   rm -f "$tmp"/in
   if test x"$ac_file" != x-; then
     if cmp -s "$ac_file" "$tmp/config.h" 2>/dev/null; then
-      { echo "$as_me:19363: $ac_file is unchanged" >&5
+      { echo "$as_me:19424: $ac_file is unchanged" >&5
 echo "$as_me: $ac_file is unchanged" >&6;}
     else
       ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
index 416bba162decf587abb2ec1261d4d7d59a3acef1..3384df245ea29f919d2297d0dd9ef21c87bda621 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright 2018-2021,2022 Thomas E. Dickey                                *
+dnl Copyright 2018-2022,2023 Thomas E. Dickey                                *
 dnl Copyright 2010-2016,2018 Free Software Foundation, Inc.                  *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -29,7 +29,7 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey
 dnl
-dnl $Id: configure.in,v 1.88 2022/12/17 22:05:22 tom Exp $
+dnl $Id: configure.in,v 1.91 2023/02/18 23:21:29 tom Exp $
 dnl Process this file with autoconf to produce a configure script.
 dnl
 dnl For additional information, see
@@ -38,7 +38,7 @@ dnl     https://invisible-island.net/autoconf/my-autoconf.html
 dnl
 dnl ---------------------------------------------------------------------------
 AC_PREREQ(2.52.20210509)
-AC_REVISION($Revision: 1.88 $)
+AC_REVISION($Revision: 1.91 $)
 AC_INIT(gen/gen.c)
 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
 
@@ -222,6 +222,7 @@ CF_ENABLE_BROKEN_LINKER
 
 # Check to define _XOPEN_SOURCE "automatically"
 CF_XOPEN_SOURCE(600)
+AC_CHECK_DECL(exit)
 
 CF_LARGEFILE
 
@@ -424,18 +425,12 @@ case $cf_cv_system_name in
        CF_CHECK_LIBSSP
        ;;
 (*)
-AC_CHECK_FUNC(gettimeofday,
-       AC_DEFINE(HAVE_GETTIMEOFDAY),[
-
-AC_CHECK_LIB(bsd, gettimeofday,
-       AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday])
-       LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday
+       CF_FUNC_GETTIME
        ;;
 esac
 
 ###    Checks for header files.
 AC_CHECK_SIZEOF([signed char])
-AC_STDC_HEADERS
 AC_HEADER_DIRENT
 AC_HEADER_TIME
 
index 05331374c72034c91d8909adf00060642c8fa336..525ce998787654e457767b8ef95185d71ba607f5 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright 2019-2021,2022 Thomas E. Dickey                                  #
+# Copyright 2019-2022,2024 Thomas E. Dickey                                  #
 # Copyright 1998-2015,2018 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -30,7 +30,7 @@
 #  Author:  Juergen Pfeifer, 1996
 #     and:  Thomas E. Dickey, 1997
 #
-#  $Id: Makefile.in,v 1.101 2022/12/03 19:45:12 Nicolas.Boulenguez Exp $
+#  $Id: Makefile.in,v 1.103 2024/01/19 16:51:56 tom Exp $
 #
 .SUFFIXES:
 
@@ -183,7 +183,8 @@ $(ADA_SRCDIR)/$(ABASE)_constants.ads: $(PROG_GENERATE)
        $(WRAPPER) "$(GENERATE) $@"
 ################################################################################
 $(ADA_SRCDIR)/$(ABASE).ads:    $(srcdir)/$(ABASE).ads.m4 \
-                               $(srcdir)/normal.m4
+                               $(srcdir)/normal.m4 \
+                               options.m4
        $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
        $(srcdir)/$(ABASE).ads.m4 |\
        $(DEL_ADAMODE) >$@
@@ -284,6 +285,7 @@ mostlyclean ::
        -rm -f a.out core $(PROG_GENERATE) *.o
 
 clean :: mostlyclean
+       -rm -f options.m4
        -rm -f $(GEN_TARGETS) instab.tmp *.ad[bs] *.html *.ali *.tmp
 
 distclean :: clean
@@ -294,6 +296,15 @@ realclean :: distclean
 
 HTML_DIR = @ADAHTML_DIR@
 
+options.m4 :
+       $(SHELL) -c "if [ @cf_cv_enable_sigwinch@ = 0 ]; \
+               then \
+                       dashes='   --'; \
+               else \
+                       dashes='';\
+               fi; \
+               echo \"define(OPT_KEY_RESIZE,\\\`\$$dashes')dnl\" > $@"
+
 instab.tmp : table.m4 $(GEN_SRC)
        @rm -f $@
        @for f in $(GEN_SRC) ; do \
index d92fa68e5e1b8d749641fa213848fc8e4d337d11..b37de1b0219b6cdcdea82e15951bb563ff60a550 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2024 Thomas E. Dickey                                *
  * Copyright 1998-2014,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -35,7 +35,7 @@
 
 /*
     Version Control
-    $Id: gen.c,v 1.78 2021/12/11 21:03:21 tom Exp $
+    $Id: gen.c,v 1.79 2024/01/19 13:41:45 tom Exp $
   --------------------------------------------------------------------------*/
 /*
   This program prints on its standard output the source for the
@@ -424,7 +424,9 @@ main(int argc, const char *argv[])
   PRINT_NAMED_CONSTANT(KEY_SUSPEND);
   PRINT_NAMED_CONSTANT(KEY_UNDO);
   PRINT_NAMED_CONSTANT(KEY_MOUSE);
+#ifdef KEY_RESIZE
   PRINT_NAMED_CONSTANT(KEY_RESIZE);
+#endif
 
   print_comment(fp, "alternate character codes (ACS) from addch(3NCURSES)");
 #define PRINT_ACS(name) print_size_of (fp, #name, (size_t)(&name - &acs_map[0]))
index 3f34d203d57c3c38dc3b17abf68542366f4d2f44..c966f9b98cb0578d0f085f64a04be253721c5d3c 100644 (file)
@@ -9,7 +9,7 @@ include(M4MACRO)----------------------------------------------------------------
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright 2018,2020 Thomas E. Dickey                                     --
+-- Copyright 2018-2020,2024 Thomas E. Dickey                                --
 -- Copyright 2007-2011,2014 Free Software Foundation, Inc.                  --
 --                                                                          --
 -- Permission is hereby granted, free of charge, to any person obtaining a  --
@@ -38,8 +38,8 @@ include(M4MACRO)----------------------------------------------------------------
 ------------------------------------------------------------------------------
 --  Author: Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.16 $
---  $Date: 2020/02/02 23:34:34 $
+--  $Revision: 1.17 $
+--  $Date: 2024/03/30 13:24:07 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System;
@@ -564,7 +564,7 @@ package body Terminal_Interface.Curses is
       L : constant Special_Key_Code  := Special_Key_Code (Natural (Key_F0) +
         Natural (Function_Key_Number'Last));
    begin
-      if (Key >= Key_F0) and then (Key <= L) then
+      if Key >= Key_F0 and then Key <= L then
          return True;
       else
          return False;
index a5e9103683aaf6dd2a0af9e24c48531f0e547a0f..d6b18e587a3839196efc19c19a474948938c188f 100644 (file)
@@ -1,6 +1,6 @@
 --  -*- ada -*-
 define(`HTMLNAME',`terminal_interface-curses__ads.htm')dnl
-include(M4MACRO)------------------------------------------------------------------------------
+include(M4MACRO)include(options.m4)------------------------------------------------------------------------------
 --                                                                          --
 --                           GNAT ncurses Binding                           --
 --                                                                          --
@@ -9,7 +9,7 @@ include(M4MACRO)----------------------------------------------------------------
 --                                 S P E C                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright 2020 Thomas E. Dickey                                          --
+-- Copyright 2020,2024 Thomas E. Dickey                                     --
 -- Copyright 1998-2011,2014 Free Software Foundation, Inc.                  --
 --                                                                          --
 -- Permission is hereby granted, free of charge, to any person obtaining a  --
@@ -38,8 +38,8 @@ include(M4MACRO)----------------------------------------------------------------
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.48 $
---  $Date: 2020/02/02 23:34:34 $
+--  $Revision: 1.49 $
+--  $Date: 2024/01/19 16:51:30 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System.Storage_Elements;
@@ -377,8 +377,8 @@ package Terminal_Interface.Curses is
      := Curses_Constants.KEY_UNDO;
    Key_Mouse                   : constant Special_Key_Code
      := Curses_Constants.KEY_MOUSE;
-   Key_Resize                  : constant Special_Key_Code
-     := Curses_Constants.KEY_RESIZE;
+OPT_KEY_RESIZE   Key_Resize                  : constant Special_Key_Code
+OPT_KEY_RESIZE     := Curses_Constants.KEY_RESIZE;
    Key_Max                     : constant Special_Key_Code
      := Special_Key_Code'Last;
 
index 3c8e525632c9e2a03942daf57d40be27710b7349..b4060150e667e091324c54e409383776da510b91 100644 (file)
@@ -4,12 +4,12 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
 
 -------------------------------------------------------------------------------
 Files: *
-Copyright: 2017-2022,2023 by Thomas E. Dickey
+Copyright: 2017-2023,2024 by Thomas E. Dickey
 Copyright: 1998-2016,2017 Free Software Foundation, Inc.
 License: X11
 
 Files: aclocal.m4 package
-Copyright: 2010-2020,2021 by Thomas E. Dickey
+Copyright: 2010-2023,2024 by Thomas E. Dickey
 License: X11
 
     Permission is hereby granted, free of charge, to any person obtaining a
index c0fd6209b145965967e2c28328888f1ac4142822..6f3341ba2f231d615941ff1dc62629f756280af0 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright 2020,2021 Thomas E. Dickey                                     --
+-- Copyright 2020-2021,2024 Thomas E. Dickey                                --
 -- Copyright 2000-2014,2015 Free Software Foundation, Inc.                  --
 --                                                                          --
 -- Permission is hereby granted, free of charge, to any person obtaining a  --
@@ -36,8 +36,8 @@
 ------------------------------------------------------------------------------
 --  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
 --  Version Control
---  $Revision: 1.9 $
---  $Date: 2021/09/04 10:52:55 $
+--  $Revision: 1.10 $
+--  $Date: 2024/03/30 13:21:15 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with ncurses2.util; use ncurses2.util;
@@ -73,8 +73,8 @@ procedure ncurses2.overlap_test is
       Get_Size (win, y1, x1);
       for y in 0 .. y1 - 1 loop
          for x in 0 .. x1 - 1 loop
-            if ((x > (x1 - 1) / 3) and (x <= (2 * (x1 - 1)) / 3)) or
-               (((y > (y1 - 1) / 3) and (y <= (2 * (y1 - 1)) / 3)))
+            if (x > (x1 - 1) / 3 and x <= (2 * (x1 - 1)) / 3) or
+               (y > (y1 - 1) / 3 and y <= (2 * (y1 - 1)) / 3)
             then
                Move_Cursor (win, y, x);
                Add (win, Ch => ch);
index d2739809dad41dba4ff3d9062a19fddf23d960b8..3b1983daf5922ec470c02fa6a014a79dc071af39 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright 2020 Thomas E. Dickey                                          --
+-- Copyright 2020,2023 Thomas E. Dickey                                     --
 -- Copyright 2000-2011,2014 Free Software Foundation, Inc.                  --
 --                                                                          --
 -- Permission is hereby granted, free of charge, to any person obtaining a  --
@@ -36,8 +36,8 @@
 ------------------------------------------------------------------------------
 --  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
 --  Version Control
---  $Revision: 1.7 $
---  $Date: 2020/02/02 23:34:34 $
+--  $Revision: 1.8 $
+--  $Date: 2023/06/17 17:21:47 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with ncurses2.util; use ncurses2.util;
@@ -121,7 +121,7 @@ procedure ncurses2.trace_set is
        Trace_Attribute_Set'(Character_Calls => True, others => False)),
       (new String'("Termcap_TermInfo"),
        Trace_Attribute_Set'(Termcap_TermInfo => True, others => False)),
-      (new String'("Maximium"),
+      (new String'("Maximum"),
        Trace_Maximum)
       );
 
@@ -353,7 +353,7 @@ procedure ncurses2.trace_set is
          if subset (tlevel,
                     Trace_Maximum)
          then
-            Append (buf, "Maximium");
+            Append (buf, "Maximum");
             Append (buf, ", ");
          end if;
       end if;
index f430c88cd7c6b76a260c17176becb86a20cde580..f64e41da8f732415e46458166428d21197f1c0de 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright 2020 Thomas E. Dickey                                          --
+-- Copyright 2020,2023 Thomas E. Dickey                                     --
 -- Copyright 1998-2006,2009 Free Software Foundation, Inc.                  --
 --                                                                          --
 -- Permission is hereby granted, free of charge, to any person obtaining a  --
@@ -36,8 +36,8 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control
---  $Revision: 1.15 $
---  $Date: 2020/02/02 23:34:34 $
+--  $Revision: 1.16 $
+--  $Date: 2023/06/17 17:21:59 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
@@ -79,7 +79,7 @@ package body Sample.Menu_Demo.Aux is
 
       --  Calculate horizontal coordinate at the screen center
       X := (Columns - C) / 2;
-      Y := 1;  -- always startin line 1
+      Y := 1;  -- always starting on line 1
 
    end Geometry;
 
diff --git a/COPYING b/COPYING
index 2abcc60d6cdfbafe9d02fad4039b9a097f865f1c..540047f121f175dab0b554315d9037670c9057f6 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -1,4 +1,4 @@
-Copyright 2018-2022,2023 Thomas E. Dickey
+Copyright 2018-2023,2024 Thomas E. Dickey
 Copyright 1998-2017,2018 Free Software Foundation, Inc.
 
 Permission is hereby granted, free of charge, to any person obtaining a
@@ -26,4 +26,4 @@ sale, use or other dealings in this Software without prior written
 authorization.
 
 -- vile:txtmode fc=72
--- $Id: COPYING,v 1.12 2023/01/07 17:55:53 tom Exp $
+-- $Id: COPYING,v 1.13 2024/01/05 21:13:17 tom Exp $
diff --git a/INSTALL b/INSTALL
index 5b04c34a3ad4afeb5c2ff5a5a515d422efe482eb..a8198fb5b833426f07152b41c10bb5f023519fbe 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 -------------------------------------------------------------------------------
--- Copyright 2018-2022,2023 Thomas E. Dickey                                 --
+-- Copyright 2018-2023,2024 Thomas E. Dickey                                 --
 -- Copyright 1998-2017,2018 Free Software Foundation, Inc.                   --
 --                                                                           --
 -- Permission is hereby granted, free of charge, to any person obtaining a   --
@@ -26,7 +26,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: INSTALL,v 1.240 2023/01/08 00:29:04 tom Exp $
+-- $Id: INSTALL,v 1.255 2024/05/04 15:54:00 tom Exp $
 ---------------------------------------------------------------------
              How to install Ncurses/Terminfo on your system
 ---------------------------------------------------------------------
     * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. *
     ************************************************************
 
-You should be reading the file INSTALL in a directory called ncurses-d.d, where
-d.d is the current version number.  There should be several subdirectories,
-including `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs',
-and `test'.  See the README file for a roadmap to the package.
+You should be reading the file INSTALL in a directory called ncurses-d.d,
+where d.d is the current version number.  There should be several
+subdirectories, including 'c++', 'form', 'man', 'menu', 'misc', 'ncurses',
+'panel', 'progs', and 'test'.  See 'README' for a roadmap to the package.
 
 If you are a distribution integrator or packager, please read and act on the
 section titled FOR SYSTEM INTEGRATORS below.
@@ -47,9 +47,10 @@ If you are converting from BSD curses and do not have root access, be sure
 to read the BSD CONVERSION NOTES section below.
 
 If you are trying to build applications using gpm with ncurses,
-read the USING NCURSES WITH GPM section below.
+read the USING GPM section below.
 
-If you are cross-compiling, see the note below on BUILDING WITH A CROSS-COMPILER.
+If you are cross-compiling, see the note below on
+BUILDING WITH A CROSS-COMPILER.
 
 If you want to build the Ada95 binding, go to the Ada95 directory and
 follow the instructions there.  The Ada95 binding is not covered below.
@@ -72,14 +73,14 @@ Ncurses has been also built in the OS/2 EMX environment.
 INSTALLATION PROCEDURE:
 ----------------------
 
-1.  First, decide whether you want ncurses to replace your existing library (in
-    which case you'll need super-user privileges) or be installed in parallel
-    with it.
+1.  First, decide whether you want ncurses to replace your existing library
+    (in which case you'll need super-user privileges) or be installed in
+    parallel with it.
 
     The --prefix option to configure changes the root directory for installing
     ncurses.  The default is normally in subdirectories of /usr/local, except
     for systems where ncurses is normally installed as a system library (see
-    "IF YOU ARE A SYSTEM INTEGRATOR").  Use --prefix=/usr to replace your
+    "FOR SYSTEM INTEGRATORS").  Use --prefix=/usr to replace your
     default curses distribution.
 
     The package gets installed beneath the --prefix directory as follows:
@@ -106,16 +107,16 @@ INSTALLATION PROCEDURE:
 
     See also the discussion of --with-install-prefix.
 
-2.  Type `./configure' in the top-level directory of the distribution to
+2.  Type './configure' in the top-level directory of the distribution to
     configure ncurses for your operating system and create the Makefiles.
     Besides --prefix, various configuration options are available to customize
-    the installation; use `./configure --help' to list the available options.
+    the installation; use './configure --help' to list the available options.
 
     If your operating system is not supported, read the PORTABILITY section in
     the file ncurses/README for information on how to create a configuration
     file for your system.
 
-    The `configure' script generates makefile rules for one or more object
+    The 'configure' script generates makefile rules for one or more object
     models and their associated libraries:
 
        libncurses.a (normal)
@@ -145,7 +146,7 @@ INSTALLATION PROCEDURE:
     the library names (e.g., libncursest.a, libncursestw.a).
 
     If you do not specify any models, the normal and debug libraries will be
-    configured.  Typing `configure' with no arguments is equivalent to:
+    configured.  Typing 'configure' with no arguments is equivalent to:
 
        ./configure --with-normal --with-debug --enable-overwrite
 
@@ -176,10 +177,10 @@ INSTALLATION PROCEDURE:
     You can make curses and terminfo fall back to an existing file of termcap
     definitions by configuring with --enable-termcap.  If you do this, the
     library will search /etc/termcap before the terminfo database, and will
-    also interpret the contents of the TERM environment variable.  See the
+    also interpret the contents of the $TERM environment variable.  See the
     section BSD CONVERSION NOTES below.
 
-3.  Type `make'.  Ignore any warnings, no error messages should be produced.
+3.  Type 'make'.  Ignore any warnings; no error messages should be produced.
     This should compile the ncurses library, the terminfo compiler tic(1),
     captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1)
     programs (see the manual pages for explanation of what they do), some test
@@ -195,8 +196,9 @@ INSTALLATION PROCEDURE:
     database before running the test programs.  Not all vendors' terminfo
     databases are SVr4-compatible, but most seem to be.
 
-    It is possible to configure ncurses to use other terminfo database formats.
-    A few are provided as examples in the include-directory (see --with-caps).
+    It is possible to configure ncurses to use other terminfo database
+    formats.  A few are provided as examples in the include-directory (see
+    --with-caps).
 
     If you run the test programs WITHOUT installing terminfo, ncurses may
     read the termcap file and cache that in $HOME/.terminfo, which will
@@ -207,21 +209,21 @@ INSTALLATION PROCEDURE:
     You can use it to verify that the screen highlights work correctly, that
     cursor addressing and window scrolling works OK, etc.
 
-5.  Once you've tested, you can type `make install' to install libraries,
-    the programs, the terminfo database and the manual pages.  Alternately, you
-    can type `make install' in each directory you want to install.  In the
+5.  Once you've tested, you can type 'make install' to install libraries,
+    the programs, the terminfo database and the manual pages.  Alternately,
+    you can type 'make install' in each directory you want to install.  In the
     top-level directory, you can do a partial install using these commands:
 
        'make install.progs'    installs tic, infocmp, etc...
        'make install.includes' installs the headers.
        'make install.libs'     installs the libraries (and the headers).
-       'make install.data'     installs the terminfo data. (Note: `tic' must
+       'make install.data'     installs the terminfo data. (Note: 'tic' must
                                be installed before the terminfo data can be
                                compiled).
        'make install.man'      installs the manual pages.
 
   ############################################################################
-  #     CAVEAT EMPTOR: `install.data' run as root will NUKE any existing     #
+  #     CAVEAT EMPTOR: 'install.data' run as root will NUKE any existing     #
   #  terminfo database. If you have any custom or unusual entries SAVE them  #
   #  before you install ncurses.                                             #
   ############################################################################
@@ -242,8 +244,8 @@ INSTALLATION PROCEDURE:
     compile using its curses.h you'll end up with a large number of
     undefined symbols at link time.
 
-    IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory
-    and run the `capconvert' script.  This script will deduce various things
+    IF YOU DO NOT HAVE ROOT: Change directory to the 'progs' subdirectory
+    and run the 'capconvert' script.  This script will deduce various things
     about your environment and use them to build you a private terminfo tree,
     so you can use ncurses applications.
 
@@ -273,13 +275,13 @@ CONFIGURE OPTIONS:
 
        ./configure --help
 
-    The --help and several options are common to all configure scripts that are
-    generated with autoconf.  Those are all listed before the line
+    The --help and several options are common to all configure scripts that
+    are generated with autoconf.  Those are all listed before the line
 
        --enable and --with options recognized:
 
-    The other options are specific to this package.  We list them in alphabetic
-    order.
+    The other options are specific to this package.  We list them in
+    alphabetic order.
 
     --disable-assumed-color
        With ncurses 5.1, we introduced a new function, assume_default_colors()
@@ -444,7 +446,7 @@ CONFIGURE OPTIONS:
                --with-menu-libname=XXX
                --with-panel-libname=XXX
 
-       Rather than renaming them abitrarily, a prefix or suffix is
+       Rather than renaming them arbitrarily, a prefix or suffix is
        recommended.  An "n" prefix provides consistency with ncurses versus
        curses, i.e.,
 
@@ -477,13 +479,17 @@ CONFIGURE OPTIONS:
 
     --disable-root-access
        Compile with environment restriction, so most file-access is limited
-       when running via a setuid/setgid application.
+       when running as root, or via a setuid/setgid application.
 
     --disable-root-environ
        Compile with environment restriction, so certain environment variables
-       are not available when running as root, or via a setuid/setgid
-       application.  These are (for example $TERMINFO) those that allow the
-       search path for the terminfo or termcap entry to be customized.
+       are not available when running as root.  These are (for example
+       $TERMINFO) those that allow the search path for the terminfo or termcap
+       entry to be customized.
+
+       Disabling the root environment variables also disables the setuid
+       environment variables by default.  Use the --disable-setuid-environ
+       option to modify this behavior.
 
     --disable-rpath-hack
        Normally the configure script helps link libraries found in unusual
@@ -498,6 +504,16 @@ CONFIGURE OPTIONS:
     --disable-stripping
        Do not strip installed executables.
 
+    --disable-setuid-environ
+       Compile with environment restriction, so certain environment variables
+       are not available when running via a setuid/setgid application.  These
+       are (for example $TERMINFO) those that allow the search path for the
+       terminfo or termcap entry to be customized.
+
+       A setuid/setgid application inherits its environment variables from
+       the current user, in contrast to sudo which may limit the environment
+       variables that ncurses uses.
+
     --disable-tic-depends
        When building shared libraries, normally the tic library is linked to
        depend upon the ncurses library (or equivalently, on the tinfo-library
@@ -537,6 +553,10 @@ CONFIGURE OPTIONS:
        Recognize BSD-style prefix padding.  Some ancient BSD programs (such as
        nethack) call tputs("50") to implement delays.
 
+    --enable-check-size
+       Compile-in feature to detect screensize for terminals which do not
+       advertise their screensize, e.g., serial terminals.
+
     --enable-colorfgbg
        Compile with experimental $COLORFGBG code.  That environment variable
        is set by some terminal emulators as a hint to applications, by
@@ -650,9 +670,17 @@ CONFIGURE OPTIONS:
     --enable-opaque-form
     --enable-opaque-menu
     --enable-opaque-panel
-       Define symbol in curses.h which controls whether some library
-       structures are treated as "opaque".  The --enable-opaque-curses option
-       is overridden by the --enable-reentrant option.
+       Define symbol in curses.h controlling whether some library structures
+       are opaque, meaning that their members are accessible only via the
+       documented API.  The --enable-opaque-curses option may be overridden
+       by the --enable-reentrant option.
+
+       Enabling opaque-curses enables opaque for the form, menu, and panel
+       libraries.  Use their corresponding options to disable the feature
+       individually.
+
+       NOTE: beginning with ncurses 6.5 this option is enabled by default;
+       older versions disable it by default.
 
     --enable-pc-files
        If pkg-config is found (see --with-pkg-config), generate ".pc" files
@@ -798,11 +826,14 @@ CONFIGURE OPTIONS:
        symbolic link to equate libncurses.so with libncursesw.so
 
        NOTE: the Ada95 binding may be built against either version of the the
-       ncurses library, but you must decide which:  the binding installs the
-       same set of files for either version.  Currently (2002/6/22) it does
+       ncurses library, but you must decide which: the binding installs the
+       same set of files for either version.  Currently (2023/10/21) it does
        not use the extended features from the wide-character code, so it is
        probably better to not install the binding for that configuration.
 
+       NOTE: beginning with ncurses 6.5 this option is enabled by default;
+       older versions disable it by default.
+
     --enable-xmc-glitch
        Compile-in support experimental xmc (magic cookie) code.
 
@@ -908,8 +939,9 @@ CONFIGURE OPTIONS:
        script supplies "unsigned").
 
     --with-config-suffix=XXX
-       Specify a suffix for the ncursesw6-config file, etc., used to work
-       around conflicts with packages.
+       Specify an suffix for "ncurses*" in the ncurses*-config filename to
+       work around conflicts with packages.  The suffix is placed before the
+       dash.
 
     --with-cxx-libname=NAME
        Override the basename of the ncurses++ library (default: "ncurses++")
@@ -1014,7 +1046,7 @@ CONFIGURE OPTIONS:
        See also the --enable-getcap option.
 
     --with-infocmp-path[=XXX]
-       Use this option to override the automatic detection of tic in your
+       Use this option to override the automatic detection of infocmp in your
        $PATH when building fallbacks (see "--with-fallbacks").
 
     --with-install-prefix=XXX
@@ -1130,9 +1162,10 @@ CONFIGURE OPTIONS:
        Override the basename of the panel library (default: "panel")
 
     --with-pc-suffix=SUFFIX
-       If ".pc" files are installed, optionally add a suffix to the files
-       and corresponding package names to separate unusual configurations.
-       If no option value is given (or if it is "none"), no suffix is added.
+       If ".pc" files are installed (see --enable-pc-files), optionally add a
+       suffix to the files and corresponding package names to separate
+       unusual configurations.  If no option value is given (or if it is
+       "none"), no suffix is added.
 
     --with-pcre2
        Add PCRE2 (Perl-compatible regular expressions v2) to the build if it
@@ -1143,12 +1176,20 @@ CONFIGURE OPTIONS:
        not supplied by the development environment, while ncurses' form
        library uses a regular expression feature for one of the field types.
 
-    --with-pkg-config=[DIR]
-       Check for pkg-config, optionally specifying its path.
+    --with-pkg-config[=CMD]
+       Check for pkg-config, optionally specifying its pathname.
 
-    --with-pkg-config-libdir=[DIR]
+    --with-pkg-config-libdir[=DIR]
        If pkg-config was found, override the automatic check for its library
-       path.  The configure script allows only a single directory, because
+       path.  The optional DIR value can be
+       
+       "auto", automatically use pkg-config's library directory, or
+       
+       "libdir", use a ${libdir}/pkgconfig (based on the configuration), or
+       
+       a directory path, i.e., beginning with "/".
+
+       The configure script allows only a single directory, because
        that is used as the directory in which to install ".pc" files.
 
        The automatic check for the library path prefers the first directory
@@ -1158,12 +1199,6 @@ CONFIGURE OPTIONS:
        default), or if pkg-config lists nothing suitable, the first one which
        is listed by pkg-config is used.
 
-       Automatic selection is overridden by providing an option-value
-       beginning with "/".
-
-       If this option is omitted, the default directory for installing
-       ".pc" files is ${libdir}/pkgconfig
-
     --with-profile
        Generate profile-libraries These are named by adding "_p" to the root,
        e.g., libncurses_p.a
@@ -1222,6 +1257,10 @@ CONFIGURE OPTIONS:
        This is normally chosen automatically based on the type of system
        which you are building on.  We use it for testing the configure script.
 
+    --with-strip-program=XXX
+       When stripping executables during install, use the specified program
+       rather than "strip".
+
     --with-sysmouse
        use FreeBSD sysmouse interface provide mouse support on the console.
 
@@ -1236,7 +1275,7 @@ CONFIGURE OPTIONS:
        Specify a search-list of terminfo directories which will be compiled
        into the ncurses library (default: DATADIR/terminfo)
 
-       This is a colon-separated list, like the TERMINFO_DIRS environment
+       This is a colon-separated list, like the $TERMINFO_DIRS environment
        variable.
 
     --with-termlib[=XXX]
@@ -1312,11 +1351,9 @@ CONFIGURE OPTIONS:
        several builds, some symbols will be listed in the the ".map" files
        that do not happen to be present in one configuration or another.
 
-       The sample ".map" (and ".sym") files are generated using a set of
-       scripts which build several configurations for each release version,
-       checking to see which of the "_nc_" symbols can be made local.  In
-       addition to the ncurses libraries and programs, the symbols used
-       by the "tack" program before version 1.08 are made global.
+       The sample ".map" (and ".sym") files were generated using a set of
+       scripts which built several configurations for each release version,
+       checking to see which of the "_nc_" symbols can be made local.
 
        These sample ".map" files will not cover all possible combinations.
        In some cases, e.g., when using the --with-weak-symbols option, you
@@ -1342,7 +1379,8 @@ CONFIGURE OPTIONS:
     --with-xterm-kbs=XXX
        Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII
        backspace) or DEL (^?, or 127).  XXX can be BS (or bs, 8) or DEL
-       (or del, 127).
+       (or del, 127).  If XXX is "auto", the configure script chooses BS or
+       DEL according to platform defaults.
 
        During installation, the makefile and scripts modifies the "xterm+kbs"
        terminfo entry to use this setting.
@@ -1386,11 +1424,6 @@ CONFIGURE OPTIONS:
        programs (e.g., tic).  The test applications will still be built if you
        type "make", though not if you simply do "make install".
 
-    --without-tack
-       Suppress build/install with tack program, if it happens to be
-       in the same build-tree (tack was moved out of the ncurses source-tree
-       in 20070203).
-
     --without-tests
        Tell the configure script to suppress the build of ncurses' test
        programs.
@@ -1416,6 +1449,35 @@ COMPATIBILITY WITH OLDER RELEASES:
     you may encounter when building a system with different versions of
     ncurses:
 
+    6.5 (Apt 27, 2024)
+       Interface changes:
+
+       + the WINDOW structure and some related internal data types declared
+         in <curses.h> have been made opaque by default;
+       + the FORM, MENU, and PANEL structures and related internal data types
+         from their corresponding header files have been made opqaue by
+         default; and
+       + support for wide characters is now enabled by default.
+
+       Added extensions:
+
+       + is_cbreak, is_echo, is_nl, and is_raw, as well as "_sp" variants
+
+       + tiparm_s and tiscan_s
+
+       Added internal functions (other than "_sp" variants):
+
+       + _nc_env_access
+
+       Removed internal functions:
+
+       + none
+
+       Modified internal functions:
+
+       + These now pass a const parameter: _nc_delink_entry, _nc_str_copy,
+         and _nc_trans_string
+
     6.4 (Dec 31, 2022)
        Interface changes:
 
@@ -2231,10 +2293,10 @@ FOR SYSTEM INTEGRATORS:
     Naming the Console Terminal
 
        In various systems there has been a practice of designating the system
-       console driver type as `console'.  Please do not do this!  It
+       console driver type as 'console'.  Please do not do this!  It
        complicates peoples' lives, because it can mean that several different
        terminfo entries from different operating systems all logically want to
-       be called `console'.
+       be called 'console'.
 
        Please pick a name unique to your console driver and set that up
        in the /etc/inittab table or local equivalent.  Send the entry to the
@@ -2472,4 +2534,4 @@ BUG REPORTS:
        The Hacker's Guide in the doc directory includes some guidelines
        on how to report bugs in ways that will get them fixed most quickly.
 
--- vile:txtmode
+-- vile:txtmode fc=78
index 1156b49ec3a3d2a2d40ae97bb34aad15c8bd2692..a9395d2f8a09a9659e1710e1aae3dace3f1f1e4e 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
 ./doc/html/announce.html
 ./doc/html/hackguide.html
 ./doc/html/index.html
-./doc/html/man/adacurses6-config.1.html
+./doc/html/man/adacursesw6-config.1.html
 ./doc/html/man/captoinfo.1m.html
 ./doc/html/man/clear.1.html
 ./doc/html/man/curs_add_wch.3x.html
 ./doc/html/man/mitem_value.3x.html
 ./doc/html/man/mitem_visible.3x.html
 ./doc/html/man/ncurses.3x.html
-./doc/html/man/ncurses6-config.1.html
+./doc/html/man/ncursesw6-config.1.html
 ./doc/html/man/new_pair.3x.html
 ./doc/html/man/panel.3x.html
 ./doc/html/man/resizeterm.3x.html
 ./test/test_addwstr.c
 ./test/test_arrays.c
 ./test/test_delwin.c
+./test/test_endwin.c
 ./test/test_get_wstr.c
 ./test/test_getstr.c
 ./test/test_instr.c
diff --git a/NEWS b/NEWS
index d6a4ecd569c481f4ec5c48e77b27c39a960dfe53..144f70b40120e24e89720841e0164d817bbd78b0 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,5 @@
 -------------------------------------------------------------------------------
--- Copyright 2018-2022,2023 Thomas E. Dickey                                 --
+-- Copyright 2018-2023,2024 Thomas E. Dickey                                 --
 -- Copyright 1998-2017,2018 Free Software Foundation, Inc.                   --
 --                                                                           --
 -- Permission is hereby granted, free of charge, to any person obtaining a   --
@@ -26,7 +26,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: NEWS,v 1.3902 2023/01/15 00:27:12 tom Exp $
+-- $Id: NEWS,v 1.4117 2024/05/04 18:43:01 tom Exp $
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
@@ -46,6 +46,473 @@ 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.
 
+20240504
+       + update ncurses/wcwidth.c, for MinGW ports, from xterm.
+       + trim obsolete comment about tack from INSTALL.
+
+20240427 6.5 release for upload to ftp.gnu.org
+       + update announcement
+       + fixes/corrections for manpages (patches by Branden Robinson).
+       + fix redefinition of CASTxPTR, for legacy Unix.
+
+20240420
+       + improve formatting/style of manpages (patches by Branden Robinson).
+       + compiler warning/portability fixes.
+
+20240414
+       + build/bug-fix for check-size feature (reports by Sam James, Gabriele
+         Balducci).
+
+20240413
+       + improve formatting/style of manpages (patches by Branden Robinson).
+       + provide for padding in check-size feature, using new_prescr() to
+         pass interim SCREEN pointer.
+       + complete change for opaque options (Gentoo #928973, cf: 20231021).
+       + update package /debian/rules and related lintian overrides
+       + revise progs.priv.h to provide for NC_ISATTY reuse
+
+20240330
+       + remove masking of ISIG in cbreak() (report by Benno Schulenberg).
+       + modify test/test_mouse.c to use curses api for raw/noraw.
+       > improved configure macros from other program development:
+         + build-fix for clang on Solaris
+         + suppress filename/timestamp in gzip'd manpages (suggested for
+           byacc by Andrin Geiger)
+
+20240323
+       + modify tput/tset reset feature to avoid 1-second sleep if running in
+         a pseudo-terminal.
+       + modify check-size feature to avoid using it in a pseudoterminal
+         (cf: 20231016)
+       + improve formatting/style of manpages (patches by Branden Robinson).
+       + trim a space after some "-R" options, fixing builds for applications
+         built using clang and ncurses on Solaris.
+
+20240309
+       + modify xgterm to work around line-drawing bug -TD
+       + use CSI 3J in vte-2017 (report by Sven Joachim)
+
+20240302
+       + add configure check for MB_LEN_MAX, to provide warning as needed.
+       + improve formatting/style of manpages (patches by Branden Robinson).
+       + fix regression in tput which disallowed hex/octal parameters (report
+         by Werner Fink, cf:  20230408)
+       + update config.guess, config.sub
+
+20240224
+       + improve man/curs_mouse.3x style (Branden Robinson, Sven Joachim).
+       + provide for CCHARW_MAX greater than 1
+       + eliminate use of PATH_MAX in lib_trace.c
+       + work around misconfiguration of MacPorts gcc13, which exposes invalid
+         definition of MB_LEN_MAX in gcc's fallback copy of limits.h (MacPorts
+         #69374).
+
+20240217
+       + add vt100+noapp, vt100+noapp+pc, xterm+app+pc, xterm+decedit from
+         xterm #389 -TD
+       + fix inconsistent description of wmouse_trafo() (Debian #1059778).
+       + modify wenclose() to handle pads (Debian #1059783).
+       + improve manpage discussion of mouseinterval() (Debian #1058560).
+
+20240210
+       + compiler-warning fixes, while investigating an optimizer bug in
+         "gcc (MacPorts gcc13 13.2.0_4+stdlib_flag) 13.2.0"
+         which results in only the first byte of a multibyte character being
+         printed to the screen.
+
+20240203
+       + minor changes to tracing and locale-checks.
+
+20240127
+       + amend change to z39-a (report by Sven Joachim).
+       + use xterm+nopcfkeys, vt52-basic, dec+pp, dec+sl, vt52+arrows,
+         hp+pfk+cr, klone+acs, klone+color, klone+sgr, ncr160wy50+pp
+         to trim -TD
+       + NetBSD-related fixes for x68k and wsvt25 (patch by Thomas Klausner)
+
+20240120
+       + improve formatting/style of manpages (patches by Branden Robinson).
+       + amend discussion of aliases in tput.1
+       + use ansi+sgrbold, ansi+sgrdim, ansi+sgrso, ansi+sgrul, ansi+tabs
+         ecma+color, ecma+sgr, vt100+4bsd, vt100+pfkeys, vt220+pcedit
+         xterm+256color, xterm+acs, xterm+nopcfkeys, xterm+pcf2 to trim -TD
+       + modify configure scripts/makefiles to omit KEY_RESIZE if the
+         corresponding SIGWINCH feature is disabled.
+
+20240113
+       + improve formatting/style of manpages (patches by Branden Robinson).
+       + modify dist.mk to avoid passing developer's comments in manpages into
+         the generated html documentation.
+       + use ansi+local, ansi+local1, ansi+pp, ansi+rca, ansi+rca2, ansi+sgr
+         to trim -TD
+       + restore padding for wy520* and vt320-k311 (report by Sven Joachim).
+
+20240106
+       + use ansi+arrows, ansi+apparrows, ansi+csr, ansi+erase, ansi+idc,
+         ansi+idc1, ansi+idl, ansi+idl1, ansi+inittabs to trim -TD
+       + minor manpage formatting changes for consistency.
+       + modify doc-html test package's install-directory, per lintian.
+       + add attr_get.3x to man_db.renames.in (patch by Sven Joachim).
+
+20231230
+       + improve formatting/style of manpages (patches by Branden Robinson).
+       + add ms-vt100-16color, winconsole -TD
+       + add rio, rio-direct -TD
+       + add mostlike -TD
+       + add wezterm, contour -TD
+
+20231223
+       + improve formatting/style of manpages (patches by Branden Robinson).
+
+20231217
+       + improve formatting/style of manpages (patches by Branden Robinson).
+       + correct an assignment in infocmp "-u" for detecting if a boolean
+         is unset in a base entry and set in a use'd chunk, i.e., if it was
+         cancelled.
+       + modify infocmp "-u" option to not report cancels for strings which
+         were already cancelled in a use'd chunk.
+       + join two lines in infotocap.3x to eliminate a spurious "description"
+         link in installed manpages (report by Sven Joachim).
+       + fix typo in NEWS (report by Sven Joachim).
+
+20231209
+       + modify infocmp "-u" option to not report cancels in use'd chunks
+         which are not mentioned in the top-level terminal description.
+       + remove xterm+sm+1006 from tmux (Debian #1057688).
+       + used "infocmp -u" to help trim redundant capabilities -TD
+       + updated man/edit_man.sh to allow for "\%" markers embedded after
+         bold font escapes in manpage cross-references (Debian #1057651).
+       + reduce compiler-warnings in configure checks
+
+20231202
+       + correct initial alignment of extended capabilities in infocmp, so
+         that the "-u" option can be used for more than two terminal types.
+       + improve formatting/style of manpages, changing environment variables
+         to italics (patches by Branden Robinson).
+
+20231125
+       + add information about "ttycap", termcap's forerunner, to tset.1
+         (patch by Branden Robinson).
+       + improve formatting/style of manpages, including section reordering
+         (patches by Branden Robinson).
+       + modify usage messages in configure script, bracketing optional values
+         (report by Branden Robinson).
+
+20231121
+       + amend fix for Debian #1055882, correcting nul terminator check in
+         waddnstr (Debian #1056340).
+
+20231118
+       + improve description of length-parameter and error-returns in several
+         manpages:  curs_addchstr.3x, curs_addstr.3x, curs_addwstr.3x,
+         curs_in_wch.3x, curs_in_wchstr.3x, curs_inchstr.3x, curs_ins_wstr.3x,
+         curs_insstr.3x, curs_instr.3x, curs_inwstr.3x
+       + amend parameter check for entire string versus specific length in
+         winsnstr() and wins_nwstr() to match Solaris.
+       + make similar correction to wins_nwstr().
+       + correct loop termination condition in waddnstr() and waddnwstr()
+         (Debian #1055882, cf: 20201205).
+
+20231111
+       + used "infocmp -u" to help trim redundant capabilities -TD
+       + add limit checks in infocmp needed when processing extended
+         capabilities with the "-u" option.
+       + fix inconsistent sort-order in see-also sections of manpages.
+       + fix a few compiler warnings for Solaris 10.
+       + modify endwin() to return an error if it is called again without an
+         intervening screen update (report by Rajeev Pillai, NetBSD #57592).
+
+20231104
+       + modify reset command to avoid altering clocal if the terminal uses a
+         modem (prompted by discussion with Werner Fink, Michal Suchanek,
+         OpenSUSE #1201384, Debian #60377).
+       + build-fixes for --with-caps variations.
+       + correct a couple of section-references in INSTALL.
+
+20231028
+       + move xterm focus mode 1004 from xterm+sm+1006 into xterm+focus as
+         fe/fd capabilities, like vim (vim-pr #13440).
+       + modify --with-pkg-config-libdir option to make "libdir" the default,
+         as documented, rather than "auto" (report by Branden Robinson).
+       + improve messages from configure script (patches by Branden Robinson).
+
+20231021
+       + use oldxterm+sm+1006 in vte-2014 (report by Benno Schulenberg) -TD
+       + add ansi+apparrows -TD
+       + change defaults for configure opaque and widec options (prompted by
+         discussion with Branden Robinson).
+       + minor cleanup of compiler- and manpage-warnings.
+
+20231016
+       + make the recent change to setupterm optional "--enable-check-size"
+         (Debian #1054022).
+
+20231014
+       + improve formatting/style of manpages (patches by Branden Robinson).
+       + updated configure script macro CF_XOPEN_SOURCE, for uClibc-ng
+       + update config.guess, config.sub
+
+20231007
+       + improve loop-limit for get_position().
+       + improve manual description of immedok (Debian #1053603).
+       + fix a few formatting issues with manpages (Debian #1053123).
+       + improve formatting/style of manpages (patches by Branden Robinson).
+
+20231001
+       + modify setupterm to provide for using ANSI cursor-position report (in
+         user6/user7 terminfo capabilities) to obtain screensize if neither
+         environment variables or ioctl is used.  The ncurses test-program
+         with options "-E -T" demonstrates this feature.
+       + improve error messages in tic (patch by Branden Robinson).
+       + improve formatting/style of manpages (patches by Branden Robinson).
+       + modify test/clip_printw.c to optionally test non-wrapped updates.
+       + fix reallocation loop for vsnprintf() in _nc_sprintf_string() by
+         copying the va_list variable (patch by Ian Abbott).
+
+20230923
+       + improve formatting of manpages (patches by Branden Robinson).
+       + amend change to delscreen() to limit the windows which it creates to
+         just those associated with the screen (report by Frederic Boiteux,
+         cf: 20220813).
+
+20230918
+       + new tarball/errata (report by Sven Joachim).
+
+20230917
+       + improve formatting of manpages (integrated patches by Branden
+         Robinson).
+       + correct limit for name-length in write_entry.c (report/testcase by
+         Luna Saphie Mittelbach).
+       + limit delays to 30 seconds, i.e., padding delays in terminfo, as well
+         as napms() and delay_output() functions.
+       + improve a few pointer-checks.
+       + improve parsing in _nc_msec_cost, allowing a single decimal point.
+
+20230909
+       + improve formatting of manpages (patches by Branden Robinson), for
+         captoinfo.1m and terminfo.5
+       > patches by Nicholas Marriott:
+         + use string-hacks in alloc_entry.c, alloc_type.c and hardscroll.c,
+           overlooked due to compiler changes in recent OpenBSD releases.
+         + add "-6" option to ncu2openbsd script.
+
+20230902
+       + improve description of search rules for terminal descriptions in
+         terminfo manpage (report by Sven Joachim).
+
+20230826
+       + fixes for compiler-warnings.
+       + update config.guess, config.sub
+
+20230819
+       + various manpage-formatting fixes.
+       + correct formatting of table header in curs_inopts.3x (Branden
+         Robinson).
+       + correct manpage description of panel_hidden (report by Benjamin
+         Mordaunt).
+
+20230812
+       + add/use putty+cursor to reflect amending of modified cursor-keys in
+         2021 -TD
+       + add ecma+strikeout to putty -TD
+       + add functions to query tty-flags in SCREEN (request by Bill Gray).
+
+20230805
+       + fix a few manpages needing tbl marker, seen by lintian warning.
+       + fixes for compiler-warnings.
+       + minor grammatical fix for manpages (Branden Robinson).
+
+20230729
+       + improve manpages for wgetnstr() and wget_wnstr().
+       + modify MinGW configuration to provide for running in MSYS/MSYS2
+         shells, assuming ConPTY support (patch by Pavel Fedin).
+       + add assignment in CF_MAN_PAGES to fill in value for TERMINFO_DIRS in
+         ncurses, terminfo and tic manpages (patch by Sven Joachim).
+
+20230722
+       + add "auto" default for --with-xterm-kbs configure option.
+
+20230715
+       + correct wadd_wch_literal() when adding a non-spacing character to a
+         double-width character.
+       + improve manual page for curs_util.
+       + improve manual page for wadd_wch().
+
+20230708
+       + add linux+kbs for terminals which imitate xterm's behavior with
+         Linux -TD
+       + modify MinGW driver to return KEY_BACKSPACE when an unmodified
+         VK_BACK virtual key is entered (prompted by patch by Pavel Fedin,
+         Savannah #64292).
+       + disallow using $TERMINFO or $HOME/.terminfo when tic "-o" option is
+         used (report by Sven Joachim, Debian #1040048).
+
+20230701
+       + fix mandoc warnings about unnecessary markup.
+       + improve parameter check in tparm_setup()
+
+20230625
+       + adjust man/make_sed.sh to work with dates as the third field of TH.
+       + fixes for out-of-memory condition (report by "eaglegai").
+
+20230624
+       + fixes for out-of-memory condition (report by "eaglegai").
+
+20230617
+       + markup manpages with revision information (prompted by discussion
+         with Bjarni Ingi Gislason).
+
+20230615
+       + modify _nc_read_file_entry() to show relevant filename in warnings.
+       + improve checks in convert_string() for corrupt terminfo entry (report
+         and test-case by Gregory James Duck).
+
+20230610
+       + improve manpages discussing file descriptors in low-level functions.
+       + modify flushinp to use file descriptors in SCREEN, rather than from
+         TERMINAL, and check if they are for a terminal, like SVr4.
+       + modify mcprint to use file descriptor in SCREEN, for consistency.
+       + add xterm+focus to foot+base (patch by Daniel Ekloef).
+       + correct definition of Charable() for non-wide ncurses library (report
+         and test-case by Zbigniew Baniewski).
+
+20230603
+       + add configure option --with-strip-program, to override program
+         chosen by the install program for stripping executables (prompted
+         by discussion with Aapo Rantalainen).
+       + fix typo in INSTALL (report/patch by Aapo Rantalainen).
+       + improve error-checks for isEILSEQ()
+       + increase MB_CUR_MAX to 16, matching glibc's MB_LEN_MAX.
+       + corrected mouse mask in test/testcurs.c
+       + improve thread lock in lib_trace.c
+
+20230527
+       + fixes for compiler warnings/cppcheck.
+
+20230520
+       + fixes for compiler warnings in MinGW environments.
+
+20230514
+       + modify test-package "ncurses6-doc" to use manpage-aliases, which in
+         turn required a change to the configure script to factor in the
+         extra-suffix option when deriving alias names.
+       + add mode 1004 to xterm+sm+1006 from xterm #380 -TD
+
+20230506
+       > build-fixes related to configure-options and/or platform:
+         + fix for --enable-fvisibility
+         + fix for unusual values of --with-rel-version
+         + fix for unusual values of --with-abi-version
+         + fix for --disable-tcap-names
+         + fix for termcap in nc_access.h (report by Werner Fink).
+
+20230429
+       + revise recent change to _nc_write_entry to isolate it to a Cygwin bug
+         (cf: 20230311)
+       + amend fix for wgetnstr, wgetn_wstr to use cbreak mode unless raw
+         mode was set (cf: 20210522).
+       + fix a few warnings from cppcheck, etc.
+       + correct copy/paste error in nc_access.h (report by Werner Fink).
+
+20230424
+       + check return value of _nc_save_str(), in special case for tic where
+         extended capabilities are processed but the terminal description was
+         not initialized (report by Ziqiao Kong).
+       + regenerate llib-* files.
+
+20230423
+       + add tiscan_s() to help applications check formatting capabilities
+         that would be passed to tiparm_s, etc.
+       + add tiparm_s() to provide applications a way to tell ncurses what
+         the expected parameters are for a capability (tmux #3531).
+       + improve check in lib_tparm.c, ensuring that a char* fits into a
+         TPARM_ARG.
+       + add --disable-setuid-environ configure option (request by Sven
+         Joachim).
+       + drop compatibility with obsolete versions of tack, e.g., pre-1.08
+         (Debian #1034549, cf: 20170722).
+
+20230418
+       + improve checks for limits on privileged execution:
+         + modify _nc_syserr_abort() to use _nc_env_access(), rather than
+           only checking root uid.
+         + use getauxval() when available, to improve setuid/setgid checks.
+         + modify test packages to disable root access/environ options.
+       + modify tgoto() to accept no-parameter capabilities, for joe editor
+         (OpenSUSE #1210485, Gentoo #904263).
+
+20230415
+       + configure script fixes:
+         + fix copy/paste error in configure option --disable-root-access
+           (report/patch by Sven Joachim).
+         + modify CF_XOPEN_SOURCE macro's amend default case to avoid
+           undefining _XOPEN_SOURCE if _POSIX_C_SOURCE is defined.
+       + modify test_tparm to account for extended capabilities.
+       + add checks in tparm() and tiparm() for misuse of numeric parameters,
+         overlooked in 20230408.
+       + fix errata in clear.1 and curs_terminfo.3x
+
+20230408
+       + document limitations of tparm, and error-returns in curs_terminfo.3x
+       + document limitations of tgoto, and error-returns in curs_termcap.3x
+       + add xterm+focus to alacritty+common (patch by Christian Duerr).
+       + add "-v" option to tput, to show warnings.
+       > improve checks for malformed terminfo data (report/analysis by
+         Jonathan Bar Or, Michael Pearse, Emanuele Cozzi).
+         + make the parameter type/count checks in _nc_tiparm() more stringent
+         + update tgoto() to account for _nc_tiparm() changes
+         + add checks in tparm() and tiparm() for misuse of string parameters
+         + add special cases in tput to handle extensions Cs/Ms parameters
+         + ignore compiled-terminfo where the array sizes exceed the standard
+
+20230401
+       + modify experimental Windows driver to work with xterm mouse protocol.
+       + remove DECCOLM+DECSCLM from foot (patch by Daniel Ekloef).
+
+20230311
+       + improve manpage description for addch versus unctrl format used for
+         non-printable characters.
+       + modify version-check for gcc/g++, now works for msys2.
+       + modify check in _nc_write_entry() for multiply defined aliases to
+         report problems within the current runtime of tic rather than for
+         conflicts with pre-existing terminal descriptions.
+       + allow for MinGW32-/64-bit configurations to use _DEFAULT_SOURCE
+       + clarify interaction of -R option versus -C, -I and -r in infocmp
+         manpage.
+       + build-fix in lib_win32con.c (cf: 20230211).
+
+20230225
+       + build-fixes for rpm test-packages.
+       + add/use configure check for clock_gettime(), to supersede
+         gettimeofday().
+
+20230218
+       + configure-script improvements:
+         + recent msys2 headers work with _DEFAULT_SOURCE; amend check
+         + use $ac_includes_default in most cases where stdlib.h should work
+         + use #error consistently vs "make an error"
+         + add configure macro for gettimeofday vs inline check
+
+20230211
+       + set dwShareMode in calls to CreateConsoleScreenBuffer() (patch by
+         Hannes Domani).
+       + use CreateFile with "CONIN$", "CONOUT$" rather than GetStdHandle to
+         obtain a handle on the actual console, avoiding redirection in the
+         MinGW/Win32 configurations (adapted from patch by LIU Hao).
+
+20230128
+       + document XF, kxIN and kxOUT -TD
+       + add note on sun/wscons/cmdtool/shelltool -TD
+       + modify configure script check for pkg-config library directory to
+         take into account an older version 0.15.0 which used PKG_CONFIG_PATH
+         but not PKG_CONFIG_LIBDIR
+
+20230121
+       + correct limit-check when dumping tc/use clause via tic -I (report by
+         Gabriel Ravier).
+       + correct a check for manpage-alias in edit_man.sh, to work with out of
+         tree builds (report by Sven Joachim).
+
 20230114
        + change RV to XR/xr, to avoid conflict with pre-existing usage in vim,
          to use RV/rv to denote DA2 and its response (discussion with Bram
@@ -5300,7 +5767,7 @@ it is not possible to add this information.
          function pointer passed to tputs().
        + modify init_pair() to accept -1's for color value after
          assume_default_colors() has been called (Debian #337095).
-       + modify test/background.c, adding commmand-line options to demonstrate
+       + modify test/background.c, adding command-line options to demonstrate
          assume_default_colors() and use_default_colors().
 
 20110416
@@ -11035,7 +11502,7 @@ it is not possible to add this information.
        + add mgterm terminfo entry from NetBSD, minor adjustments to sun-ss5,
          aixterm entries -TD
        + modify tack/ansi.c to make it more tolerant of bad ANSI replies.  An
-         example of an illegal ANSI resonse can be found using Microsoft's
+         example of an illegal ANSI response can be found using Microsoft's
          Telnet client.  A correct display can be found using a VT-4xx
          terminal or XFree86 xterm with:
                XTerm*VT100*decTerminalID:  450
@@ -11929,7 +12396,7 @@ it is not possible to add this information.
        + correct a typo in term.7 (Todd C Miller).
        + add configure --with-shlib-version option to allow installing shared
          libraries named according to release or ABI versions.  This
-         parameterizes some existing logic in the configure script, and is
+         parametrizes some existing logic in the configure script, and is
          intended for compatibility upgrades on Digital Unix, which used
          versioned libraries in ncurses 4.2, but no longer does (cf:  980425).
        + resync configure script against autoconf 2.13 + patches
diff --git a/README b/README
index 84998f232edfc664b7f492a7ac559d49234c6f58..5587f5b70bce7edf4e6f4450d7ac6ad288036cf6 100644 (file)
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
 -------------------------------------------------------------------------------
--- Copyright 2020,2021 Thomas E. Dickey                                      --
+-- Copyright 2020-2021,2023 Thomas E. Dickey                                 --
 -- Copyright 1998-2012,2018 Free Software Foundation, Inc.                   --
 --                                                                           --
 -- Permission is hereby granted, free of charge, to any person obtaining a   --
@@ -26,7 +26,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: README,v 1.29 2021/06/17 21:20:30 tom Exp $
+-- $Id: README,v 1.31 2023/10/28 14:49:04 tom Exp $
 -------------------------------------------------------------------------------
                README file for the ncurses package
 
@@ -35,18 +35,19 @@ See the file INSTALL for instructions on how to build and install ncurses.
 See the file NEWS for a release history and bug-fix notes.
 See the file TO-DO for things that still need doing, including known bugs.
 
-Browse the file misc/ncurses-intro.html for narrative descriptions of how
+Browse the file doc/html/ncurses-intro.html for narrative descriptions of how
 to use ncurses and the panel, menu, and form libraries.
 
 Browse the file doc/html/hackguide.html for a tour of the package internals.
 
+Find plain text versions of both of these documents in doc/.
+
 ROADMAP AND PACKAGE OVERVIEW:
 
 You should be reading this file in a directory called:  ncurses-d.d, where d.d
 is the current version number (see the dist.mk file in this directory for
 that).  There should be a number of subdirectories, including `c++', `form',
-`man', `menu', `misc', `ncurses', `panel', `progs', `test', 'tack' and `Ada95'.
-(The 'tack' program may be distributed separately).
+`man', `menu', `misc', `ncurses', `panel', `progs', `test', and `Ada95'.
 
 A full build/install of this package typically installs several libraries, a
 handful of utilities, and a database hierarchy.  Here is an inventory of the
@@ -81,7 +82,7 @@ version.
 
 If you configure using the --enable-reentrant option, a "t" is appended to the
 library names (e.g., libncursest.a) and the resulting libraries have a
-different binary interface which makes the ncurses interface more "opaque".
+different binary interface, making the ncurses interface more opaque.
 
 The ncurses libraries implement the curses API.  The panel, menu and forms
 libraries implement clones of the SVr4 panel, menu and forms APIs.  The source
@@ -89,9 +90,9 @@ code for these lives in the `ncurses', `panel', `menu', and `form' directories
 respectively.
 
 In the `c++' directory, you'll find code that defines an interface to the
-curses, forms, menus and panels library packaged as C++ classes, and a demo program in C++
-to test it.  These class definition modules are not installed by the 'make
-install.libs' rule as libncurses++.
+curses, forms, menus and panels library packaged as C++ classes, and a demo
+program in C++ to test it.  These class definition modules are not installed
+by the 'make install.libs' rule as libncurses++.
 
 In the `Ada95' directory, you'll find code and documentation for an
 Ada95 binding of the curses API, to be used with the GNAT compiler.
@@ -102,8 +103,8 @@ for documentation of the binding.
 
 To do its job, the ncurses code needs your terminal type to be set in the
 environment variable TERM (normally set by your OS; under UNIX, getty(1)
-typically does this, but you can override it in your .profile); and, it needs a
-database of terminal descriptions in which to look up your terminal type's
+typically does this, but you can override it in your .profile); and, it needs
+database of terminal descriptions in which to look up your terminal type's
 capabilities.
 
 In older (V7/BSD) versions of curses, the database was a flat text file,
@@ -117,10 +118,10 @@ second form.
 In the `misc' directory, there is a text file terminfo.src, in editable
 terminfo format, which can be used to generate the terminfo binaries (that's
 what make install.data does).  If the package was built with the
---enable-termcap option enabled, and the ncurses library cannot find a terminfo
-description for your terminal, it will fall back to the termcap file supplied
-with your system (which the ncurses package installation leaves strictly
-alone).
+--enable-termcap option enabled, and the ncurses library cannot find a
+terminfo description for your terminal, it will fall back to the termcap file
+supplied with your system (which the ncurses package installation leaves
+strictly alone).
 
 The utilities are as follows:
 
@@ -176,8 +177,8 @@ Eric S. Raymond:
        xterm mouse support, and the ncurses test program.
 
 Juergen Pfeifer
-       The menu and form libraries, C++ bindings for ncurses, menus, forms and
-       panels, as well as the Ada95 binding.  Ongoing support for panel.
+       The menu and form libraries, C++ bindings for ncurses, menus, forms
+       and panels, as well as the Ada95 binding.  Ongoing support for panel.
 
 CONTRIBUTORS:
 
@@ -216,3 +217,5 @@ BUGS:
        See the INSTALL file for bug and developer-list addresses.
        The Hacker's Guide in the doc directory includes some guidelines
        on how to report bugs in ways that will get them fixed most quickly.
+
+-- vile:txtmode fc=78
diff --git a/VERSION b/VERSION
index fadb1cd62f1e4568e767218a1996aff2d6993b2d..b98d7203f44caba7d3a452012f3eaa36dd2e1f25 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5:0:10 6.4     20230114
+5:0:10 6.5     20240504
index a967246d323cc028f4bae70c1a81ec1538093b67..1c2b788bf1ff2c381c6bc33851d0e0558e7a410a 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright 2018-2022,2023 Thomas E. Dickey                                *
+dnl Copyright 2018-2023,2024 Thomas E. Dickey                                *
 dnl Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -29,7 +29,7 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey 1995-on
 dnl
-dnl $Id: aclocal.m4,v 1.1026 2023/01/14 14:00:15 tom Exp $
+dnl $Id: aclocal.m4,v 1.1069 2024/03/30 22:15:45 tom Exp $
 dnl Macros used in NCURSES auto-configuration script.
 dnl
 dnl These macros are maintained separately from NCURSES.  The copyright on
@@ -67,7 +67,7 @@ $ac_includes_default
        fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_ABI_DEFAULTS version: 4 updated: 2023/01/07 16:32:06
+dnl CF_ABI_DEFAULTS version: 5 updated: 2023/10/21 08:54:23
 dnl ---------------
 dnl Provide configure-script defaults for different ncurses ABIs.
 AC_DEFUN([CF_ABI_DEFAULTS],[
@@ -88,9 +88,10 @@ cf_dft_opaque_curses=no
 cf_dft_ordinate_type=short
 cf_dft_signed_char=no
 cf_dft_tparm_arg=long
+cf_dft_widec=no
 cf_dft_with_lp64=no
 
-# ABI 6 defaults:
+# ABI 6 default differences from ABI 5:
 case x$cf_cv_abi_default in
 (x[[6789]])
        cf_dft_chtype=uint32_t
@@ -102,17 +103,18 @@ case x$cf_cv_abi_default in
        cf_dft_filter_syms=yes
        cf_dft_interop=yes
        cf_dft_mmask_t=uint32_t
+       cf_dft_opaque_curses=yes
        cf_dft_tparm_arg=intptr_t
+       cf_dft_widec=yes
        cf_dft_with_lp64=yes
        ;;
 esac
 
-# ABI 7 defaults:
+# ABI 7 default differences from ABI 6:
 case x$cf_cv_abi_default in
 (x[[789]])
        cf_dft_ccharw_max=6
        cf_dft_mmask_t=uint64_t
-       cf_dft_opaque_curses=yes
        cf_dft_ordinate_type=int
        cf_dft_signed_char=yes
        # also: remove the wgetch-events feature in ABI 7
@@ -596,7 +598,7 @@ AC_DEFUN([CF_AWK_BIG_PRINTF],
        esac
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_BOOL_DECL version: 8 updated: 2004/01/30 15:51:18
+dnl CF_BOOL_DECL version: 9 updated: 2023/12/03 09:21:34
 dnl ------------
 dnl Test if 'bool' is a builtin type in the configured C++ compiler.  Some
 dnl older compilers (e.g., gcc 2.5.8) don't support 'bool' directly; gcc
@@ -611,13 +613,13 @@ AC_DEFUN([CF_BOOL_DECL],
 AC_MSG_CHECKING(if we should include stdbool.h)
 
 AC_CACHE_VAL(cf_cv_header_stdbool_h,[
-       AC_TRY_COMPILE([],[bool foo = false],
+       AC_TRY_COMPILE([],[bool foo = false; (void)foo],
                [cf_cv_header_stdbool_h=0],
                [AC_TRY_COMPILE([
 #ifndef __BEOS__
 #include <stdbool.h>
 #endif
-],[bool foo = false],
+],[bool foo = false; (void)foo],
                        [cf_cv_header_stdbool_h=1],
                        [cf_cv_header_stdbool_h=0])])])
 
@@ -632,7 +634,7 @@ AC_CACHE_VAL(ifelse($1,,cf_cv_builtin_bool,[$1]),[
        AC_TRY_COMPILE([
 #include <stdio.h>
 #include <sys/types.h>
-],[bool x = false],
+],[bool x = false; (void)x],
                [ifelse($1,,cf_cv_builtin_bool,[$1])=1],
                [ifelse($1,,cf_cv_builtin_bool,[$1])=0])
        ])
@@ -643,7 +645,7 @@ else        AC_MSG_RESULT(no)
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_BOOL_SIZE version: 19 updated: 2023/01/05 18:00:14
+dnl CF_BOOL_SIZE version: 20 updated: 2023/02/18 17:41:25
 dnl ------------
 dnl Test for the size of 'bool' in the configured C++ compiler (e.g., a type).
 dnl Don't bother looking for bool.h, since it has been deprecated.
@@ -653,8 +655,7 @@ dnl from <stdbool.h>.
 AC_DEFUN([CF_BOOL_SIZE],
 [
 AC_CHECK_SIZEOF(bool,,[
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -857,7 +858,7 @@ AC_SUBST(BUILD_EXEEXT)
 AC_SUBST(BUILD_OBJEXT)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23
+dnl CF_C11_NORETURN version: 4 updated: 2023/02/18 17:41:25
 dnl ---------------
 AC_DEFUN([CF_C11_NORETURN],
 [
@@ -871,8 +872,7 @@ AC_MSG_RESULT($enable_stdnoreturn)
 if test $enable_stdnoreturn = yes; then
 AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
        [AC_TRY_COMPILE([
-#include <stdio.h>
-#include <stdlib.h>
+$ac_includes_default
 #include <stdnoreturn.h>
 static _Noreturn void giveup(void) { exit(0); }
        ],
@@ -896,7 +896,7 @@ AC_SUBST(HAVE_STDNORETURN_H)
 AC_SUBST(STDC_NORETURN)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20
+dnl CF_CC_ENV_FLAGS version: 11 updated: 2023/02/20 11:15:46
 dnl ---------------
 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
 dnl into CC.  This will not help with broken scripts that wrap the compiler
@@ -937,7 +937,7 @@ case "$CC" in
        AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
        # humor him...
        cf_prog=`echo "$CC" | sed -e 's/        / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
-       cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
+       cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
        CC="$cf_prog"
        for cf_arg in $cf_flags
        do
@@ -1015,14 +1015,14 @@ AC_MSG_RESULT($includedir)
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CGETENT version: 6 updated: 2017/01/21 11:06:25
+dnl CF_CGETENT version: 7 updated: 2023/02/18 17:41:25
 dnl ----------
 dnl Check if the terminal-capability database functions are available.  If not,
 dnl ncurses has a much-reduced version.
 AC_DEFUN([CF_CGETENT],[
 AC_CACHE_CHECK(for terminal-capability database functions,cf_cv_cgetent,[
 AC_TRY_LINK([
-#include <stdlib.h>],[
+$ac_includes_default],[
        char temp[128];
        char *buf = temp;
        char *db_array = temp;
@@ -1040,7 +1040,7 @@ then
 AC_CACHE_CHECK(if cgetent uses const parameter,cf_cv_cgetent_const,[
 AC_TRY_LINK([
 #pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers"
-#include <stdlib.h>],[
+$ac_includes_default],[
        char temp[128];
        char *buf = temp;
 #ifndef _NETBSD_SOURCE                 /* given, since April 2004 in stdlib.h */
@@ -1095,7 +1095,7 @@ if test ".$system_name" != ".$cf_cv_system_name" ; then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_ENVIRON version: 4 updated: 2023/01/14 07:48:15
+dnl CF_CHECK_ENVIRON version: 5 updated: 2023/02/18 17:41:25
 dnl ----------------
 dnl Check for data that is usually declared in <unistd.h>, e.g., the 'environ'
 dnl variable.  Define a DECL_xxx symbol if we must declare it ourselves.
@@ -1106,10 +1106,7 @@ AC_DEFUN([CF_CHECK_ENVIRON],
 [
 AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
     AC_TRY_COMPILE([
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <unistd.h> ],
+$ac_includes_default],
     ifelse([$2],,void*,[$2]) x = (ifelse([$2],,void*,[$2])) $1; (void)x,
     [cf_cv_dcl_$1=yes],
     [cf_cv_dcl_$1=no])
@@ -1124,7 +1121,7 @@ fi
 CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2]))
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_ERRNO version: 13 updated: 2020/03/10 18:53:47
+dnl CF_CHECK_ERRNO version: 14 updated: 2023/02/18 17:41:25
 dnl --------------
 dnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g.,
 dnl the 'errno' variable.  Define a DECL_xxx symbol if we must declare it
@@ -1136,11 +1133,7 @@ AC_DEFUN([CF_CHECK_ERRNO],
 [
 AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
        AC_TRY_COMPILE([
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-#include <sys/types.h>
+$ac_includes_default
 #include <errno.h> ],
        ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1; (void)x,
        [cf_cv_dcl_$1=yes],
@@ -1203,7 +1196,7 @@ __attribute__ ((visibility("default"))) int somefunc() {return 42;}
 ])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_GETENV version: 3 updated: 2023/01/05 17:47:56
+dnl CF_CHECK_GETENV version: 4 updated: 2023/12/03 10:18:09
 dnl ---------------
 dnl Check if repeated getenv calls return the same pointer, e.g., it does not
 dnl discard the previous pointer when returning a new one.
@@ -1280,7 +1273,7 @@ int main(void)
                                }
                        }
                } while (found);
-               sprintf(value, "%lu:%p", (unsigned long) k, &mynames[j]);
+               sprintf(value, "%lu:%p", (unsigned long) k, (void*)&mynames[j]);
                set_value(name, value);
                mynames[j] = str_alloc(name);
                myvalues[j] = str_alloc(value);
@@ -1452,7 +1445,7 @@ else
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_WCHAR_H version: 3 updated: 2021/01/01 13:31:04
+dnl CF_CHECK_WCHAR_H version: 5 updated: 2023/12/03 09:21:34
 dnl ----------------
 dnl Check if wchar.h can be used, i.e., without defining _XOPEN_SOURCE_EXTENDED
 AC_DEFUN([CF_CHECK_WCHAR_H],[
@@ -1463,7 +1456,7 @@ wctype.h \
 AC_CACHE_CHECK(if wchar.h can be used as is,cf_cv_wchar_h_okay,[
 AC_TRY_COMPILE(
 [
-#include <stdlib.h>
+$ac_includes_default
 #ifdef HAVE_WCHAR_H
 #include <wchar.h>
 #endif
@@ -1472,7 +1465,7 @@ AC_TRY_COMPILE(
 #endif
 ],[
        wint_t foo = 0;
-       int bar = iswpunct(foo)],
+       int bar = iswpunct(foo); (void) bar],
        [cf_cv_wchar_h_okay=yes],
        [cf_cv_wchar_h_okay=no])])
 
@@ -1482,7 +1475,7 @@ then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_WCWIDTH_GRAPHICS version: 3 updated: 2023/01/05 18:01:30
+dnl CF_CHECK_WCWIDTH_GRAPHICS version: 4 updated: 2023/12/03 10:17:07
 dnl -------------------------
 dnl Most "modern" terminal emulators are based to some degree on VT100, and
 dnl should support line-drawing.  Even with Unicode.  There is a problem.
@@ -1591,7 +1584,7 @@ int
 main(void)
 {
        FILE *fp;
-       int value;
+       unsigned value;
        char buffer[MY_LEN + 1];
        char notes[MY_LEN + 1];
        int totals = 0;
@@ -1607,9 +1600,9 @@ main(void)
                                        fprintf(stderr, "\\t%s", buffer);
                                } else if (sscanf(buffer, "%x %s", &value, notes) == 2) {
                                        ++totals;
-                                       if (wcwidth(value) == 1)
+                                       if (wcwidth((int)value) == 1)
                                                ++passed;
-                                       fprintf(stderr, "%d\\t%s", wcwidth(value), buffer);
+                                       fprintf(stderr, "%d\\t%s", wcwidth((int)value), buffer);
                                } else {
                                        fprintf(stderr, "?\\t%s", buffer);
                                }
@@ -1626,7 +1619,7 @@ main(void)
 ])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04
+dnl CF_CLANG_COMPILER version: 9 updated: 2023/02/18 17:41:25
 dnl -----------------
 dnl Check if the given compiler is really clang.  clang's C driver defines
 dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
@@ -1648,7 +1641,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
        AC_TRY_COMPILE([],[
 #ifdef __clang__
 #else
-make an error
+#error __clang__ is not defined
 #endif
 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
 ],[])
@@ -1694,7 +1687,7 @@ if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
 fi
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
+dnl CF_CONST_X_STRING version: 8 updated: 2023/12/01 17:22:50
 dnl -----------------
 dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
 dnl character-strings.
@@ -1729,6 +1722,7 @@ AC_TRY_COMPILE(
 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
        AC_TRY_COMPILE(
                [
+#undef  _CONST_X_STRING
 #define _CONST_X_STRING        /* X11R7.8 (perhaps) */
 #undef  XTSTRINGDEFINES        /* X11R5 and later */
 #include <stdlib.h>
@@ -2280,7 +2274,7 @@ AC_DEFUN([CF_ERRNO],
 CF_CHECK_ERRNO(errno)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_ETIP_DEFINES version: 6 updated: 2021/01/02 17:09:14
+dnl CF_ETIP_DEFINES version: 7 updated: 2023/10/28 11:59:01
 dnl ---------------
 dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between
 dnl math.h and builtin.h, only for ncurses
@@ -2312,7 +2306,7 @@ AC_TRY_COMPILE([
 ],[])
 done
 done
-AC_MSG_RESULT($cf_result)
+AC_MSG_RESULT([${cf_result:-(none)}])
 CXXFLAGS="$cf_save_CXXFLAGS"
 ])
 dnl ---------------------------------------------------------------------------
@@ -2629,6 +2623,33 @@ else
 fi
 ])
 dnl ---------------------------------------------------------------------------
+dnl CF_FUNC_GETTIME version: 2 updated: 2023/02/25 08:45:56
+dnl ---------------
+dnl Check for gettimeofday or clock_gettime.  In 2023, the former is still more
+dnl widely supported, but "deprecated" (2008), so we will use the latter if it
+dnl is available, to reduce compiler warnings.
+AC_DEFUN([CF_FUNC_GETTIME],[
+AC_CACHE_CHECK(for clock_gettime,cf_cv_func_clock_gettime,[
+               AC_TRY_LINK([#include <time.h>],
+               [struct timespec ts;
+               int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts],
+               [cf_cv_func_clock_gettime=yes],
+               [cf_cv_func_clock_gettime=no])
+])
+
+if test "$cf_cv_func_clock_gettime" = yes
+then
+       AC_DEFINE(HAVE_CLOCK_GETTIME,1,[Define to 1 if we have clock_gettime function])
+else
+AC_CHECK_FUNC(gettimeofday,
+       AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[
+
+AC_CHECK_LIB(bsd, gettimeofday,
+       AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function])
+       CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_FUNC_GETTTYNAM version: 2 updated: 2023/01/05 18:06:28
 dnl -----------------
 dnl Check if the 4.3BSD function getttyname exists, as well as if <ttyent.h>
@@ -2754,7 +2775,7 @@ int main(void) {
 test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP,1,[Define to 1 if we have nanosleep()])
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_OPENPTY version: 6 updated: 2021/01/01 13:31:04
+dnl CF_FUNC_OPENPTY version: 7 updated: 2023/12/03 09:21:34
 dnl ---------------
 dnl Check for openpty() function, along with <pty.h> header.  It may need the
 dnl "util" library as well.
@@ -2771,6 +2792,7 @@ AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
 ],[
        int x = openpty((int *)0, (int *)0, (char *)0,
                                   (struct termios *)0, (struct winsize *)0);
+       (void)x;
 ],[
                cf_cv_func_openpty=$cf_header
                break
@@ -2873,19 +2895,29 @@ tcgetattr(1, &foo);],
 test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR,1,[Define to 1 if we have tcgetattr])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_VSSCANF version: 7 updated: 2021/01/01 13:31:04
+dnl CF_FUNC_VSSCANF version: 8 updated: 2023/12/03 19:09:59
 dnl ---------------
 dnl Check for vsscanf() function, which is in c9x but generally not in earlier
-dnl versions of C.  It is in the GNU C library, and can often be simulated by
-dnl other functions.
+dnl versions of C.  It can often be simulated by other functions on older
+dnl systems (where FILE is not opaque).
 AC_DEFUN([CF_FUNC_VSSCANF],
 [
 AC_CACHE_CHECK(for vsscanf function or workaround,cf_cv_func_vsscanf,[
 AC_TRY_LINK([
 #include <stdarg.h>
-#include <stdio.h>],[
+#include <stdio.h>
+
+static void
+myfunc(const char *str, const char *fmt, ...)
+{
        va_list ap;
-       vsscanf("from", "%d", ap)],[cf_cv_func_vsscanf=vsscanf],[
+       va_start(ap, fmt);
+       vsscanf(str, fmt, ap);
+       va_end(ap);
+}
+],[
+       myfunc("55", "%d");
+],[cf_cv_func_vsscanf=vsscanf],[
 AC_TRY_LINK([
 #include <stdarg.h>
 #include <stdio.h>],[
@@ -3031,7 +3063,7 @@ rm -rf ./conftest*
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
+dnl CF_GCC_VERSION version: 9 updated: 2023/03/05 14:30:13
 dnl --------------
 dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
 dnl compatible), attempt to determine if icc/clang is actually used.
@@ -3040,7 +3072,7 @@ AC_REQUIRE([AC_PROG_CC])
 GCC_VERSION=none
 if test "$GCC" = yes ; then
        AC_MSG_CHECKING(version of $CC)
-       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
+       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
        test -z "$GCC_VERSION" && GCC_VERSION=unknown
        AC_MSG_RESULT($GCC_VERSION)
 fi
@@ -3623,7 +3655,7 @@ if test "$GXX" = yes; then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_GXX_VERSION version: 8 updated: 2017/02/11 14:48:57
+dnl CF_GXX_VERSION version: 9 updated: 2023/03/05 14:30:13
 dnl --------------
 dnl Check for version of g++
 AC_DEFUN([CF_GXX_VERSION],[
@@ -3631,7 +3663,7 @@ AC_REQUIRE([AC_PROG_CPP])
 GXX_VERSION=none
 if test "$GXX" = yes; then
        AC_MSG_CHECKING(version of ${CXX:-g++})
-       GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
+       GXX_VERSION="`${CXX:-g++} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
        if test -z "$GXX_VERSION"
        then
                GXX_VERSION=unknown
@@ -3876,7 +3908,7 @@ done
 ])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_HASHED_DB_VERSION version: 4 updated: 2014/04/12 16:47:01
+dnl CF_HASHED_DB_VERSION version: 5 updated: 2023/02/18 17:41:25
 dnl --------------------
 dnl Given that we have the header file for hashed database, find the version
 dnl information.
@@ -3897,13 +3929,13 @@ $ac_includes_default
 #if $cf_db_version == DB_VERSION_MAJOR
        /* ok */
 #else
-       make an error
+       #error $cf_db_version is not DB_VERSION_MAJOR
 #endif
 #else
 #if $cf_db_version == 1
        /* ok: assuming this is DB 1.8.5 */
 #else
-       make an error
+       #error $cf_db_version is not 1
 #endif
 #endif
 ],[DBT *foo = 0],[
@@ -3985,7 +4017,7 @@ CPPFLAGS="-I. $CPPFLAGS"
 AC_SUBST(CPPFLAGS)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21
+dnl CF_INSTALL_OPTS version: 3 updated: 2023/06/03 15:17:30
 dnl ---------------
 dnl prompt for/fill-in useful install-program options
 AC_DEFUN([CF_INSTALL_OPTS],
@@ -3993,6 +4025,7 @@ AC_DEFUN([CF_INSTALL_OPTS],
 CF_INSTALL_OPT_S
 CF_INSTALL_OPT_P
 CF_INSTALL_OPT_O
+CF_INSTALL_OPT_STRIP_PROG
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42
@@ -4079,7 +4112,73 @@ fi
 AC_SUBST(INSTALL_OPT_S)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59
+dnl CF_INSTALL_OPT_STRIP_PROG version: 1 updated: 2023/06/03 15:17:30
+dnl -------------------------
+dnl Provide an option for overriding the strip program used in install "-s"
+dnl
+dnl coreutils install provides a --strip-program option
+dnl FreeBSD uses STRIPBIN environment variable, while NetBSD and OpenBSD use
+dnl STRIP environment variable.  Other versions of install do not support this.
+AC_DEFUN([CF_INSTALL_OPT_STRIP_PROG],
+[
+AC_REQUIRE([CF_INSTALL_OPT_S])
+if test -n "$INSTALL_OPT_S"
+then
+       AC_MSG_CHECKING(if you want to specify strip-program)
+       AC_ARG_WITH(strip-program,
+               [  --with-strip-program=XX specify program to use when stripping in install],
+               [with_strip_program=$withval],
+               [with_strip_program=no])
+       AC_MSG_RESULT($with_strip_program)
+       if test "$with_strip_program" != no
+       then
+               AC_MSG_CHECKING(if strip-program is supported with this installer)
+               cf_install_program=`echo "$INSTALL" | sed -e 's%[[ ]]*[[ ]]-.%%'`
+               check_install_strip=no
+               if test -f "$cf_install_program"
+               then
+                       check_install_version=`"$cf_install_program" --version 2>/dev/null | head -n 1 | grep coreutils`
+                       if test -n "$check_install_version"
+                       then
+                               check_install_strip="option"
+                       else
+                               for check_strip_variable in STRIPBIN STRIP
+                               do
+                                       if strings "$cf_install_program" | grep "^$check_strip_variable[$]" >/dev/null
+                                       then
+                                               check_install_strip="environ"
+                                               break
+                                       fi
+                               done
+                       fi
+               fi
+               AC_MSG_RESULT($check_install_strip)
+               case "$check_install_strip" in
+               (no)
+                       AC_MSG_WARN($cf_install_program does not support strip program option)
+                       with_strip_program=no
+                       ;;
+               (environ)
+                       cat >install.tmp <<-CF_EOF
+                       #! $SHELL
+                       STRIPBIN="$with_strip_program" \\
+                       STRIP="$with_strip_program" \\
+                       $INSTALL "[$]@"
+                       CF_EOF
+                       INSTALL="`pwd`/install.tmp"
+                       chmod +x "$INSTALL"
+                       CF_VERBOSE(created $INSTALL)
+                       ;;
+               (option)
+                       INSTALL_OPT_S="$INSTALL_OPT_S --strip-program=\"$with_strip_program\""
+                       ;;
+               esac
+       fi
+fi
+AC_SUBST(INSTALL_OPT_S)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INTEL_COMPILER version: 9 updated: 2023/02/18 17:41:25
 dnl -----------------
 dnl Check if the given compiler is really the Intel compiler for Linux.  It
 dnl tries to imitate gcc, but does not return an error when it finds a mismatch
@@ -4105,7 +4204,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
                AC_TRY_COMPILE([],[
 #ifdef __INTEL_COMPILER
 #else
-make an error
+#error __INTEL_COMPILER is not defined
 #endif
 ],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
@@ -4117,14 +4216,14 @@ cf_save_CFLAGS="$cf_save_CFLAGS -we147"
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_ISASCII version: 4 updated: 2012/10/06 17:56:13
+dnl CF_ISASCII version: 5 updated: 2023/12/03 09:21:34
 dnl ----------
 dnl Check if we have either a function or macro for 'isascii()'.
 AC_DEFUN([CF_ISASCII],
 [
 AC_MSG_CHECKING(for isascii)
 AC_CACHE_VAL(cf_cv_have_isascii,[
-       AC_TRY_LINK([#include <ctype.h>],[int x = isascii(' ')],
+       AC_TRY_LINK([#include <ctype.h>],[int x = isascii(' '); (void)x],
        [cf_cv_have_isascii=yes],
        [cf_cv_have_isascii=no])
 ])dnl
@@ -4132,7 +4231,7 @@ AC_MSG_RESULT($cf_cv_have_isascii)
 test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII,1,[Define to 1 if we have isascii()])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_LARGEFILE version: 12 updated: 2020/03/19 20:23:48
+dnl CF_LARGEFILE version: 13 updated: 2023/12/03 19:09:59
 dnl ------------
 dnl Add checks for large file support.
 AC_DEFUN([CF_LARGEFILE],[
@@ -4166,11 +4265,15 @@ ifdef([AC_FUNC_FSEEKO],[
 #pragma GCC diagnostic error "-Wincompatible-pointer-types"
 #include <sys/types.h>
 #include <dirent.h>
+
+#ifndef __REDIRECT
+/* if transitional largefile support is setup, this is true */
+extern struct dirent64 * readdir(DIR *);
+#endif
                ],[
-               /* if transitional largefile support is setup, this is true */
-               extern struct dirent64 * readdir(DIR *);
-               struct dirent64 *x = readdir((DIR *)0);
-               struct dirent *y = readdir((DIR *)0);
+               DIR *dp = opendir(".");
+               struct dirent64 *x = readdir(dp);
+               struct dirent *y = readdir(dp);
                int z = x - y;
                (void)z;
                ],
@@ -4500,7 +4603,7 @@ ifelse($1,,,[$1=$LIB_PREFIX])
        AC_SUBST(LIB_PREFIX)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_LIB_RULES version: 98 updated: 2023/01/07 16:32:06
+dnl CF_LIB_RULES version: 100 updated: 2023/06/03 15:17:30
 dnl ------------
 dnl Append definitions and rules for the given models to the subdirectory
 dnl Makefiles, and the recursion rule for the top-level Makefile.  If the
@@ -5007,22 +5110,10 @@ cat >> Makefile <<CF_EOF
 distclean ::
        rm -f config.cache config.log config.status Makefile include/ncurses_cfg.h
        rm -f headers.sh headers.sed mk_shared_lib.sh
-       rm -f edit_man.* man_alias.*
+       rm -f edit_man.* man_alias.* *.tmp
        rm -rf \${DIRS_TO_MAKE}
 CF_EOF
 
-# Special case: tack's manpage lives in its own directory.
-if test "x$cf_with_manpages" = xyes; then
-if test "x$cf_with_tack" = "xyes"; then
-cat >> Makefile <<CF_EOF
-
-install.man \\
-uninstall.man ::
-       ( cd tack && \${MAKE} \${TOP_MFLAGS} \[$]@ )
-CF_EOF
-fi
-fi
-
 dnl If we're installing into a subdirectory of /usr/include, etc., we should
 dnl prepend the subdirectory's name to the "#include" paths.  It won't hurt
 dnl anything, and will make it more standardized.  It's awkward to decide this
@@ -5292,7 +5383,7 @@ AC_DEFUN([CF_LIB_TYPE],
        test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_LINK_DATAONLY version: 13 updated: 2020/02/08 15:59:30
+dnl CF_LINK_DATAONLY version: 15 updated: 2023/12/03 10:03:10
 dnl ----------------
 dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
 dnl only data (i.e., no functions), for example NeXT.  On those systems we'll
@@ -5314,17 +5405,21 @@ EOF
        rm -f conftest.$ac_ext data.o
        cat >conftest.$ac_ext <<EOF
 #line __oline__ "configure"
+extern int testfunc(void);
+#if defined(NeXT)
 int    testfunc(void)
 {
-#if defined(NeXT)
        ${cf_cv_main_return:-return}(1);        /* I'm told this linker is broken */
+}
 #else
-       extern int testdata[[3]];
+extern int testdata[[3]];
+int    testfunc(void)
+{
        return testdata[[0]] == 123
           &&  testdata[[1]] == 456
           &&  testdata[[2]] == 789;
-#endif
 }
+#endif
 EOF
        if AC_TRY_EVAL(ac_compile); then
                mv conftest.o func.o && \
@@ -5335,9 +5430,9 @@ EOF
        cf_saveLIBS="$LIBS"
        LIBS="conftest.a $LIBS"
        AC_TRY_RUN([
+       extern int testfunc(void);
        int main(void)
        {
-               extern int testfunc();
                ${cf_cv_main_return:-return} (!testfunc());
        }
        ],
@@ -5356,7 +5451,7 @@ AC_SUBST(BROKEN_LINKER)
 
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_LINK_FUNCS version: 12 updated: 2023/01/05 17:51:41
+dnl CF_LINK_FUNCS version: 13 updated: 2023/12/03 09:24:04
 dnl -------------
 dnl Most Unix systems have both link and symlink, a few don't have symlink.
 dnl A few non-Unix systems implement symlink, but not link.
@@ -5387,8 +5482,8 @@ $ac_includes_default
 int main(void)
 {
        int fail = 0;
-       char *src = "conftest.tmp";
-       char *dst = "conftest.chk";
+       char src[] = "conftest.tmp";
+       char dst[] = "conftest.chk";
        struct stat src_sb, dst_sb;
        FILE *fp = fopen(src, "w");
        if (fp == 0) { fail = 3; } else {
@@ -5586,7 +5681,7 @@ AC_SUBST(MAKE_UPPER_TAGS)
 AC_SUBST(MAKE_LOWER_TAGS)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_MANPAGE_FORMAT version: 16 updated: 2022/11/05 16:12:11
+dnl CF_MANPAGE_FORMAT version: 19 updated: 2024/03/30 08:27:40
 dnl -----------------
 dnl Option to allow user to override automatic configuration of manpage format.
 dnl There are several special cases:
@@ -5699,6 +5794,50 @@ AC_MSG_RESULT($MANPAGE_FORMAT)
 if test -n "$cf_unknown" ; then
        AC_MSG_WARN(Unexpected manpage-format $cf_unknown)
 fi
+
+cf_manpage_format=no
+cf_manpage_inboth=no
+cf_manpage_so_strip=
+cf_manpage_compress=
+cf_manpage_coptions=
+
+for cf_item in $MANPAGE_FORMAT
+do
+case "$cf_item" in
+(catonly)
+       cf_manpage_format=yes
+       cf_manpage_inboth=no
+       ;;
+(formatted)
+       cf_manpage_format=yes
+       cf_manpage_inboth=yes
+       ;;
+(compress)
+       cf_manpage_so_strip="Z"
+       cf_manpage_compress=compress
+       ;;
+(gzip)
+       cf_manpage_so_strip="gz"
+       cf_manpage_compress=gzip
+       cf_manpage_coptions=-n
+       ;;
+(bzip2)
+       cf_manpage_so_strip="bz2"
+       cf_manpage_compress=bzip2
+       ;;
+(xz)
+       cf_manpage_so_strip="xz"
+       cf_manpage_compress=xz
+       ;;
+esac
+done
+
+AC_SUBST(cf_manpage_format)
+AC_SUBST(cf_manpage_inboth)
+AC_SUBST(cf_manpage_so_strip)
+AC_SUBST(cf_manpage_compress)
+AC_SUBST(cf_manpage_coptions)
+
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl CF_MANPAGE_RENAMES version: 17 updated: 2022/10/23 07:46:29
@@ -5740,7 +5879,7 @@ AC_MSG_RESULT($MANPAGE_RENAMES)
 AC_SUBST(MANPAGE_RENAMES)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_MANPAGE_SYMLINKS version: 6 updated: 2015/04/17 21:13:04
+dnl CF_MANPAGE_SYMLINKS version: 7 updated: 2023/01/21 16:37:17
 dnl -------------------
 dnl Some people expect each tool to make all aliases for manpages in the
 dnl man-directory.  This accommodates the older, less-capable implementations
@@ -5774,7 +5913,7 @@ AC_ARG_WITH(manpage-symlinks,
        [MANPAGE_SYMLINKS=$withval],
        [MANPAGE_SYMLINKS=$cf_use_symlinks])
 
-if test "$$cf_use_symlinks" = no; then
+if test "$cf_use_symlinks" = no; then
 if test "$MANPAGE_SYMLINKS" = yes ; then
        AC_MSG_WARN(cannot make symlinks, will use .so files)
        MANPAGE_SYMLINKS=no
@@ -5802,7 +5941,32 @@ AC_ARG_WITH(manpage-tbl,
 AC_MSG_RESULT($MANPAGE_TBL)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_MAN_PAGES version: 54 updated: 2022/11/05 16:12:11
+dnl CF_MB_LEN_MAX version: 1 updated: 2024/03/02 15:45:10
+dnl -------------
+dnl Check if <limits.h> defines a usable MB_LEN_MAX.  That may be because it is
+dnl not defined, or it may be a bogus value.
+AC_DEFUN([CF_MB_LEN_MAX],[
+AC_CACHE_CHECK(if MB_LEN_MAX is usable,cf_cv_mb_len_max,[
+AC_TRY_COMPILE([
+$ac_includes_default
+#include <limits.h>],
+[
+#if defined(MB_LEN_MAX) && MB_LEN_MAX >= 6
+       ${cf_cv_main_return:-return}(0);
+#else
+#error MB_LEN_MAX is not usable
+#endif
+],     [cf_cv_mb_len_max=yes],
+       [cf_cv_mb_len_max=no])])
+if test "$cf_cv_mb_len_max" = yes
+then
+       AC_DEFINE(HAVE_CONSISTENT_MB_LEN_MAX,1,[Define to 1 if MB_LEN_MAX is usable])
+else
+       AC_MSG_WARN(MB_LEN_MAX is missing/inconsistent in system headers)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_MAN_PAGES version: 59 updated: 2024/03/30 08:27:40
 dnl ------------
 dnl Try to determine if the man-pages on the system are compressed, and if
 dnl so, what format is used.  Use this information to construct a script that
@@ -5821,47 +5985,8 @@ else
        cf_prefix="$prefix"
 fi
 
-case "$MANPAGE_FORMAT" in
-(*catonly*)
-       cf_format=yes
-       cf_inboth=no
-       ;;
-(*formatted*)
-       cf_format=yes
-       cf_inboth=yes
-       ;;
-(*)
-       cf_format=no
-       cf_inboth=no
-       ;;
-esac
-
 test ! -d man && mkdir man
 
-cf_so_strip=
-cf_compress=
-for cf_manpage_format in $MANPAGE_FORMAT
-do
-case "$cf_manpage_format" in
-(compress)
-       cf_so_strip="Z"
-       cf_compress=compress
-       ;;
-(gzip)
-       cf_so_strip="gz"
-       cf_compress=gzip
-       ;;
-(bzip2)
-       cf_so_strip="bz2"
-       cf_compress=bzip2
-       ;;
-(xz)
-       cf_so_strip="xz"
-       cf_compress=xz
-       ;;
-esac
-done
-
 cf_edit_man=./edit_man.sh
 cf_man_alias=`pwd`/man_alias.sed
 
@@ -5879,6 +6004,7 @@ NCURSES_PATCH="$NCURSES_PATCH"
 
 NCURSES_OSPEED="$NCURSES_OSPEED"
 TERMINFO="$TERMINFO"
+TERMINFO_DIRS="$TERMINFO_DIRS"
 
 INSTALL="$INSTALL"
 INSTALL_DATA="$INSTALL_DATA"
@@ -5903,8 +6029,8 @@ top_srcdir=\[$]srcdir/..
 shift || exit 1
 
 if test "\$form" = normal ; then
-       if test "$cf_format" = yes ; then
-       if test "$cf_inboth" = no ; then
+       if test "$cf_manpage_format" = yes ; then
+       if test "$cf_manpage_inboth" = no ; then
                $SHELL "\[$]0" format "\$verb" "\$mandir" "\$srcdir" "\[$]@"
                exit $?
        fi
@@ -5956,9 +6082,9 @@ CF_EOF2
 
        aliases=
        cf_source=\`basename "\$i"\`
-       inalias=\$cf_source
-       test ! -f "\$inalias" && inalias="\$srcdir/\$inalias"
-       if test ! -f "\$inalias" ; then
+       cf_full_alias=\$cf_source
+       test ! -f "\$cf_full_alias" && cf_full_alias="\$srcdir/\$cf_full_alias"
+       if test ! -f "\$cf_full_alias" ; then
                echo ".. skipped \$cf_source"
                continue
        fi
@@ -5967,8 +6093,9 @@ CF_EOF
 if test "$MANPAGE_ALIASES" != no ; then
 cat >>$cf_edit_man <<CF_EOF
        nCurses=ignore.3x
+       cf_part_alias=\`echo \$cf_full_alias| sed -e 's,^.*/,,'\`
        test "$with_curses_h" = yes && nCurses=ncurses.3x
-       aliases=\`sed -f "\$top_srcdir/man/manlinks.sed" "\$inalias" |sed -f "$cf_man_alias" | sort -u; test "\$inalias" = "\$nCurses" && echo curses\`
+       aliases=\`sed -f "\$top_srcdir/man/manlinks.sed" "\$cf_full_alias" |sed -f "$cf_man_alias" | sort -u; test "\$cf_part_alias" = "\$nCurses" && echo curses\`
 CF_EOF
 fi
 
@@ -6035,15 +6162,15 @@ cat >>$cf_edit_man <<CF_EOF
        fi
 CF_EOF
 
-if test -n "$cf_compress" ; then
+if test -n "$cf_manpage_compress" ; then
 cat >>$cf_edit_man <<CF_EOF
        if test "\$verb" = installing ; then
-       if ( "$cf_compress" -f \$TMP )
+       if ( "$cf_manpage_compress" -f \$TMP )
        then
-               mv \$TMP.$cf_so_strip \$TMP
+               mv \$TMP.$cf_manpage_so_strip \$TMP
        fi
        fi
-       cf_target="\$cf_target.$cf_so_strip"
+       cf_target="\$cf_target.$cf_manpage_so_strip"
 CF_EOF
 fi
 
@@ -6060,6 +6187,14 @@ esac
 
 cat >>$cf_edit_man <<CF_EOF
        suffix=\`basename "\$cf_target" | sed -e 's%^[[^.]]*%%'\`
+       extra_suffix=
+       if test -n "$EXTRA_SUFFIX" ; then
+               case \$cf_target in
+               (*${EXTRA_SUFFIX}\$suffix)
+                       extra_suffix="$EXTRA_SUFFIX"
+                       ;;
+               esac
+       fi
        if test "\$verb" = installing ; then
                echo "\$verb \$cf_target"
                \$INSTALL_DATA \$TMP "\$cf_target"
@@ -6067,13 +6202,14 @@ cat >>$cf_edit_man <<CF_EOF
                test -n "\$aliases" && (
                        cd "\$cf_subdir\${section}" && (
                                cf_source=\`echo "\$cf_target" |sed -e 's%^.*/\\([[^/]][[^/]]*/[[^/]][[^/]]*$\\)%\\1%'\`
-                               test -n "$cf_so_strip" && cf_source=\`echo "\$cf_source" |sed -e 's%\\.$cf_so_strip\$%%'\`
+                               test -n "$cf_manpage_so_strip" && cf_source=\`echo "\$cf_source" |sed -e 's%\\.$cf_manpage_so_strip\$%%'\`
                                cf_target=\`basename "\$cf_target"\`
                                for cf_alias in \$aliases
                                do
                                        if test "\$section" = 1 ; then
                                                cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\`
                                        fi
+                                       cf_alias="\${cf_alias}\${extra_suffix}"
 
                                        if test "$MANPAGE_SYMLINKS" = yes ; then
                                                if test -f "\$cf_alias\${suffix}" ; then
@@ -6101,11 +6237,11 @@ cat >>$cf_edit_man <<CF_EOF
                                        elif test "\$cf_target" != "\$cf_alias\${suffix}" ; then
                                                echo ".so \$cf_source" >\$TMP
 CF_EOF
-if test -n "$cf_compress" ; then
+if test -n "$cf_manpage_compress" ; then
 cat >>$cf_edit_man <<CF_EOF
-                                               if test -n "$cf_so_strip" ; then
-                                                       "$cf_compress" -f \$TMP
-                                                       mv \$TMP.$cf_so_strip \$TMP
+                                               if test -n "$cf_manpage_so_strip" ; then
+                                                       "$cf_manpage_compress" $cf_manpage_coptions -f \$TMP
+                                                       mv \$TMP.$cf_manpage_so_strip \$TMP
                                                fi
 CF_EOF
 fi
@@ -6130,6 +6266,7 @@ cat >>$cf_edit_man <<CF_EOF
                                        if test "\$section" = 1 ; then
                                                cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\`
                                        fi
+                                       cf_alias="\${cf_alias}\${extra_suffix}"
 
                                        echo ".. \$verb alias \$cf_alias\${suffix}"
                                        rm -f "\$cf_alias\${suffix}"
@@ -6144,7 +6281,7 @@ cat >>$cf_edit_man <<CF_EOF
 esac
 done
 
-if test "$cf_inboth" = yes ; then
+if test "$cf_manpage_inboth" = yes ; then
 if test "\$form" != format ; then
        $SHELL "\[$]0" format "\$verb" "\$mandir" "\$srcdir" "\[$]@"
 fi
@@ -6246,7 +6383,7 @@ fi
 test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_MKSTEMP version: 12 updated: 2023/01/05 17:53:11
+dnl CF_MKSTEMP version: 13 updated: 2023/12/01 17:22:50
 dnl ----------
 dnl Check for a working mkstemp.  This creates two files, checks that they are
 dnl successfully created and distinct (AmigaOS apparently fails on the last).
@@ -6261,7 +6398,7 @@ $ac_includes_default
 
 int main(void)
 {
-       char *tmpl = "conftestXXXXXX";
+       static char tmpl[] = "conftestXXXXXX";
        char name[2][80];
        int n;
        int result = 0;
@@ -6382,15 +6519,15 @@ case ".$with_cflags" in
 esac
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_NUMBER_SYNTAX version: 2 updated: 2015/04/17 21:13:04
+dnl CF_NUMBER_SYNTAX version: 3 updated: 2023/05/06 16:14:29
 dnl ----------------
-dnl Check if the given variable is a number.  If not, report an error.
+dnl Check if the given variable is a positive integer.  Report an error if not.
 dnl $1 is the variable
 dnl $2 is the message
 AC_DEFUN([CF_NUMBER_SYNTAX],[
 if test -n "$1" ; then
-  case $1 in
-  ([[0-9]]*)
+  case `echo "$1" | sed -e 's/^[[0-9]]*$/0/g'` in
+  (0)
        ;;
   (*)
        AC_MSG_ERROR($2 is not a number: $1)
@@ -6534,7 +6671,7 @@ case ".[$]$1" in
 esac
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_PKG_CONFIG version: 12 updated: 2021/10/10 20:18:09
+dnl CF_PKG_CONFIG version: 13 updated: 2023/10/28 11:59:01
 dnl -------------
 dnl Check for the package-config program, unless disabled by command-line.
 dnl
@@ -6543,7 +6680,7 @@ AC_DEFUN([CF_PKG_CONFIG],
 [
 AC_MSG_CHECKING(if you want to use pkg-config)
 AC_ARG_WITH(pkg-config,
-       [  --with-pkg-config{=path} enable/disable use of pkg-config],
+       [[  --with-pkg-config[=CMD] enable/disable use of pkg-config and its name CMD]],
        [cf_pkg_config=$withval],
        [cf_pkg_config=yes])
 AC_MSG_RESULT($cf_pkg_config)
@@ -6572,7 +6709,7 @@ fi
 AC_SUBST(PKG_CONFIG)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
+dnl CF_POSIX_C_SOURCE version: 12 updated: 2023/02/18 17:41:25
 dnl -----------------
 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
 dnl
@@ -6603,7 +6740,7 @@ AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
        CF_MSG_LOG(if the symbol is already defined go no further)
        AC_TRY_COMPILE([#include <sys/types.h>],[
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif],
        [cf_cv_posix_c_source=no],
        [cf_want_posix_source=no
@@ -6622,7 +6759,7 @@ make an error
         if test "$cf_want_posix_source" = yes ; then
                AC_TRY_COMPILE([#include <sys/types.h>],[
 #ifdef _POSIX_SOURCE
-make an error
+#error _POSIX_SOURCE is defined
 #endif],[],
                cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
         fi
@@ -6633,7 +6770,7 @@ make an error
         CF_MSG_LOG(if the second compile does not leave our definition intact error)
         AC_TRY_COMPILE([#include <sys/types.h>],[
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif],,
         [cf_cv_posix_c_source=no])
         CFLAGS="$cf_save_CFLAGS"
@@ -6678,7 +6815,7 @@ AC_TRY_COMPILE([#include <stdio.h>],[
 ])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_PREDEFINE version: 2 updated: 2010/05/26 16:44:57
+dnl CF_PREDEFINE version: 3 updated: 2023/02/18 17:41:25
 dnl ------------
 dnl Add definitions to CPPFLAGS to ensure they're predefined for all compiles.
 dnl
@@ -6690,7 +6827,7 @@ AC_MSG_CHECKING(if we must define $1)
 AC_TRY_COMPILE([#include <sys/types.h>
 ],[
 #ifndef $1
-make an error
+#error $1 is not defined
 #endif],[cf_result=no],[cf_result=yes])
 AC_MSG_RESULT($cf_result)
 
@@ -6701,7 +6838,7 @@ elif test "x$2" != "x" ; then
        AC_TRY_COMPILE([#include <sys/types.h>
 ],[
 #if $1-$2 < 0
-make an error
+#error $1-$2 is negative
 #endif],[cf_result=yes],[cf_result=no])
        AC_MSG_RESULT($cf_result)
        if test "$cf_result" = no ; then
@@ -7286,7 +7423,7 @@ do
 done
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_SHARED_OPTS version: 107 updated: 2021/09/04 06:47:34
+dnl CF_SHARED_OPTS version: 111 updated: 2024/03/29 20:08:49
 dnl --------------
 dnl --------------
 dnl Attempt to determine the appropriate CC/LD options for creating a shared
@@ -7332,9 +7469,9 @@ AC_DEFUN([CF_SHARED_OPTS],
        cf_ld_rpath_opt=
        test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
 
-       AC_MSG_CHECKING(if release/abi version should be used for shared libs)
+       AC_MSG_CHECKING(whether to use release or ABI version in shared library file names)
        AC_ARG_WITH(shlib-version,
-       [  --with-shlib-version=X  Specify rel or abi version for shared libs],
+       [[  --with-shlib-version[={rel|abi}] use release or ABI version in shared library file names]],
        [test -z "$withval" && withval=auto
        case "$withval" in
        (yes)
@@ -7376,7 +7513,7 @@ AC_DEFUN([CF_SHARED_OPTS],
                for CC_SHARED_OPTS in -fPIC -fpic ''
                do
                        CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
-                       AC_TRY_COMPILE([#include <stdio.h>],[int x = 1],[break],[])
+                       AC_TRY_COMPILE([#include <stdio.h>],[int x = 1; (void)x],[break],[])
                done
                AC_MSG_RESULT($CC_SHARED_OPTS)
                CFLAGS="$cf_save_CFLAGS"
@@ -7746,11 +7883,11 @@ CF_EOF
                # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
                # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
                if test "$DFT_LWR_MODEL" = "shared" ; then
-                       LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
+                       LOCAL_LDFLAGS="-R\$(LOCAL_LIBDIR):\${libdir}"
                        LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
                fi
                if test "$cf_cv_enable_rpath" = yes ; then
-                       EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS"
+                       EXTRA_LDFLAGS="-R\${libdir} $EXTRA_LDFLAGS"
                fi
                CF_SHARED_SONAME
                if test "$GCC" != yes; then
@@ -7762,9 +7899,9 @@ CF_EOF
                        done
                        CFLAGS="$cf_save_CFLAGS"
                        CC_SHARED_OPTS=$cf_shared_opts
-                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -'$cf_cv_shared_soname' -o $[@]'
+                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -Wl,-h,'$cf_cv_shared_soname' -o $[@]'
                else
-                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -'$cf_cv_shared_soname' -o $[@]'
+                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -Wl,-h,'$cf_cv_shared_soname' -o $[@]'
                fi
                ;;
        (sysv5uw7*|unix_sv*)
@@ -7865,7 +8002,7 @@ define([CF_SHARED_SONAME],
        fi
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04
+dnl CF_SIGWINCH version: 7 updated: 2023/02/18 17:41:25
 dnl -----------
 dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
 dnl programs need this test).
@@ -7908,7 +8045,7 @@ do
 #include <sys/signal.h>
 ],[
 #if SIGWINCH != $cf_sigwinch
-make an error
+#error SIGWINCH is not $cf_sigwinch
 #endif
 int x = SIGWINCH; (void)x],
        [cf_cv_fixup_sigwinch=$cf_sigwinch
@@ -8040,7 +8177,7 @@ if test "$cf_cv_sizechange" != no ; then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_SRC_MODULES version: 33 updated: 2021/01/01 13:31:04
+dnl CF_SRC_MODULES version: 34 updated: 2023/04/22 11:51:06
 dnl --------------
 dnl For each parameter, test if the source-directory exists, and if it contains
 dnl a 'modules' file.  If so, add to the list $cf_cv_src_modules which we'll
@@ -8070,14 +8207,6 @@ for cf_dir in $1
 do
        if test -f "$srcdir/$cf_dir/modules" ; then
 
-               # We may/may not have tack in the distribution, though the
-               # makefile is.
-               if test "$cf_dir" = tack ; then
-                       if test "x$cf_with_tack" != "xyes"; then
-                               continue
-                       fi
-               fi
-
                if test -z "$cf_cv_src_modules"; then
                        cf_cv_src_modules=$cf_dir
                else
@@ -8088,9 +8217,7 @@ do
                # well.  These are header files that are the same name as their
                # directory.  Ncurses is the only library that does not follow
                # that pattern.
-               if test "$cf_dir" = tack ; then
-                       continue
-               elif test -f "$srcdir/${cf_dir}/${cf_dir}.h" ; then
+               if test -f "$srcdir/${cf_dir}/${cf_dir}.h" ; then
                        CF_UPPER(cf_have_include,$cf_dir)
                        AC_DEFINE_UNQUOTED(HAVE_${cf_have_include}_H)
                        AC_DEFINE_UNQUOTED(HAVE_LIB${cf_have_include})
@@ -8225,7 +8352,7 @@ dnl       Remove "-g" option from the compiler options
 AC_DEFUN([CF_STRIP_G_OPT],
 [$1=`echo "${$1}" | CF__SED_TRIMBLANKS(-e 's%-g %%' -e 's%-g$%%')`])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_STRUCT_SIGACTION version: 5 updated: 2012/10/06 17:56:13
+dnl CF_STRUCT_SIGACTION version: 6 updated: 2023/12/03 09:21:34
 dnl -------------------
 dnl Check if we need _POSIX_SOURCE defined to use struct sigaction.  We'll only
 dnl do this if we've found the sigaction function.
@@ -8237,14 +8364,14 @@ AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE)
 AC_TRY_COMPILE([
 #include <sys/types.h>
 #include <signal.h>],
-       [struct sigaction act],
+       [struct sigaction act; (void)act],
        [sigact_bad=no],
        [
 AC_TRY_COMPILE([
 #define _POSIX_SOURCE
 #include <sys/types.h>
 #include <signal.h>],
-       [struct sigaction act],
+       [struct sigaction act; (void)act],
        [sigact_bad=yes
         AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE])],
         [sigact_bad=unknown])])
@@ -8252,7 +8379,7 @@ AC_MSG_RESULT($sigact_bad)
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_STRUCT_TERMIOS version: 11 updated: 2020/03/19 20:46:13
+dnl CF_STRUCT_TERMIOS version: 13 updated: 2023/12/03 19:38:54
 dnl -----------------
 dnl Some machines require _POSIX_SOURCE to completely define struct termios.
 AC_DEFUN([CF_STRUCT_TERMIOS],[
@@ -8275,12 +8402,12 @@ if test "$ac_cv_header_termios_h" = yes ; then
        if test "$termios_bad" = maybe ; then
        AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE)
        AC_TRY_COMPILE([#include <termios.h>],
-               [struct termios foo; int x = foo.c_iflag = 1; (void)x],
+               [struct termios foo; int x = (int)(foo.c_iflag = 1); (void)x],
                termios_bad=no, [
                AC_TRY_COMPILE([
 #define _POSIX_SOURCE
 #include <termios.h>],
-                       [struct termios foo; int x = foo.c_iflag = 2; (void)x],
+                       [struct termios foo; int x = (int)(foo.c_iflag = 2); (void)x],
                        termios_bad=unknown,
                        termios_bad=yes AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE]))
                        ])
@@ -8496,7 +8623,7 @@ AC_SUBST(cf_cv_typeof_chtype)
 AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype,[Define to actual type if needed for chtype])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_TYPE_SIGACTION version: 4 updated: 2012/10/06 17:56:13
+dnl CF_TYPE_SIGACTION version: 5 updated: 2023/12/03 09:21:34
 dnl -----------------
 dnl
 AC_DEFUN([CF_TYPE_SIGACTION],
@@ -8505,14 +8632,14 @@ AC_MSG_CHECKING([for type sigaction_t])
 AC_CACHE_VAL(cf_cv_type_sigaction,[
        AC_TRY_COMPILE([
 #include <signal.h>],
-               [sigaction_t x],
+               [sigaction_t x; (void)x],
                [cf_cv_type_sigaction=yes],
                [cf_cv_type_sigaction=no])])
 AC_MSG_RESULT($cf_cv_type_sigaction)
 test "$cf_cv_type_sigaction" = yes && AC_DEFINE(HAVE_TYPE_SIGACTION,1,[Define to 1 if we have the sigaction_t type])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_UNSIGNED_LITERALS version: 2 updated: 1998/02/07 22:10:16
+dnl CF_UNSIGNED_LITERALS version: 3 updated: 2023/12/03 10:02:17
 dnl --------------------
 dnl Test if the compiler supports 'U' and 'L' suffixes.  Only old compilers
 dnl won't, but they're still there.
@@ -8520,7 +8647,7 @@ AC_DEFUN([CF_UNSIGNED_LITERALS],
 [
 AC_MSG_CHECKING([if unsigned literals are legal])
 AC_CACHE_VAL(cf_cv_unsigned_literals,[
-       AC_TRY_COMPILE([],[long x = 1L + 1UL + 1U + 1],
+       AC_TRY_COMPILE([],[long x = 1L + 1UL + 1U + 1; (void)x],
                [cf_cv_unsigned_literals=yes],
                [cf_cv_unsigned_literals=no])
        ])
@@ -8748,7 +8875,7 @@ ifelse($1,,,[
 ])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
+dnl CF_WCHAR_TYPE version: 5 updated: 2023/12/03 09:21:34
 dnl -------------
 dnl Check if type wide-character type $1 is declared, and if so, which header
 dnl file is needed.  The second parameter is used to set a shell variable when
@@ -8765,7 +8892,7 @@ AC_TRY_COMPILE([
 #ifdef HAVE_LIBUTF8_H
 #include <libutf8.h>
 #endif],
-       [$1 state],
+       [$1 state; (void)state],
        [cf_cv_$1=no],
        [AC_TRY_COMPILE([
 #include <stdlib.h>
@@ -8775,7 +8902,7 @@ AC_TRY_COMPILE([
 #ifdef HAVE_LIBUTF8_H
 #include <libutf8.h>
 #endif],
-       [$1 value],
+       [$1 value; (void) value],
        [cf_cv_$1=yes],
        [cf_cv_$1=unknown])])])
 
@@ -8874,26 +9001,26 @@ $1_ABI=$cf_cv_abi_version
 cf_cv_abi_default=$cf_cv_abi_version
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_COMPILER version: 2 updated: 2010/06/26 17:35:58
+dnl CF_WITH_ADA_COMPILER version: 3 updated: 2023/10/28 11:59:01
 dnl --------------------
 dnl Command-line option to specify the Ada95 compiler.
 AC_DEFUN([CF_WITH_ADA_COMPILER],[
-AC_MSG_CHECKING(for ada-compiler)
+AC_MSG_CHECKING(for Ada95 compiler)
 AC_ARG_WITH(ada-compiler,
-       [  --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)],
+       [[  --with-ada-compiler[=CMD] use CMD as Ada95 compiler (default: gnatmake)]],
        [cf_ada_compiler=$withval],
        [cf_ada_compiler=gnatmake])
 AC_SUBST(cf_ada_compiler)
 AC_MSG_RESULT($cf_ada_compiler)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_INCLUDE version: 2 updated: 2010/06/26 17:35:58
+dnl CF_WITH_ADA_INCLUDE version: 3 updated: 2023/10/28 11:59:01
 dnl -------------------
 dnl Command-line option to specify where Ada includes will install.
 AC_DEFUN([CF_WITH_ADA_INCLUDE],[
-AC_MSG_CHECKING(for ada-include)
+AC_MSG_CHECKING(for Ada95 include directory)
 CF_WITH_PATH(ada-include,
-   [  --with-ada-include=DIR  Ada includes are in DIR],
+   [  --with-ada-include=DIR  find Ada95 includes in DIR],
    ADA_INCLUDE,
    PREFIX/share/ada/adainclude,
    [$]prefix/share/ada/adainclude)
@@ -8901,16 +9028,16 @@ AC_SUBST(ADA_INCLUDE)
 AC_MSG_RESULT($ADA_INCLUDE)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_LIBNAME version: 1 updated: 2019/09/07 18:59:41
+dnl CF_WITH_ADA_LIBNAME version: 3 updated: 2023/11/22 20:48:30
 dnl -------------------
 dnl CF_WITH_ADA_LIBNAME
 dnl -------------------
 dnl Command-line option to specify how to name the resulting Ada library.
 dnl $1 = default value
 AC_DEFUN([CF_WITH_ADA_LIBNAME],[
-AC_MSG_CHECKING(for ada-libname)
+AC_MSG_CHECKING(for Ada95 curses library name)
 AC_ARG_WITH(ada-libname,
-   [  --with-ada-libname=XXX  override default Ada library-name],
+   [[  --with-ada-libname[=XXX]  use XXX as Ada95 library name]],
    ADA_LIBNAME=[$]withval,
    ADA_LIBNAME=$1)
 case "x$ADA_LIBNAME" in
@@ -8922,13 +9049,13 @@ AC_SUBST(ADA_LIBNAME)
 AC_MSG_RESULT($ADA_LIBNAME)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58
+dnl CF_WITH_ADA_OBJECTS version: 3 updated: 2023/10/28 11:59:01
 dnl -------------------
 dnl Command-line option to specify where Ada objects will install.
 AC_DEFUN([CF_WITH_ADA_OBJECTS],[
-AC_MSG_CHECKING(for ada-objects)
+AC_MSG_CHECKING(for Ada95 object directory)
 CF_WITH_PATH(ada-objects,
-   [  --with-ada-objects=DIR  Ada objects are in DIR],
+   [  --with-ada-objects=DIR  find Ada95 objects in DIR],
    ADA_OBJECTS,
    PREFIX/lib/ada/adalib,
    [$]prefix/lib/ada/adalib)
@@ -8936,28 +9063,34 @@ AC_SUBST(ADA_OBJECTS)
 AC_MSG_RESULT($ADA_OBJECTS)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_ADA_SHAREDLIB version: 5 updated: 2018/07/21 19:10:35
+dnl CF_WITH_ADA_SHAREDLIB version: 6 updated: 2023/10/28 11:59:01
 dnl ---------------------
-dnl Command-line option to specify if an Ada95 shared-library should be built,
+dnl Command-line option to specify if an Ada95 shared library should be built,
 dnl and optionally what its soname should be.
 AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[
 AC_REQUIRE([CF_GNAT_PROJECTS])
-AC_MSG_CHECKING(if an Ada95 shared-library should be built)
+AC_MSG_CHECKING(whether to build an Ada95 shared library)
 AC_ARG_WITH(ada-sharedlib,
-       [  --with-ada-sharedlib=soname build shared-library (requires GNAT projects)],
+       [  --with-ada-sharedlib    build Ada95 shared library; requires GNAT project support],
        [with_ada_sharedlib=$withval],
        [with_ada_sharedlib=no])
-AC_MSG_RESULT($with_ada_sharedlib)
+cf_ada_sharedlib_warn=no
 
 if test "x$with_ada_sharedlib" != xno
 then
        if test "x$cf_gnat_projects" != xyes
        then
-               AC_MSG_WARN(disabling shared-library since GNAT projects are not supported)
                with_ada_sharedlib=no
+               cf_ada_sharedlib_warn=yes
        fi
 fi
 
+AC_MSG_RESULT($with_ada_sharedlib)
+if test "x$cf_ada_sharedlib_warn" != xno
+then
+       AC_MSG_WARN(disabling Ada95 shared library since GNAT projects are not supported)
+fi
+
 ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
 MAKE_ADA_SHAREDLIB="#"
 
@@ -9004,7 +9137,7 @@ if test "$with_dmalloc" = yes ; then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_EXPORT_SYMS version: 3 updated: 2014/12/20 19:16:08
+dnl CF_WITH_EXPORT_SYMS version: 5 updated: 2023/11/22 20:48:30
 dnl -------------------
 dnl Use this with libtool to specify the list of symbols that may be exported.
 dnl The input file contains one symbol per line; comments work with "#".
@@ -9014,7 +9147,7 @@ AC_DEFUN([CF_WITH_EXPORT_SYMS],
 [
 AC_MSG_CHECKING(if exported-symbols file should be used)
 AC_ARG_WITH(export-syms,
-       [  --with-export-syms=XXX  limit exported symbols using libtool],
+       [[  --with-export-syms[=SYM-FILE] limit symbols exported by libtool to those listed in SYM-FILE]],
        [with_export_syms=$withval],
        [with_export_syms=no])
 if test "x$with_export_syms" = xyes
@@ -9206,7 +9339,7 @@ AC_SUBST(LIB_UNINSTALL)
 
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_LIBTOOL_OPTS version: 4 updated: 2015/04/17 21:13:04
+dnl CF_WITH_LIBTOOL_OPTS version: 6 updated: 2023/11/22 20:48:30
 dnl --------------------
 dnl Allow user to pass additional libtool options into the library creation
 dnl and link steps.  The main use for this is to do something like
@@ -9216,7 +9349,7 @@ dnl       ./configure --enable-static
 AC_DEFUN([CF_WITH_LIBTOOL_OPTS],[
 AC_MSG_CHECKING(for additional libtool options)
 AC_ARG_WITH(libtool-opts,
-       [  --with-libtool-opts=XXX specify additional libtool options],
+       [[  --with-libtool-opts[=XXX] give libtool additional options XXX]],
        [with_libtool_opts=$withval],
        [with_libtool_opts=no])
 AC_MSG_RESULT($with_libtool_opts)
@@ -9232,7 +9365,7 @@ esac
 AC_SUBST(LIBTOOL_OPTS)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_LIB_BASENAME version: 1 updated: 2020/03/07 20:05:14
+dnl CF_WITH_LIB_BASENAME version: 2 updated: 2023/11/22 20:48:30
 dnl --------------------
 dnl Allow for overriding the basename of a library, i.e., the part to which
 dnl prefixes/suffixes are attached.
@@ -9244,7 +9377,7 @@ AC_DEFUN([CF_WITH_LIB_BASENAME],
 [
 AC_MSG_CHECKING(for desired basename for $2 library)
 AC_ARG_WITH($2-libname,
-       [  --with-$2-libname=XXX override ifelse($3,,$2,$3) basename of library],
+       [[  --with-$2-libname[=XXX] override ifelse($3,,$2,$3) basename of library]],
        [with_lib_basename=$withval],
        [with_lib_basename=ifelse($3,,$2,$3)])
 $1="$with_lib_basename"
@@ -9432,7 +9565,7 @@ if test "x$with_pcre2" != xno ; then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PKG_CONFIG_LIBDIR version: 20 updated: 2022/01/29 17:03:42
+dnl CF_WITH_PKG_CONFIG_LIBDIR version: 23 updated: 2023/11/22 20:48:30
 dnl -------------------------
 dnl Allow the choice of the pkg-config library directory to be overridden.
 dnl
@@ -9443,7 +9576,8 @@ dnl b) $PKG_CONFIG_LIBDIR (tested second, added if set)
 dnl c) builtin-list (added if $PKG_CONFIG_LIBDIR is not set)
 dnl
 dnl pkgconf (used with some systems such as FreeBSD in place of pkg-config)
-dnl optionally ignores $PKG_CONFIG_LIBDIR.
+dnl optionally ignores $PKG_CONFIG_LIBDIR.  Very old versions of pkg-config,
+dnl e.g., Solaris 10 also do not recognize $PKG_CONFIG_LIBDIR.
 AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[
 
 case "$PKG_CONFIG" in
@@ -9456,11 +9590,17 @@ case "$PKG_CONFIG" in
 esac
 
 # if $PKG_CONFIG_LIBDIR is set, try to use that
-cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[[         ]]*,,'`
+if test -n "$PKG_CONFIG_PATH"; then
+       cf_search_path=`echo "$PKG_CONFIG_PATH" | sed -e 's/:/ /g' -e 's,^[[    ]]*,,' -e 's,[[         ]]*$,,'`
+elif test -n "$PKG_CONFIG_LIBDIR"; then
+       cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[[  ]]*,,' -e 's,[[         ]]*$,,'`
+else
+       cf_search_path=auto
+fi
 
 # if the option is used, let that override.  otherwise default to "libdir"
 AC_ARG_WITH(pkg-config-libdir,
-       [  --with-pkg-config-libdir=XXX use given directory for installing pc-files],
+       [[  --with-pkg-config-libdir[=XXX] use given directory for installing pc-files]],
        [cf_search_path=$withval],
        [test "x$PKG_CONFIG" != xnone && test -z "$cf_search_path" && cf_search_path=libdir])
 
@@ -9609,7 +9749,7 @@ if test "$with_pthread" != no ; then
 fi
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_REL_VERSION version: 1 updated: 2003/09/20 18:12:49
+dnl CF_WITH_REL_VERSION version: 2 updated: 2023/05/06 18:18:18
 dnl -------------------
 dnl Allow library's release-version to be overridden.  Generally this happens when a
 dnl packager has incremented the release-version past that used in the original package,
@@ -9629,6 +9769,7 @@ ifelse($1,,[
 ],[
  $1_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'`
  $1_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[[^.]]*//' -e 's/^\.//' -e 's/\..*//'`
+ test -n "$1_MINOR" || $1_MINOR=0
  CF_NUMBER_SYNTAX([$]$1_MAJOR,Release major-version)
  CF_NUMBER_SYNTAX([$]$1_MINOR,Release minor-version)
 ])
@@ -9684,6 +9825,27 @@ AC_ARG_WITH(system-type,
 ])
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_WITH_TYPE version: 2 updated: 2023/11/25 16:11:47
+dnl ------------
+dnl Accept a TYPE for substitution:
+dnl $1 = name of type
+dnl $2 = help/usage message
+dnl $3 = symbol to set
+dnl $4 = default value
+AC_DEFUN([CF_WITH_TYPE],[
+AC_MSG_CHECKING(for type of $1)
+AC_ARG_WITH([$1], [$2],
+       [$3="$withval"],
+       [$3=$4])
+AC_MSG_RESULT([$]$3)
+case x[$]$3 in
+(x|xyes|xno)
+       AC_MSG_ERROR(expected a type name for $1)
+       ;;
+esac
+AC_SUBST($3)
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
 dnl ----------------
 AC_DEFUN([CF_WITH_VALGRIND],[
@@ -9692,7 +9854,7 @@ CF_NO_LEAKS_OPTION(valgrind,
        [USE_VALGRIND])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_VERSIONED_SYMS version: 10 updated: 2021/01/04 18:48:01
+dnl CF_WITH_VERSIONED_SYMS version: 13 updated: 2023/12/03 09:24:04
 dnl ----------------------
 dnl Use this when building shared library with ELF, to markup symbols with the
 dnl version identifier from the given input file.  Generally that identifier is
@@ -9705,7 +9867,7 @@ AC_REQUIRE([AC_PROG_EGREP])dnl
 
 AC_MSG_CHECKING(if versioned-symbols file should be used)
 AC_ARG_WITH(versioned-syms,
-       [  --with-versioned-syms=X markup versioned symbols using ld],
+       [[  --with-versioned-syms[=MAP-FILE] version ELF shared library symbols per MAP-FILE]],
        [with_versioned_syms=$withval],
        [with_versioned_syms=no])
 case "x$with_versioned_syms" in
@@ -9792,15 +9954,15 @@ local:
 EOF
                cat >conftest.$ac_ext <<EOF
 #line __oline__ "configure"
-int    _ismissing(void) { return 1; }
-int    _localf1(void) { return 1; }
-int    _localf2(void) { return 2; }
-int    globalf1(void) { return 1; }
-int    globalf2(void) { return 2; }
-int    _sublocalf1(void) { return 1; }
-int    _sublocalf2(void) { return 2; }
-int    subglobalf1(void) { return 1; }
-int    subglobalf2(void) { return 2; }
+extern int _ismissing(void);    int _ismissing(void)  { return 1; }
+extern int _localf1(void);      int _localf1(void)    { return 1; }
+extern int _localf2(void);      int _localf2(void)    { return 2; }
+extern int globalf1(void);      int globalf1(void)    { return 1; }
+extern int globalf2(void);      int globalf2(void)    { return 2; }
+extern int _sublocalf1(void);   int _sublocalf1(void) { return 1; }
+extern int _sublocalf2(void);   int _sublocalf2(void) { return 2; }
+extern int subglobalf1(void);   int subglobalf1(void) { return 1; }
+extern int subglobalf2(void);   int subglobalf2(void) { return 2; }
 EOF
                cat >conftest.mk <<EOF
 CC=${CC}
@@ -9831,7 +9993,7 @@ AC_SUBST(VERSIONED_SYMS)
 AC_SUBST(WILDCARD_SYMS)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54
+dnl CF_WITH_X11_RGB version: 3 updated: 2023/10/28 11:59:01
 dnl ---------------
 dnl Handle configure option "--with-x11-rgb", setting these shell
 dnl variables:
@@ -9871,7 +10033,7 @@ dnl      /usr/X11/lib/X11/rgb.txt
 AC_DEFUN([CF_WITH_X11_RGB],[
 AC_MSG_CHECKING(for X11 rgb file)
 AC_ARG_WITH(x11-rgb,
-       [  --with-x11-rgb=FILE   file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)],
+       [  --with-x11-rgb=FILE     obtain X11 color definitions from FILE (default: EPREFIX/lib/X11/rgb.txt)],
        [RGB_PATH=$withval],
        [RGB_PATH=auto])
 
@@ -9917,7 +10079,7 @@ fi
 AC_SUBST(no_x11_rgb)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_SOURCE version: 63 updated: 2022/12/29 10:10:26
+dnl CF_XOPEN_SOURCE version: 67 updated: 2023/09/06 18:55:27
 dnl ---------------
 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
 dnl or adapt to the vendor's definitions to get equivalent functionality,
@@ -9926,6 +10088,18 @@ dnl
 dnl Parameters:
 dnl    $1 is the nominal value for _XOPEN_SOURCE
 dnl    $2 is the nominal value for _POSIX_C_SOURCE
+dnl
+dnl The default case prefers _XOPEN_SOURCE over _POSIX_C_SOURCE if the
+dnl implementation predefines it, because X/Open and most implementations agree
+dnl that the latter is a legacy or "aligned" value.
+dnl
+dnl Because _XOPEN_SOURCE is preferred, if defining _POSIX_C_SOURCE turns
+dnl that off, then refrain from setting _POSIX_C_SOURCE explicitly.
+dnl
+dnl References:
+dnl https://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html
+dnl https://docs.oracle.com/cd/E19253-01/816-5175/standards-5/index.html
+dnl https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
 AC_DEFUN([CF_XOPEN_SOURCE],[
 AC_REQUIRE([AC_CANONICAL_HOST])
 AC_REQUIRE([CF_POSIX_VISIBLE])
@@ -9940,9 +10114,6 @@ case "$host_os" in
 (aix[[4-7]]*)
        cf_xopen_source="-D_ALL_SOURCE"
        ;;
-(msys)
-       cf_XOPEN_SOURCE=600
-       ;;
 (darwin[[0-8]].*)
        cf_xopen_source="-D_APPLE_C_SOURCE"
        ;;
@@ -9968,7 +10139,7 @@ case "$host_os" in
        cf_xopen_source="-D_SGI_SOURCE"
        cf_XOPEN_SOURCE=
        ;;
-(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
        CF_GNU_SOURCE($cf_XOPEN_SOURCE)
        ;;
 (minix*)
@@ -10020,8 +10191,8 @@ case "$host_os" in
        cf_save_xopen_cppflags="$CPPFLAGS"
        CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
        # Some of these niche implementations use copy/paste, double-check...
-       if test "$cf_cv_xopen_source" != no ; then
-               CF_VERBOSE(checking if _POSIX_C_SOURCE inteferes)
+       if test "$cf_cv_xopen_source" = no ; then
+               CF_VERBOSE(checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE)
                AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[
                        AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable)
                        CPPFLAGS="$cf_save_xopen_cppflags"])
@@ -10040,7 +10211,7 @@ if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
        AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
        AC_TRY_COMPILE([#include <stdlib.h>],[
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif],
        [cf_XOPEN_SOURCE_set=yes],
        [cf_XOPEN_SOURCE_set=no])
@@ -10049,7 +10220,7 @@ make an error
        then
                AC_TRY_COMPILE([#include <stdlib.h>],[
 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
-make an error
+#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
 #endif],
                [cf_XOPEN_SOURCE_set_ok=yes],
                [cf_XOPEN_SOURCE_set_ok=no])
@@ -10070,22 +10241,20 @@ dnl Trim something using sed, then trim extra whitespace
 dnl $1 = extra parameters, e.g., in CF_STRIP_G_OPT
 define([CF__SED_TRIMBLANKS],[sed ifelse($1,,,[$1] )-e 's%[[    ]]% %g' -e 's% [[ ]]*% %g' -e 's%^ %%' -e 's% [$]%%'])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF__XOPEN_SOURCE_BODY version: 1 updated: 2022/09/10 15:17:35
+dnl CF__XOPEN_SOURCE_BODY version: 2 updated: 2023/02/18 17:41:25
 dnl ---------------------
 dnl body of test when test-compiling for _XOPEN_SOURCE check
 define([CF__XOPEN_SOURCE_BODY],
 [
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF__XOPEN_SOURCE_HEAD version: 1 updated: 2022/09/10 15:17:03
+dnl CF__XOPEN_SOURCE_HEAD version: 2 updated: 2023/02/18 17:41:25
 dnl ---------------------
 dnl headers to include when test-compiling for _XOPEN_SOURCE check
 define([CF__XOPEN_SOURCE_HEAD],
 [
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 ])
index ebeee52430fef983cc92630e4106409d17f3a21a..9889ef1bfb6c6ac9dea91cd2e517403d0a4c5a06 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  $Id: announce.html.in,v 1.104 2022/12/31 20:35:34 tom Exp $
+  $Id: announce.html.in,v 1.107 2024/04/27 16:45:27 tom Exp $
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
   Notes</a></h2>
 
   <p>These notes are for <span class="main-name">ncurses</span>
-  @VERSION@, released <strong>December 31, 2022</strong>.</p>
+  @VERSION@, released <strong>April 27, 2024</strong>.</p>
 
   <p>This release is designed to be source-compatible with
-  <span class="main-name">ncurses</span> 5.0 through 6.3; providing
+  <span class="main-name">ncurses</span> 5.0 through 6.4; providing
   extensions to the application binary interface (ABI). Although
   the source can still be configured to support the <span class=
   "main-name">ncurses</span> 5 ABI, the reason for the release is
   bug-fixes/improvements</a> dealt with robustness issues. The
   release notes also mention some other bug-fixes, but are focused
   on new features and improvements to existing features since
-  <span class="main-name">ncurses</span> 6.3 release.</p>
+  <span class="main-name">ncurses</span> 6.4 release.</p>
 
   <h3><a name="h3-library" id="h3-library">Library improvements</a></h3>
 
   <h4><a name="h4-new-library" id="h4-new-library">New features</a></h4>
 
-  <p>There are no new features in this release.</p>
+  <p>These are new features:</p>
+
+  <ul>
+    <li>
+      <p>The low-level terminfo and termcap interfaces are used
+      both by the higher-level curses library, as well as by many
+      applications.</p>
+
+      <p>The functions which convert parameterized terminal
+      capability strings for output to the terminal
+      (<code>tiparm</code> and <code>tparm</code>) analyze the
+      capability string to determine which parameters are strings
+      (i.e., addresses), versus numbers (not addresses).</p>
+
+      <p>The library's analysis of a capability string may differ
+      from the calling application's design if environment
+      variables are used to point to an invalid terminal database.
+      This is a longstanding problem with <em>all</em>
+      implementations of terminfo, dating from the early 1980s.</p>
+
+      <p>Two new functions address this problem: by providing a
+      function which allows the calling application to tell ncurses
+      how many string-parameters to expect:</p>
+
+      <ul>
+        <li><code>tiscan_s</code> helps applications check
+        formatting capabilities that would be passed to
+        <code>tiparm_s</code>.</li>
+
+        <li><code>tiparm_s</code> provides applications a way to
+        tell ncurses what the expected parameters are for a
+        capability.</li>
+      </ul>
+    </li>
+
+    <li>
+      <p>The ncurses library supports a compile-time feature
+      (enabled with the configure <code>--enable-check-size</code>
+      option) which simplifies initialization with terminals which
+      do not negotiate window (screen) size. This is done in
+      <code>setupterm</code>, by providing for using ANSI
+      cursor-position report (in user6/user7 terminfo capabilities)
+      to obtain the screen size if neither environment variables or
+      ioctl is used.</p>
+
+      <p>The ncurses test-program with options
+      &ldquo;<code>-E&nbsp;-T</code>&rdquo; demonstrates this
+      feature.</p>
+    </li>
+
+    <li>add functions to query tty-flags in
+    <code>SCREEN</code></li>
+  </ul>
+
+  <p>This release drops compatibility with obsolete versions of
+  <a href="@HOMEPAGE@/tack/">tack</a>, e.g., pre-1.08</p>
 
   <h4><a name="h4-fixes-library" id="h4-fixes-library">Other
   improvements</a></h4>
 
   <ul>
     <li>
-      <p>modify <tt>delscreen</tt> to more effectively delete all
-      windows on the given screen.</p>
+      <p>In addition to the new, safer function
+      <code>tiparm_s</code>, ncurses adds checks to make the older
+      <code>tiparm</code>, <code>tparm</code> and
+      <code>tgoto</code> functions safer:</p>
+
+      <ul>
+        <li>
+          <p>the terminfo functions <code>tiparm</code> and
+          <code>tparm</code> ensure that the capability string
+          comes from the terminal description which ncurses loads,
+          rather than from random data which the application
+          happens to have.</p>
+        </li>
+
+        <li>
+          <p>the <code>tgoto</code> function disallows capabilities
+          which its analysis shows will attempt to use string
+          parameters.</p>
+        </li>
+
+        <li>
+          <p>ncurses uses internal functions which correspond to
+          <code>tiparm</code>, and <code>tgoto</code> which ensure
+          that the capability strings which are passed to these
+          functions come from the loaded terminal description.</p>
+        </li>
+      </ul>
+    </li>
+
+    <li>
+      <p>improve check in <code>lib_tparm.c</code>, ensuring that a
+      char* fits into a <code>TPARM_ARG</code></p>
+    </li>
+
+    <li>
+      <p>modify <code>_nc_syserr_abort</code> to use
+      <code>_nc_env_access</code>, rather than only checking root
+      uid</p>
+    </li>
+
+    <li>
+      <p>improve thread lock in <code>lib_trace.c</code></p>
+    </li>
+
+    <li>
+      <p>modify <code>flushinp</code> to use file descriptors in
+      <code>SCREEN</code>, rather than from <code>TERMINAL</code>,
+      and check if they are for a terminal, like SVr4</p>
+    </li>
+
+    <li>
+      <p>modify <code>mcprint</code> to use file descriptor in
+      <code>SCREEN</code>, for consistency</p>
+    </li>
+
+    <li>
+      <p>modify internal function <code>_nc_read_file_entry</code>
+      to show relevant filename in warnings</p>
     </li>
 
     <li>
-      <p>modify <tt>wnoutrefresh</tt> to call <tt>pnoutrefresh</tt>
-      if its parameter is a pad, rather than treating it as an
-      error, and modify new_panel to permit its window-parameter to
-      be a pad</p>
+      <p>improve checks in internal function
+      <code>convert_string</code> for corrupt terminfo entry</p>
     </li>
 
     <li>
-      <p>modify curses_trace() to show the trace-mask as symbols,
-      e.g., <tt>TRACE_ORDINARY</tt>, <tt>DEBUG_LEVEL(3)</tt>.</p>
+      <p>review/improve handling of out-of-memory conditions</p>
     </li>
 
     <li>
-      <p>improve checks for valid mouse events when an intermediate
-      mouse state is not part of the mousemask specified by the
-      caller</p>
+      <p>limit delays to 30 seconds, i.e., padding delays in
+      terminfo, as well as <code>napms</code> and
+      <code>delay_output</code> functions</p>
     </li>
 
     <li>
-      <p>allow extended-color number in <em>opts</em> parameter of
-      <tt>wattr_on</tt>.</p>
+      <p>fix reallocation loop for <code>vsnprintf</code> in
+      <code>_nc_sprintf_string</code> by copying the va_list
+      variable</p>
     </li>
 
     <li>
-      <p>improve <tt>_tracecchar_t2</tt> formatting of
-      base+combining character.</p>
+      <p>modify <code>delscreen</code> to limit the windows which
+      it creates to just those associated with the screen</p>
     </li>
 
     <li>
-      <p>trim out some unwanted linker options from ncurses*config
-      and .pc files seen in Fedora 36+.</p>
+      <p>modify <code>endwin</code> to return an error if it is
+      called again without an intervening screen update</p>
     </li>
 
     <li>
-      <p>improve shell-scripts with <em>shellcheck</em></p>
+      <p>modify <code>wenclose</code> to handle pads</p>
     </li>
 
     <li>
-      <p>improve use of "trap" in shell scripts, using a
-      script.</p>
+      <p>eliminate use of <code>PATH_MAX</code> in
+      <code>lib_trace.c</code></p>
     </li>
 
     <li>
-      <p>modify <tt>make-tar.sh</tt> scripts to make timestamps
-      more predictable.</p>
+      <p>provide for any <code>CCHARW_MAX</code> greater than 1</p>
     </li>
   </ul>
 
 
   <ul>
     <li>
-      <p>modify <tt>misc/gen-pkgconfig.in</tt> to allow for the
-      case where the library directory does not yet exist, since
-      this is processed before doing an install</p>
+      <p>correct loop termination condition in
+      <code>waddnstr</code> and <code>waddnwstr</code></p>
+    </li>
+
+    <li>
+      <p>improve parsing in internal function
+      <code>_nc_msec_cost</code>, allowing a single decimal
+      point</p>
     </li>
 
     <li>
-      <p>set trailing null on string passed from <tt>winsnstr</tt>
-      to <tt>wins_nwstr</tt>.</p>
+      <p>amend parameter check for entire string versus specific
+      length in <code>winsnstr</code> and <code>wins_nwstr</code>
+      to match Solaris; make similar correction to
+      <code>wins_nwstr</code></p>
     </li>
 
     <li>
-      <p>modify <tt>waddch_literal</tt> to allow for double-width
-      base character when merging a combining character</p>
+      <p>correct internal function <code>wadd_wch_literal</code>
+      when adding a non-spacing character to a double-width
+      character</p>
+    </li>
+
+    <li>
+      <p>correct definition of <code>Charable</code> macro for
+      non-wide ncurses library .</p>
     </li>
   </ul>
 
   improvements</a></h3>
 
   <p id="h4-utilities">Several improvements were made to the
-  utility programs:</p>
+  utility programs. Some were done to make the <code>infocmp</code>
+  option &ldquo;<tt>-u</tt>&rdquo; option help refactor the
+  terminal database.</p>
 
   <dl>
     <dt><span class="part-name"><a href=
 
     <dd>
       <ul>
-        <li>rewrite <tt>canonical_name</tt> function of
-        <tt>infocmp</tt> to ensure buffer size</li>
+        <li>
+          <p>add limit checks for processing extended capabilities
+          with the &ldquo;<code>-u</code>&rdquo; option</p>
+        </li>
 
-        <li>improve readability of long parameterized expressions
-        with the infocmp &ldquo;<tt>-f</tt>&rdquo; option by
-        allowing split before a &ldquo;<tt>%p</tt>&rdquo;
-        marker.</li>
+        <li>
+          <p>correct initial alignment of extended capabilities, so
+          that the &ldquo;<code>-u</code>&rdquo; option can be used
+          for more than two terminal types</p>
+        </li>
 
-        <li>modify verbose-option of <tt>infocmp</tt>,
-        <tt>tic</tt>, <tt>toe</tt> to enable debug-tracing if that
-        is configured.</li>
+        <li>
+          <p>modify &ldquo;<code>-u</code>&rdquo; option to not
+          report cancels for strings which were already cancelled
+          in a use'd chunk.</p>
+        </li>
+
+        <li>
+          <p>correct an assignment &ldquo;<code>-u</code>&rdquo;
+          for detecting if a boolean is unset in a base entry and
+          set in a use'd chunk, i.e., if it was cancelled.</p>
+        </li>
       </ul>
     </dd>
 
     <dt><span class="part-name"><a href=
-    "@HOMEPAGE@/man/tabs.1.html">tabs</a></span>
+    "@HOMEPAGE@/man/tic.1m.html">tic</a></span>
     </dt>
 
-    <dd>limit tab-stop values to max-columns</dd>
+    <dd>
+      <ul>
+        <li>
+          <p>correct limit-check when dumping tc/use clause via
+          &ldquo;<code>-I</code>&rdquo;</p>
+        </li>
 
-    <dt><span class="part-name"><a href=
-    "@HOMEPAGE@/man/tic.1m.html">tic</a></span>
-    </dt>
+        <li>
+          <p>check return value of <code>_nc_save_str</code>, in
+          special case where extended capabilities are processed
+          but the terminal description was not initialized</p>
+        </li>
 
-    <dd>add consistency check in tic for u6/u7/u8/u9 and NQ
-    capabilities.</dd>
+        <li>
+          <p>modify check for multiply defined aliases to report
+          problems within the current runtime rather than for
+          conflicts with pre-existing terminal descriptions.</p>
+        </li>
+
+        <li>
+          <p>disallow using <code>$TERMINFO</code> or
+          <code>$HOME/.terminfo</code> when
+          &ldquo;<code>-o</code>&rdquo; option is used</p>
+        </li>
+      </ul>
+    </dd>
 
     <dt><span class="part-name"><a href=
-    "@HOMEPAGE@/man/tput.1.html">tput</a></span>
-    </dt>
+    "@HOMEPAGE@/man/tput.1.html">tput</a></span> and <span class=
+    "part-name"><a href=
+    "@HOMEPAGE@/man/tset.1.html">tset</a></span></dt>
+
+    <dd>
+      <ul>
+        <li>
+          <p>add &ldquo;<code>-v</code>&rdquo; option to tput, to
+          show warnings</p>
+        </li>
 
-    <dd>corrected use of original tty-modes in <em>init/reset</em>
-    subcommands</dd>
+        <li>
+          <p>modify <em>reset</em> command to avoid altering clocal
+          if the terminal uses a modem</p>
+        </li>
+
+        <li>
+          <p>modify <em>reset</em> feature to avoid 1-second sleep
+          if running in a pseudo-terminal</p>
+        </li>
+      </ul>
+    </dd>
   </dl>
 
   <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
 
   <p>Along with the library and utilities, improvements were made
   to the <a href=
-  "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a>. Most of
-  this activity aimed at improving the test-packages:</p>
+  "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a>:</p>
 
   <ul>
     <li>
-      <p>add minimal <tt>-h</tt> (usage) and <tt>-V</tt> (version)
-      getopt logic to all ncurses-examples programs.</p>
-    </li>
-
-    <li>
-      <p>fix an error in "@" command in <tt>test/ncurses.c</tt>
-      F-menu</p>
-    </li>
-
-    <li>
-      <p>add curses_trace to ifdef's for <tt>START_TRACE</tt> in
-      <tt>test/test.priv.h</tt></p>
-    </li>
-
-    <li>
-      <p>improve pthread-configuration for test/worm.c</p>
-    </li>
-
-    <li>
-      <p>add <tt>setlocale</tt> call to several test-programs.</p>
+      <p>modify <code>test_tparm</code> to account for extended
+      capabilities</p>
     </li>
 
     <li>
-      <p>workaround in <tt>test/picsmap.c</tt> for use of floating
-      point for rgb values by ImageMagick 6.9.11, which appears to
-      use the wrong upper limit.</p>
+      <p>corrected mouse mask in <code>test/testcurs.c</code></p>
     </li>
 
     <li>
-      <p>use static libraries for AdaCurses test-package for
-      Mageia, since no gprbuild package is available.</p>
+      <p>modify <code>test/clip_printw.c</code> to optionally test
+      non-wrapped updates</p>
     </li>
 
     <li>
-      <p>install Ada95 sample programs in libexecdir, adding a
-      wrapper script to invoke those.</p>
+      <p>modify <code>test/test_mouse.c</code> to use curses api
+      for raw/noraw</p>
     </li>
 
     <li>
-      <p>install ncurses-examples programs in libexecdir, adding a
-      wrapper script to invoke those.</p>
+      <p>modify <code>test/clip_printw.c</code> to optionally test
+      non-wrapped updates</p>
     </li>
   </ul>
 
-  <p>There are other new demo/test programs and reusable
-  examples:</p>
+  <p>There is one new demo/test programs:</p>
 
   <dl>
-    <dt><span class="part-name"><em>test/combine</em></span>
+    <dt><span class="part-name"><em>test/test_endwin.c</em></span>
     </dt>
 
-    <dd>demonstrate combining characters</dd>
-
-    <dt><span class="part-name"><em>test/test_delwin</em></span>
-    </dt>
-
-    <dd>demonstrate deleting a window</dd>
-
-    <dt><span class="part-name"><em>test/test_mouse</em></span>
-    </dt>
-
-    <dd>observe mouse events in the raw terminal or parsed ncurses
-    modes</dd>
-
-    <dt><span class="part-name"><em>test/test_unget_wch</em></span>
-    </dt>
-
-    <dd>demonstrate the unget_wch and unget functions</dd>
+    <dd>
+      <p>This program shows the return-status from
+      <code>endwin</code> with different combinations of
+      <code>endwin</code> (repeated), <code>initscr</code>,
+      <code>newterm</code>.</p>
+    </dd>
   </dl>
 
   <h3><a name="h3-database" id="h3-database">Terminal database</a></h3>
   <p>There are several new terminal descriptions:</p>
 
   <ul>
-    <li><tt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-mosh">mosh</a></tt>
+    <li>
+      <p><a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-ansi_apparrows"><tt>ansi+apparrows</tt></a></p>
     </li>
 
-    <li><tt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-mosh-256color">mosh-256color</a></tt>
+    <li>
+      <p><a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-contour"><tt>contour</tt></a></p>
     </li>
 
-    <li><tt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-teken-16color">teken-16color</a></tt>
+    <li>
+      <p><a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-linux_kbs"><tt>linux+kbs</tt></a>
+      for terminals which imitate xterm's behavior with Linux</p>
     </li>
 
-    <li><tt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-teken-sc">teken-sc</a></tt>
+    <li>
+      <p><a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-rio"><tt>rio</tt></a>,
+      <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-rio-direct"><tt>rio-direct</tt></a></p>
     </li>
 
-    <li><tt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-teken-vt">teken-vt</a></tt>
+    <li>
+      <p><a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-mostlike"><tt>mostlike</tt></a></p>
     </li>
 
-    <li><tt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-xgterm">xgterm</a></tt>
+    <li>
+      <p><a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-ms-vt100-16color"><tt>ms-vt100-16color</tt></a>,
+      <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-winconsole"><tt>winconsole</tt></a></p>
     </li>
-  </ul>
 
-  <p>There are many changes to existing terminal descriptions. Some
-  were updates to several descriptions:</p>
-
-  <ul>
     <li>
-      <p>make description-fields distinct</p>
+      <p><a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-vt100_noapp"><tt>vt100+noapp</tt></a>,
+      <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-vt100_noapp_pc"><tt>vt100+noapp+pc</tt></a>,
+      <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-xterm_app_pc"><tt>xterm+app+pc</tt></a>,
+      <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-xterm_decedit"><tt>xterm+decedit</tt></a>
+      from <a href="@WEBSITE@/xterm/xterm.log.html#xterm_389">xterm
+      #389</a></p>
     </li>
 
     <li>
-      <p>fix errata in description fields</p>
+      <p><a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-putty_cursor"><tt>putty+cursor</tt></a>
+      to reflect amending of modified cursor-keys in 2021</p>
     </li>
 
     <li>
-      <p>add/use several building-blocks:</p>
-
-      <ul>
-        <li><a href=
-        "@HOMEPAGE@/terminfo.src.html#tic-aixterm_sl"><tt>aixterm+sl</tt></a></li>
-
-        <li><a href=
-        "@HOMEPAGE@/terminfo.src.html#tic-ansi_cpr"><tt>ansi+cpr</tt></a></li>
-
-        <li><a href=
-        "@HOMEPAGE@/terminfo.src.html#tic-apollo_vt132"><tt>apollo+vt132</tt></a></li>
-
-        <li><a href=
-        "@HOMEPAGE@/terminfo.src.html#tic-decid_cpr"><tt>decid+cpr</tt></a></li>
-
-        <li><a href=
-        "@HOMEPAGE@/terminfo.src.html#tic-ncr260vp_sl"><tt>ncr260vp+sl</tt></a></li>
-
-        <li><a href=
-        "@HOMEPAGE@/terminfo.src.html#tic-wyse_sl"><tt>wyse+sl</tt></a></li>
-
-        <li><a href=
-        "@HOMEPAGE@/terminfo.src.html#tic-x10term_sl"><tt>x10term+sl</tt></a></li>
-
-        <li><a href=
-        "@HOMEPAGE@/terminfo.src.html#tic-xterm_acs"><tt>xterm+acs</tt></a></li>
-
-        <li><a href=
-        "@HOMEPAGE@/terminfo.src.html#tic-xterm_alt47"><tt>xterm+alt47</tt></a></li>
-      </ul>
+      <p><a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-wezterm"><tt>wezterm</tt></a></p>
     </li>
   </ul>
 
-  <p>while others affected specific descriptions. These were
-  retested, to take into account changes by their developers:</p>
+  <p>There are many changes to existing terminal descriptions. Some
+  were updates to several descriptions, using the
+  <code>infocmp</code> &ldquo;<code>-u</code>&rdquo; option in a
+  script to determine which <em>building-block</em> entries could
+  be used to replace multiple capability settings (and trim
+  redundant information).</p>
+
+  <p>Other changes include:</p>
 
   <ul>
     <li>
-      <p><tt><a href=
-      "@HOMEPAGE@/terminfo.src.html#tic-kitty">kitty</a></tt>
-      </p>
+      <p><a href=
+      "@HOMEPAGE@/terminfo.src.html#toc-_X_T_E_R_M__Extensions_">document</a>
+      XF, kxIN and kxOUT</p>
     </li>
 
     <li>
-      <p><tt><a href=
-      "@HOMEPAGE@/terminfo.src.html#tic-teken">teken</a></tt>
-      </p>
+      <p>add note on <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-sun"><tt>sun</tt></a>
+      regarding wscons/cmdtool/shelltool</p>
     </li>
-  </ul>
 
-  <p>while these are specific fixes based on reviewing
-  documentation, user reports, or warnings from <span class=
-  "part-name">tic</span>:</p>
-
-  <dl>
-    <dt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-att610_cvis0">att610+cvis0</a>
-    </dt>
-
-    <dd>amended note as per documentation for att610, att620,
-    att730</dd>
-
-    <dt><a href="@HOMEPAGE@/terminfo.src.html#tic-kon">kon</a>,
-    kon2, jfbterm</dt>
-
-    <dd>revise to undo "linux2.6" change to smacs/rmacs/enacs</dd>
-
-    <dt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-st-0_6">st-0.6</a>
-    </dt>
-
-    <dd>add dim, ecma+strikeout</dd>
-
-    <dt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-foot_base">foot+base</a>
-    </dt>
-
-    <dd>add xterm+sl-alt</dd>
-
-    <dt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-dec_sl">dec+sl</a>
-    </dt>
-
-    <dd>correct dsl in dec+sl</dd>
-
-    <dt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-mintty">mintty</a> and
-    tmux</dt>
-
-    <dd>correct setal in mintty/tmux entries, add to vte-2018</dd>
-
-    <dt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-nsterm">nsterm</a>
-    </dt>
+    <li>
+      <p>remove DECCOLM+DECSCLM from <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-foot"><tt>foot</tt></a></p>
+    </li>
 
-    <dd>modify nsterm to use xterm+alt1049</dd>
+    <li>
+      <p>add xterm+focus to <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-foot_base"><tt>foot+base</tt></a></p>
+    </li>
 
-    <dt><a href="@HOMEPAGE@/terminfo.src.html#tic-putty">putty</a>
-    </dt>
+    <li>
+      <p>add ecma+strikeout to <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-putty"><tt>putty</tt></a></p>
+    </li>
 
-    <dd>modify putty to use xterm+alt1049</dd>
+    <li>
+      <p>use CSI 3J in <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-vte-2017"><tt>vte-2017</tt></a></p>
+    </li>
 
-    <dt><a href=
-    "@HOMEPAGE@/terminfo.src.html#tic-vte-2018">vte-2018</a>
-    </dt>
+    <li>
+      <p>use oldxterm+sm+1006 in <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-vte-2014"><tt>vte-2014</tt></a></p>
+    </li>
 
-    <dd>add blink and setal</dd>
-  </dl>
+    <li>
+      <p>modify <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-xgterm"><tt>xgterm</tt></a>
+      to work around line-drawing bug</p>
+    </li>
 
-  <p>A few entries use extensions (user-defined terminal
-  capabilities):</p>
+    <li>
+      <p>add xterm focus mode 1004 to <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a>
+      as fe/fd capabilities, like vim.</p>
+    </li>
 
-  <ul>
     <li>
-      <p>use <tt>ansi+enq</tt> and <tt>decid+cpr</tt> in cases
-      where the terminal probably supported the u6-u9 extension</p>
+      <p>add xterm+focus to <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-alacritty_common"><tt>alacritty+common</tt></a></p>
     </li>
 
     <li>
-      <p>remove u6-u9 from teken-2018</p>
+      <p>add XR/xr, to work with vim, and use RV/rv to denote DA2
+      and its response</p>
     </li>
 
     <li>
-      <p>use <tt>NQ</tt> to flag entries where the terminal does
-      not support query and response</p>
+      <p>add XF flag to <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a>
+      so that termcap applications can be aware of terminals which
+      may support focus in/out</p>
     </li>
 
     <li>
-      <p>add/use <a href=
-      "@HOMEPAGE@/terminfo.src.html#tic-bracketed_paste"><tt>bracketed+paste</tt></a>
-      to help identify terminals supporting this xterm feature</p>
+      <p>use xterm+focus in <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-xterm-p370"><tt>xterm-p370</tt></a>
+      and <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p>
     </li>
 
     <li>
-      <p>modify samples for xterm mouse 1002/1003 modes to use 1006
-      mode, and also provide for focus in/out responses</p>
+      <p>remove xterm+sm+1006 from <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p>
     </li>
 
     <li>
-      <p>xterm patch #371 supports DEC-compatible status-line. add
-      <tt>dec+sl</tt> to xterm-new, per xterm #371, add <a href=
-      "@HOMEPAGE@/terminfo.src.html#tic-xterm-p371"><tt>xterm-p371</tt></a>,
-      add <a href=
-      "@HOMEPAGE@/terminfo.src.html#tic-xterm-p370"><tt>xterm-p370</tt></a>,
-      for use in older terminals, and set &ldquo;xterm-new&rdquo;
-      to &ldquo;xterm-p370&rdquo; (to ease adoption).</p>
+      <p>NetBSD-related fixes for <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-x68k"><tt>x68k</tt></a> and
+      <a href=
+      "@HOMEPAGE@/terminfo.src.html#tic-wsvt25"><tt>wsvt25</tt></a></p>
     </li>
   </ul>
 
 
       <ul>
         <li>
-          <p>remove a stray '/' from description of <tt>%g</tt> in
-          <a href=
-          "@HOMEPAGE@/man/terminfo.5.html#h3-Parameterized-Strings">
-          terminfo(5)</a>.</p>
+          <p>add assignment in <code>CF_MAN_PAGES</code> to fill in
+          value for <code>TERMINFO_DIRS</code> in ncurses, terminfo
+          and tic manpages.</p>
         </li>
 
         <li>
-          <p>correct/improve font-formatting in <a href=
-          "@HOMEPAGE@/man/curs_getch.3x.html">curs_getch.3x</a>, as
-          well as other manual pages.</p>
+          <p>clarify interaction of <code>-R</code> option versus
+          <code>-C</code>, <code>-I</code> and <code>-r</code> in
+          <code>infocmp</code> manpage.</p>
         </li>
-      </ul>
-    </li>
-
-    <li>
-      <p>New/improved history and portability sections:</p>
 
-      <ul>
         <li>
-          <p>add portability notes for <a href=
-          "@HOMEPAGE@/man/curs_initscr.3x.html#h2-PORTABILITY">delscreen</a>
-          and <a href=
-          "@HOMEPAGE@/man/curs_window.3x.html#h2-PORTABILITY">delwin</a>
-          in manual.</p>
+          <p>correct manpage description of panel_hidden.</p>
         </li>
 
         <li>
-          <p>improve <a href=
-          "@HOMEPAGE@/man/curs_slk.3x.html#h2-EXTENSIONS">curs_slk.3x</a>
-          discussion of extensions and portability</p>
+          <p>improve manpage description for addch versus unctrl
+          format used for non-printable characters.</p>
         </li>
-      </ul>
-    </li>
 
-    <li>
-      <p>Other improvements:</p>
-
-      <ul>
         <li>
-          <p>improve <a href=
-          "@HOMEPAGE@/man/curs_bkgd.3x.html">curs_bkgd.3x</a>,
-          explaining that <tt>bkgdset</tt> can affect results for
-          <tt>bkgd</tt></p>
+          <p>improve manpages discussing file descriptors in
+          low-level functions.</p>
         </li>
 
         <li>
-          <p>add note on portable memory-leak checking in <a href=
-          "@HOMEPAGE@/man/curs_memleaks.3x.html#h2-PORTABILITY">curs_memleaks.3x</a></p>
+          <p>improve description of search rules for terminal
+          descriptions in terminfo manpage.</p>
         </li>
 
         <li>
-          <p>expanded description in <a href=
-          "@HOMEPAGE@/man/resizeterm.3x.html">resizeterm.3x</a></p>
+          <p>modify dist.mk to avoid passing developer's comments
+          in manpages into the generated html documentation.</p>
         </li>
 
         <li>
-          <p>add section on releasing memory to <a href=
-          "@HOMEPAGE@/man/curs_termcap.3x.html#h3-Releasing-Memory">
-          curs_termcap.3x</a> and <a href=
-          "@HOMEPAGE@/man/curs_terminfo.3x.html#h3-Releasing-Memory">
-          curs_terminfo.3x</a> manpages.</p>
+          <p>modify test-package "ncurses6-doc" to use
+          manpage-aliases, which in turn required a change to the
+          configure script to factor in the extra-suffix option
+          when deriving alias names.</p>
         </li>
+      </ul>
+    </li>
 
+    <li>
+      <p>New/improved history and portability sections:</p>
+
+      <ul>
         <li>
-          <p>add clarification of the scope of dynamic variables in
-          <a href=
-          "@HOMEPAGE@/man/terminfo.5.html">terminfo(5)</a>.</p>
+          <p>add information about "ttycap", termcap's forerunner,
+          to tset.1</p>
         </li>
 
         <li>
-          <p>improve formatting of <a href=
-          "@HOMEPAGE@/ncurses-intro.html">ncurses-intro.html</a>
-          and <a href=
-          "@HOMEPAGE@/hackguide.html">hackguide.html</a></p>
+          <p>document limitations of tparm, and error-returns in
+          curs_terminfo.3x</p>
         </li>
 
         <li>
-          <p>improve <a href=
-          "@HOMEPAGE@/man/curs_clear.3x.html">curs_clear.3x</a>
-          links to other pages</p>
+          <p>document limitations of tgoto, and error-returns in
+          curs_termcap.3x</p>
         </li>
+      </ul>
+    </li>
+
+    <li>
+      <p>Other improvements:</p>
 
+      <ul>
         <li>
-          <p>update <a href=
-          "@HOMEPAGE@/howto/NCURSES-Programming-HOWTO.html">ncurses-howto</a>,
-          making documentation fixes along with corrections to
-          example programs.</p>
+          <p>This release has many changes to improve the
+          formatting and style of the manpages.</p>
         </li>
 
         <li>
-          <p>use newer version 1.36 of gnathtml for generating Ada
-          html files.</p>
+          <p>Manpages now use consistent section-naming, page
+          headers and footers (including the modification date for
+          each page).</p>
         </li>
 
         <li>
-          <p>update external links in <a href=
-          "@HOMEPAGE@/Ada95.html">Ada95.html</a></p>
+          <p>Table layout has been revised.</p>
         </li>
       </ul>
     </li>
   <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
   bug-fixes</a></h3>
 
-  <p>While there were many bugs fixed during development of ncurses
-  6.4, only a few (the reason for this release) were both important
-  and interesting. Most of the bug-fixes were for local issues
-  which did not affect compatibility across releases. Since those
-  are detailed in the <a href=
-  "@HOMEPAGE@/NEWS.html#t20221231">NEWS</a> file no elaboration is
-  needed here.</p>
+  <p>The changes to <tt>tparm</tt>, <tt>tgoto</tt> which improve
+  the design of the low-level interfaces are <em>interesting</em>,
+  but are not bug-fixes <em>per se</em>.</p>
+
+  <h3><a name="h3-config-config" id=
+  "h3-config-config">Configuration changes</a></h3>
+
+  <h4><a name="h4-config-major" id="h4-config-major">Major
+  changes</a></h4>
 
-  <p>The interesting bugs were those dealing with memory leaks and
-  buffer overflows. Although the utilities are designed for
-  <em>text</em> files (which they do properly), some choose to test
-  them with <strong>non-</strong><em>text</em> files.</p>
+  <p>These are the major changes (aside from introducing <a href=
+  "#h4-new-library"><tt>tiparm_s</tt></a>):</p>
 
   <ul>
     <li>
-      <p>Text files contain no embedded nulls. Also, they end with
-      a newline. Feeding <strong>tic</strong> non-text files
-      exposed a few cases where the program did not check for those
-      issues. As a result, further processing of the input found
-      limit-checks whose assumptions were invalid.</p>
+      <p>use wide-character (ncursesw) by default</p>
     </li>
 
     <li>
-      <p>Fixing the limit-checks (first) found a problem with
-      <strong>tic</strong> managing the list of strings in a
-      terminal description. In merging two terminal descriptions
-      (i.e., the &ldquo;use=&rdquo; feature), <strong>tic</strong>
-      was not allocating a complete copy. A quick repair for that
-      introduced a memory leak.</p>
+      <p>use opaque typedefs by default</p>
     </li>
+  </ul>
 
+  <p>However, most of the work on configure scripts was done to
+  reduce warnings within the configure script:</p>
+
+  <ul>
     <li>
-      <p>The checks for non-text files are improved (i.e., embedded
-      nulls in the input file will cause <strong>tic</strong> to
-      reject it rather than attempting to process it).</p>
+      <p>intrusive warnings from GNU grep regarding fgrep and
+      egrep</p>
     </li>
 
     <li>
-      <p>The string allocations in <strong>tic</strong> are
-      likewise improved.</p>
+      <p>fatal errors in compile-checks, arising from recent
+      &ldquo;Modern&nbsp;C&rdquo; efforts by some developers which
+      caused longstanding configure checks to fail.</p>
+
+      <p>After repairing the configure script, none of that
+      activity affected ncurses because stricter warnings are used
+      routinely in development.</p>
     </li>
   </ul>
 
-  <h3><a name="h3-config-config" id=
-  "h3-config-config">Configuration changes</a></h3>
+  <p>Other improvements made to configure checks include</p>
 
-  <h4><a name="h4-config-major" id="h4-config-major">Major
-  changes</a></h4>
+  <ul>
+    <li>
+      <p>use <a href=
+      "@HOMEPAGE@/INSTALL.html#option:enable-string-hacks">string-hacks</a>
+      in alloc_entry.c, alloc_type.c and hardscroll.c, overlooked
+      due to compiler changes in recent OpenBSD releases</p>
+    </li>
+
+    <li>
+      <p>revise progs.priv.h to provide for NC_ISATTY reuse</p>
+    </li>
+
+    <li>
+      <p>configure check for MB_LEN_MAX provides warning as
+      needed</p>
+    </li>
+
+    <li>
+      <p>trim a space after some "-R" options, fixing builds for
+      applications built using clang and ncurses on Solaris</p>
+    </li>
 
-  <p>There are no major changes. No new options were added. Several
-  improvements were made to configure checks.</p>
+    <li>
+      <p>work around misconfiguration of MacPorts gcc13, which
+      exposes invalid definition of <tt>MB_LEN_MAX</tt> in gcc's
+      fallback copy of <tt>limits.h</tt></p>
+    </li>
+
+    <li>
+      <p>modified experimental Windows driver works with xterm
+      mouse protocol</p>
+    </li>
+  </ul>
 
   <h4><a name="h4-config-options" id=
   "h4-config-options">Configuration options</a></h4>
 
-  <p>There are a few new/modified configure options:</p>
+  <p>There are a few new configure options:</p>
 
   <dl>
-    <dt><tt>--with-abi-version</tt>
+    <dt><a href=
+    "@HOMEPAGE@/INSTALL.html#option:disable-setuid-environ"><tt>--disable-setuid-environ</tt></a>
     </dt>
 
     <dd>
-      <p>add ABI 7 defaults to configure script.</p>
+      <p>Compile with environment restriction, so certain
+      environment variables are not available when running via a
+      setuid/setgid application. These are (for example
+      <tt>$TERMINFO</tt>) those that allow the search path for the
+      terminfo or termcap entry to be customized.</p>
+
+      <p>A setuid/setgid application inherits its environment
+      variables from the current user, in contrast to sudo which
+      may limit the environment variables that ncurses uses.</p>
     </dd>
 
-    <dt><tt>--with-caps</tt>
+    <dt><a href=
+    "@HOMEPAGE@/INSTALL.html#option:enable-check-size"><tt>--enable-check-size</tt></a>
     </dt>
 
     <dd>
-      <p>add warning in configure script if file specified for
-      &ldquo;<tt>--with-caps</tt>&rdquo; does not exist.</p>
+      <p>Compile-in feature to detect screensize for terminals
+      which do not advertise their screensize, e.g., serial
+      terminals.</p>
     </dd>
 
-    <dt><tt>--with-manpage-format</tt>
+    <dt><a href=
+    "@HOMEPAGE@/INSTALL.html#option:with-abi-altered"><tt>--with-abi-altered=<em>NUM</em></tt></a>
     </dt>
 
     <dd>
-      <p>bzip2 and xz compression are now supported</p>
+      <p>Override the displayed (rather than compiled-in) ABI. Only
+      packagers who have created configurations where the ABI
+      differs from ncurses should be interested in this option.</p>
     </dd>
 
-    <dt><tt>--with-xterm-kbs</tt>
+    <dt><a href=
+    "@HOMEPAGE@/INSTALL.html#option:with-strip-program"><tt>--with-strip-program=<em>XXX</em></tt></a>
     </dt>
 
     <dd>
-      <p>add check/warning in configure script if option
-      &ldquo;<tt>--with-xterm-kbs</tt>&rdquo; is missing or
-      inconsistent</p>
+      <p>When stripping executables during install, use the
+      specified program rather than &ldquo;strip&rdquo; overriding
+      program chosen by the install program for stripping
+      executables.</p>
+    </dd>
+  </dl>
+
+  <p>These configure options are modified:</p>
+
+  <dl>
+    <dt><a href=
+    "@HOMEPAGE@/INSTALL.html#option:with-pkg-config-libdir"><tt>--with-pkg-config-libdir[=<em>DIR</em>]</tt></a>
+    </dt>
+
+    <dd>
+      <p>The optional <em>DIR</em> parameter can now be
+      &ldquo;auto&rdquo; to automatically use pkg-config's library
+      directory.</p>
+
+      <p>The default is <tt>$(libdir)</tt>.</p>
+    </dd>
+
+    <dt><a href=
+    "@HOMEPAGE@/INSTALL.html#option:with-xterm-kbs"><tt>--with-xterm-kbs[=<em>XXX</em>]</tt></a>
+    </dt>
+
+    <dd>
+      <p>The default is &ldquo;auto&rdquo; which tells the
+      configure script to choose BS or DEL according to platform
+      defaults.</p>
     </dd>
   </dl>
 
 
   <ul>
     <li>
-      <p>amend configure option's auto-search to account for
-      systems where none of the directories known to
-      <em>pkg-config</em> exist</p>
+      <p>add/use configure check for <code>clock_gettime</code>, to
+      supersede <code>gettimeofday</code>.</p>
     </li>
 
     <li>
-      <p>corrected regex needed for older <em>pkg-config</em> used
-      in Solaris 10</p>
+      <p>modify configure script check for pkg-config library
+      directory to take into account an older version 0.15.0 which
+      used PKG_CONFIG_PATH but not PKG_CONFIG_LIBDIR</p>
     </li>
 
     <li>
-      <p>improve handling of <tt>--with-pkg-config-libdir</tt>
-      option, allowing for the case where either
-      <tt>$PKG_CONFIG_LIBDIR</tt> or the option value has a
-      colon-separated list of directories</p>
+      <p>allow for MinGW32-/64-bit configurations to use
+      _DEFAULT_SOURCE</p>
     </li>
 
     <li>
-      <p>if the <tt>--with-pkg-config-libdir</tt> option is not
-      given, use <tt>${libdir}/pkgconfig</tt> as a default</p>
+      <p>modify CF_XOPEN_SOURCE macro's amend default case to avoid
+      undefining _XOPEN_SOURCE if _POSIX_C_SOURCE is defined</p>
     </li>
 
     <li>
-      <p>improve search-path check for <em>pkg-config</em>, e.g.,
-      for Debian testing which installs <em>pkg-config</em> with
-      architecture-prefixes.</p>
+      <p>updated configure script macro CF_XOPEN_SOURCE, for
+      uClibc-ng</p>
     </li>
 
     <li>
-      <p>build-fix for cross-compiling to MingW, conditionally add
-      <tt>-lssp</tt></p>
+      <p>modify version-check for gcc/g++, now works for msys2</p>
     </li>
 
     <li>
-      <p>improve configure check for <tt>getttynam</tt></p>
+      <p>build-fixes related to configure-options and/or
+      platform:</p>
+
+      <ul>
+        <li>fix for <tt>--enable-fvisibility</tt></li>
+
+        <li>fix for unusual values of
+        <tt>--with-rel-version</tt></li>
+
+        <li>fix for unusual values of
+        <tt>--with-abi-version</tt></li>
+
+        <li>fix for <tt>--disable-tcap-names</tt></li>
+
+        <li>fix for termcap in <tt>nc_access.h</tt></li>
+      </ul>
     </li>
 
     <li>
-      <p>fixes to build with <em>dietlibc</em>:</p>
+      <p>other configure-script improvements:</p>
 
       <ul>
-        <li>add configure check for <tt>fpathconf</tt></li>
+        <li>recent msys2 headers work with
+        <tt>_DEFAULT_SOURCE</tt>; amend check</li>
 
-        <li>add configure check for math sine/cosine, needed in
-        test/tclock, and eliminate <tt>pow()</tt> from
-        test/hanoi</li>
+        <li>use <tt>$ac_includes_default</tt> in most cases where
+        stdlib.h should work</li>
 
-        <li>use <tt>wcsnlen</tt> as an alternative to
-        <tt>wmemchr</tt> if it is not found</li>
+        <li>use <tt>#error</tt> consistently vs "make an
+        error"</li>
+
+        <li>add configure macro for <tt>gettimeofday</tt> vs inline
+        check</li>
       </ul>
     </li>
+  </ul>
 
+  <p>Here are some of the other portability fixes:</p>
+
+  <ul>
     <li>
-      <p>modify configure macro <tt>CF_BUILD_CC</tt> to check if
-      the build-compiler works, rather than that it is different
-      from the cross-compiler, e.g., to accommodate a compiler
-      which can be used for either purpose with different flags</p>
+      <p>modify configure scripts/makefiles to omit
+      <tt>KEY_RESIZE</tt> if the corresponding <tt>SIGWINCH</tt>
+      feature is disabled</p>
     </li>
 
     <li>
-      <p>modify configure/scripts to work around interference by
-      GNU grep 3.8</p>
+      <p>increase <tt>MB_CUR_MAX</tt> to 16, matching glibc's
+      <tt>MB_LEN_MAX</tt></p>
     </li>
-  </ul>
 
-  <p>Here are some of the other portability fixes:</p>
+    <li>
+      <p>add BSD <tt>erase2</tt> to characters handled by
+      tset/reset</p>
+    </li>
 
-  <ul>
     <li>
-      <p>change <tt>man_db.renames</tt> to template, to handle
-      <em>ncurses*-config</em> script with the
-      <tt>--extra-suffix</tt> configure option.</p>
+      <p>use <tt>getauxval</tt> when available, to improve
+      <tt>setuid</tt>/<tt>setgid</tt> checks</p>
     </li>
 
     <li>
-      <p>update <tt>CF_XOPEN_SOURCE</tt> macro, adding variants
-      &ldquo;gnueabi" and &ldquo;gnueabihf" to get
-      <tt>_DEFAULT_SOURCE</tt> special case, as well as adding GNU
-      libc suffixes for &ldquo;abi64&rdquo;, &ldquo;abin32&rdquo;,
-      &ldquo;x32&rdquo; to distinguish it from other libc
-      flavors.</p>
+      <p>set <tt>dwShareMode</tt> in calls to
+      <tt>CreateConsoleScreenBuffer</tt></p>
     </li>
 
     <li>
-      <p>work around <em>musl</em>'s nonstandard use of feature
-      test macros by adding a definition for
-      <tt>NCURSES_WIDECHAR</tt> to the generated &ldquo;.pc&rdquo;
-      and <em><tt>*-config</tt></em> files.</p>
+      <p>use <tt>CreateFile</tt> with "<tt>CONIN$</tt>",
+      "<tt>CONOUT$</tt>" rather than <tt>GetStdHandle</tt> to
+      obtain a handle on the actual console, avoiding redirection
+      in the MinGW/Win32 configurations</p>
     </li>
 
     <li>
-      <p>use &ldquo;<tt>command -v</tt>&rdquo; rather than
-      &ldquo;<tt>type</tt>&rdquo; in <tt>Ada95/gen/Makefile.in</tt>
-      to fix a portability issue.</p>
+      <p>modify MinGW driver to return <tt>KEY_BACKSPACE</tt> when
+      an unmodified <tt>VK_BACK</tt> virtual key is entered</p>
+    </li>
+
+    <li>
+      <p>modify MinGW configuration to provide for running in
+      MSYS/MSYS2 shells, assuming ConPTY support</p>
     </li>
   </ul>
 
     </li>
 
     <li>
-      <p><span class="main-name">ncurses</span> supports all of the
-      for SVr4 curses features including keyboard mapping, color,
-      forms-drawing with ACS characters, and automatic recognition
+      <p><span class="main-name">ncurses</span> supports the
+      features of SVr4 curses including keyboard mapping, color,
+      form drawing with ACS characters, and automatic recognition
       of keypad and function keys.</p>
     </li>
 
     <li>
-      <p><span class="main-name">ncurses</span> provides these SVr4
-      add-on libraries (not part of X/Open Curses):</p>
+      <p><span class="main-name">ncurses</span> provides work-alike
+      replacements of SVr4 supplemental libraries based on curses,
+      but which were not specified by X/Open Curses:</p>
 
       <ul>
         <li>
-          <p>the panels library, supporting a stack of windows with
-          backing store.</p>
+          <p>the panel library, supporting a stack of windows with
+          backing store</p>
         </li>
 
         <li>
-          <p>the menus library, supporting a uniform but flexible
-          interface for menu programming.</p>
+          <p>the menu library, supporting a uniform but flexible
+          interface for menu programming</p>
         </li>
 
         <li>
           <p>the form library, supporting data collection through
-          on-screen forms.</p>
+          on-screen forms</p>
         </li>
       </ul>
     </li>
       <ul>
         <li>
           <p><span class="main-name">ncurses</span> supports
-          user-defined capabilities which it can see, but which are
+          user-defined capabilities that it can see, but which are
           hidden from SVr4 curses applications using the
           <em>same</em> terminal database.</p>
         </li>
   <ul>
     <li>
       <p>The API is 8-bit clean and base-level conformant with the
-      X/OPEN curses specification, XSI curses (that is, it
-      implements all <em>BASE</em> level features, and most
+      X/Open Curses specification, XSI curses (that is, it
+      implements all <em>BASE</em> level features, and almost all
       <em>EXTENDED</em> features). It includes many function calls
       not supported under SVr4 curses (but portability of all calls
       is documented so you can use the SVr4 subset only).</p>
     </li>
 
     <li>
-      <p>The library meets the XSI requirement that every macro
-      entry point has a corresponding function which may be linked
-      (and will be prototype-checked) if the macro definition is
-      disabled with <code>#undef</code>.</p>
+      <p>X/Open Curses permits most functions it specifies to be
+      made available as macros as well. ncurses does this</p>
+
+      <ul>
+        <li>to improve performance, e.g., for operations composed
+        of simpler functions such as cursor movement following by
+        adding text to the screen,</li>
+
+        <li>to simplify the implementation by reusing functions
+        which use common parameters, e.g., the standard screen
+        <code>stdscr</code>, and</li>
+
+        <li>to provide functions that return values via their
+        parameters</li>
+      </ul>
+
+      <p>Except for the last case, ncurses provides a non-macro
+      implementation of the function. If the macro definition is
+      disabled with <code>#undef</code>, or by defining
+      <code>NCURSES_NOMACROS</code> the function may be linked (and
+      its calls will be checked against the prototype).</p>
     </li>
 
     <li>
         <p>New vi uses ncurses.</p>
 
         <p><a href=
-        "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br>
+        "https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page">
+        https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page</a><br>
 
         </p>
       </dd>
         <p>terminal emulator for serial modem connections</p>
 
         <p><a href=
-        "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p>
+        "https://salsa.debian.org/minicom-team/minicom">https://salsa.debian.org/minicom-team/minicom</a></p>
       </dd>
 
       <dt><span class="part-name">mosh</span>
 
   <blockquote>
     <p><a href=
-    "https://invisible-island.net/archives/ncurses/6.3/">https://invisible-island.net/archives/ncurses/6.3/</a>
+    "https://invisible-island.net/archives/ncurses/6.4/">https://invisible-island.net/archives/ncurses/6.4/</a>
     and<br>
     <a href=
-    "https://invisible-mirror.net/archives/ncurses/6.3/">https://invisible-mirror.net/archives/ncurses/6.3/</a>&nbsp;.</p>
+    "https://invisible-mirror.net/archives/ncurses/6.4/">https://invisible-mirror.net/archives/ncurses/6.4/</a>&nbsp;.</p>
   </blockquote>
 
   <p>There is an archive of the mailing list here:</p>
 
   <blockquote>
     <p><a href=
-    "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
-    (also <a href=
-    "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
+    "https://lists.gnu.org/archive/html/bug-ncurses">https://lists.gnu.org/archive/html/bug-ncurses</a>&nbsp;.</p>
   </blockquote>
 
   <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
   <a href="http://www.catb.org/~esr/terminfo/">Eric
   Raymond</a>&nbsp;. Unlike the older version, the termcap and
   terminfo data are provided in the same file, which also provides
-  several user-definable extensions beyond the X/Open
+  several user-definable extensions beyond the X/Open Curses
   specification.</p>
 
   <p>You can find lots of information on terminal-related topics
-  not covered in the terminfo file at <a href=
-  "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
-  Richard Shuford's archive</a>&nbsp;. The collection of computer
-  manuals at <a href=
+  not covered in the terminfo file in <a href=
+  "https://shuford.invisible-island.net/">Richard Shuford's
+  archive</a> (<a href=
+  "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">original</a>).
+  The collection of computer manuals at <a href=
   "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been
   useful.</p>
 
index b0dd4ab0dc987294279a97c5f530938327339700..7b898cefff7d78e88c9d7d1ec7ad2d191c9137ae 100644 (file)
@@ -1,6 +1,6 @@
 // * this is for making emacs happy: -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright 2019-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2005,2012 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -36,7 +36,7 @@
 #include "cursslk.h"
 #include "cursesapp.h"
 
-MODULE_ID("$Id: cursslk.cc,v 1.20 2022/02/26 17:57:23 tom Exp $")
+MODULE_ID("$Id: cursslk.cc,v 1.21 2023/02/25 23:36:06 tom Exp $")
 
 Soft_Label_Key_Set::Soft_Label_Key&
   Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text)
@@ -58,7 +58,9 @@ void Soft_Label_Key_Set::init()
 {
   if (num_labels > 12)
       num_labels = 12;
-  slk_array = new Soft_Label_Key[num_labels];
+  if (num_labels < 0)
+      num_labels = 0;
+  slk_array = new Soft_Label_Key[num_labels + 1];
   for(int i=0; i < num_labels; i++) {
     slk_array[i].num = i+1;
   }
index 195e98a0d6de9bcc44d190ef2d870e307a6ae138..7d300ff38b4e43015ce6dfef48b7d3ad7b20092e 100644 (file)
@@ -1,6 +1,6 @@
 // * This makes emacs happy -*-Mode: C++;-*-
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2012,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -36,7 +36,7 @@
  *   Demo code for NCursesMenu and NCursesForm written by
  *   Juergen Pfeifer
  *
- * $Id: demo.cc,v 1.50 2021/09/04 10:52:55 tom Exp $
+ * $Id: demo.cc,v 1.52 2023/08/26 19:14:14 tom Exp $
  */
 
 #include "internal.h"
@@ -46,6 +46,7 @@
 
 #if (defined(_WIN32) || defined(_WIN64))
 #undef KEY_EVENT
+#undef sleep
 #define sleep(n) Sleep(n)
 #else
 extern "C" unsigned int sleep(unsigned int);
@@ -168,7 +169,7 @@ public:
 //
 // -------------------------------------------------------------------------
 //
-template<class T> class MyAction : public NCursesUserItem<T>
+template<class T> class NCURSES_CXX_IMPEXP MyAction : public NCursesUserItem<UserData>
 {
 public:
   MyAction (const char* p_name,
@@ -185,9 +186,6 @@ public:
   }
 };
 
-template class MyAction<UserData>;
-template class NCURSES_CXX_IMPEXP NCursesUserItem<UserData>;
-
 class QuitItem : public NCursesMenuItem
 {
 public:
index a419d8643b62a4d2df58240785bc9b7b81c3ed52..f47d666d340b88e76f35ca2c30ecdb82c2e96d2d 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2022 Free Software Foundation, Inc.
+#   Copyright 1992-2023 Free Software Foundation, Inc.
 
 # shellcheck disable=SC2006,SC2268 # see below for rationale
 
-timestamp='2022-08-01'
+timestamp='2023-10-19'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -47,7 +47,7 @@ me=`echo "$0" | sed -e 's,.*/,,'`
 usage="\
 Usage: $0 [OPTION]
 
-Output the configuration name of the system \`$me' is run on.
+Output the configuration name of the system '$me' is run on.
 
 Options:
   -h, --help         print this help, then exit
@@ -60,13 +60,13 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2022 Free Software Foundation, Inc.
+Copyright 1992-2023 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 
 help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
 
 # Parse command line
 while test $# -gt 0 ; do
@@ -102,8 +102,8 @@ GUESS=
 # temporary files to be created and, as you can see below, it is a
 # headache to deal with in a portable fashion.
 
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
+# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
+# use 'HOST_CC' if defined, but it is deprecated.
 
 # Portable tmp directory creation inspired by the Autoconf team.
 
@@ -155,6 +155,9 @@ Linux|GNU|GNU/*)
 
        set_cc_for_build
        cat <<-EOF > "$dummy.c"
+       #if defined(__ANDROID__)
+       LIBC=android
+       #else
        #include <features.h>
        #if defined(__UCLIBC__)
        LIBC=uclibc
@@ -162,6 +165,8 @@ Linux|GNU|GNU/*)
        LIBC=dietlibc
        #elif defined(__GLIBC__)
        LIBC=gnu
+       #elif defined(__LLVM_LIBC__)
+       LIBC=llvm
        #else
        #include <stdarg.h>
        /* First heuristic to detect musl libc.  */
@@ -169,6 +174,7 @@ Linux|GNU|GNU/*)
        LIBC=musl
        #endif
        #endif
+       #endif
        EOF
        cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
        eval "$cc_set_libc"
@@ -459,7 +465,7 @@ case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
                UNAME_RELEASE=`uname -v`
                ;;
        esac
-       # Japanese Language versions have a version number like `4.1.3-JL'.
+       # Japanese Language versions have a version number like '4.1.3-JL'.
        SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
        GUESS=sparc-sun-sunos$SUN_REL
        ;;
@@ -904,7 +910,7 @@ EOF
        fi
        ;;
     *:FreeBSD:*:*)
-       UNAME_PROCESSOR=`/usr/bin/uname -p`
+       UNAME_PROCESSOR=`uname -p`
        case $UNAME_PROCESSOR in
            amd64)
                UNAME_PROCESSOR=x86_64 ;;
@@ -966,11 +972,37 @@ EOF
        GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
        GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
        ;;
+    x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
+       GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
+       ;;
+    *:[Mm]anagarm:*:*)
+       GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
+       ;;
     *:Minix:*:*)
        GUESS=$UNAME_MACHINE-unknown-minix
        ;;
     aarch64:Linux:*:*)
-       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       set_cc_for_build
+       CPU=$UNAME_MACHINE
+       LIBCABI=$LIBC
+       if test "$CC_FOR_BUILD" != no_compiler_found; then
+           ABI=64
+           sed 's/^        //' << EOF > "$dummy.c"
+           #ifdef __ARM_EABI__
+           #ifdef __ARM_PCS_VFP
+           ABI=eabihf
+           #else
+           ABI=eabi
+           #endif
+           #endif
+EOF
+           cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+           eval "$cc_set_abi"
+           case $ABI in
+               eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
+           esac
+       fi
+       GUESS=$CPU-unknown-linux-$LIBCABI
        ;;
     aarch64_be:Linux:*:*)
        UNAME_MACHINE=aarch64_be
@@ -1036,6 +1068,15 @@ EOF
     k1om:Linux:*:*)
        GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
        ;;
+    kvx:Linux:*:*)
+       GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+       ;;
+    kvx:cos:*:*)
+       GUESS=$UNAME_MACHINE-unknown-cos
+       ;;
+    kvx:mbr:*:*)
+       GUESS=$UNAME_MACHINE-unknown-mbr
+       ;;
     loongarch32:Linux:*:* | loongarch64:Linux:*:*)
        GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
        ;;
@@ -1191,7 +1232,7 @@ EOF
        GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
        ;;
     i*86:OS/2:*:*)
-       # If we were able to find `uname', then EMX Unix compatibility
+       # If we were able to find 'uname', then EMX Unix compatibility
        # is probably installed.
        GUESS=$UNAME_MACHINE-pc-os2-emx
        ;;
@@ -1332,7 +1373,7 @@ EOF
                GUESS=ns32k-sni-sysv
        fi
        ;;
-    PENTIUM:*:4.0*:*)  # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+    PENTIUM:*:4.0*:*)  # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
                        # says <Richard.M.Bartel@ccMail.Census.GOV>
        GUESS=i586-unisys-sysv4
        ;;
@@ -1554,6 +1595,9 @@ EOF
     *:Unleashed:*:*)
        GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
        ;;
+    *:Ironclad:*:*)
+       GUESS=$UNAME_MACHINE-unknown-ironclad
+       ;;
 esac
 
 # Do we have a guess based on uname results?
index fbaa37f2352dd0d51dd2d57b8ee3d41733934b93..e4c4e09b6540ab06c90b3e8bdc75b92d28b77867 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2022 Free Software Foundation, Inc.
+#   Copyright 1992-2023 Free Software Foundation, Inc.
 
 # shellcheck disable=SC2006,SC2268 # see below for rationale
 
-timestamp='2022-08-01'
+timestamp='2023-12-02'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -76,13 +76,13 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2022 Free Software Foundation, Inc.
+Copyright 1992-2023 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
 
 help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
 
 # Parse command line
 while test $# -gt 0 ; do
@@ -130,7 +130,7 @@ IFS=$saved_IFS
 # Separate into logical components for further validation
 case $1 in
        *-*-*-*-*)
-               echo Invalid configuration \`"$1"\': more than four components >&2
+               echo "Invalid configuration '$1': more than four components" >&2
                exit 1
                ;;
        *-*-*-*)
@@ -145,7 +145,8 @@ case $1 in
                        nto-qnx* | linux-* | uclinux-uclibc* \
                        | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
                        | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
+                       | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \
+                       | windows-* )
                                basic_machine=$field1
                                basic_os=$maybe_os
                                ;;
@@ -943,7 +944,7 @@ $basic_machine
 EOF
                IFS=$saved_IFS
                ;;
-       # We use `pc' rather than `unknown'
+       # We use 'pc' rather than 'unknown'
        # because (1) that's what they normally are, and
        # (2) the word "unknown" tends to confuse beginning users.
        i*86 | x86_64)
@@ -1075,7 +1076,7 @@ case $cpu-$vendor in
        pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
                cpu=i586
                ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+       pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
                cpu=i686
                ;;
        pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
@@ -1180,7 +1181,7 @@ case $cpu-$vendor in
                case $cpu in
                        1750a | 580 \
                        | a29k \
-                       | aarch64 | aarch64_be \
+                       | aarch64 | aarch64_be | aarch64c | arm64ec \
                        | abacus \
                        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
                        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
@@ -1199,12 +1200,14 @@ case $cpu-$vendor in
                        | d10v | d30v | dlx | dsp16xx \
                        | e2k | elxsi | epiphany \
                        | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
+                       | javascript \
                        | h8300 | h8500 \
                        | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
                        | hexagon \
                        | i370 | i*86 | i860 | i960 | ia16 | ia64 \
                        | ip2k | iq2000 \
                        | k1om \
+                       | kvx \
                        | le32 | le64 \
                        | lm32 \
                        | loongarch32 | loongarch64 \
@@ -1213,36 +1216,13 @@ case $cpu-$vendor in
                        | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
                        | m88110 | m88k | maxq | mb | mcore | mep | metag \
                        | microblaze | microblazeel \
-                       | mips | mipsbe | mipseb | mipsel | mipsle \
-                       | mips16 \
-                       | mips64 | mips64eb | mips64el \
-                       | mips64octeon | mips64octeonel \
-                       | mips64orion | mips64orionel \
-                       | mips64r5900 | mips64r5900el \
-                       | mips64vr | mips64vrel \
-                       | mips64vr4100 | mips64vr4100el \
-                       | mips64vr4300 | mips64vr4300el \
-                       | mips64vr5000 | mips64vr5000el \
-                       | mips64vr5900 | mips64vr5900el \
-                       | mipsisa32 | mipsisa32el \
-                       | mipsisa32r2 | mipsisa32r2el \
-                       | mipsisa32r3 | mipsisa32r3el \
-                       | mipsisa32r5 | mipsisa32r5el \
-                       | mipsisa32r6 | mipsisa32r6el \
-                       | mipsisa64 | mipsisa64el \
-                       | mipsisa64r2 | mipsisa64r2el \
-                       | mipsisa64r3 | mipsisa64r3el \
-                       | mipsisa64r5 | mipsisa64r5el \
-                       | mipsisa64r6 | mipsisa64r6el \
-                       | mipsisa64sb1 | mipsisa64sb1el \
-                       | mipsisa64sr71k | mipsisa64sr71kel \
-                       | mipsr5900 | mipsr5900el \
-                       | mipstx39 | mipstx39el \
+                       | mips* \
                        | mmix \
                        | mn10200 | mn10300 \
                        | moxie \
                        | mt \
                        | msp430 \
+                       | nanomips* \
                        | nds32 | nds32le | nds32be \
                        | nfp \
                        | nios | nios2 | nios2eb | nios2el \
@@ -1274,6 +1254,7 @@ case $cpu-$vendor in
                        | ubicom32 \
                        | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
                        | vax \
+                       | vc4 \
                        | visium \
                        | w65 \
                        | wasm32 | wasm64 \
@@ -1285,7 +1266,7 @@ case $cpu-$vendor in
                                ;;
 
                        *)
-                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+                               echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
                                exit 1
                                ;;
                esac
@@ -1306,11 +1287,12 @@ esac
 
 # Decode manufacturer-specific aliases for certain operating systems.
 
-if test x$basic_os != x
+if test x"$basic_os" != x
 then
 
 # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
 # set os.
+obj=
 case $basic_os in
        gnu/linux*)
                kernel=linux
@@ -1341,6 +1323,10 @@ EOF
                kernel=linux
                os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
                ;;
+       managarm*)
+               kernel=managarm
+               os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
+               ;;
        *)
                kernel=
                os=$basic_os
@@ -1506,10 +1492,16 @@ case $os in
                        os=eabi
                        ;;
                    *)
-                       os=elf
+                       os=
+                       obj=elf
                        ;;
                esac
                ;;
+       aout* | coff* | elf* | pe*)
+               # These are machine code file formats, not OSes
+               obj=$os
+               os=
+               ;;
        *)
                # No normalization, but not necessarily accepted, that comes below.
                ;;
@@ -1528,12 +1520,15 @@ else
 # system, and we'll never get to this point.
 
 kernel=
+obj=
 case $cpu-$vendor in
        score-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        spu-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        *-acorn)
                os=riscix1.2
@@ -1543,28 +1538,35 @@ case $cpu-$vendor in
                os=gnu
                ;;
        arm*-semi)
-               os=aout
+               os=
+               obj=aout
                ;;
        c4x-* | tic4x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        c8051-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        clipper-intergraph)
                os=clix
                ;;
        hexagon-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        tic54x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        tic55x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        tic6x-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        # This must come before the *-dec entry.
        pdp10-*)
@@ -1586,19 +1588,24 @@ case $cpu-$vendor in
                os=sunos3
                ;;
        m68*-cisco)
-               os=aout
+               os=
+               obj=aout
                ;;
        mep-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        mips*-cisco)
-               os=elf
+               os=
+               obj=elf
                ;;
-       mips*-*)
-               os=elf
+       mips*-*|nanomips*-*)
+               os=
+               obj=elf
                ;;
        or32-*)
-               os=coff
+               os=
+               obj=coff
                ;;
        *-tti)  # must be before sparc entry or we get the wrong os.
                os=sysv3
@@ -1607,7 +1614,8 @@ case $cpu-$vendor in
                os=sunos4.1.1
                ;;
        pru-*)
-               os=elf
+               os=
+               obj=elf
                ;;
        *-be)
                os=beos
@@ -1688,10 +1696,12 @@ case $cpu-$vendor in
                os=uxpv
                ;;
        *-rom68k)
-               os=coff
+               os=
+               obj=coff
                ;;
        *-*bug)
-               os=coff
+               os=
+               obj=coff
                ;;
        *-apple)
                os=macos
@@ -1709,10 +1719,11 @@ esac
 
 fi
 
-# Now, validate our (potentially fixed-up) OS.
+# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
+
 case $os in
        # Sometimes we do "kernel-libc", so those need to count as OSes.
-       musl* | newlib* | relibc* | uclibc*)
+       llvm* | musl* | newlib* | relibc* | uclibc*)
                ;;
        # Likewise for "kernel-abi"
        eabi* | gnueabi*)
@@ -1720,6 +1731,9 @@ case $os in
        # VxWorks passes extra cpu info in the 4th filed.
        simlinux | simwindows | spe)
                ;;
+       # See `case $cpu-$os` validation below
+       ghcjs)
+               ;;
        # Now accept the basic system types.
        # The portable systems comes first.
        # Each alternative MUST end in a * to match a version number.
@@ -1728,7 +1742,7 @@ case $os in
             | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
             | sym* |  plan9* | psp* | sim* | xray* | os68k* | v88r* \
             | hiux* | abug | nacl* | netware* | windows* \
-            | os9* | macos* | osx* | ios* \
+            | os9* | macos* | osx* | ios* | tvos* | watchos* \
             | mpw* | magic* | mmixware* | mon960* | lnews* \
             | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
             | aos* | aros* | cloudabi* | sortix* | twizzler* \
@@ -1737,11 +1751,11 @@ case $os in
             | mirbsd* | netbsd* | dicos* | openedition* | ose* \
             | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \
             | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
-            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+            | bosx* | nextstep* | cxux* | oabi* \
+            | ptx* | ecoff* | winnt* | domain* | vsta* \
             | udi* | lites* | ieee* | go32* | aux* | hcos* \
             | chorusrdb* | cegcc* | glidix* | serenity* \
-            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+            | cygwin* | msys* | moss* | proelf* | rtems* \
             | midipix* | mingw32* | mingw64* | mint* \
             | uxpv* | beos* | mpeix* | udk* | moxiebox* \
             | interix* | uwin* | mks* | rhapsody* | darwin* \
@@ -1754,49 +1768,116 @@ case $os in
             | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
             | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
             | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
-            | fiwix* )
+            | fiwix* | mlibc* | cos* | mbr* | ironclad* )
                ;;
        # This one is extra strict with allowed versions
        sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
                # Don't forget version if it is 3.2v4 or newer.
                ;;
+       # This refers to builds using the UEFI calling convention
+       # (which depends on the architecture) and PE file format.
+       # Note that this is both a different calling convention and
+       # different file format than that of GNU-EFI
+       # (x86_64-w64-mingw32).
+       uefi)
+               ;;
        none)
                ;;
+       kernel* | msvc* )
+               # Restricted further below
+               ;;
+       '')
+               if test x"$obj" = x
+               then
+                       echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
+               fi
+               ;;
+       *)
+               echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
+               exit 1
+               ;;
+esac
+
+case $obj in
+       aout* | coff* | elf* | pe*)
+               ;;
+       '')
+               # empty is fine
+               ;;
        *)
-               echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+               echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we handle the constraint that a (synthetic) cpu and os are
+# valid only in combination with each other and nowhere else.
+case $cpu-$os in
+       # The "javascript-unknown-ghcjs" triple is used by GHC; we
+       # accept it here in order to tolerate that, but reject any
+       # variations.
+       javascript-ghcjs)
+               ;;
+       javascript-* | *-ghcjs)
+               echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
                exit 1
                ;;
 esac
 
 # As a final step for OS-related things, validate the OS-kernel combination
 # (given a valid OS), if there is a kernel.
-case $kernel-$os in
-       linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \
-                  | linux-musl* | linux-relibc* | linux-uclibc* )
+case $kernel-$os-$obj in
+       linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
+                   | linux-mlibc*- | linux-musl*- | linux-newlib*- \
+                   | linux-relibc*- | linux-uclibc*- )
+               ;;
+       uclinux-uclibc*- )
+               ;;
+       managarm-mlibc*- | managarm-kernel*- )
                ;;
-       uclinux-uclibc* )
+       windows*-msvc*-)
                ;;
-       -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* )
+       -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
+                   | -uclibc*- )
                # These are just libc implementations, not actual OSes, and thus
                # require a kernel.
-               echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+               echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
                exit 1
                ;;
-       kfreebsd*-gnu* | kopensolaris*-gnu*)
+       -kernel*- )
+               echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
+               exit 1
                ;;
-       vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+       *-kernel*- )
+               echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
+               exit 1
                ;;
-       nto-qnx*)
+       *-msvc*- )
+               echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
+               exit 1
                ;;
-       os2-emx)
+       kfreebsd*-gnu*- | kopensolaris*-gnu*-)
+               ;;
+       vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
+               ;;
+       nto-qnx*-)
+               ;;
+       os2-emx-)
                ;;
-       *-eabi* | *-gnueabi*)
+       *-eabi*- | *-gnueabi*-)
                ;;
-       -*)
+       none--*)
+               # None (no kernel, i.e. freestanding / bare metal),
+               # can be paired with an machine code file format
+               ;;
+       -*-)
                # Blank kernel with real OS is always fine.
                ;;
-       *-*)
-               echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+       --*)
+               # Blank kernel and OS with real machine code file format is always fine.
+               ;;
+       *-*-*)
+               echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
                exit 1
                ;;
 esac
@@ -1879,7 +1960,7 @@ case $vendor in
                ;;
 esac
 
-echo "$cpu-$vendor-${kernel:+$kernel-}$os"
+echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
 exit
 
 # Local variables:
index c6cf4a48a25b140fac42cb7f831db5895be07d93..488d93fc1c02dfecf80e3bf8b1d511bf01d072fb 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
 #! /bin/sh
-# From configure.in Revision: 1.755 .
+# From configure.in Revision: 1.779 .
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52.20230114.
+# Generated by Autoconf 2.52.20231210.
 #
 # Copyright 2003-2022,2023     Thomas E. Dickey
 # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
@@ -723,16 +723,15 @@ Optional Features:
   --disable-db-install    suppress install of terminal database
   --without-manpages      suppress install of manpages
   --without-progs         suppress build/install with programs (e.g., tic)
-  --without-tack          suppress build/install with tack program
   --without-tests         suppress build/install with test-programs
   --without-curses-h      install curses.h as ncurses.h only
-  --with-config-suffix=X  suffixes ncursesXX-config file
-  --with-pkg-config{=path} enable/disable use of pkg-config
-  --with-pkg-config-libdir=XXX use given directory for installing pc-files
+  --with-config-suffix=X  name ncurses*X-config file with X
+  --with-pkg-config[=CMD] enable/disable use of pkg-config and its name CMD
+  --with-pkg-config-libdir[=XXX] use given directory for installing pc-files
   --enable-pc-files       generate and install .pc files for pkg-config
-  --with-pc-suffix        suffixes pc-files
+  --with-pc-suffix[=XXX]  suffix pkg-config files with XXX
   --enable-mixed-case     tic should assume mixed-case filenames
-  --with-install-prefix   prefixes actual install-location ($DESTDIR)
+  --with-install-prefix=DESTDIR use DESTDIR as installation directory prefix
 Build-Tools Needed to Compile Temporary Applications for Cross-compiling:
   --with-build-cc=XXX     the build C compiler ($BUILD_CC)
   --with-build-cpp=XXX    the build C preprocessor ($BUILD_CPP)
@@ -753,10 +752,10 @@ Options to Specify the Libraries Built/Used:
   --with-ticlib           generate separate tic library
   --enable-rpath          use rpath option when generating shared libraries
   --disable-relink        relink shared libraries during install
-  --with-shlib-version=X  Specify rel or abi version for shared libs
-  --with-libtool-opts=XXX specify additional libtool options
-  --with-export-syms=XXX  limit exported symbols using libtool
-  --with-versioned-syms=X markup versioned symbols using ld
+  --with-shlib-version[={rel|abi}] use release or ABI version in shared library file names
+  --with-libtool-opts[=XXX] give libtool additional options XXX
+  --with-export-syms[=SYM-FILE] limit symbols exported by libtool to those listed in SYM-FILE
+  --with-versioned-syms[=MAP-FILE] version ELF shared library symbols per MAP-FILE
   --with-gpm              use Alessandro Rubini's GPM library
   --without-dlsym         do not use dlsym() to load GPM dynamically
   --with-pcre2            use PCRE2 for regular-expressions
@@ -765,7 +764,7 @@ Options to Specify the Libraries Built/Used:
   --disable-rpath-hack    don't add rpath options for additional libraries
   --disable-pkg-ldflags   disable extra LDFLAGS for package-scripts
 Fine-Tuning Your Configuration:
-  --with-extra-suffix=X   append extra suffix to header/library paths
+  --with-extra-suffix[=X] append extra suffix X to header/library paths
   --disable-overwrite     put headers in subdir, omit link to -lcurses
   --disable-database      do not use terminfo, only fallbacks/termcap
   --with-database=XXX     specify terminfo source to install
@@ -774,7 +773,7 @@ Fine-Tuning Your Configuration:
   --with-tic-path=XXX     specify path of tic for fallbacks
   --with-infocmp-path=XXX     specify path of infocmp for fallbacks
   --without-xterm-new     specify if xterm terminfo should be old version
-  --with-xterm-kbs=XXX    specify if xterm backspace sends BS or DEL
+  --with-xterm-kbs[=XXX]  specify if xterm backspace sends BS or DEL
   --with-terminfo-dirs=XXX specify list of terminfo directories (default: DATADIR/terminfo)
   --with-default-terminfo-dir=DIR default terminfo directory (default: DATADIR/terminfo)
   --disable-big-core      assume machine has little memory
@@ -786,23 +785,24 @@ Fine-Tuning Your Configuration:
   --disable-home-terminfo drop ~/.terminfo from terminfo search-path
   --disable-root-environ  restrict root use of ncurses environment variables
   --disable-root-access   restrict file-access when running setuid
+  --disable-setuid-environ restrict setuid use of ncurses environment variables
   --enable-symlinks       make tic use symbolic links not hard links
   --enable-broken_linker  compile with broken-linker support code
   --enable-bsdpad         recognize BSD-style prefix padding
-  --enable-widec          compile with wide-char/UTF-8 code
+  --disable-widec         compile without wide character and UTF-8 support
   --disable-lp64          allow chtype to be long (ignore _LP64)
   --disable-largefile     omit support for large files
   --disable-tparm-varargs compile tparm() without varargs interface
   --disable-tic-depends   link tic library without explicit dependency on ncurses library
   --enable-wattr-macros   enable wattr* macros
-  --with-x11-rgb=FILE   file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)
-  --with-bool=TYPE        override fallback type of bool variable
+  --with-x11-rgb=FILE     obtain X11 color definitions from FILE (default: EPREFIX/lib/X11/rgb.txt)
+  --with-bool=TYPE        fall back to TYPE for curses 'bool' typedef
   --with-caps=alt         compile with alternate Caps file
   --with-chtype=TYPE      override type of chtype
   --with-ospeed=TYPE      override type of ospeed variable
   --with-mmask-t=TYPE     override type of mmask_t
   --with-ccharw-max=XXX   override size CCHARW_MAX
-  --enable-signed-char    compile using signed Boolean's in term.h
+  --enable-signed-char    use signed chars for Boolean array in term.h
   --with-tparm-arg=TYPE   override parameter type of tparm
   --with-rcs-ids          compile-in RCS identifiers
 Options to Specify How Manpages are Installed:
@@ -829,13 +829,14 @@ Reentrant Code:
   --enable-pthreads-eintr enable EINTR in wgetch with pthreads
   --enable-weak-symbols   enable weak-symbols for pthreads
   --enable-reentrant      compile with reentrant code
-  --enable-opaque-curses  make curses WINDOW, etc., "opaque"
-  --enable-opaque-form    make form-library structures "opaque"
-  --enable-opaque-menu    make menu-library structures "opaque"
-  --enable-opaque-panel   make panel-library structures "opaque"
+  --disable-opaque-curses do not make WINDOW, etc., structures opaque
+  --disable-opaque-form   do not make form library structures opaque
+  --disable-opaque-menu   do not make menu library structures opaque
+  --disable-opaque-panel  do not make panel library structures opaque
   --with-wrap-prefix=XXX  override prefix used for public variables
 Development Code:
   --without-develop       disable development options
+  --enable-check-size     compile-in code to detect screensize of serial terminals
   --enable-hard-tabs      compile with hard-tabs code
   --enable-xmc-glitch     compile with support for xmc (magic-cookie)
 Experimental Code:
@@ -851,6 +852,7 @@ Experimental Code:
 Testing/development Options:
   --disable-echo          do not display "compiling" commands
   --disable-stripping     do not strip (debug info) installed executables
+  --with-strip-program=XX specify program to use when stripping in install
   --enable-warnings       test: turn on gcc compiler warnings
   --enable-stdnoreturn    enable C11 _Noreturn feature for diagnostics
   --enable-string-hacks   work around bogus compiler/loader warnings
@@ -864,15 +866,16 @@ Testing/development Options:
   --with-trace            test: add trace() function to all models of ncurses
   --disable-gnat-projects test: disable GNAT projects even if usable
 Ada Binding Options:
-  --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)
-  --with-ada-include=DIR  Ada includes are in DIR (default: PREFIX/share/ada/adainclude)
-  --with-ada-objects=DIR  Ada objects are in DIR (default: PREFIX/lib/ada/adalib)
-  --with-ada-sharedlib=soname build shared-library (requires GNAT projects)
-  --with-ada-libname=XXX  override default Ada library-name
-  --with-form-libname=XXX override form basename of library
-  --with-menu-libname=XXX override menu basename of library
-  --with-panel-libname=XXX override panel basename of library
-  --with-cxx-libname=XXX override ncurses++ basename of library
+  --with-ada-compiler[=CMD] use CMD as Ada95 compiler (default: gnatmake)
+  --with-ada-include=DIR  find Ada95 includes in DIR (default: PREFIX/share/ada/adainclude)
+  --with-ada-objects=DIR  find Ada95 objects in DIR (default: PREFIX/lib/ada/adalib)
+  --with-ada-sharedlib    build Ada95 shared library; requires GNAT project support
+  --with-ada-libname[=XXX]  use XXX as Ada95 library name
+Library basenames for pkgsrc:
+  --with-form-libname[=XXX] override ifelse(,,form,) basename of library
+  --with-menu-libname[=XXX] override ifelse(,,menu,) basename of library
+  --with-panel-libname[=XXX] override ifelse(,,panel,) basename of library
+  --with-cxx-libname[=XXX] override ifelse(ncurses++,,cxx,ncurses++) basename of library
 
 Some influential environment variables:
   CC          C compiler command
@@ -946,7 +949,7 @@ This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
-generated by GNU Autoconf 2.52.20230114.  Invocation command line was
+generated by GNU Autoconf 2.52.20231210.  Invocation command line was
 
   $ $0 $@
 
@@ -1070,7 +1073,7 @@ if test -z "$CONFIG_SITE"; then
 fi
 for ac_site_file in $CONFIG_SITE; do
   if test -r "$ac_site_file"; then
-    { echo "$as_me:1073: loading site script $ac_site_file" >&5
+    { echo "$as_me:1076: loading site script $ac_site_file" >&5
 echo "$as_me: loading site script $ac_site_file" >&6;}
     cat "$ac_site_file" >&5
     . "$ac_site_file"
@@ -1081,7 +1084,7 @@ if test -r "$cache_file"; then
   # Some versions of bash will fail to source /dev/null (special
   # files actually), so we avoid doing that.
   if test -f "$cache_file"; then
-    { echo "$as_me:1084: loading cache $cache_file" >&5
+    { echo "$as_me:1087: loading cache $cache_file" >&5
 echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . $cache_file;;
@@ -1089,7 +1092,7 @@ echo "$as_me: loading cache $cache_file" >&6;}
     esac
   fi
 else
-  { echo "$as_me:1092: creating cache $cache_file" >&5
+  { echo "$as_me:1095: creating cache $cache_file" >&5
 echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
@@ -1105,21 +1108,21 @@ for ac_var in `(set) 2>&1 |
   eval ac_new_val="\$ac_env_${ac_var}_value"
   case "$ac_old_set,$ac_new_set" in
     set,)
-      { echo "$as_me:1108: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+      { echo "$as_me:1111: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { echo "$as_me:1112: error: \`$ac_var' was not set in the previous run" >&5
+      { echo "$as_me:1115: error: \`$ac_var' was not set in the previous run" >&5
 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
-        { echo "$as_me:1118: error: \`$ac_var' has changed since the previous run:" >&5
+        { echo "$as_me:1121: error: \`$ac_var' has changed since the previous run:" >&5
 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-        { echo "$as_me:1120:   former value:  $ac_old_val" >&5
+        { echo "$as_me:1123:   former value:  $ac_old_val" >&5
 echo "$as_me:   former value:  $ac_old_val" >&2;}
-        { echo "$as_me:1122:   current value: $ac_new_val" >&5
+        { echo "$as_me:1125:   current value: $ac_new_val" >&5
 echo "$as_me:   current value: $ac_new_val" >&2;}
         ac_cache_corrupted=:
       fi;;
@@ -1138,9 +1141,9 @@ echo "$as_me:   current value: $ac_new_val" >&2;}
   fi
 done
 if "$ac_cache_corrupted"; then
-  { echo "$as_me:1141: error: changes in the environment can compromise the build" >&5
+  { echo "$as_me:1144: error: changes in the environment can compromise the build" >&5
 echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:1143: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+  { { echo "$as_me:1146: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1169,10 +1172,10 @@ esac
 echo "#! $SHELL" >conftest.sh
 echo  "exit 0"   >>conftest.sh
 chmod +x conftest.sh
-if { (echo "$as_me:1172: PATH=\".;.\"; conftest.sh") >&5
+if { (echo "$as_me:1175: PATH=\".;.\"; conftest.sh") >&5
   (PATH=".;."; conftest.sh) 2>&5
   ac_status=$?
-  echo "$as_me:1175: \$? = $ac_status" >&5
+  echo "$as_me:1178: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   ac_path_separator=';'
 else
@@ -1189,7 +1192,7 @@ for ac_prog in ggrep grep
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:1192: checking for $ac_word" >&5
+echo "$as_me:1195: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_GREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1204,7 +1207,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_GREP="$ac_prog"
-echo "$as_me:1207: found $ac_dir/$ac_word" >&5
+echo "$as_me:1210: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1212,10 +1215,10 @@ fi
 fi
 GREP=$ac_cv_prog_GREP
 if test -n "$GREP"; then
-  echo "$as_me:1215: result: $GREP" >&5
+  echo "$as_me:1218: result: $GREP" >&5
 echo "${ECHO_T}$GREP" >&6
 else
-  echo "$as_me:1218: result: no" >&5
+  echo "$as_me:1221: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1223,7 +1226,7 @@ fi
 done
 test -n "$GREP" || GREP=": "
 
-echo "$as_me:1226: checking for egrep" >&5
+echo "$as_me:1229: checking for egrep" >&5
 echo $ECHO_N "checking for egrep... $ECHO_C" >&6
 if test "${ac_cv_path_EGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1235,7 +1238,7 @@ else
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:1238: checking for $ac_word" >&5
+echo "$as_me:1241: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_EGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1252,7 +1255,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_EGREP="$ac_dir/$ac_word"
-   echo "$as_me:1255: found $ac_dir/$ac_word" >&5
+   echo "$as_me:1258: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -1263,10 +1266,10 @@ fi
 EGREP=$ac_cv_path_EGREP
 
 if test -n "$EGREP"; then
-  echo "$as_me:1266: result: $EGREP" >&5
+  echo "$as_me:1269: result: $EGREP" >&5
 echo "${ECHO_T}$EGREP" >&6
 else
-  echo "$as_me:1269: result: no" >&5
+  echo "$as_me:1272: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1274,12 +1277,12 @@ fi
 done
 test -n "$EGREP" || EGREP=": "
 
-     test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:1277: error: cannot find workable egrep" >&5
+     test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:1280: error: cannot find workable egrep" >&5
 echo "$as_me: error: cannot find workable egrep" >&2;}
    { (exit 1); exit 1; }; }
    fi
 fi
-echo "$as_me:1282: result: $ac_cv_path_EGREP" >&5
+echo "$as_me:1285: result: $ac_cv_path_EGREP" >&5
 echo "${ECHO_T}$ac_cv_path_EGREP" >&6
  EGREP="$ac_cv_path_EGREP"
 
@@ -1290,11 +1293,11 @@ cf_cv_abi_version=${NCURSES_MAJOR}
 cf_cv_abi_default=${NCURSES_MAJOR}
 cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
 cf_cv_timestamp=`date`
-echo "$as_me:1293: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_default ($cf_cv_timestamp)" >&5
+echo "$as_me:1296: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_default ($cf_cv_timestamp)" >&5
 echo "${ECHO_T}Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_default ($cf_cv_timestamp)" >&6
 
 if test -f "$srcdir/VERSION" ; then
-       echo "$as_me:1297: checking for package version" >&5
+       echo "$as_me:1300: checking for package version" >&5
 echo $ECHO_N "checking for package version... $ECHO_C" >&6
 
        # if there are not enough fields, cut returns the last one...
@@ -1306,39 +1309,39 @@ echo $ECHO_N "checking for package version... $ECHO_C" >&6
        VERSION="$cf_field1"
 
        VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'`
-       test -z "$VERSION_MAJOR" && { { echo "$as_me:1309: error: missing major-version" >&5
+       test -z "$VERSION_MAJOR" && { { echo "$as_me:1312: error: missing major-version" >&5
 echo "$as_me: error: missing major-version" >&2;}
    { (exit 1); exit 1; }; }
 
        VERSION_MINOR=`echo "$cf_field2" | sed -e 's/^[^.]*\.//' -e 's/-.*//'`
-       test -z "$VERSION_MINOR" && { { echo "$as_me:1314: error: missing minor-version" >&5
+       test -z "$VERSION_MINOR" && { { echo "$as_me:1317: error: missing minor-version" >&5
 echo "$as_me: error: missing minor-version" >&2;}
    { (exit 1); exit 1; }; }
 
-       echo "$as_me:1318: result: ${VERSION_MAJOR}.${VERSION_MINOR}" >&5
+       echo "$as_me:1321: result: ${VERSION_MAJOR}.${VERSION_MINOR}" >&5
 echo "${ECHO_T}${VERSION_MAJOR}.${VERSION_MINOR}" >&6
 
-       echo "$as_me:1321: checking for package patch date" >&5
+       echo "$as_me:1324: checking for package patch date" >&5
 echo $ECHO_N "checking for package patch date... $ECHO_C" >&6
        VERSION_PATCH=`echo "$cf_field3" | sed -e 's/^[^-]*-//'`
        case .$VERSION_PATCH in
        (.)
-               { { echo "$as_me:1326: error: missing patch-date $VERSION_PATCH" >&5
+               { { echo "$as_me:1329: error: missing patch-date $VERSION_PATCH" >&5
 echo "$as_me: error: missing patch-date $VERSION_PATCH" >&2;}
    { (exit 1); exit 1; }; }
                ;;
        (.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
                ;;
        (*)
-               { { echo "$as_me:1333: error: illegal patch-date $VERSION_PATCH" >&5
+               { { echo "$as_me:1336: error: illegal patch-date $VERSION_PATCH" >&5
 echo "$as_me: error: illegal patch-date $VERSION_PATCH" >&2;}
    { (exit 1); exit 1; }; }
                ;;
        esac
-       echo "$as_me:1338: result: $VERSION_PATCH" >&5
+       echo "$as_me:1341: result: $VERSION_PATCH" >&5
 echo "${ECHO_T}$VERSION_PATCH" >&6
 else
-       { { echo "$as_me:1341: error: did not find $srcdir/VERSION" >&5
+       { { echo "$as_me:1344: error: did not find $srcdir/VERSION" >&5
 echo "$as_me: error: did not find $srcdir/VERSION" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1346,19 +1349,19 @@ fi
 # show the actual data that we have for versions:
 test -n "$verbose" && echo "   ABI VERSION $VERSION" 1>&6
 
-echo "${as_me:-configure}:1349: testing ABI VERSION $VERSION ..." 1>&5
+echo "${as_me:-configure}:1352: testing ABI VERSION $VERSION ..." 1>&5
 
 test -n "$verbose" && echo "   VERSION_MAJOR $VERSION_MAJOR" 1>&6
 
-echo "${as_me:-configure}:1353: testing VERSION_MAJOR $VERSION_MAJOR ..." 1>&5
+echo "${as_me:-configure}:1356: testing VERSION_MAJOR $VERSION_MAJOR ..." 1>&5
 
 test -n "$verbose" && echo "   VERSION_MINOR $VERSION_MINOR" 1>&6
 
-echo "${as_me:-configure}:1357: testing VERSION_MINOR $VERSION_MINOR ..." 1>&5
+echo "${as_me:-configure}:1360: testing VERSION_MINOR $VERSION_MINOR ..." 1>&5
 
 test -n "$verbose" && echo "   VERSION_PATCH $VERSION_PATCH" 1>&6
 
-echo "${as_me:-configure}:1361: testing VERSION_PATCH $VERSION_PATCH ..." 1>&5
+echo "${as_me:-configure}:1364: testing VERSION_PATCH $VERSION_PATCH ..." 1>&5
 
        cf_PACKAGE=NCURSES
        PACKAGE=ncurses
@@ -1382,42 +1385,43 @@ test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0
 # Check whether --with-rel-version or --without-rel-version was given.
 if test "${with_rel_version+set}" = set; then
   withval="$with_rel_version"
-  { echo "$as_me:1385: WARNING: overriding release version $cf_cv_rel_version to $withval" >&5
+  { echo "$as_me:1388: WARNING: overriding release version $cf_cv_rel_version to $withval" >&5
 echo "$as_me: WARNING: overriding release version $cf_cv_rel_version to $withval" >&2;}
  cf_cv_rel_version=$withval
 fi;
 
  NCURSES_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'`
  NCURSES_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[^.]*//' -e 's/^\.//' -e 's/\..*//'`
+ test -n "NCURSES_MINOR" || NCURSES_MINOR=0
 
 if test -n "$NCURSES_MAJOR" ; then
-  case $NCURSES_MAJOR in
-  ([0-9]*)
+  case `echo "$NCURSES_MAJOR" | sed -e 's/^[0-9]*$/0/g'` in
+  (0)
        ;;
   (*)
-       { { echo "$as_me:1398: error: Release major-version is not a number: $NCURSES_MAJOR" >&5
+       { { echo "$as_me:1402: error: Release major-version is not a number: $NCURSES_MAJOR" >&5
 echo "$as_me: error: Release major-version is not a number: $NCURSES_MAJOR" >&2;}
    { (exit 1); exit 1; }; }
        ;;
   esac
 else
-  { { echo "$as_me:1404: error: Release major-version value is empty" >&5
+  { { echo "$as_me:1408: error: Release major-version value is empty" >&5
 echo "$as_me: error: Release major-version value is empty" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
 if test -n "$NCURSES_MINOR" ; then
-  case $NCURSES_MINOR in
-  ([0-9]*)
+  case `echo "$NCURSES_MINOR" | sed -e 's/^[0-9]*$/0/g'` in
+  (0)
        ;;
   (*)
-       { { echo "$as_me:1414: error: Release minor-version is not a number: $NCURSES_MINOR" >&5
+       { { echo "$as_me:1418: error: Release minor-version is not a number: $NCURSES_MINOR" >&5
 echo "$as_me: error: Release minor-version is not a number: $NCURSES_MINOR" >&2;}
    { (exit 1); exit 1; }; }
        ;;
   esac
 else
-  { { echo "$as_me:1420: error: Release minor-version value is empty" >&5
+  { { echo "$as_me:1424: error: Release minor-version value is empty" >&5
 echo "$as_me: error: Release minor-version value is empty" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1430,7 +1434,7 @@ if test "${with_abi_version+set}" = set; then
 
        if test "x$cf_cv_abi_version" != "x$withval"
        then
-               { echo "$as_me:1433: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&5
+               { echo "$as_me:1437: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&5
 echo "$as_me: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&2;}
                case "$cf_cv_rel_version" in
                (5.*)
@@ -1445,17 +1449,17 @@ echo "$as_me: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&
 fi;
 
 if test -n "$cf_cv_abi_version" ; then
-  case $cf_cv_abi_version in
-  ([0-9]*)
+  case `echo "$cf_cv_abi_version" | sed -e 's/^[0-9]*$/0/g'` in
+  (0)
        ;;
   (*)
-       { { echo "$as_me:1452: error: ABI version is not a number: $cf_cv_abi_version" >&5
+       { { echo "$as_me:1456: error: ABI version is not a number: $cf_cv_abi_version" >&5
 echo "$as_me: error: ABI version is not a number: $cf_cv_abi_version" >&2;}
    { (exit 1); exit 1; }; }
        ;;
   esac
 else
-  { { echo "$as_me:1458: error: ABI version value is empty" >&5
+  { { echo "$as_me:1462: error: ABI version value is empty" >&5
 echo "$as_me: error: ABI version value is empty" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1488,7 +1492,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
   fi
 done
 if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:1491: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+  { { echo "$as_me:1495: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1498,11 +1502,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
 
 # Make sure we can run config.sub.
 $ac_config_sub sun4 >/dev/null 2>&1 ||
-  { { echo "$as_me:1501: error: cannot run $ac_config_sub" >&5
+  { { echo "$as_me:1505: error: cannot run $ac_config_sub" >&5
 echo "$as_me: error: cannot run $ac_config_sub" >&2;}
    { (exit 1); exit 1; }; }
 
-echo "$as_me:1505: checking build system type" >&5
+echo "$as_me:1509: checking build system type" >&5
 echo $ECHO_N "checking build system type... $ECHO_C" >&6
 if test "${ac_cv_build+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1511,23 +1515,23 @@ else
 test -z "$ac_cv_build_alias" &&
   ac_cv_build_alias=`$ac_config_guess`
 test -z "$ac_cv_build_alias" &&
-  { { echo "$as_me:1514: error: cannot guess build type; you must specify one" >&5
+  { { echo "$as_me:1518: error: cannot guess build type; you must specify one" >&5
 echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
    { (exit 1); exit 1; }; }
 ac_cv_build=`$ac_config_sub "$ac_cv_build_alias"` ||
-  { { echo "$as_me:1518: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+  { { echo "$as_me:1522: error: $ac_config_sub $ac_cv_build_alias failed." >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1523: result: $ac_cv_build" >&5
+echo "$as_me:1527: result: $ac_cv_build" >&5
 echo "${ECHO_T}$ac_cv_build" >&6
 build=$ac_cv_build
 build_cpu=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
 build_vendor=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 build_os=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
-echo "$as_me:1530: checking host system type" >&5
+echo "$as_me:1534: checking host system type" >&5
 echo $ECHO_N "checking host system type... $ECHO_C" >&6
 if test "${ac_cv_host+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1536,12 +1540,12 @@ else
 test -z "$ac_cv_host_alias" &&
   ac_cv_host_alias=$ac_cv_build_alias
 ac_cv_host=`$ac_config_sub "$ac_cv_host_alias"` ||
-  { { echo "$as_me:1539: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+  { { echo "$as_me:1543: error: $ac_config_sub $ac_cv_host_alias failed" >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1544: result: $ac_cv_host" >&5
+echo "$as_me:1548: result: $ac_cv_host" >&5
 echo "${ECHO_T}$ac_cv_host" >&6
 host=$ac_cv_host
 host_cpu=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1549,7 +1553,7 @@ host_vendor=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 host_os=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
 if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then
-       echo "$as_me:1552: checking target system type" >&5
+       echo "$as_me:1556: checking target system type" >&5
 echo $ECHO_N "checking target system type... $ECHO_C" >&6
 if test "${ac_cv_target+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1558,12 +1562,12 @@ else
 test "x$ac_cv_target_alias" = "x" &&
   ac_cv_target_alias=$ac_cv_host_alias
 ac_cv_target=`$ac_config_sub "$ac_cv_target_alias"` ||
-  { { echo "$as_me:1561: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+  { { echo "$as_me:1565: error: $ac_config_sub $ac_cv_target_alias failed" >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1566: result: $ac_cv_target" >&5
+echo "$as_me:1570: result: $ac_cv_target" >&5
 echo "${ECHO_T}$ac_cv_target" >&6
 target=$ac_cv_target
 target_cpu=`echo "$ac_cv_target" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1595,13 +1599,13 @@ else
 fi
 
 test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$as_me:1598: result: Configuring for $cf_cv_system_name" >&5
+test -n "$cf_cv_system_name" && echo "$as_me:1602: result: Configuring for $cf_cv_system_name" >&5
 echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
 
 if test ".$system_name" != ".$cf_cv_system_name" ; then
-       echo "$as_me:1602: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
+       echo "$as_me:1606: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
 echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6
-       { { echo "$as_me:1604: error: \"Please remove config.cache and try again.\"" >&5
+       { { echo "$as_me:1608: error: \"Please remove config.cache and try again.\"" >&5
 echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1609,7 +1613,7 @@ fi
 # Check whether --with-system-type or --without-system-type was given.
 if test "${with_system_type+set}" = set; then
   withval="$with_system_type"
-  { echo "$as_me:1612: WARNING: overriding system type to $withval" >&5
+  { echo "$as_me:1616: WARNING: overriding system type to $withval" >&5
 echo "$as_me: WARNING: overriding system type to $withval" >&2;}
        cf_cv_system_name=$withval
        host_os=$withval
@@ -1620,7 +1624,7 @@ fi;
 cf_user_CFLAGS="$CFLAGS"
 
 ###    Default install-location
-echo "$as_me:1623: checking for fgrep" >&5
+echo "$as_me:1627: checking for fgrep" >&5
 echo $ECHO_N "checking for fgrep... $ECHO_C" >&6
 if test "${ac_cv_path_FGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1632,7 +1636,7 @@ else
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:1635: checking for $ac_word" >&5
+echo "$as_me:1639: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_FGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1649,7 +1653,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_FGREP="$ac_dir/$ac_word"
-   echo "$as_me:1652: found $ac_dir/$ac_word" >&5
+   echo "$as_me:1656: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -1660,10 +1664,10 @@ fi
 FGREP=$ac_cv_path_FGREP
 
 if test -n "$FGREP"; then
-  echo "$as_me:1663: result: $FGREP" >&5
+  echo "$as_me:1667: result: $FGREP" >&5
 echo "${ECHO_T}$FGREP" >&6
 else
-  echo "$as_me:1666: result: no" >&5
+  echo "$as_me:1670: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1671,16 +1675,16 @@ fi
 done
 test -n "$FGREP" || FGREP=": "
 
-     test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:1674: error: cannot find workable fgrep" >&5
+     test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:1678: error: cannot find workable fgrep" >&5
 echo "$as_me: error: cannot find workable fgrep" >&2;}
    { (exit 1); exit 1; }; }
    fi
 fi
-echo "$as_me:1679: result: $ac_cv_path_FGREP" >&5
+echo "$as_me:1683: result: $ac_cv_path_FGREP" >&5
 echo "${ECHO_T}$ac_cv_path_FGREP" >&6
  FGREP="$ac_cv_path_FGREP"
 
-echo "$as_me:1683: checking for prefix" >&5
+echo "$as_me:1687: checking for prefix" >&5
 echo $ECHO_N "checking for prefix... $ECHO_C" >&6
 if test "x$prefix" = "xNONE" ; then
        case "$cf_cv_system_name" in
@@ -1692,11 +1696,11 @@ if test "x$prefix" = "xNONE" ; then
                ;;
        esac
 fi
-echo "$as_me:1695: result: $prefix" >&5
+echo "$as_me:1699: result: $prefix" >&5
 echo "${ECHO_T}$prefix" >&6
 
 if test "x$prefix" = "xNONE" ; then
-echo "$as_me:1699: checking for default include-directory" >&5
+echo "$as_me:1703: checking for default include-directory" >&5
 echo $ECHO_N "checking for default include-directory... $ECHO_C" >&6
 test -n "$verbose" && echo 1>&6
 for cf_symbol in \
@@ -1719,7 +1723,7 @@ do
        fi
        test -n "$verbose"  && echo "   tested $cf_dir" 1>&6
 done
-echo "$as_me:1722: result: $includedir" >&5
+echo "$as_me:1726: result: $includedir" >&5
 echo "${ECHO_T}$includedir" >&6
 fi
 
@@ -1740,9 +1744,10 @@ cf_dft_opaque_curses=no
 cf_dft_ordinate_type=short
 cf_dft_signed_char=no
 cf_dft_tparm_arg=long
+cf_dft_widec=no
 cf_dft_with_lp64=no
 
-# ABI 6 defaults:
+# ABI 6 default differences from ABI 5:
 case x$cf_cv_abi_default in
 (x[6789])
        cf_dft_chtype=uint32_t
@@ -1754,17 +1759,18 @@ case x$cf_cv_abi_default in
        cf_dft_filter_syms=yes
        cf_dft_interop=yes
        cf_dft_mmask_t=uint32_t
+       cf_dft_opaque_curses=yes
        cf_dft_tparm_arg=intptr_t
+       cf_dft_widec=yes
        cf_dft_with_lp64=yes
        ;;
 esac
 
-# ABI 7 defaults:
+# ABI 7 default differences from ABI 6:
 case x$cf_cv_abi_default in
 (x[789])
        cf_dft_ccharw_max=6
        cf_dft_mmask_t=uint64_t
-       cf_dft_opaque_curses=yes
        cf_dft_ordinate_type=int
        cf_dft_signed_char=yes
        # also: remove the wgetch-events feature in ABI 7
@@ -1778,24 +1784,24 @@ if test "${with_abi_altered+set}" = set; then
   withval="$with_abi_altered"
 
 if test -n "$withval" ; then
-  case $withval in
-  ([0-9]*)
+  case `echo "$withval" | sed -e 's/^[0-9]*$/0/g'` in
+  (0)
        ;;
   (*)
-       { { echo "$as_me:1785: error: ABI altered is not a number: $withval" >&5
+       { { echo "$as_me:1791: error: ABI altered is not a number: $withval" >&5
 echo "$as_me: error: ABI altered is not a number: $withval" >&2;}
    { (exit 1); exit 1; }; }
        ;;
   esac
 else
-  { { echo "$as_me:1791: error: ABI altered value is empty" >&5
+  { { echo "$as_me:1797: error: ABI altered value is empty" >&5
 echo "$as_me: error: ABI altered value is empty" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
        if test "$cf_cv_abi_version" != "$withval"
        then
-               { echo "$as_me:1798: WARNING: altering visible ABI from $cf_cv_abi_version to $withval" >&5
+               { echo "$as_me:1804: WARNING: altering visible ABI from $cf_cv_abi_version to $withval" >&5
 echo "$as_me: WARNING: altering visible ABI from $cf_cv_abi_version to $withval" >&2;}
                cf_cv_abi_version=$withval
        fi
@@ -1830,7 +1836,7 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1833: checking for $ac_word" >&5
+echo "$as_me:1839: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1845,7 +1851,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1848: found $ac_dir/$ac_word" >&5
+echo "$as_me:1854: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1853,10 +1859,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1856: result: $CC" >&5
+  echo "$as_me:1862: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1859: result: no" >&5
+  echo "$as_me:1865: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1869,7 +1875,7 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:1872: checking for $ac_word" >&5
+echo "$as_me:1878: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1884,7 +1890,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1887: found $ac_dir/$ac_word" >&5
+echo "$as_me:1893: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1892,10 +1898,10 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:1895: result: $ac_ct_CC" >&5
+  echo "$as_me:1901: result: $ac_ct_CC" >&5
 echo "${ECHO_T}$ac_ct_CC" >&6
 else
-  echo "$as_me:1898: result: no" >&5
+  echo "$as_me:1904: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1905,32 +1911,32 @@ done
   CC=$ac_ct_CC
 fi
 
-test -z "$CC" && { { echo "$as_me:1908: error: no acceptable cc found in \$PATH" >&5
+test -z "$CC" && { { echo "$as_me:1914: error: no acceptable cc found in \$PATH" >&5
 echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
    { (exit 1); exit 1; }; }
 
 # Provide some information about the compiler.
-echo "$as_me:1913:" \
+echo "$as_me:1919:" \
      "checking for C compiler version" >&5
 ac_compiler=`set X $ac_compile; echo "$2"`
-{ (eval echo "$as_me:1916: \"$ac_compiler --version </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1922: \"$ac_compiler --version </dev/null >&5\"") >&5
   (eval $ac_compiler --version </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:1919: \$? = $ac_status" >&5
+  echo "$as_me:1925: \$? = $ac_status" >&5
   (exit "$ac_status"); }
-{ (eval echo "$as_me:1921: \"$ac_compiler -v </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1927: \"$ac_compiler -v </dev/null >&5\"") >&5
   (eval $ac_compiler -v </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:1924: \$? = $ac_status" >&5
+  echo "$as_me:1930: \$? = $ac_status" >&5
   (exit "$ac_status"); }
-{ (eval echo "$as_me:1926: \"$ac_compiler -V </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1932: \"$ac_compiler -V </dev/null >&5\"") >&5
   (eval $ac_compiler -V </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:1929: \$? = $ac_status" >&5
+  echo "$as_me:1935: \$? = $ac_status" >&5
   (exit "$ac_status"); }
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 1933 "configure"
+#line 1939 "configure"
 #include "confdefs.h"
 
 int
@@ -1946,13 +1952,13 @@ ac_clean_files="$ac_clean_files a.out a.exe"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-echo "$as_me:1949: checking for C compiler default output" >&5
+echo "$as_me:1955: checking for C compiler default output" >&5
 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
 ac_link_default=`echo "$ac_link" | sed 's/ -o *"conftest[^"]*"//'`
-if { (eval echo "$as_me:1952: \"$ac_link_default\"") >&5
+if { (eval echo "$as_me:1958: \"$ac_link_default\"") >&5
   (eval $ac_link_default) 2>&5
   ac_status=$?
-  echo "$as_me:1955: \$? = $ac_status" >&5
+  echo "$as_me:1961: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   # Find the output, starting from the most likely.  This scheme is
 # not robust to junk in `.', hence go to wildcards (a.*) only as a last
@@ -1975,34 +1981,34 @@ done
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-{ { echo "$as_me:1978: error: C compiler cannot create executables" >&5
+{ { echo "$as_me:1984: error: C compiler cannot create executables" >&5
 echo "$as_me: error: C compiler cannot create executables" >&2;}
    { (exit 77); exit 77; }; }
 fi
 
 ac_exeext=$ac_cv_exeext
-echo "$as_me:1984: result: $ac_file" >&5
+echo "$as_me:1990: result: $ac_file" >&5
 echo "${ECHO_T}$ac_file" >&6
 
 # Check the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
-echo "$as_me:1989: checking whether the C compiler works" >&5
+echo "$as_me:1995: checking whether the C compiler works" >&5
 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
 # If not cross compiling, check that we can run a simple program.
 if test "$cross_compiling" != yes; then
   if { ac_try='./$ac_file'
-  { (eval echo "$as_me:1995: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2001: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1998: \$? = $ac_status" >&5
+  echo "$as_me:2004: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
     cross_compiling=no
   else
     if test "$cross_compiling" = maybe; then
        cross_compiling=yes
     else
-       { { echo "$as_me:2005: error: cannot run C compiled programs.
+       { { echo "$as_me:2011: error: cannot run C compiled programs.
 If you meant to cross compile, use \`--host'." >&5
 echo "$as_me: error: cannot run C compiled programs.
 If you meant to cross compile, use \`--host'." >&2;}
@@ -2010,24 +2016,24 @@ If you meant to cross compile, use \`--host'." >&2;}
     fi
   fi
 fi
-echo "$as_me:2013: result: yes" >&5
+echo "$as_me:2019: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
 rm -f a.out a.exe "conftest$ac_cv_exeext"
 ac_clean_files=$ac_clean_files_save
 # Check the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
-echo "$as_me:2020: checking whether we are cross compiling" >&5
+echo "$as_me:2026: checking whether we are cross compiling" >&5
 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:2022: result: $cross_compiling" >&5
+echo "$as_me:2028: result: $cross_compiling" >&5
 echo "${ECHO_T}$cross_compiling" >&6
 
-echo "$as_me:2025: checking for executable suffix" >&5
+echo "$as_me:2031: checking for executable suffix" >&5
 echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:2027: \"$ac_link\"") >&5
+if { (eval echo "$as_me:2033: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:2030: \$? = $ac_status" >&5
+  echo "$as_me:2036: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
@@ -2043,25 +2049,25 @@ for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
   esac
 done
 else
-  { { echo "$as_me:2046: error: cannot compute EXEEXT: cannot compile and link" >&5
+  { { echo "$as_me:2052: error: cannot compute EXEEXT: cannot compile and link" >&5
 echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
 rm -f "conftest$ac_cv_exeext"
-echo "$as_me:2052: result: $ac_cv_exeext" >&5
+echo "$as_me:2058: result: $ac_cv_exeext" >&5
 echo "${ECHO_T}$ac_cv_exeext" >&6
 
 rm -f "conftest.$ac_ext"
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-echo "$as_me:2058: checking for object suffix" >&5
+echo "$as_me:2064: checking for object suffix" >&5
 echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
 if test "${ac_cv_objext+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2064 "configure"
+#line 2070 "configure"
 #include "confdefs.h"
 
 int
@@ -2073,10 +2079,10 @@ main (void)
 }
 _ACEOF
 rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:2076: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2082: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2079: \$? = $ac_status" >&5
+  echo "$as_me:2085: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
   case $ac_file in
@@ -2088,24 +2094,24 @@ done
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-{ { echo "$as_me:2091: error: cannot compute OBJEXT: cannot compile" >&5
+{ { echo "$as_me:2097: error: cannot compute OBJEXT: cannot compile" >&5
 echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
 rm -f "conftest.$ac_cv_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:2098: result: $ac_cv_objext" >&5
+echo "$as_me:2104: result: $ac_cv_objext" >&5
 echo "${ECHO_T}$ac_cv_objext" >&6
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-echo "$as_me:2102: checking whether we are using the GNU C compiler" >&5
+echo "$as_me:2108: checking whether we are using the GNU C compiler" >&5
 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
 if test "${ac_cv_c_compiler_gnu+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2108 "configure"
+#line 2114 "configure"
 #include "confdefs.h"
 
 int
@@ -2120,16 +2126,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2123: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2129: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2126: \$? = $ac_status" >&5
+  echo "$as_me:2132: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2129: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2135: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2132: \$? = $ac_status" >&5
+  echo "$as_me:2138: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_compiler_gnu=yes
 else
@@ -2141,19 +2147,19 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-echo "$as_me:2144: result: $ac_cv_c_compiler_gnu" >&5
+echo "$as_me:2150: result: $ac_cv_c_compiler_gnu" >&5
 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
 GCC=`test $ac_compiler_gnu = yes && echo yes`
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
 CFLAGS="-g"
-echo "$as_me:2150: checking whether $CC accepts -g" >&5
+echo "$as_me:2156: checking whether $CC accepts -g" >&5
 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
 if test "${ac_cv_prog_cc_g+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2156 "configure"
+#line 2162 "configure"
 #include "confdefs.h"
 
 int
@@ -2165,16 +2171,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2168: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2174: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2171: \$? = $ac_status" >&5
+  echo "$as_me:2177: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2174: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2180: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2177: \$? = $ac_status" >&5
+  echo "$as_me:2183: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_prog_cc_g=yes
 else
@@ -2184,7 +2190,7 @@ ac_cv_prog_cc_g=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:2187: result: $ac_cv_prog_cc_g" >&5
+echo "$as_me:2193: result: $ac_cv_prog_cc_g" >&5
 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
@@ -2211,16 +2217,16 @@ cat >"conftest.$ac_ext" <<_ACEOF
 #endif
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2214: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2220: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2217: \$? = $ac_status" >&5
+  echo "$as_me:2223: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2220: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2226: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2223: \$? = $ac_status" >&5
+  echo "$as_me:2229: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   for ac_declaration in \
    ''\
@@ -2232,7 +2238,7 @@ if { (eval echo "$as_me:2214: \"$ac_compile\"") >&5
    'void exit (int);'
 do
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2235 "configure"
+#line 2241 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 $ac_declaration
@@ -2245,16 +2251,16 @@ exit (42);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2248: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2254: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2251: \$? = $ac_status" >&5
+  echo "$as_me:2257: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2254: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2260: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2257: \$? = $ac_status" >&5
+  echo "$as_me:2263: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -2264,7 +2270,7 @@ continue
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2267 "configure"
+#line 2273 "configure"
 #include "confdefs.h"
 $ac_declaration
 int
@@ -2276,16 +2282,16 @@ exit (42);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2279: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2285: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2282: \$? = $ac_status" >&5
+  echo "$as_me:2288: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2285: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2291: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2288: \$? = $ac_status" >&5
+  echo "$as_me:2294: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -2315,11 +2321,11 @@ ac_main_return="return"
 
 GCC_VERSION=none
 if test "$GCC" = yes ; then
-       echo "$as_me:2318: checking version of $CC" >&5
+       echo "$as_me:2324: checking version of $CC" >&5
 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
-       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
+       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[^(]*([^)][^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
        test -z "$GCC_VERSION" && GCC_VERSION=unknown
-       echo "$as_me:2322: result: $GCC_VERSION" >&5
+       echo "$as_me:2328: result: $GCC_VERSION" >&5
 echo "${ECHO_T}$GCC_VERSION" >&6
 fi
 
@@ -2328,12 +2334,12 @@ INTEL_COMPILER=no
 if test "$GCC" = yes ; then
        case "$host_os" in
        (linux*|gnu*)
-               echo "$as_me:2331: checking if this is really Intel C compiler" >&5
+               echo "$as_me:2337: checking if this is really Intel C compiler" >&5
 echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
                cf_save_CFLAGS="$CFLAGS"
                CFLAGS="$CFLAGS -no-gcc"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 2336 "configure"
+#line 2342 "configure"
 #include "confdefs.h"
 
 int
@@ -2342,7 +2348,7 @@ main (void)
 
 #ifdef __INTEL_COMPILER
 #else
-make an error
+#error __INTEL_COMPILER is not defined
 #endif
 
   ;
@@ -2350,16 +2356,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2353: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2359: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2356: \$? = $ac_status" >&5
+  echo "$as_me:2362: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2359: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2365: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2362: \$? = $ac_status" >&5
+  echo "$as_me:2368: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   INTEL_COMPILER=yes
 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
@@ -2370,7 +2376,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CFLAGS="$cf_save_CFLAGS"
-               echo "$as_me:2373: result: $INTEL_COMPILER" >&5
+               echo "$as_me:2379: result: $INTEL_COMPILER" >&5
 echo "${ECHO_T}$INTEL_COMPILER" >&6
                ;;
        esac
@@ -2379,11 +2385,11 @@ fi
 CLANG_COMPILER=no
 
 if test "$GCC" = yes ; then
-       echo "$as_me:2382: checking if this is really Clang C compiler" >&5
+       echo "$as_me:2388: checking if this is really Clang C compiler" >&5
 echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
        cf_save_CFLAGS="$CFLAGS"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 2386 "configure"
+#line 2392 "configure"
 #include "confdefs.h"
 
 int
@@ -2392,7 +2398,7 @@ main (void)
 
 #ifdef __clang__
 #else
-make an error
+#error __clang__ is not defined
 #endif
 
   ;
@@ -2400,16 +2406,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2403: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2409: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2406: \$? = $ac_status" >&5
+  echo "$as_me:2412: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2409: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2415: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2412: \$? = $ac_status" >&5
+  echo "$as_me:2418: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   CLANG_COMPILER=yes
 
@@ -2419,7 +2425,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        CFLAGS="$cf_save_CFLAGS"
-       echo "$as_me:2422: result: $CLANG_COMPILER" >&5
+       echo "$as_me:2428: result: $CLANG_COMPILER" >&5
 echo "${ECHO_T}$CLANG_COMPILER" >&6
 fi
 
@@ -2428,30 +2434,30 @@ CLANG_VERSION=none
 if test "x$CLANG_COMPILER" = "xyes" ; then
        case "$CC" in
        (c[1-9][0-9]|*/c[1-9][0-9])
-               { echo "$as_me:2431: WARNING: replacing broken compiler alias $CC" >&5
+               { echo "$as_me:2437: WARNING: replacing broken compiler alias $CC" >&5
 echo "$as_me: WARNING: replacing broken compiler alias $CC" >&2;}
                CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
                CC=clang
                ;;
        esac
 
-       echo "$as_me:2438: checking version of $CC" >&5
+       echo "$as_me:2444: checking version of $CC" >&5
 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
        CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
        test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
-       echo "$as_me:2442: result: $CLANG_VERSION" >&5
+       echo "$as_me:2448: result: $CLANG_VERSION" >&5
 echo "${ECHO_T}$CLANG_VERSION" >&6
 
        for cf_clang_opt in \
                -Qunused-arguments \
                -Wno-error=implicit-function-declaration
        do
-               echo "$as_me:2449: checking if option $cf_clang_opt works" >&5
+               echo "$as_me:2455: checking if option $cf_clang_opt works" >&5
 echo $ECHO_N "checking if option $cf_clang_opt works... $ECHO_C" >&6
                cf_save_CFLAGS="$CFLAGS"
                CFLAGS="$CFLAGS $cf_clang_opt"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 2454 "configure"
+#line 2460 "configure"
 #include "confdefs.h"
 
                        #include <stdio.h>
@@ -2465,16 +2471,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:2468: \"$ac_link\"") >&5
+if { (eval echo "$as_me:2474: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:2471: \$? = $ac_status" >&5
+  echo "$as_me:2477: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:2474: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2480: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2477: \$? = $ac_status" >&5
+  echo "$as_me:2483: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                        cf_clang_optok=yes
@@ -2485,13 +2491,13 @@ cat "conftest.$ac_ext" >&5
                        cf_clang_optok=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:2488: result: $cf_clang_optok" >&5
+               echo "$as_me:2494: result: $cf_clang_optok" >&5
 echo "${ECHO_T}$cf_clang_optok" >&6
                CFLAGS="$cf_save_CFLAGS"
                if test "$cf_clang_optok" = yes; then
                        test -n "$verbose" && echo "    adding option $cf_clang_opt" 1>&6
 
-echo "${as_me:-configure}:2494: testing adding option $cf_clang_opt ..." 1>&5
+echo "${as_me:-configure}:2500: testing adding option $cf_clang_opt ..." 1>&5
 
        test -n "$CFLAGS" && CFLAGS="$CFLAGS "
        CFLAGS="${CFLAGS}$cf_clang_opt"
@@ -2500,7 +2506,7 @@ echo "${as_me:-configure}:2494: testing adding option $cf_clang_opt ..." 1>&5
        done
 fi
 
-echo "$as_me:2503: checking for $CC option to accept ANSI C" >&5
+echo "$as_me:2509: checking for $CC option to accept ANSI C" >&5
 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
 if test "${ac_cv_prog_cc_stdc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2508,7 +2514,7 @@ else
   ac_cv_prog_cc_stdc=no
 ac_save_CC=$CC
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 2511 "configure"
+#line 2517 "configure"
 #include "confdefs.h"
 #include <stdarg.h>
 #include <stdio.h>
@@ -2555,16 +2561,16 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO
 do
   CC="$ac_save_CC $ac_arg"
   rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2558: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2564: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2561: \$? = $ac_status" >&5
+  echo "$as_me:2567: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2564: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2570: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2567: \$? = $ac_status" >&5
+  echo "$as_me:2573: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_prog_cc_stdc=$ac_arg
 break
@@ -2581,10 +2587,10 @@ fi
 
 case "x$ac_cv_prog_cc_stdc" in
   x|xno)
-    echo "$as_me:2584: result: none needed" >&5
+    echo "$as_me:2590: result: none needed" >&5
 echo "${ECHO_T}none needed" >&6 ;;
   *)
-    echo "$as_me:2587: result: $ac_cv_prog_cc_stdc" >&5
+    echo "$as_me:2593: result: $ac_cv_prog_cc_stdc" >&5
 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
     CC="$CC $ac_cv_prog_cc_stdc" ;;
 esac
@@ -2592,13 +2598,13 @@ esac
 # This should have been defined by AC_PROG_CC
 : "${CC:=cc}"
 
-echo "$as_me:2595: checking \$CFLAGS variable" >&5
+echo "$as_me:2601: checking \$CFLAGS variable" >&5
 echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6
 case "x$CFLAGS" in
 (*-[IUD]*)
-       echo "$as_me:2599: result: broken" >&5
+       echo "$as_me:2605: result: broken" >&5
 echo "${ECHO_T}broken" >&6
-       { echo "$as_me:2601: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5
+       { echo "$as_me:2607: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5
 echo "$as_me: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&2;}
        cf_flags="$CFLAGS"
        CFLAGS=
@@ -2706,22 +2712,22 @@ fi
        done
        ;;
 (*)
-       echo "$as_me:2709: result: ok" >&5
+       echo "$as_me:2715: result: ok" >&5
 echo "${ECHO_T}ok" >&6
        ;;
 esac
 
-echo "$as_me:2714: checking \$CC variable" >&5
+echo "$as_me:2720: checking \$CC variable" >&5
 echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
 case "$CC" in
 (*[\ \ ]-*)
-       echo "$as_me:2718: result: broken" >&5
+       echo "$as_me:2724: result: broken" >&5
 echo "${ECHO_T}broken" >&6
-       { echo "$as_me:2720: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
+       { echo "$as_me:2726: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
 echo "$as_me: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
        # humor him...
        cf_prog=`echo "$CC" | sed -e 's/        / /g' -e 's/[ ]* / /g' -e 's/[ ]*[ ]-[^ ].*//'`
-       cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'`
+       cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
        CC="$cf_prog"
        for cf_arg in $cf_flags
        do
@@ -2834,19 +2840,19 @@ fi
        done
        test -n "$verbose" && echo "    resulting CC: '$CC'" 1>&6
 
-echo "${as_me:-configure}:2837: testing resulting CC: '$CC' ..." 1>&5
+echo "${as_me:-configure}:2843: testing resulting CC: '$CC' ..." 1>&5
 
        test -n "$verbose" && echo "    resulting CFLAGS: '$CFLAGS'" 1>&6
 
-echo "${as_me:-configure}:2841: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
+echo "${as_me:-configure}:2847: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
 
        test -n "$verbose" && echo "    resulting CPPFLAGS: '$CPPFLAGS'" 1>&6
 
-echo "${as_me:-configure}:2845: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
+echo "${as_me:-configure}:2851: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
 
        ;;
 (*)
-       echo "$as_me:2849: result: ok" >&5
+       echo "$as_me:2855: result: ok" >&5
 echo "${ECHO_T}ok" >&6
        ;;
 esac
@@ -2857,7 +2863,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS "conftest.$ac_ext" >&5'
 ac_link='$CC -o "conftest$ac_exeext" $CFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac_ext" $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 ac_main_return="return"
-echo "$as_me:2860: checking how to run the C preprocessor" >&5
+echo "$as_me:2866: checking how to run the C preprocessor" >&5
 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
@@ -2878,18 +2884,18 @@ do
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2881 "configure"
+#line 2887 "configure"
 #include "confdefs.h"
 #include <assert.h>
                      Syntax error
 _ACEOF
-if { (eval echo "$as_me:2886: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2892: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2892: \$? = $ac_status" >&5
+  echo "$as_me:2898: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2912,17 +2918,17 @@ rm -f conftest.err "conftest.$ac_ext"
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2915 "configure"
+#line 2921 "configure"
 #include "confdefs.h"
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:2919: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2925: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2925: \$? = $ac_status" >&5
+  echo "$as_me:2931: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2959,7 +2965,7 @@ fi
 else
   ac_cv_prog_CPP=$CPP
 fi
-echo "$as_me:2962: result: $CPP" >&5
+echo "$as_me:2968: result: $CPP" >&5
 echo "${ECHO_T}$CPP" >&6
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
@@ -2969,18 +2975,18 @@ do
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2972 "configure"
+#line 2978 "configure"
 #include "confdefs.h"
 #include <assert.h>
                      Syntax error
 _ACEOF
-if { (eval echo "$as_me:2977: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2983: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2983: \$? = $ac_status" >&5
+  echo "$as_me:2989: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -3003,17 +3009,17 @@ rm -f conftest.err "conftest.$ac_ext"
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 3006 "configure"
+#line 3012 "configure"
 #include "confdefs.h"
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:3010: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:3016: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:3016: \$? = $ac_status" >&5
+  echo "$as_me:3022: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -3041,7 +3047,7 @@ rm -f conftest.err "conftest.$ac_ext"
 if $ac_preproc_ok; then
   :
 else
-  { { echo "$as_me:3044: error: C preprocessor \"$CPP\" fails sanity check" >&5
+  { { echo "$as_me:3050: error: C preprocessor \"$CPP\" fails sanity check" >&5
 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -3054,14 +3060,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 ac_main_return="return"
 
 if test $ac_cv_c_compiler_gnu = yes; then
-    echo "$as_me:3057: checking whether $CC needs -traditional" >&5
+    echo "$as_me:3063: checking whether $CC needs -traditional" >&5
 echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
 if test "${ac_cv_prog_gcc_traditional+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
     ac_pattern="Autoconf.*'x'"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 3064 "configure"
+#line 3070 "configure"
 #include "confdefs.h"
 #include <sgtty.h>
 int Autoconf = TIOCGETP;
@@ -3076,7 +3082,7 @@ rm -rf conftest*
 
   if test $ac_cv_prog_gcc_traditional = no; then
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 3079 "configure"
+#line 3085 "configure"
 #include "confdefs.h"
 #include <termio.h>
 int Autoconf = TCGETA;
@@ -3089,14 +3095,14 @@ rm -rf conftest*
 
   fi
 fi
-echo "$as_me:3092: result: $ac_cv_prog_gcc_traditional" >&5
+echo "$as_me:3098: result: $ac_cv_prog_gcc_traditional" >&5
 echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
   if test $ac_cv_prog_gcc_traditional = yes; then
     CC="$CC -traditional"
   fi
 fi
 
-echo "$as_me:3099: checking whether $CC understands -c and -o together" >&5
+echo "$as_me:3105: checking whether $CC understands -c and -o together" >&5
 echo $ECHO_N "checking whether $CC understands -c and -o together... $ECHO_C" >&6
 if test "${cf_cv_prog_CC_c_o+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3111,15 +3117,15 @@ CF_EOF
 # We do the test twice because some compilers refuse to overwrite an
 # existing .o file with -o, though they will create one.
 ac_try='$CC $CFLAGS $CPPFLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-if { (eval echo "$as_me:3114: \"$ac_try\"") >&5
+if { (eval echo "$as_me:3120: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3117: \$? = $ac_status" >&5
+  echo "$as_me:3123: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
-  test -f conftest2.$ac_objext && { (eval echo "$as_me:3119: \"$ac_try\"") >&5
+  test -f conftest2.$ac_objext && { (eval echo "$as_me:3125: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3122: \$? = $ac_status" >&5
+  echo "$as_me:3128: \$? = $ac_status" >&5
   (exit "$ac_status"); };
 then
   eval cf_cv_prog_CC_c_o=yes
@@ -3130,10 +3136,10 @@ rm -rf ./conftest*
 
 fi
 if test "$cf_cv_prog_CC_c_o" = yes; then
-  echo "$as_me:3133: result: yes" >&5
+  echo "$as_me:3139: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
-  echo "$as_me:3136: result: no" >&5
+  echo "$as_me:3142: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3147,7 +3153,7 @@ else
        (*) LDPATH=$PATH:/sbin:/usr/sbin
                # Extract the first word of "ldconfig", so it can be a program name with args.
 set dummy ldconfig; ac_word=$2
-echo "$as_me:3150: checking for $ac_word" >&5
+echo "$as_me:3156: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_LDCONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3164,7 +3170,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_LDCONFIG="$ac_dir/$ac_word"
-   echo "$as_me:3167: found $ac_dir/$ac_word" >&5
+   echo "$as_me:3173: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -3175,10 +3181,10 @@ fi
 LDCONFIG=$ac_cv_path_LDCONFIG
 
 if test -n "$LDCONFIG"; then
-  echo "$as_me:3178: result: $LDCONFIG" >&5
+  echo "$as_me:3184: result: $LDCONFIG" >&5
 echo "${ECHO_T}$LDCONFIG" >&6
 else
-  echo "$as_me:3181: result: no" >&5
+  echo "$as_me:3187: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3186,7 +3192,7 @@ fi
        esac
 fi
 
-echo "$as_me:3189: checking if you want to ensure bool is consistent with C++" >&5
+echo "$as_me:3195: checking if you want to ensure bool is consistent with C++" >&5
 echo $ECHO_N "checking if you want to ensure bool is consistent with C++... $ECHO_C" >&6
 
 # Check whether --with-cxx or --without-cxx was given.
@@ -3196,7 +3202,7 @@ if test "${with_cxx+set}" = set; then
 else
   cf_with_cxx=yes
 fi;
-echo "$as_me:3199: result: $cf_with_cxx" >&5
+echo "$as_me:3205: result: $cf_with_cxx" >&5
 echo "${ECHO_T}$cf_with_cxx" >&6
 if test "X$cf_with_cxx" = Xno ; then
        CXX=""
@@ -3214,7 +3220,7 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:3217: checking for $ac_word" >&5
+echo "$as_me:3223: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CXX+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3229,7 +3235,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-echo "$as_me:3232: found $ac_dir/$ac_word" >&5
+echo "$as_me:3238: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3237,10 +3243,10 @@ fi
 fi
 CXX=$ac_cv_prog_CXX
 if test -n "$CXX"; then
-  echo "$as_me:3240: result: $CXX" >&5
+  echo "$as_me:3246: result: $CXX" >&5
 echo "${ECHO_T}$CXX" >&6
 else
-  echo "$as_me:3243: result: no" >&5
+  echo "$as_me:3249: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3253,7 +3259,7 @@ if test -z "$CXX"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:3256: checking for $ac_word" >&5
+echo "$as_me:3262: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3268,7 +3274,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_CXX="$ac_prog"
-echo "$as_me:3271: found $ac_dir/$ac_word" >&5
+echo "$as_me:3277: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3276,10 +3282,10 @@ fi
 fi
 ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
 if test -n "$ac_ct_CXX"; then
-  echo "$as_me:3279: result: $ac_ct_CXX" >&5
+  echo "$as_me:3285: result: $ac_ct_CXX" >&5
 echo "${ECHO_T}$ac_ct_CXX" >&6
 else
-  echo "$as_me:3282: result: no" >&5
+  echo "$as_me:3288: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3291,32 +3297,32 @@ test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
 fi
 
 # Provide some information about the compiler.
-echo "$as_me:3294:" \
+echo "$as_me:3300:" \
      "checking for C++ compiler version" >&5
 ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:3297: \"$ac_compiler --version </dev/null >&5\"") >&5
+{ (eval echo "$as_me:3303: \"$ac_compiler --version </dev/null >&5\"") >&5
   (eval $ac_compiler --version </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:3300: \$? = $ac_status" >&5
+  echo "$as_me:3306: \$? = $ac_status" >&5
   (exit "$ac_status"); }
-{ (eval echo "$as_me:3302: \"$ac_compiler -v </dev/null >&5\"") >&5
+{ (eval echo "$as_me:3308: \"$ac_compiler -v </dev/null >&5\"") >&5
   (eval $ac_compiler -v </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:3305: \$? = $ac_status" >&5
+  echo "$as_me:3311: \$? = $ac_status" >&5
   (exit "$ac_status"); }
-{ (eval echo "$as_me:3307: \"$ac_compiler -V </dev/null >&5\"") >&5
+{ (eval echo "$as_me:3313: \"$ac_compiler -V </dev/null >&5\"") >&5
   (eval $ac_compiler -V </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:3310: \$? = $ac_status" >&5
+  echo "$as_me:3316: \$? = $ac_status" >&5
   (exit "$ac_status"); }
 
-echo "$as_me:3313: checking whether we are using the GNU C++ compiler" >&5
+echo "$as_me:3319: checking whether we are using the GNU C++ compiler" >&5
 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 3319 "configure"
+#line 3325 "configure"
 #include "confdefs.h"
 
 int
@@ -3331,16 +3337,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:3334: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3340: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3337: \$? = $ac_status" >&5
+  echo "$as_me:3343: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:3340: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3346: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3343: \$? = $ac_status" >&5
+  echo "$as_me:3349: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_compiler_gnu=yes
 else
@@ -3352,19 +3358,19 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
 
 fi
-echo "$as_me:3355: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "$as_me:3361: result: $ac_cv_cxx_compiler_gnu" >&5
 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
 GXX=`test $ac_compiler_gnu = yes && echo yes`
 ac_test_CXXFLAGS=${CXXFLAGS+set}
 ac_save_CXXFLAGS=$CXXFLAGS
 CXXFLAGS="-g"
-echo "$as_me:3361: checking whether $CXX accepts -g" >&5
+echo "$as_me:3367: checking whether $CXX accepts -g" >&5
 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
 if test "${ac_cv_prog_cxx_g+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 3367 "configure"
+#line 3373 "configure"
 #include "confdefs.h"
 
 int
@@ -3376,16 +3382,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:3379: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3385: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3382: \$? = $ac_status" >&5
+  echo "$as_me:3388: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:3385: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3391: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3388: \$? = $ac_status" >&5
+  echo "$as_me:3394: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_prog_cxx_g=yes
 else
@@ -3395,7 +3401,7 @@ ac_cv_prog_cxx_g=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:3398: result: $ac_cv_prog_cxx_g" >&5
+echo "$as_me:3404: result: $ac_cv_prog_cxx_g" >&5
 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
 if test "$ac_test_CXXFLAGS" = set; then
   CXXFLAGS=$ac_save_CXXFLAGS
@@ -3422,7 +3428,7 @@ for ac_declaration in \
    'void exit (int);'
 do
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 3425 "configure"
+#line 3431 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 $ac_declaration
@@ -3435,16 +3441,16 @@ exit (42);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:3438: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3444: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3441: \$? = $ac_status" >&5
+  echo "$as_me:3447: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:3444: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3450: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3447: \$? = $ac_status" >&5
+  echo "$as_me:3453: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -3454,7 +3460,7 @@ continue
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 3457 "configure"
+#line 3463 "configure"
 #include "confdefs.h"
 $ac_declaration
 int
@@ -3466,16 +3472,16 @@ exit (42);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:3469: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3475: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3472: \$? = $ac_status" >&5
+  echo "$as_me:3478: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:3475: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3481: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3478: \$? = $ac_status" >&5
+  echo "$as_me:3484: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -3509,7 +3515,7 @@ ac_main_return="return"
        then
                # Several of the C++ configurations do not work, particularly when
                # cross-compiling (20140913 -TD)
-               echo "$as_me:3512: checking if $CXX works" >&5
+               echo "$as_me:3518: checking if $CXX works" >&5
 echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6
 
                save_CPPFLAGS="$CPPFLAGS"
@@ -3517,7 +3523,7 @@ echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6
                CPPFLAGS="$CPPFLAGS -I${cf_includedir}"
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 3520 "configure"
+#line 3526 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -3534,16 +3540,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:3537: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3543: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3540: \$? = $ac_status" >&5
+  echo "$as_me:3546: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:3543: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3549: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3546: \$? = $ac_status" >&5
+  echo "$as_me:3552: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cxx_works=yes
 else
@@ -3554,11 +3560,11 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CPPFLAGS="$save_CPPFLAGS"
 
-               echo "$as_me:3557: result: $cf_cxx_works" >&5
+               echo "$as_me:3563: result: $cf_cxx_works" >&5
 echo "${ECHO_T}$cf_cxx_works" >&6
                if test "x$cf_cxx_works" = xno
                then
-                       { echo "$as_me:3561: WARNING: Ignore $CXX, since it cannot compile hello-world." >&5
+                       { echo "$as_me:3567: WARNING: Ignore $CXX, since it cannot compile hello-world." >&5
 echo "$as_me: WARNING: Ignore $CXX, since it cannot compile hello-world." >&2;}
                        cf_with_cxx=no; CXX=""; GXX="";
                fi
@@ -3574,7 +3580,7 @@ ac_main_return="return"
        if test "$CXX" = "g++" ; then
                # Extract the first word of "g++", so it can be a program name with args.
 set dummy g++; ac_word=$2
-echo "$as_me:3577: checking for $ac_word" >&5
+echo "$as_me:3583: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_CXX+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3591,7 +3597,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_CXX="$ac_dir/$ac_word"
-   echo "$as_me:3594: found $ac_dir/$ac_word" >&5
+   echo "$as_me:3600: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -3602,17 +3608,17 @@ fi
 CXX=$ac_cv_path_CXX
 
 if test -n "$CXX"; then
-  echo "$as_me:3605: result: $CXX" >&5
+  echo "$as_me:3611: result: $CXX" >&5
 echo "${ECHO_T}$CXX" >&6
 else
-  echo "$as_me:3608: result: no" >&5
+  echo "$as_me:3614: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
        fi
        case "x$CXX" in
        (x|xg++)
-               { echo "$as_me:3615: WARNING: You don't have any C++ compiler, too bad" >&5
+               { echo "$as_me:3621: WARNING: You don't have any C++ compiler, too bad" >&5
 echo "$as_me: WARNING: You don't have any C++ compiler, too bad" >&2;}
                cf_with_cxx=no; CXX=""; GXX="";
                ;;
@@ -3621,15 +3627,15 @@ fi
 
 GXX_VERSION=none
 if test "$GXX" = yes; then
-       echo "$as_me:3624: checking version of ${CXX:-g++}" >&5
+       echo "$as_me:3630: checking version of ${CXX:-g++}" >&5
 echo $ECHO_N "checking version of ${CXX:-g++}... $ECHO_C" >&6
-       GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
+       GXX_VERSION="`${CXX:-g++} --version 2>/dev/null | sed -e '2,$d' -e 's/^[^(]*([^)][^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
        if test -z "$GXX_VERSION"
        then
                GXX_VERSION=unknown
                GXX=no
        fi
-       echo "$as_me:3632: result: $GXX_VERSION" >&5
+       echo "$as_me:3638: result: $GXX_VERSION" >&5
 echo "${ECHO_T}$GXX_VERSION" >&6
 fi
 
@@ -3637,12 +3643,12 @@ case "$GXX_VERSION" in
 ([1-9][0-9].*)
        ;;
 (1.*|2.[0-6]*)
-       { echo "$as_me:3640: WARNING: templates do not work" >&5
+       { echo "$as_me:3646: WARNING: templates do not work" >&5
 echo "$as_me: WARNING: templates do not work" >&2;}
        ;;
 esac
 
-echo "$as_me:3645: checking if you want to build C++ binding and demo" >&5
+echo "$as_me:3651: checking if you want to build C++ binding and demo" >&5
 echo $ECHO_N "checking if you want to build C++ binding and demo... $ECHO_C" >&6
 
 # Check whether --with-cxx-binding or --without-cxx-binding was given.
@@ -3652,15 +3658,15 @@ if test "${with_cxx_binding+set}" = set; then
 else
   cf_with_cxx_binding=$cf_with_cxx
 fi;
-echo "$as_me:3655: result: $cf_with_cxx_binding" >&5
+echo "$as_me:3661: result: $cf_with_cxx_binding" >&5
 echo "${ECHO_T}$cf_with_cxx_binding" >&6
 
-echo "$as_me:3658: checking if you want to build with Ada" >&5
+echo "$as_me:3664: checking if you want to build with Ada" >&5
 echo $ECHO_N "checking if you want to build with Ada... $ECHO_C" >&6
-echo "$as_me:3660: result: $cf_with_ada" >&5
+echo "$as_me:3666: result: $cf_with_ada" >&5
 echo "${ECHO_T}$cf_with_ada" >&6
 
-echo "$as_me:3663: checking if you want to install terminal database" >&5
+echo "$as_me:3669: checking if you want to install terminal database" >&5
 echo $ECHO_N "checking if you want to install terminal database... $ECHO_C" >&6
 
 # Check whether --enable-db-install or --disable-db-install was given.
@@ -3670,10 +3676,10 @@ if test "${enable_db_install+set}" = set; then
 else
   cf_with_db_install=yes
 fi;
-echo "$as_me:3673: result: $cf_with_db_install" >&5
+echo "$as_me:3679: result: $cf_with_db_install" >&5
 echo "${ECHO_T}$cf_with_db_install" >&6
 
-echo "$as_me:3676: checking if you want to install manpages" >&5
+echo "$as_me:3682: checking if you want to install manpages" >&5
 echo $ECHO_N "checking if you want to install manpages... $ECHO_C" >&6
 
 # Check whether --with-manpages or --without-manpages was given.
@@ -3683,10 +3689,10 @@ if test "${with_manpages+set}" = set; then
 else
   cf_with_manpages=yes
 fi;
-echo "$as_me:3686: result: $cf_with_manpages" >&5
+echo "$as_me:3692: result: $cf_with_manpages" >&5
 echo "${ECHO_T}$cf_with_manpages" >&6
 
-echo "$as_me:3689: checking if you want to build programs such as tic" >&5
+echo "$as_me:3695: checking if you want to build programs such as tic" >&5
 echo $ECHO_N "checking if you want to build programs such as tic... $ECHO_C" >&6
 
 # Check whether --with-progs or --without-progs was given.
@@ -3696,35 +3702,10 @@ if test "${with_progs+set}" = set; then
 else
   cf_with_progs=yes
 fi;
-echo "$as_me:3699: result: $cf_with_progs" >&5
+echo "$as_me:3705: result: $cf_with_progs" >&5
 echo "${ECHO_T}$cf_with_progs" >&6
 
-if test -f "$srcdir/tack/tack.h" ; then
-       if test "x$cross_compiling" = xyes ; then
-               test -n "$verbose" && echo "    ignoring tack because we are cross-compiling" 1>&6
-
-echo "${as_me:-configure}:3706: testing ignoring tack because we are cross-compiling ..." 1>&5
-
-               cf_with_tack=no
-       else
-               echo "$as_me:3710: checking if you want to build the tack program" >&5
-echo $ECHO_N "checking if you want to build the tack program... $ECHO_C" >&6
-
-# Check whether --with-tack or --without-tack was given.
-if test "${with_tack+set}" = set; then
-  withval="$with_tack"
-  cf_with_tack=$withval
-else
-  cf_with_tack=$cf_with_progs
-fi;
-               echo "$as_me:3720: result: $cf_with_tack" >&5
-echo "${ECHO_T}$cf_with_tack" >&6
-       fi
-else
-       cf_with_tack=no
-fi
-
-echo "$as_me:3727: checking if you want to build test-programs" >&5
+echo "$as_me:3708: checking if you want to build test-programs" >&5
 echo $ECHO_N "checking if you want to build test-programs... $ECHO_C" >&6
 
 # Check whether --with-tests or --without-tests was given.
@@ -3734,10 +3715,10 @@ if test "${with_tests+set}" = set; then
 else
   cf_with_tests=yes
 fi;
-echo "$as_me:3737: result: $cf_with_tests" >&5
+echo "$as_me:3718: result: $cf_with_tests" >&5
 echo "${ECHO_T}$cf_with_tests" >&6
 
-echo "$as_me:3740: checking if you wish to install curses.h" >&5
+echo "$as_me:3721: checking if you wish to install curses.h" >&5
 echo $ECHO_N "checking if you wish to install curses.h... $ECHO_C" >&6
 
 # Check whether --with-curses-h or --without-curses-h was given.
@@ -3747,12 +3728,11 @@ if test "${with_curses_h+set}" = set; then
 else
   with_curses_h=yes
 fi;
-echo "$as_me:3750: result: $with_curses_h" >&5
+echo "$as_me:3731: result: $with_curses_h" >&5
 echo "${ECHO_T}$with_curses_h" >&6
 
 modules_to_build="ncurses"
 test "X$cf_with_progs" != Xno && modules_to_build="$modules_to_build progs"
-test "X$cf_with_tack"  != Xno && modules_to_build="$modules_to_build tack"
 modules_to_build="$modules_to_build panel menu form"
 
 test "$program_prefix" != NONE &&
@@ -3772,7 +3752,7 @@ for ac_prog in mawk gawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:3775: checking for $ac_word" >&5
+echo "$as_me:3755: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_AWK+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3787,7 +3767,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_AWK="$ac_prog"
-echo "$as_me:3790: found $ac_dir/$ac_word" >&5
+echo "$as_me:3770: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3795,17 +3775,17 @@ fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  echo "$as_me:3798: result: $AWK" >&5
+  echo "$as_me:3778: result: $AWK" >&5
 echo "${ECHO_T}$AWK" >&6
 else
-  echo "$as_me:3801: result: no" >&5
+  echo "$as_me:3781: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
   test -n "$AWK" && break
 done
 
-test -z "$AWK" && { { echo "$as_me:3808: error: No awk program found" >&5
+test -z "$AWK" && { { echo "$as_me:3788: error: No awk program found" >&5
 echo "$as_me: error: No awk program found" >&2;}
    { (exit 1); exit 1; }; }
 
@@ -3821,7 +3801,7 @@ echo "$as_me: error: No awk program found" >&2;}
 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:3824: checking for a BSD compatible install" >&5
+echo "$as_me:3804: checking for a BSD compatible install" >&5
 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
 if test -z "$INSTALL"; then
 if test "${ac_cv_path_install+set}" = set; then
@@ -3870,7 +3850,7 @@ fi
     INSTALL=$ac_install_sh
   fi
 fi
-echo "$as_me:3873: result: $INSTALL" >&5
+echo "$as_me:3853: result: $INSTALL" >&5
 echo "${ECHO_T}$INSTALL" >&6
 
 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -3895,7 +3875,7 @@ for ac_prog in lint cppcheck splint
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:3898: checking for $ac_word" >&5
+echo "$as_me:3878: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_LINT+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3910,7 +3890,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_LINT="$ac_prog"
-echo "$as_me:3913: found $ac_dir/$ac_word" >&5
+echo "$as_me:3893: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3918,10 +3898,10 @@ fi
 fi
 LINT=$ac_cv_prog_LINT
 if test -n "$LINT"; then
-  echo "$as_me:3921: result: $LINT" >&5
+  echo "$as_me:3901: result: $LINT" >&5
 echo "${ECHO_T}$LINT" >&6
 else
-  echo "$as_me:3924: result: no" >&5
+  echo "$as_me:3904: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3934,18 +3914,18 @@ case "x$LINT" in
        ;;
 esac
 
-echo "$as_me:3937: checking whether ln -s works" >&5
+echo "$as_me:3917: checking whether ln -s works" >&5
 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
 LN_S=$as_ln_s
 if test "$LN_S" = "ln -s"; then
-  echo "$as_me:3941: result: yes" >&5
+  echo "$as_me:3921: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
-  echo "$as_me:3944: result: no, using $LN_S" >&5
+  echo "$as_me:3924: result: no, using $LN_S" >&5
 echo "${ECHO_T}no, using $LN_S" >&6
 fi
 
-echo "$as_me:3948: checking if $LN_S -f options work" >&5
+echo "$as_me:3928: checking if $LN_S -f options work" >&5
 echo $ECHO_N "checking if $LN_S -f options work... $ECHO_C" >&6
 
 rm -f conf$$.src conf$$dst
@@ -3957,12 +3937,12 @@ else
        cf_prog_ln_sf=no
 fi
 rm -f conf$$.dst conf$$src
-echo "$as_me:3960: result: $cf_prog_ln_sf" >&5
+echo "$as_me:3940: result: $cf_prog_ln_sf" >&5
 echo "${ECHO_T}$cf_prog_ln_sf" >&6
 
 test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
 
-echo "$as_me:3965: checking for long file names" >&5
+echo "$as_me:3945: checking for long file names" >&5
 echo $ECHO_N "checking for long file names... $ECHO_C" >&6
 if test "${ac_cv_sys_long_file_names+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4001,7 +3981,7 @@ for ac_dir in  . $ac_tmpdirs `eval echo "$prefix/lib" "$exec_prefix/lib"` ; do
   rm -rf "$ac_xdir" 2>/dev/null
 done
 fi
-echo "$as_me:4004: result: $ac_cv_sys_long_file_names" >&5
+echo "$as_me:3984: result: $ac_cv_sys_long_file_names" >&5
 echo "${ECHO_T}$ac_cv_sys_long_file_names" >&6
 if test "$ac_cv_sys_long_file_names" = yes; then
 
@@ -4020,7 +4000,7 @@ if test "${with_config_suffix+set}" = set; then
   withval="$with_config_suffix"
   case "x$withval" in
        (xyes|xno)
-               { echo "$as_me:4023: WARNING: expected a value for config-suffix option" >&5
+               { echo "$as_me:4003: WARNING: expected a value for config-suffix option" >&5
 echo "$as_me: WARNING: expected a value for config-suffix option" >&2;}
                ;;
        (*)     cf_config_suffix="$withval"
@@ -4030,7 +4010,7 @@ fi;
 
 # If we find pkg-config, check if we should install the ".pc" files.
 
-echo "$as_me:4033: checking if you want to use pkg-config" >&5
+echo "$as_me:4013: checking if you want to use pkg-config" >&5
 echo $ECHO_N "checking if you want to use pkg-config... $ECHO_C" >&6
 
 # Check whether --with-pkg-config or --without-pkg-config was given.
@@ -4040,7 +4020,7 @@ if test "${with_pkg_config+set}" = set; then
 else
   cf_pkg_config=yes
 fi;
-echo "$as_me:4043: result: $cf_pkg_config" >&5
+echo "$as_me:4023: result: $cf_pkg_config" >&5
 echo "${ECHO_T}$cf_pkg_config" >&6
 
 case "$cf_pkg_config" in
@@ -4052,7 +4032,7 @@ case "$cf_pkg_config" in
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
 set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-echo "$as_me:4055: checking for $ac_word" >&5
+echo "$as_me:4035: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4069,7 +4049,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word"
-   echo "$as_me:4072: found $ac_dir/$ac_word" >&5
+   echo "$as_me:4052: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -4080,10 +4060,10 @@ fi
 PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 
 if test -n "$PKG_CONFIG"; then
-  echo "$as_me:4083: result: $PKG_CONFIG" >&5
+  echo "$as_me:4063: result: $PKG_CONFIG" >&5
 echo "${ECHO_T}$PKG_CONFIG" >&6
 else
-  echo "$as_me:4086: result: no" >&5
+  echo "$as_me:4066: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4092,7 +4072,7 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then
   ac_pt_PKG_CONFIG=$PKG_CONFIG
   # Extract the first word of "pkg-config", so it can be a program name with args.
 set dummy pkg-config; ac_word=$2
-echo "$as_me:4095: checking for $ac_word" >&5
+echo "$as_me:4075: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4109,7 +4089,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_ac_pt_PKG_CONFIG="$ac_dir/$ac_word"
-   echo "$as_me:4112: found $ac_dir/$ac_word" >&5
+   echo "$as_me:4092: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -4121,10 +4101,10 @@ fi
 ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
 
 if test -n "$ac_pt_PKG_CONFIG"; then
-  echo "$as_me:4124: result: $ac_pt_PKG_CONFIG" >&5
+  echo "$as_me:4104: result: $ac_pt_PKG_CONFIG" >&5
 echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
 else
-  echo "$as_me:4127: result: no" >&5
+  echo "$as_me:4107: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4167,30 +4147,36 @@ case ".$PKG_CONFIG" in
        PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:4170: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
+       { { echo "$as_me:4150: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
 echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
 esac
 
 elif test "x$cf_pkg_config" != xno ; then
-       { echo "$as_me:4177: WARNING: pkg-config is not installed" >&5
+       { echo "$as_me:4157: WARNING: pkg-config is not installed" >&5
 echo "$as_me: WARNING: pkg-config is not installed" >&2;}
 fi
 
 case "$PKG_CONFIG" in
 (no|none|yes)
-       echo "$as_me:4183: checking for pkg-config library directory" >&5
+       echo "$as_me:4163: checking for pkg-config library directory" >&5
 echo $ECHO_N "checking for pkg-config library directory... $ECHO_C" >&6
        ;;
 (*)
-       echo "$as_me:4187: checking for $PKG_CONFIG library directory" >&5
+       echo "$as_me:4167: checking for $PKG_CONFIG library directory" >&5
 echo $ECHO_N "checking for $PKG_CONFIG library directory... $ECHO_C" >&6
        ;;
 esac
 
 # if $PKG_CONFIG_LIBDIR is set, try to use that
-cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[  ]*,,'`
+if test -n "$PKG_CONFIG_PATH"; then
+       cf_search_path=`echo "$PKG_CONFIG_PATH" | sed -e 's/:/ /g' -e 's,^[     ]*,,' -e 's,[   ]*$,,'`
+elif test -n "$PKG_CONFIG_LIBDIR"; then
+       cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[   ]*,,' -e 's,[   ]*$,,'`
+else
+       cf_search_path=auto
+fi
 
 # if the option is used, let that override.  otherwise default to "libdir"
 
@@ -4205,7 +4191,7 @@ fi;
 case "x$cf_search_path" in
 (xlibdir)
        PKG_CONFIG_LIBDIR='${libdir}/pkgconfig'
-       echo "$as_me:4208: result: $PKG_CONFIG_LIBDIR" >&5
+       echo "$as_me:4194: result: $PKG_CONFIG_LIBDIR" >&5
 echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
        cf_search_path=
        ;;
@@ -4216,16 +4202,16 @@ echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
        ;;
 (x/*)
        PKG_CONFIG_LIBDIR="$cf_search_path"
-       echo "$as_me:4219: result: $PKG_CONFIG_LIBDIR" >&5
+       echo "$as_me:4205: result: $PKG_CONFIG_LIBDIR" >&5
 echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
        cf_search_path=
        ;;
 (xyes|xauto)
-       echo "$as_me:4224: result: auto" >&5
+       echo "$as_me:4210: result: auto" >&5
 echo "${ECHO_T}auto" >&6
        cf_search_path=
        # Look for the library directory using the same prefix as the executable
-       echo "$as_me:4228: checking for search-list" >&5
+       echo "$as_me:4214: checking for search-list" >&5
 echo $ECHO_N "checking for search-list... $ECHO_C" >&6
        if test "x$PKG_CONFIG" != xnone
        then
@@ -4252,11 +4238,11 @@ echo $ECHO_N "checking for search-list... $ECHO_C" >&6
 "`
        fi
 
-       echo "$as_me:4255: result: $cf_search_path" >&5
+       echo "$as_me:4241: result: $cf_search_path" >&5
 echo "${ECHO_T}$cf_search_path" >&6
        ;;
 (*)
-       { { echo "$as_me:4259: error: Unexpected option value: $cf_search_path" >&5
+       { { echo "$as_me:4245: error: Unexpected option value: $cf_search_path" >&5
 echo "$as_me: error: Unexpected option value: $cf_search_path" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -4264,7 +4250,7 @@ esac
 
 if test -n "$cf_search_path"
 then
-       echo "$as_me:4267: checking for first directory" >&5
+       echo "$as_me:4253: checking for first directory" >&5
 echo $ECHO_N "checking for first directory... $ECHO_C" >&6
        cf_pkg_config_path=none
        for cf_config in $cf_search_path
@@ -4275,7 +4261,7 @@ echo $ECHO_N "checking for first directory... $ECHO_C" >&6
                        break
                fi
        done
-       echo "$as_me:4278: result: $cf_pkg_config_path" >&5
+       echo "$as_me:4264: result: $cf_pkg_config_path" >&5
 echo "${ECHO_T}$cf_pkg_config_path" >&6
 
        if test "x$cf_pkg_config_path" != xnone ; then
@@ -4285,7 +4271,7 @@ echo "${ECHO_T}$cf_pkg_config_path" >&6
 
        if test -z "$PKG_CONFIG_LIBDIR" && test -n "$cf_search_path"
        then
-               echo "$as_me:4288: checking for workaround" >&5
+               echo "$as_me:4274: checking for workaround" >&5
 echo $ECHO_N "checking for workaround... $ECHO_C" >&6
                if test "$prefix" = "NONE" ; then
                        cf_prefix="$ac_default_prefix"
@@ -4308,17 +4294,17 @@ echo $ECHO_N "checking for workaround... $ECHO_C" >&6
                        esac
                done
                test -z "$PKG_CONFIG_LIBDIR" && PKG_CONFIG_LIBDIR=$cf_backup
-               echo "$as_me:4311: result: $PKG_CONFIG_LIBDIR" >&5
+               echo "$as_me:4297: result: $PKG_CONFIG_LIBDIR" >&5
 echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
        fi
 fi
 
 if test "x$PKG_CONFIG" != xnone
 then
-       echo "$as_me:4318: checking if we should install .pc files for $PKG_CONFIG" >&5
+       echo "$as_me:4304: checking if we should install .pc files for $PKG_CONFIG" >&5
 echo $ECHO_N "checking if we should install .pc files for $PKG_CONFIG... $ECHO_C" >&6
 else
-       echo "$as_me:4321: checking if we should install .pc files" >&5
+       echo "$as_me:4307: checking if we should install .pc files" >&5
 echo $ECHO_N "checking if we should install .pc files... $ECHO_C" >&6
 fi
 
@@ -4329,7 +4315,7 @@ if test "${enable_pc_files+set}" = set; then
 else
   enable_pc_files=no
 fi;
-echo "$as_me:4332: result: $enable_pc_files" >&5
+echo "$as_me:4318: result: $enable_pc_files" >&5
 echo "${ECHO_T}$enable_pc_files" >&6
 
 if test "x$enable_pc_files" != xno
@@ -4337,7 +4323,7 @@ then
        MAKE_PC_FILES=
        case "x$PKG_CONFIG_LIBDIR" in
        (xno|xnone|xyes|x)
-               { echo "$as_me:4340: WARNING: no PKG_CONFIG_LIBDIR was found" >&5
+               { echo "$as_me:4326: WARNING: no PKG_CONFIG_LIBDIR was found" >&5
 echo "$as_me: WARNING: no PKG_CONFIG_LIBDIR was found" >&2;}
                ;;
        (*)
@@ -4368,7 +4354,7 @@ case ".$cf_pkg_config_libdir" in
        cf_pkg_config_libdir=`echo "$cf_pkg_config_libdir" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:4371: error: expected a pathname, not \"$cf_pkg_config_libdir\"" >&5
+       { { echo "$as_me:4357: error: expected a pathname, not \"$cf_pkg_config_libdir\"" >&5
 echo "$as_me: error: expected a pathname, not \"$cf_pkg_config_libdir\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -4382,8 +4368,8 @@ fi
 
 if test -z "$MAKE_PC_FILES"
 then
-       echo "$as_me:4385: checking for suffix to add to pc-files" >&5
-echo $ECHO_N "checking for suffix to add to pc-files... $ECHO_C" >&6
+       echo "$as_me:4371: checking for suffix to add to pkg-config files" >&5
+echo $ECHO_N "checking for suffix to add to pkg-config files... $ECHO_C" >&6
 
 # Check whether --with-pc-suffix or --without-pc-suffix was given.
 if test "${with_pc_suffix+set}" = set; then
@@ -4397,13 +4383,13 @@ if test "${with_pc_suffix+set}" = set; then
        esac
 fi;
        test -z "$PC_MODULE_SUFFIX" && PC_MODULE_SUFFIX=none
-       echo "$as_me:4400: result: $PC_MODULE_SUFFIX" >&5
+       echo "$as_me:4386: result: $PC_MODULE_SUFFIX" >&5
 echo "${ECHO_T}$PC_MODULE_SUFFIX" >&6
        test "$PC_MODULE_SUFFIX" = none && PC_MODULE_SUFFIX=
 
 fi
 
-echo "$as_me:4406: checking if we should assume mixed-case filenames" >&5
+echo "$as_me:4392: checking if we should assume mixed-case filenames" >&5
 echo $ECHO_N "checking if we should assume mixed-case filenames... $ECHO_C" >&6
 
 # Check whether --enable-mixed-case or --disable-mixed-case was given.
@@ -4413,11 +4399,11 @@ if test "${enable_mixed_case+set}" = set; then
 else
   enable_mixedcase=auto
 fi;
-echo "$as_me:4416: result: $enable_mixedcase" >&5
+echo "$as_me:4402: result: $enable_mixedcase" >&5
 echo "${ECHO_T}$enable_mixedcase" >&6
 if test "$enable_mixedcase" = "auto" ; then
 
-echo "$as_me:4420: checking if filesystem supports mixed-case filenames" >&5
+echo "$as_me:4406: checking if filesystem supports mixed-case filenames" >&5
 echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECHO_C" >&6
 if test "${cf_cv_mixedcase+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4444,7 +4430,7 @@ else
 fi
 
 fi
-echo "$as_me:4447: result: $cf_cv_mixedcase" >&5
+echo "$as_me:4433: result: $cf_cv_mixedcase" >&5
 echo "${ECHO_T}$cf_cv_mixedcase" >&6
 test "$cf_cv_mixedcase" = yes &&
 cat >>confdefs.h <<\EOF
@@ -4463,7 +4449,7 @@ EOF
 fi
 
 # do this after mixed-case option (tags/TAGS is not as important as tic).
-echo "$as_me:4466: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "$as_me:4452: checking whether ${MAKE-make} sets \${MAKE}" >&5
 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
 if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
@@ -4483,16 +4469,16 @@ fi
 rm -f conftest.make
 fi
 if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$as_me:4486: result: yes" >&5
+  echo "$as_me:4472: result: yes" >&5
 echo "${ECHO_T}yes" >&6
   SET_MAKE=
 else
-  echo "$as_me:4490: result: no" >&5
+  echo "$as_me:4476: result: no" >&5
 echo "${ECHO_T}no" >&6
   SET_MAKE="MAKE=${MAKE-make}"
 fi
 
-echo "$as_me:4495: checking for \".PHONY\" make-support" >&5
+echo "$as_me:4481: checking for \".PHONY\" make-support" >&5
 echo $ECHO_N "checking for \".PHONY\" make-support... $ECHO_C" >&6
 if test "${cf_cv_make_PHONY+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4547,7 +4533,7 @@ CF_EOF
        rm -rf conftest*
 
 fi
-echo "$as_me:4550: result: $cf_cv_make_PHONY" >&5
+echo "$as_me:4536: result: $cf_cv_make_PHONY" >&5
 echo "${ECHO_T}$cf_cv_make_PHONY" >&6
 MAKE_NO_PHONY="#"
 MAKE_PHONY="#"
@@ -4558,7 +4544,7 @@ for ac_prog in exctags ctags
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:4561: checking for $ac_word" >&5
+echo "$as_me:4547: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CTAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4573,7 +4559,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CTAGS="$ac_prog"
-echo "$as_me:4576: found $ac_dir/$ac_word" >&5
+echo "$as_me:4562: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4581,10 +4567,10 @@ fi
 fi
 CTAGS=$ac_cv_prog_CTAGS
 if test -n "$CTAGS"; then
-  echo "$as_me:4584: result: $CTAGS" >&5
+  echo "$as_me:4570: result: $CTAGS" >&5
 echo "${ECHO_T}$CTAGS" >&6
 else
-  echo "$as_me:4587: result: no" >&5
+  echo "$as_me:4573: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4595,7 +4581,7 @@ for ac_prog in exetags etags
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:4598: checking for $ac_word" >&5
+echo "$as_me:4584: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ETAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4610,7 +4596,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ETAGS="$ac_prog"
-echo "$as_me:4613: found $ac_dir/$ac_word" >&5
+echo "$as_me:4599: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4618,10 +4604,10 @@ fi
 fi
 ETAGS=$ac_cv_prog_ETAGS
 if test -n "$ETAGS"; then
-  echo "$as_me:4621: result: $ETAGS" >&5
+  echo "$as_me:4607: result: $ETAGS" >&5
 echo "${ECHO_T}$ETAGS" >&6
 else
-  echo "$as_me:4624: result: no" >&5
+  echo "$as_me:4610: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4630,7 +4616,7 @@ done
 
 # Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args.
 set dummy ${CTAGS:-ctags}; ac_word=$2
-echo "$as_me:4633: checking for $ac_word" >&5
+echo "$as_me:4619: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4645,7 +4631,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_MAKE_LOWER_TAGS="yes"
-echo "$as_me:4648: found $ac_dir/$ac_word" >&5
+echo "$as_me:4634: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4654,17 +4640,17 @@ fi
 fi
 MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS
 if test -n "$MAKE_LOWER_TAGS"; then
-  echo "$as_me:4657: result: $MAKE_LOWER_TAGS" >&5
+  echo "$as_me:4643: result: $MAKE_LOWER_TAGS" >&5
 echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
 else
-  echo "$as_me:4660: result: no" >&5
+  echo "$as_me:4646: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
 if test "$cf_cv_mixedcase" = yes ; then
        # Extract the first word of "${ETAGS:-etags}", so it can be a program name with args.
 set dummy ${ETAGS:-etags}; ac_word=$2
-echo "$as_me:4667: checking for $ac_word" >&5
+echo "$as_me:4653: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4679,7 +4665,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_MAKE_UPPER_TAGS="yes"
-echo "$as_me:4682: found $ac_dir/$ac_word" >&5
+echo "$as_me:4668: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4688,10 +4674,10 @@ fi
 fi
 MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS
 if test -n "$MAKE_UPPER_TAGS"; then
-  echo "$as_me:4691: result: $MAKE_UPPER_TAGS" >&5
+  echo "$as_me:4677: result: $MAKE_UPPER_TAGS" >&5
 echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
 else
-  echo "$as_me:4694: result: no" >&5
+  echo "$as_me:4680: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4711,7 +4697,7 @@ else
        MAKE_LOWER_TAGS="#"
 fi
 
-echo "$as_me:4714: checking for makeflags variable" >&5
+echo "$as_me:4700: checking for makeflags variable" >&5
 echo $ECHO_N "checking for makeflags variable... $ECHO_C" >&6
 if test "${cf_cv_makeflags+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4741,7 +4727,7 @@ CF_EOF
                        ;;
                (*)
 
-echo "${as_me:-configure}:4744: testing given option \"$cf_option\",no match \"$cf_result\" ..." 1>&5
+echo "${as_me:-configure}:4730: testing given option \"$cf_option\",no match \"$cf_result\" ..." 1>&5
 
                        ;;
                esac
@@ -4749,13 +4735,13 @@ echo "${as_me:-configure}:4744: testing given option \"$cf_option\",no match \"$
        rm -f cf_makeflags.tmp
 
 fi
-echo "$as_me:4752: result: $cf_cv_makeflags" >&5
+echo "$as_me:4738: result: $cf_cv_makeflags" >&5
 echo "${ECHO_T}$cf_cv_makeflags" >&6
 
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-echo "$as_me:4758: checking for $ac_word" >&5
+echo "$as_me:4744: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_RANLIB+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4770,7 +4756,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-echo "$as_me:4773: found $ac_dir/$ac_word" >&5
+echo "$as_me:4759: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4778,10 +4764,10 @@ fi
 fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
-  echo "$as_me:4781: result: $RANLIB" >&5
+  echo "$as_me:4767: result: $RANLIB" >&5
 echo "${ECHO_T}$RANLIB" >&6
 else
-  echo "$as_me:4784: result: no" >&5
+  echo "$as_me:4770: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4790,7 +4776,7 @@ if test -z "$ac_cv_prog_RANLIB"; then
   ac_ct_RANLIB=$RANLIB
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
-echo "$as_me:4793: checking for $ac_word" >&5
+echo "$as_me:4779: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4805,7 +4791,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_RANLIB="ranlib"
-echo "$as_me:4808: found $ac_dir/$ac_word" >&5
+echo "$as_me:4794: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4814,10 +4800,10 @@ fi
 fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
-  echo "$as_me:4817: result: $ac_ct_RANLIB" >&5
+  echo "$as_me:4803: result: $ac_ct_RANLIB" >&5
 echo "${ECHO_T}$ac_ct_RANLIB" >&6
 else
-  echo "$as_me:4820: result: no" >&5
+  echo "$as_me:4806: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4829,7 +4815,7 @@ fi
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ld; ac_word=$2
-echo "$as_me:4832: checking for $ac_word" >&5
+echo "$as_me:4818: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_LD+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4844,7 +4830,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_LD="${ac_tool_prefix}ld"
-echo "$as_me:4847: found $ac_dir/$ac_word" >&5
+echo "$as_me:4833: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4852,10 +4838,10 @@ fi
 fi
 LD=$ac_cv_prog_LD
 if test -n "$LD"; then
-  echo "$as_me:4855: result: $LD" >&5
+  echo "$as_me:4841: result: $LD" >&5
 echo "${ECHO_T}$LD" >&6
 else
-  echo "$as_me:4858: result: no" >&5
+  echo "$as_me:4844: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4864,7 +4850,7 @@ if test -z "$ac_cv_prog_LD"; then
   ac_ct_LD=$LD
   # Extract the first word of "ld", so it can be a program name with args.
 set dummy ld; ac_word=$2
-echo "$as_me:4867: checking for $ac_word" >&5
+echo "$as_me:4853: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_LD+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4879,7 +4865,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_LD="ld"
-echo "$as_me:4882: found $ac_dir/$ac_word" >&5
+echo "$as_me:4868: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4888,10 +4874,10 @@ fi
 fi
 ac_ct_LD=$ac_cv_prog_ac_ct_LD
 if test -n "$ac_ct_LD"; then
-  echo "$as_me:4891: result: $ac_ct_LD" >&5
+  echo "$as_me:4877: result: $ac_ct_LD" >&5
 echo "${ECHO_T}$ac_ct_LD" >&6
 else
-  echo "$as_me:4894: result: no" >&5
+  echo "$as_me:4880: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4903,7 +4889,7 @@ fi
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:4906: checking for $ac_word" >&5
+echo "$as_me:4892: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_AR+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4918,7 +4904,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_AR="${ac_tool_prefix}ar"
-echo "$as_me:4921: found $ac_dir/$ac_word" >&5
+echo "$as_me:4907: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4926,10 +4912,10 @@ fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  echo "$as_me:4929: result: $AR" >&5
+  echo "$as_me:4915: result: $AR" >&5
 echo "${ECHO_T}$AR" >&6
 else
-  echo "$as_me:4932: result: no" >&5
+  echo "$as_me:4918: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4938,7 +4924,7 @@ if test -z "$ac_cv_prog_AR"; then
   ac_ct_AR=$AR
   # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
-echo "$as_me:4941: checking for $ac_word" >&5
+echo "$as_me:4927: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4953,7 +4939,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_AR="ar"
-echo "$as_me:4956: found $ac_dir/$ac_word" >&5
+echo "$as_me:4942: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -4962,10 +4948,10 @@ fi
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
-  echo "$as_me:4965: result: $ac_ct_AR" >&5
+  echo "$as_me:4951: result: $ac_ct_AR" >&5
 echo "${ECHO_T}$ac_ct_AR" >&6
 else
-  echo "$as_me:4968: result: no" >&5
+  echo "$as_me:4954: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -4977,7 +4963,7 @@ fi
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args.
 set dummy ${ac_tool_prefix}nm; ac_word=$2
-echo "$as_me:4980: checking for $ac_word" >&5
+echo "$as_me:4966: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_NM+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4992,7 +4978,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_NM="${ac_tool_prefix}nm"
-echo "$as_me:4995: found $ac_dir/$ac_word" >&5
+echo "$as_me:4981: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5000,10 +4986,10 @@ fi
 fi
 NM=$ac_cv_prog_NM
 if test -n "$NM"; then
-  echo "$as_me:5003: result: $NM" >&5
+  echo "$as_me:4989: result: $NM" >&5
 echo "${ECHO_T}$NM" >&6
 else
-  echo "$as_me:5006: result: no" >&5
+  echo "$as_me:4992: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5012,7 +4998,7 @@ if test -z "$ac_cv_prog_NM"; then
   ac_ct_NM=$NM
   # Extract the first word of "nm", so it can be a program name with args.
 set dummy nm; ac_word=$2
-echo "$as_me:5015: checking for $ac_word" >&5
+echo "$as_me:5001: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_NM+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5027,7 +5013,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_NM="nm"
-echo "$as_me:5030: found $ac_dir/$ac_word" >&5
+echo "$as_me:5016: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5036,10 +5022,10 @@ fi
 fi
 ac_ct_NM=$ac_cv_prog_ac_ct_NM
 if test -n "$ac_ct_NM"; then
-  echo "$as_me:5039: result: $ac_ct_NM" >&5
+  echo "$as_me:5025: result: $ac_ct_NM" >&5
 echo "${ECHO_T}$ac_ct_NM" >&6
 else
-  echo "$as_me:5042: result: no" >&5
+  echo "$as_me:5028: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5051,7 +5037,7 @@ fi
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:5054: checking for $ac_word" >&5
+echo "$as_me:5040: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_AR+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5066,7 +5052,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_AR="${ac_tool_prefix}ar"
-echo "$as_me:5069: found $ac_dir/$ac_word" >&5
+echo "$as_me:5055: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5074,10 +5060,10 @@ fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  echo "$as_me:5077: result: $AR" >&5
+  echo "$as_me:5063: result: $AR" >&5
 echo "${ECHO_T}$AR" >&6
 else
-  echo "$as_me:5080: result: no" >&5
+  echo "$as_me:5066: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5086,7 +5072,7 @@ if test -z "$ac_cv_prog_AR"; then
   ac_ct_AR=$AR
   # Extract the first word of "ar", so it can be a program name with args.
 set dummy ar; ac_word=$2
-echo "$as_me:5089: checking for $ac_word" >&5
+echo "$as_me:5075: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5101,7 +5087,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_AR="ar"
-echo "$as_me:5104: found $ac_dir/$ac_word" >&5
+echo "$as_me:5090: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5110,10 +5096,10 @@ fi
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
-  echo "$as_me:5113: result: $ac_ct_AR" >&5
+  echo "$as_me:5099: result: $ac_ct_AR" >&5
 echo "${ECHO_T}$ac_ct_AR" >&6
 else
-  echo "$as_me:5116: result: no" >&5
+  echo "$as_me:5102: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5122,7 +5108,7 @@ else
   AR="$ac_cv_prog_AR"
 fi
 
-echo "$as_me:5125: checking for options to update archives" >&5
+echo "$as_me:5111: checking for options to update archives" >&5
 echo $ECHO_N "checking for options to update archives... $ECHO_C" >&6
 if test "${cf_cv_ar_flags+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5159,13 +5145,13 @@ else
                        rm -f conftest.a
 
                        cat >"conftest.$ac_ext" <<EOF
-#line 5162 "configure"
+#line 5148 "configure"
 int    testdata[3] = { 123, 456, 789 };
 EOF
-                       if { (eval echo "$as_me:5165: \"$ac_compile\"") >&5
+                       if { (eval echo "$as_me:5151: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5168: \$? = $ac_status" >&5
+  echo "$as_me:5154: \$? = $ac_status" >&5
   (exit "$ac_status"); } ; then
                                echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&5
                                $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&5 1>/dev/null
@@ -5176,7 +5162,7 @@ EOF
                        else
                                test -n "$verbose" && echo "    cannot compile test-program" 1>&6
 
-echo "${as_me:-configure}:5179: testing cannot compile test-program ..." 1>&5
+echo "${as_me:-configure}:5165: testing cannot compile test-program ..." 1>&5
 
                                break
                        fi
@@ -5186,7 +5172,7 @@ echo "${as_me:-configure}:5179: testing cannot compile test-program ..." 1>&5
        esac
 
 fi
-echo "$as_me:5189: result: $cf_cv_ar_flags" >&5
+echo "$as_me:5175: result: $cf_cv_ar_flags" >&5
 echo "${ECHO_T}$cf_cv_ar_flags" >&6
 
 if test -n "$ARFLAGS" ; then
@@ -5197,8 +5183,8 @@ else
        ARFLAGS=$cf_cv_ar_flags
 fi
 
-echo "$as_me:5200: checking if you have specified an install-prefix" >&5
-echo $ECHO_N "checking if you have specified an install-prefix... $ECHO_C" >&6
+echo "$as_me:5186: checking for an installation directory prefix" >&5
+echo $ECHO_N "checking for an installation directory prefix... $ECHO_C" >&6
 
 # Check whether --with-install-prefix or --without-install-prefix was given.
 if test "${with_install_prefix+set}" = set; then
@@ -5210,8 +5196,8 @@ if test "${with_install_prefix+set}" = set; then
                ;;
        esac
 fi;
-echo "$as_me:5213: result: $DESTDIR" >&5
-echo "${ECHO_T}$DESTDIR" >&6
+echo "$as_me:5199: result: ${DESTDIR:-(none)}" >&5
+echo "${ECHO_T}${DESTDIR:-(none)}" >&6
 
 ###############################################################################
 
@@ -5245,7 +5231,7 @@ else
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:5248: checking for $ac_word" >&5
+echo "$as_me:5234: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_BUILD_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5260,7 +5246,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_BUILD_CC="$ac_prog"
-echo "$as_me:5263: found $ac_dir/$ac_word" >&5
+echo "$as_me:5249: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5268,10 +5254,10 @@ fi
 fi
 BUILD_CC=$ac_cv_prog_BUILD_CC
 if test -n "$BUILD_CC"; then
-  echo "$as_me:5271: result: $BUILD_CC" >&5
+  echo "$as_me:5257: result: $BUILD_CC" >&5
 echo "${ECHO_T}$BUILD_CC" >&6
 else
-  echo "$as_me:5274: result: no" >&5
+  echo "$as_me:5260: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5280,12 +5266,12 @@ done
 test -n "$BUILD_CC" || BUILD_CC="none"
 
 fi;
-       echo "$as_me:5283: checking for native build C compiler" >&5
+       echo "$as_me:5269: checking for native build C compiler" >&5
 echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6
-       echo "$as_me:5285: result: $BUILD_CC" >&5
+       echo "$as_me:5271: result: $BUILD_CC" >&5
 echo "${ECHO_T}$BUILD_CC" >&6
 
-       echo "$as_me:5288: checking for native build C preprocessor" >&5
+       echo "$as_me:5274: checking for native build C preprocessor" >&5
 echo $ECHO_N "checking for native build C preprocessor... $ECHO_C" >&6
 
 # Check whether --with-build-cpp or --without-build-cpp was given.
@@ -5295,10 +5281,10 @@ if test "${with_build_cpp+set}" = set; then
 else
   BUILD_CPP='${BUILD_CC} -E'
 fi;
-       echo "$as_me:5298: result: $BUILD_CPP" >&5
+       echo "$as_me:5284: result: $BUILD_CPP" >&5
 echo "${ECHO_T}$BUILD_CPP" >&6
 
-       echo "$as_me:5301: checking for native build C flags" >&5
+       echo "$as_me:5287: checking for native build C flags" >&5
 echo $ECHO_N "checking for native build C flags... $ECHO_C" >&6
 
 # Check whether --with-build-cflags or --without-build-cflags was given.
@@ -5306,10 +5292,10 @@ if test "${with_build_cflags+set}" = set; then
   withval="$with_build_cflags"
   BUILD_CFLAGS="$withval"
 fi;
-       echo "$as_me:5309: result: $BUILD_CFLAGS" >&5
+       echo "$as_me:5295: result: $BUILD_CFLAGS" >&5
 echo "${ECHO_T}$BUILD_CFLAGS" >&6
 
-       echo "$as_me:5312: checking for native build C preprocessor-flags" >&5
+       echo "$as_me:5298: checking for native build C preprocessor-flags" >&5
 echo $ECHO_N "checking for native build C preprocessor-flags... $ECHO_C" >&6
 
 # Check whether --with-build-cppflags or --without-build-cppflags was given.
@@ -5317,10 +5303,10 @@ if test "${with_build_cppflags+set}" = set; then
   withval="$with_build_cppflags"
   BUILD_CPPFLAGS="$withval"
 fi;
-       echo "$as_me:5320: result: $BUILD_CPPFLAGS" >&5
+       echo "$as_me:5306: result: $BUILD_CPPFLAGS" >&5
 echo "${ECHO_T}$BUILD_CPPFLAGS" >&6
 
-       echo "$as_me:5323: checking for native build linker-flags" >&5
+       echo "$as_me:5309: checking for native build linker-flags" >&5
 echo $ECHO_N "checking for native build linker-flags... $ECHO_C" >&6
 
 # Check whether --with-build-ldflags or --without-build-ldflags was given.
@@ -5328,10 +5314,10 @@ if test "${with_build_ldflags+set}" = set; then
   withval="$with_build_ldflags"
   BUILD_LDFLAGS="$withval"
 fi;
-       echo "$as_me:5331: result: $BUILD_LDFLAGS" >&5
+       echo "$as_me:5317: result: $BUILD_LDFLAGS" >&5
 echo "${ECHO_T}$BUILD_LDFLAGS" >&6
 
-       echo "$as_me:5334: checking for native build linker-libraries" >&5
+       echo "$as_me:5320: checking for native build linker-libraries" >&5
 echo $ECHO_N "checking for native build linker-libraries... $ECHO_C" >&6
 
 # Check whether --with-build-libs or --without-build-libs was given.
@@ -5339,7 +5325,7 @@ if test "${with_build_libs+set}" = set; then
   withval="$with_build_libs"
   BUILD_LIBS="$withval"
 fi;
-       echo "$as_me:5342: result: $BUILD_LIBS" >&5
+       echo "$as_me:5328: result: $BUILD_LIBS" >&5
 echo "${ECHO_T}$BUILD_LIBS" >&6
 
        # this assumes we're on Unix.
@@ -5348,7 +5334,7 @@ echo "${ECHO_T}$BUILD_LIBS" >&6
 
        : ${BUILD_CC:='${CC}'}
 
-       echo "$as_me:5351: checking if the build-compiler \"$BUILD_CC\" works" >&5
+       echo "$as_me:5337: checking if the build-compiler \"$BUILD_CC\" works" >&5
 echo $ECHO_N "checking if the build-compiler \"$BUILD_CC\" works... $ECHO_C" >&6
 
        cf_save_crossed=$cross_compiling
@@ -5362,7 +5348,7 @@ echo $ECHO_N "checking if the build-compiler \"$BUILD_CC\" works... $ECHO_C" >&6
   cf_ok_build_cc=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 5365 "configure"
+#line 5351 "configure"
 #include "confdefs.h"
 #include <stdio.h>
                int main(int argc, char *argv[])
@@ -5372,15 +5358,15 @@ else
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:5375: \"$ac_link\"") >&5
+if { (eval echo "$as_me:5361: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:5378: \$? = $ac_status" >&5
+  echo "$as_me:5364: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:5380: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5366: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5383: \$? = $ac_status" >&5
+  echo "$as_me:5369: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_ok_build_cc=yes
 else
@@ -5395,12 +5381,12 @@ fi
        cross_compiling=$cf_save_crossed
        ac_link=$cf_save_ac_link
 
-       echo "$as_me:5398: result: $cf_ok_build_cc" >&5
+       echo "$as_me:5384: result: $cf_ok_build_cc" >&5
 echo "${ECHO_T}$cf_ok_build_cc" >&6
 
        if test "$cf_ok_build_cc" != yes
        then
-               { { echo "$as_me:5403: error: Cross-build requires two compilers.
+               { { echo "$as_me:5389: error: Cross-build requires two compilers.
 Use --with-build-cc to specify the native compiler." >&5
 echo "$as_me: error: Cross-build requires two compilers.
 Use --with-build-cc to specify the native compiler." >&2;}
@@ -5425,7 +5411,7 @@ fi
 ### shared, for example.
 cf_list_models=""
 
-echo "$as_me:5428: checking if libtool -version-number should be used" >&5
+echo "$as_me:5414: checking if libtool -version-number should be used" >&5
 echo $ECHO_N "checking if libtool -version-number should be used... $ECHO_C" >&6
 
 # Check whether --enable-libtool-version or --disable-libtool-version was given.
@@ -5442,7 +5428,7 @@ else
        cf_libtool_version=yes
 
 fi;
-echo "$as_me:5445: result: $cf_libtool_version" >&5
+echo "$as_me:5431: result: $cf_libtool_version" >&5
 echo "${ECHO_T}$cf_libtool_version" >&6
 
 if test "$cf_libtool_version" = yes ; then
@@ -5451,25 +5437,25 @@ else
        LIBTOOL_VERSION="-version-info"
        case "x$VERSION" in
        (x)
-               { echo "$as_me:5454: WARNING: VERSION was not set" >&5
+               { echo "$as_me:5440: WARNING: VERSION was not set" >&5
 echo "$as_me: WARNING: VERSION was not set" >&2;}
                ;;
        (x*.*.*)
                ABI_VERSION="$VERSION"
                test -n "$verbose" && echo "    ABI_VERSION: $ABI_VERSION" 1>&6
 
-echo "${as_me:-configure}:5461: testing ABI_VERSION: $ABI_VERSION ..." 1>&5
+echo "${as_me:-configure}:5447: testing ABI_VERSION: $ABI_VERSION ..." 1>&5
 
                ;;
        (x*:*:*)
                ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'`
                test -n "$verbose" && echo "    ABI_VERSION: $ABI_VERSION" 1>&6
 
-echo "${as_me:-configure}:5468: testing ABI_VERSION: $ABI_VERSION ..." 1>&5
+echo "${as_me:-configure}:5454: testing ABI_VERSION: $ABI_VERSION ..." 1>&5
 
                ;;
        (*)
-               { echo "$as_me:5472: WARNING: unexpected VERSION value: $VERSION" >&5
+               { echo "$as_me:5458: WARNING: unexpected VERSION value: $VERSION" >&5
 echo "$as_me: WARNING: unexpected VERSION value: $VERSION" >&2;}
                ;;
        esac
@@ -5491,7 +5477,7 @@ LIB_LINK='${CC}'
 LIB_INSTALL=
 LIB_UNINSTALL=
 
-echo "$as_me:5494: checking if you want to build libraries with libtool" >&5
+echo "$as_me:5480: checking if you want to build libraries with libtool" >&5
 echo $ECHO_N "checking if you want to build libraries with libtool... $ECHO_C" >&6
 
 # Check whether --with-libtool or --without-libtool was given.
@@ -5501,7 +5487,7 @@ if test "${with_libtool+set}" = set; then
 else
   with_libtool=no
 fi;
-echo "$as_me:5504: result: $with_libtool" >&5
+echo "$as_me:5490: result: $with_libtool" >&5
 echo "${ECHO_T}$with_libtool" >&6
 if test "$with_libtool" != "no"; then
 
@@ -5532,7 +5518,7 @@ case ".$with_libtool" in
        with_libtool=`echo "$with_libtool" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:5535: error: expected a pathname, not \"$with_libtool\"" >&5
+       { { echo "$as_me:5521: error: expected a pathname, not \"$with_libtool\"" >&5
 echo "$as_me: error: expected a pathname, not \"$with_libtool\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -5545,7 +5531,7 @@ esac
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:5548: checking for $ac_word" >&5
+echo "$as_me:5534: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_LIBTOOL+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5560,7 +5546,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_LIBTOOL="$ac_tool_prefix$ac_prog"
-echo "$as_me:5563: found $ac_dir/$ac_word" >&5
+echo "$as_me:5549: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5568,10 +5554,10 @@ fi
 fi
 LIBTOOL=$ac_cv_prog_LIBTOOL
 if test -n "$LIBTOOL"; then
-  echo "$as_me:5571: result: $LIBTOOL" >&5
+  echo "$as_me:5557: result: $LIBTOOL" >&5
 echo "${ECHO_T}$LIBTOOL" >&6
 else
-  echo "$as_me:5574: result: no" >&5
+  echo "$as_me:5560: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5584,7 +5570,7 @@ if test -z "$LIBTOOL"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:5587: checking for $ac_word" >&5
+echo "$as_me:5573: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_LIBTOOL+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5599,7 +5585,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_LIBTOOL="$ac_prog"
-echo "$as_me:5602: found $ac_dir/$ac_word" >&5
+echo "$as_me:5588: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5607,10 +5593,10 @@ fi
 fi
 ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL
 if test -n "$ac_ct_LIBTOOL"; then
-  echo "$as_me:5610: result: $ac_ct_LIBTOOL" >&5
+  echo "$as_me:5596: result: $ac_ct_LIBTOOL" >&5
 echo "${ECHO_T}$ac_ct_LIBTOOL" >&6
 else
-  echo "$as_me:5613: result: no" >&5
+  echo "$as_me:5599: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5641,7 +5627,7 @@ unset LIBTOOL
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:5644: checking for $ac_word" >&5
+echo "$as_me:5630: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_LIBTOOL+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5656,7 +5642,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_LIBTOOL="$ac_tool_prefix$ac_prog"
-echo "$as_me:5659: found $ac_dir/$ac_word" >&5
+echo "$as_me:5645: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5664,10 +5650,10 @@ fi
 fi
 LIBTOOL=$ac_cv_prog_LIBTOOL
 if test -n "$LIBTOOL"; then
-  echo "$as_me:5667: result: $LIBTOOL" >&5
+  echo "$as_me:5653: result: $LIBTOOL" >&5
 echo "${ECHO_T}$LIBTOOL" >&6
 else
-  echo "$as_me:5670: result: no" >&5
+  echo "$as_me:5656: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5680,7 +5666,7 @@ if test -z "$LIBTOOL"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:5683: checking for $ac_word" >&5
+echo "$as_me:5669: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_LIBTOOL+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5695,7 +5681,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_LIBTOOL="$ac_prog"
-echo "$as_me:5698: found $ac_dir/$ac_word" >&5
+echo "$as_me:5684: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -5703,10 +5689,10 @@ fi
 fi
 ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL
 if test -n "$ac_ct_LIBTOOL"; then
-  echo "$as_me:5706: result: $ac_ct_LIBTOOL" >&5
+  echo "$as_me:5692: result: $ac_ct_LIBTOOL" >&5
 echo "${ECHO_T}$ac_ct_LIBTOOL" >&6
 else
-  echo "$as_me:5709: result: no" >&5
+  echo "$as_me:5695: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -5728,7 +5714,7 @@ test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
                fi
        fi
        if test -z "$LIBTOOL" ; then
-               { { echo "$as_me:5731: error: Cannot find libtool" >&5
+               { { echo "$as_me:5717: error: Cannot find libtool" >&5
 echo "$as_me: error: Cannot find libtool" >&2;}
    { (exit 1); exit 1; }; }
        fi
@@ -5744,7 +5730,7 @@ echo "$as_me: error: Cannot find libtool" >&2;}
 
 if test -n "$LIBTOOL" && test "$LIBTOOL" != none
 then
-       echo "$as_me:5747: checking version of $LIBTOOL" >&5
+       echo "$as_me:5733: checking version of $LIBTOOL" >&5
 echo $ECHO_N "checking version of $LIBTOOL... $ECHO_C" >&6
 
 if test -n "$LIBTOOL" && test "$LIBTOOL" != none
@@ -5755,7 +5741,7 @@ else
 fi
 test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
 
-       echo "$as_me:5758: result: $cf_cv_libtool_version" >&5
+       echo "$as_me:5744: result: $cf_cv_libtool_version" >&5
 echo "${ECHO_T}$cf_cv_libtool_version" >&6
        if test -n "$cf_cv_libtool_version"
        then
@@ -5764,18 +5750,18 @@ echo "${ECHO_T}$cf_cv_libtool_version" >&6
                (*...GNU-libtool...*)
                        ;;
                (*)
-                       { { echo "$as_me:5767: error: This is not GNU libtool" >&5
+                       { { echo "$as_me:5753: error: This is not GNU libtool" >&5
 echo "$as_me: error: This is not GNU libtool" >&2;}
    { (exit 1); exit 1; }; }
                        ;;
                esac
        else
-               { { echo "$as_me:5773: error: No version found for $LIBTOOL" >&5
+               { { echo "$as_me:5759: error: No version found for $LIBTOOL" >&5
 echo "$as_me: error: No version found for $LIBTOOL" >&2;}
    { (exit 1); exit 1; }; }
        fi
 else
-       { { echo "$as_me:5778: error: GNU libtool has not been found" >&5
+       { { echo "$as_me:5764: error: GNU libtool has not been found" >&5
 echo "$as_me: error: GNU libtool has not been found" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -5811,7 +5797,7 @@ cf_list_models="$cf_list_models libtool"
 
 else
 
-echo "$as_me:5814: checking if you want to build shared libraries" >&5
+echo "$as_me:5800: checking if you want to build shared libraries" >&5
 echo $ECHO_N "checking if you want to build shared libraries... $ECHO_C" >&6
 
 # Check whether --with-shared or --without-shared was given.
@@ -5821,11 +5807,11 @@ if test "${with_shared+set}" = set; then
 else
   with_shared=no
 fi;
-echo "$as_me:5824: result: $with_shared" >&5
+echo "$as_me:5810: result: $with_shared" >&5
 echo "${ECHO_T}$with_shared" >&6
 test "x$with_shared" = "xyes" && cf_list_models="$cf_list_models shared"
 
-echo "$as_me:5828: checking if you want to build static libraries" >&5
+echo "$as_me:5814: checking if you want to build static libraries" >&5
 echo $ECHO_N "checking if you want to build static libraries... $ECHO_C" >&6
 
 # Check whether --with-normal or --without-normal was given.
@@ -5835,11 +5821,11 @@ if test "${with_normal+set}" = set; then
 else
   with_normal=yes
 fi;
-echo "$as_me:5838: result: $with_normal" >&5
+echo "$as_me:5824: result: $with_normal" >&5
 echo "${ECHO_T}$with_normal" >&6
 test "x$with_normal" = "xyes" && cf_list_models="$cf_list_models normal"
 
-echo "$as_me:5842: checking if you want to build debug libraries" >&5
+echo "$as_me:5828: checking if you want to build debug libraries" >&5
 echo $ECHO_N "checking if you want to build debug libraries... $ECHO_C" >&6
 
 # Check whether --with-debug or --without-debug was given.
@@ -5849,11 +5835,11 @@ if test "${with_debug+set}" = set; then
 else
   with_debug=yes
 fi;
-echo "$as_me:5852: result: $with_debug" >&5
+echo "$as_me:5838: result: $with_debug" >&5
 echo "${ECHO_T}$with_debug" >&6
 test "x$with_debug" = "xyes" && cf_list_models="$cf_list_models debug"
 
-echo "$as_me:5856: checking if you want to build profiling libraries" >&5
+echo "$as_me:5842: checking if you want to build profiling libraries" >&5
 echo $ECHO_N "checking if you want to build profiling libraries... $ECHO_C" >&6
 
 # Check whether --with-profile or --without-profile was given.
@@ -5863,7 +5849,7 @@ if test "${with_profile+set}" = set; then
 else
   with_profile=no
 fi;
-echo "$as_me:5866: result: $with_profile" >&5
+echo "$as_me:5852: result: $with_profile" >&5
 echo "${ECHO_T}$with_profile" >&6
 test "x$with_profile" = "xyes" && cf_list_models="$cf_list_models profile"
 
@@ -5871,7 +5857,7 @@ fi
 
 if test "X$cf_with_cxx_binding" != Xno; then
 if test "x$with_shared" = "xyes"; then
-echo "$as_me:5874: checking if you want to build C++ shared libraries" >&5
+echo "$as_me:5860: checking if you want to build C++ shared libraries" >&5
 echo $ECHO_N "checking if you want to build C++ shared libraries... $ECHO_C" >&6
 
 # Check whether --with-cxx-shared or --without-cxx-shared was given.
@@ -5881,26 +5867,26 @@ if test "${with_cxx_shared+set}" = set; then
 else
   with_shared_cxx=no
 fi;
-echo "$as_me:5884: result: $with_shared_cxx" >&5
+echo "$as_me:5870: result: $with_shared_cxx" >&5
 echo "${ECHO_T}$with_shared_cxx" >&6
 fi
 fi
 
 ###############################################################################
 
-echo "$as_me:5891: checking for specified models" >&5
+echo "$as_me:5877: checking for specified models" >&5
 echo $ECHO_N "checking for specified models... $ECHO_C" >&6
 test -z "$cf_list_models" && cf_list_models=normal
 test "$with_libtool" != "no" && cf_list_models=libtool
-echo "$as_me:5895: result: $cf_list_models" >&5
+echo "$as_me:5881: result: $cf_list_models" >&5
 echo "${ECHO_T}$cf_list_models" >&6
 
 ### Use the first model as the default, and save its suffix for use in building
 ### up test-applications.
-echo "$as_me:5900: checking for default model" >&5
+echo "$as_me:5886: checking for default model" >&5
 echo $ECHO_N "checking for default model... $ECHO_C" >&6
 DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
-echo "$as_me:5903: result: $DFT_LWR_MODEL" >&5
+echo "$as_me:5889: result: $DFT_LWR_MODEL" >&5
 echo "${ECHO_T}$DFT_LWR_MODEL" >&6
 
 DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
@@ -5914,7 +5900,7 @@ LIB_NAME=ncurses
 LIB_DIR=../lib
 LIB_2ND=../../lib
 
-echo "$as_me:5917: checking if you want to have a library-prefix" >&5
+echo "$as_me:5903: checking if you want to have a library-prefix" >&5
 echo $ECHO_N "checking if you want to have a library-prefix... $ECHO_C" >&6
 
 # Check whether --with-lib-prefix or --without-lib-prefix was given.
@@ -5924,7 +5910,7 @@ if test "${with_lib_prefix+set}" = set; then
 else
   with_lib_prefix=auto
 fi;
-echo "$as_me:5927: result: $with_lib_prefix" >&5
+echo "$as_me:5913: result: $with_lib_prefix" >&5
 echo "${ECHO_T}$with_lib_prefix" >&6
 
 if test "$with_lib_prefix" = auto
@@ -5955,24 +5941,24 @@ fi
 
 LIB_SUFFIX=
 
-       echo "$as_me:5958: checking for PATH separator" >&5
+       echo "$as_me:5944: checking for PATH separator" >&5
 echo $ECHO_N "checking for PATH separator... $ECHO_C" >&6
        case "$cf_cv_system_name" in
        (os2*)  PATH_SEPARATOR=';'  ;;
        (*)     ${PATH_SEPARATOR:=':'}  ;;
        esac
 
-       echo "$as_me:5965: result: $PATH_SEPARATOR" >&5
+       echo "$as_me:5951: result: $PATH_SEPARATOR" >&5
 echo "${ECHO_T}$PATH_SEPARATOR" >&6
 
 # headers needed for checks...
-echo "$as_me:5969: checking for ANSI C header files" >&5
+echo "$as_me:5955: checking for ANSI C header files" >&5
 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
 if test "${ac_cv_header_stdc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 5975 "configure"
+#line 5961 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -5980,13 +5966,13 @@ else
 #include <float.h>
 
 _ACEOF
-if { (eval echo "$as_me:5983: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:5969: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:5989: \$? = $ac_status" >&5
+  echo "$as_me:5975: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -6008,7 +5994,7 @@ rm -f conftest.err "conftest.$ac_ext"
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6011 "configure"
+#line 5997 "configure"
 #include "confdefs.h"
 #include <string.h>
 
@@ -6026,7 +6012,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6029 "configure"
+#line 6015 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 
@@ -6047,7 +6033,7 @@ if test $ac_cv_header_stdc = yes; then
   :
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6050 "configure"
+#line 6036 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #if ((' ' & 0x0FF) == 0x020)
@@ -6073,15 +6059,15 @@ main (void)
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:6076: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6062: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6079: \$? = $ac_status" >&5
+  echo "$as_me:6065: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:6081: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6067: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6084: \$? = $ac_status" >&5
+  echo "$as_me:6070: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -6094,7 +6080,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes
 fi
 fi
 fi
-echo "$as_me:6097: result: $ac_cv_header_stdc" >&5
+echo "$as_me:6083: result: $ac_cv_header_stdc" >&5
 echo "${ECHO_T}$ac_cv_header_stdc" >&6
 if test $ac_cv_header_stdc = yes; then
 
@@ -6110,28 +6096,28 @@ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
                   inttypes.h stdint.h unistd.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:6113: checking for $ac_header" >&5
+echo "$as_me:6099: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6119 "configure"
+#line 6105 "configure"
 #include "confdefs.h"
 $ac_includes_default
 #include <$ac_header>
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:6125: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6111: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:6128: \$? = $ac_status" >&5
+  echo "$as_me:6114: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6131: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6117: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6134: \$? = $ac_status" >&5
+  echo "$as_me:6120: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_Header=yes"
 else
@@ -6141,7 +6127,7 @@ eval "$as_ac_Header=no"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:6144: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:6130: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -6151,20 +6137,20 @@ EOF
 fi
 done
 
-echo "$as_me:6154: checking whether exit is declared" >&5
+echo "$as_me:6140: checking whether exit is declared" >&5
 echo $ECHO_N "checking whether exit is declared... $ECHO_C" >&6
 if test "${ac_cv_have_decl_exit+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6160 "configure"
+#line 6146 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
 main (void)
 {
 #ifndef exit
-  char *p = (char *) exit; (void) p;
+  (void) exit;
 #endif
 
   ;
@@ -6172,16 +6158,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:6175: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6161: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:6178: \$? = $ac_status" >&5
+  echo "$as_me:6164: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6181: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6167: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6184: \$? = $ac_status" >&5
+  echo "$as_me:6170: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_have_decl_exit=yes
 else
@@ -6191,19 +6177,19 @@ ac_cv_have_decl_exit=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:6194: result: $ac_cv_have_decl_exit" >&5
+echo "$as_me:6180: result: $ac_cv_have_decl_exit" >&5
 echo "${ECHO_T}$ac_cv_have_decl_exit" >&6
 
 ac_header_dirent=no
 for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
   as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-echo "$as_me:6200: checking for $ac_hdr that defines DIR" >&5
+echo "$as_me:6186: checking for $ac_hdr that defines DIR" >&5
 echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6206 "configure"
+#line 6192 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_hdr>
@@ -6218,16 +6204,16 @@ return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:6221: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6207: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:6224: \$? = $ac_status" >&5
+  echo "$as_me:6210: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6227: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6213: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6230: \$? = $ac_status" >&5
+  echo "$as_me:6216: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_Header=yes"
 else
@@ -6237,7 +6223,7 @@ eval "$as_ac_Header=no"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:6240: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:6226: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -6250,7 +6236,7 @@ fi
 done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
-  echo "$as_me:6253: checking for opendir in -ldir" >&5
+  echo "$as_me:6239: checking for opendir in -ldir" >&5
 echo $ECHO_N "checking for opendir in -ldir... $ECHO_C" >&6
 if test "${ac_cv_lib_dir_opendir+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6258,7 +6244,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldir  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6261 "configure"
+#line 6247 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -6267,7 +6253,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char opendir ();
+char opendir (void);
 int
 main (void)
 {
@@ -6277,16 +6263,16 @@ opendir ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6280: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6266: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6283: \$? = $ac_status" >&5
+  echo "$as_me:6269: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6286: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6272: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6289: \$? = $ac_status" >&5
+  echo "$as_me:6275: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dir_opendir=yes
 else
@@ -6297,14 +6283,14 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:6300: result: $ac_cv_lib_dir_opendir" >&5
+echo "$as_me:6286: result: $ac_cv_lib_dir_opendir" >&5
 echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6
 if test "$ac_cv_lib_dir_opendir" = yes; then
   LIBS="$LIBS -ldir"
 fi
 
 else
-  echo "$as_me:6307: checking for opendir in -lx" >&5
+  echo "$as_me:6293: checking for opendir in -lx" >&5
 echo $ECHO_N "checking for opendir in -lx... $ECHO_C" >&6
 if test "${ac_cv_lib_x_opendir+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6312,7 +6298,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lx  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6315 "configure"
+#line 6301 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -6321,7 +6307,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char opendir ();
+char opendir (void);
 int
 main (void)
 {
@@ -6331,16 +6317,16 @@ opendir ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6334: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6320: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6337: \$? = $ac_status" >&5
+  echo "$as_me:6323: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6340: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6326: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6343: \$? = $ac_status" >&5
+  echo "$as_me:6329: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_x_opendir=yes
 else
@@ -6351,7 +6337,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:6354: result: $ac_cv_lib_x_opendir" >&5
+echo "$as_me:6340: result: $ac_cv_lib_x_opendir" >&5
 echo "${ECHO_T}$ac_cv_lib_x_opendir" >&6
 if test "$ac_cv_lib_x_opendir" = yes; then
   LIBS="$LIBS -lx"
@@ -6361,7 +6347,7 @@ fi
 
 ###############################################################################
 
-echo "$as_me:6364: checking if you want to build a separate terminfo library" >&5
+echo "$as_me:6350: checking if you want to build a separate terminfo library" >&5
 echo $ECHO_N "checking if you want to build a separate terminfo library... $ECHO_C" >&6
 
 # Check whether --with-termlib or --without-termlib was given.
@@ -6371,10 +6357,10 @@ if test "${with_termlib+set}" = set; then
 else
   with_termlib=no
 fi;
-echo "$as_me:6374: result: $with_termlib" >&5
+echo "$as_me:6360: result: $with_termlib" >&5
 echo "${ECHO_T}$with_termlib" >&6
 
-echo "$as_me:6377: checking if you want to build a separate tic library" >&5
+echo "$as_me:6363: checking if you want to build a separate tic library" >&5
 echo $ECHO_N "checking if you want to build a separate tic library... $ECHO_C" >&6
 
 # Check whether --with-ticlib or --without-ticlib was given.
@@ -6384,7 +6370,7 @@ if test "${with_ticlib+set}" = set; then
 else
   with_ticlib=no
 fi;
-echo "$as_me:6387: result: $with_ticlib" >&5
+echo "$as_me:6373: result: $with_ticlib" >&5
 echo "${ECHO_T}$with_ticlib" >&6
 
 if test X"$CC_G_OPT" = X"" ; then
@@ -6397,7 +6383,7 @@ if test X"$CXX_G_OPT" = X"" ; then
        test -n "$GXX" && test "x${ac_cv_prog_cxx_g}" != xyes && CXX_G_OPT=''
 fi
 
-echo "$as_me:6400: checking for default loader flags" >&5
+echo "$as_me:6386: checking for default loader flags" >&5
 echo $ECHO_N "checking for default loader flags... $ECHO_C" >&6
 case "$DFT_LWR_MODEL" in
 (libtool) LD_MODEL=''   ;;
@@ -6406,13 +6392,13 @@ case "$DFT_LWR_MODEL" in
 (profile) LD_MODEL='-pg';;
 (shared)  LD_MODEL=''   ;;
 esac
-echo "$as_me:6409: result: $LD_MODEL" >&5
-echo "${ECHO_T}$LD_MODEL" >&6
+echo "$as_me:6395: result: ${LD_MODEL:-(none)}" >&5
+echo "${ECHO_T}${LD_MODEL:-(none)}" >&6
 
 case "$DFT_LWR_MODEL" in
 (shared)
 
-echo "$as_me:6415: checking if rpath option should be used" >&5
+echo "$as_me:6401: checking if rpath option should be used" >&5
 echo $ECHO_N "checking if rpath option should be used... $ECHO_C" >&6
 
 # Check whether --enable-rpath or --disable-rpath was given.
@@ -6422,10 +6408,10 @@ if test "${enable_rpath+set}" = set; then
 else
   cf_cv_enable_rpath=no
 fi;
-echo "$as_me:6425: result: $cf_cv_enable_rpath" >&5
+echo "$as_me:6411: result: $cf_cv_enable_rpath" >&5
 echo "${ECHO_T}$cf_cv_enable_rpath" >&6
 
-echo "$as_me:6428: checking if shared libraries should be relinked during install" >&5
+echo "$as_me:6414: checking if shared libraries should be relinked during install" >&5
 echo $ECHO_N "checking if shared libraries should be relinked during install... $ECHO_C" >&6
 
 # Check whether --enable-relink or --disable-relink was given.
@@ -6435,7 +6421,7 @@ if test "${enable_relink+set}" = set; then
 else
   cf_cv_do_relink=yes
 fi;
-echo "$as_me:6438: result: $cf_cv_do_relink" >&5
+echo "$as_me:6424: result: $cf_cv_do_relink" >&5
 echo "${ECHO_T}$cf_cv_do_relink" >&6
        ;;
 esac
@@ -6446,7 +6432,7 @@ rel_builddir=..
 LD_RPATH_OPT=
 if test "x$cf_cv_enable_rpath" != xno
 then
-       echo "$as_me:6449: checking for an rpath option" >&5
+       echo "$as_me:6435: checking for an rpath option" >&5
 echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
        case "$cf_cv_system_name" in
        (irix*)
@@ -6477,12 +6463,12 @@ echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
        (*)
                ;;
        esac
-       echo "$as_me:6480: result: $LD_RPATH_OPT" >&5
+       echo "$as_me:6466: result: $LD_RPATH_OPT" >&5
 echo "${ECHO_T}$LD_RPATH_OPT" >&6
 
        case "x$LD_RPATH_OPT" in
        (x-R*)
-               echo "$as_me:6485: checking if we need a space after rpath option" >&5
+               echo "$as_me:6471: checking if we need a space after rpath option" >&5
 echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6
                cf_save_LIBS="$LIBS"
 
@@ -6503,7 +6489,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 6506 "configure"
+#line 6492 "configure"
 #include "confdefs.h"
 
 int
@@ -6515,16 +6501,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6518: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6504: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6521: \$? = $ac_status" >&5
+  echo "$as_me:6507: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6524: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6510: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6527: \$? = $ac_status" >&5
+  echo "$as_me:6513: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_rpath_space=no
 else
@@ -6534,7 +6520,7 @@ cf_rpath_space=yes
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
                LIBS="$cf_save_LIBS"
-               echo "$as_me:6537: result: $cf_rpath_space" >&5
+               echo "$as_me:6523: result: $cf_rpath_space" >&5
 echo "${ECHO_T}$cf_rpath_space" >&6
                test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
                ;;
@@ -6556,8 +6542,8 @@ fi
        cf_ld_rpath_opt=
        test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
 
-       echo "$as_me:6559: checking if release/abi version should be used for shared libs" >&5
-echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6
+       echo "$as_me:6545: checking whether to use release or ABI version in shared library file names" >&5
+echo $ECHO_N "checking whether to use release or ABI version in shared library file names... $ECHO_C" >&6
 
 # Check whether --with-shlib-version or --without-shlib-version was given.
 if test "${with_shlib_version+set}" = set; then
@@ -6571,9 +6557,9 @@ if test "${with_shlib_version+set}" = set; then
                cf_cv_shlib_version=$withval
                ;;
        (*)
-               echo "$as_me:6574: result: $withval" >&5
+               echo "$as_me:6560: result: $withval" >&5
 echo "${ECHO_T}$withval" >&6
-               { { echo "$as_me:6576: error: option value must be one of: rel, abi, or auto" >&5
+               { { echo "$as_me:6562: error: option value must be one of: rel, abi, or auto" >&5
 echo "$as_me: error: option value must be one of: rel, abi, or auto" >&2;}
    { (exit 1); exit 1; }; }
                ;;
@@ -6582,7 +6568,7 @@ echo "$as_me: error: option value must be one of: rel, abi, or auto" >&2;}
 else
   cf_cv_shlib_version=auto
 fi;
-       echo "$as_me:6585: result: $cf_cv_shlib_version" >&5
+       echo "$as_me:6571: result: $cf_cv_shlib_version" >&5
 echo "${ECHO_T}$cf_cv_shlib_version" >&6
 
        cf_cv_rm_so_locs=no
@@ -6605,35 +6591,35 @@ echo "${ECHO_T}$cf_cv_shlib_version" >&6
 
        if test "$cf_try_fPIC" = yes
        then
-               echo "$as_me:6608: checking which $CC option to use" >&5
+               echo "$as_me:6594: checking which $CC option to use" >&5
 echo $ECHO_N "checking which $CC option to use... $ECHO_C" >&6
                cf_save_CFLAGS="$CFLAGS"
                for CC_SHARED_OPTS in -fPIC -fpic ''
                do
                        CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 6615 "configure"
+#line 6601 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
 main (void)
 {
-int x = 1
+int x = 1; (void)x
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:6627: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6613: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:6630: \$? = $ac_status" >&5
+  echo "$as_me:6616: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6633: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6619: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6636: \$? = $ac_status" >&5
+  echo "$as_me:6622: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -6642,7 +6628,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                done
-               echo "$as_me:6645: result: $CC_SHARED_OPTS" >&5
+               echo "$as_me:6631: result: $CC_SHARED_OPTS" >&5
 echo "${ECHO_T}$CC_SHARED_OPTS" >&6
                CFLAGS="$cf_save_CFLAGS"
        fi
@@ -6713,7 +6699,7 @@ CF_EOF
                MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $@` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $@'
                test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
                cf_cv_shlib_version_infix=yes
-               echo "$as_me:6716: checking if ld -search_paths_first works" >&5
+               echo "$as_me:6702: checking if ld -search_paths_first works" >&5
 echo $ECHO_N "checking if ld -search_paths_first works... $ECHO_C" >&6
 if test "${cf_cv_ldflags_search_paths_first+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6722,7 +6708,7 @@ else
                        cf_save_LDFLAGS=$LDFLAGS
                        LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 6725 "configure"
+#line 6711 "configure"
 #include "confdefs.h"
 
 int
@@ -6734,16 +6720,16 @@ int i;
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6737: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6723: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6740: \$? = $ac_status" >&5
+  echo "$as_me:6726: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6743: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6729: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6746: \$? = $ac_status" >&5
+  echo "$as_me:6732: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ldflags_search_paths_first=yes
 else
@@ -6754,7 +6740,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
                                LDFLAGS=$cf_save_LDFLAGS
 fi
-echo "$as_me:6757: result: $cf_cv_ldflags_search_paths_first" >&5
+echo "$as_me:6743: result: $cf_cv_ldflags_search_paths_first" >&5
 echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
                if test "$cf_cv_ldflags_search_paths_first" = yes; then
                        LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
@@ -7084,11 +7070,11 @@ CF_EOF
                # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
                # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
                if test "$DFT_LWR_MODEL" = "shared" ; then
-                       LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
+                       LOCAL_LDFLAGS="-R\$(LOCAL_LIBDIR):\${libdir}"
                        LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
                fi
                if test "$cf_cv_enable_rpath" = yes ; then
-                       EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS"
+                       EXTRA_LDFLAGS="-R\${libdir} $EXTRA_LDFLAGS"
                fi
 
        test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
@@ -7104,7 +7090,7 @@ CF_EOF
                        do
                                CFLAGS="$cf_shared_opts $cf_save_CFLAGS"
                                cat >"conftest.$ac_ext" <<_ACEOF
-#line 7107 "configure"
+#line 7093 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -7116,16 +7102,16 @@ printf("Hello\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:7119: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7105: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:7122: \$? = $ac_status" >&5
+  echo "$as_me:7108: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:7125: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7111: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7128: \$? = $ac_status" >&5
+  echo "$as_me:7114: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -7136,9 +7122,9 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                        done
                        CFLAGS="$cf_save_CFLAGS"
                        CC_SHARED_OPTS=$cf_shared_opts
-                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -'$cf_cv_shared_soname' -o $@'
+                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -Wl,-h,'$cf_cv_shared_soname' -o $@'
                else
-                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -'$cf_cv_shared_soname' -o $@'
+                       MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -Wl,-h,'$cf_cv_shared_soname' -o $@'
                fi
                ;;
        (sysv5uw7*|unix_sv*)
@@ -7162,7 +7148,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                        test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
                        ;;
                (*)
-                       { echo "$as_me:7165: WARNING: ignored --with-shlib-version" >&5
+                       { echo "$as_me:7151: WARNING: ignored --with-shlib-version" >&5
 echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
                        ;;
                esac
@@ -7172,7 +7158,7 @@ echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
        if test -n "$cf_try_cflags"
        then
 cat > conftest.$ac_ext <<EOF
-#line 7175 "${as_me:-configure}"
+#line 7161 "${as_me:-configure}"
 #include <stdio.h>
 int main(int argc, char *argv[])
 {
@@ -7184,18 +7170,18 @@ EOF
                for cf_opt in $cf_try_cflags
                do
                        CFLAGS="$cf_save_CFLAGS -$cf_opt"
-                       echo "$as_me:7187: checking if CFLAGS option -$cf_opt works" >&5
+                       echo "$as_me:7173: checking if CFLAGS option -$cf_opt works" >&5
 echo $ECHO_N "checking if CFLAGS option -$cf_opt works... $ECHO_C" >&6
-                       if { (eval echo "$as_me:7189: \"$ac_compile\"") >&5
+                       if { (eval echo "$as_me:7175: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:7192: \$? = $ac_status" >&5
+  echo "$as_me:7178: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                               echo "$as_me:7194: result: yes" >&5
+                               echo "$as_me:7180: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                                cf_save_CFLAGS="$CFLAGS"
                        else
-                               echo "$as_me:7198: result: no" >&5
+                               echo "$as_me:7184: result: no" >&5
 echo "${ECHO_T}no" >&6
                        fi
                done
@@ -7210,17 +7196,17 @@ echo "${ECHO_T}no" >&6
 
        test -n "$verbose" && echo "    CC_SHARED_OPTS: $CC_SHARED_OPTS" 1>&6
 
-echo "${as_me:-configure}:7213: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5
+echo "${as_me:-configure}:7199: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5
 
        test -n "$verbose" && echo "    MK_SHARED_LIB:  $MK_SHARED_LIB" 1>&6
 
-echo "${as_me:-configure}:7217: testing MK_SHARED_LIB:  $MK_SHARED_LIB ..." 1>&5
+echo "${as_me:-configure}:7203: testing MK_SHARED_LIB:  $MK_SHARED_LIB ..." 1>&5
 
 for model in $cf_list_models ; do
        case "$model" in
        (libtool)
 
-echo "$as_me:7223: checking for additional libtool options" >&5
+echo "$as_me:7209: checking for additional libtool options" >&5
 echo $ECHO_N "checking for additional libtool options... $ECHO_C" >&6
 
 # Check whether --with-libtool-opts or --without-libtool-opts was given.
@@ -7230,7 +7216,7 @@ if test "${with_libtool_opts+set}" = set; then
 else
   with_libtool_opts=no
 fi;
-echo "$as_me:7233: result: $with_libtool_opts" >&5
+echo "$as_me:7219: result: $with_libtool_opts" >&5
 echo "${ECHO_T}$with_libtool_opts" >&6
 
 case .$with_libtool_opts in
@@ -7241,7 +7227,7 @@ case .$with_libtool_opts in
        ;;
 esac
 
-echo "$as_me:7244: checking if exported-symbols file should be used" >&5
+echo "$as_me:7230: checking if exported-symbols file should be used" >&5
 echo $ECHO_N "checking if exported-symbols file should be used... $ECHO_C" >&6
 
 # Check whether --with-export-syms or --without-export-syms was given.
@@ -7256,7 +7242,7 @@ then
        with_export_syms='${top_srcdir}/package/${PACKAGE}.sym'
 
 fi
-echo "$as_me:7259: result: $with_export_syms" >&5
+echo "$as_me:7245: result: $with_export_syms" >&5
 echo "${ECHO_T}$with_export_syms" >&6
 if test "x$with_export_syms" != xno
 then
@@ -7267,15 +7253,15 @@ fi
                ;;
        (shared)
                if test "$CC_SHARED_OPTS" = "unknown"; then
-                       { { echo "$as_me:7270: error: Shared libraries are not supported in this version" >&5
+                       { { echo "$as_me:7256: error: Shared libraries are not supported in this version" >&5
 echo "$as_me: error: Shared libraries are not supported in this version" >&2;}
    { (exit 1); exit 1; }; }
                fi
                # workaround for inept transition to PIE vs PIC...
-               echo "$as_me:7275: checking if current CFLAGS link properly" >&5
+               echo "$as_me:7261: checking if current CFLAGS link properly" >&5
 echo $ECHO_N "checking if current CFLAGS link properly... $ECHO_C" >&6
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 7278 "configure"
+#line 7264 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -7287,16 +7273,16 @@ printf("Hello work\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7290: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7276: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7293: \$? = $ac_status" >&5
+  echo "$as_me:7279: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7296: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7282: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7299: \$? = $ac_status" >&5
+  echo "$as_me:7285: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cflags_work=yes
 else
@@ -7305,18 +7291,18 @@ cat "conftest.$ac_ext" >&5
 cf_cflags_work=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:7308: result: $cf_cflags_work" >&5
+               echo "$as_me:7294: result: $cf_cflags_work" >&5
 echo "${ECHO_T}$cf_cflags_work" >&6
                if test "$cf_cflags_work" = no
                then
                        test -n "$verbose" && echo "    try to work around by appending shared-options" 1>&6
 
-echo "${as_me:-configure}:7314: testing try to work around by appending shared-options ..." 1>&5
+echo "${as_me:-configure}:7300: testing try to work around by appending shared-options ..." 1>&5
 
                        CFLAGS="$CFLAGS $CC_SHARED_OPTS"
                fi
 
-echo "$as_me:7319: checking if versioned-symbols file should be used" >&5
+echo "$as_me:7305: checking if versioned-symbols file should be used" >&5
 echo $ECHO_N "checking if versioned-symbols file should be used... $ECHO_C" >&6
 
 # Check whether --with-versioned-syms or --without-versioned-syms was given.
@@ -7334,18 +7320,18 @@ case "x$with_versioned_syms" in
 (xno)
        ;;
 (x/*)
-       test -f "$with_versioned_syms" || { { echo "$as_me:7337: error: expected a filename: $with_versioned_syms" >&5
+       test -f "$with_versioned_syms" || { { echo "$as_me:7323: error: expected a filename: $with_versioned_syms" >&5
 echo "$as_me: error: expected a filename: $with_versioned_syms" >&2;}
    { (exit 1); exit 1; }; }
        ;;
 (*)
-       test -f "$with_versioned_syms" || { { echo "$as_me:7342: error: expected a filename: $with_versioned_syms" >&5
+       test -f "$with_versioned_syms" || { { echo "$as_me:7328: error: expected a filename: $with_versioned_syms" >&5
 echo "$as_me: error: expected a filename: $with_versioned_syms" >&2;}
    { (exit 1); exit 1; }; }
        with_versioned_syms=`pwd`/"$with_versioned_syms"
        ;;
 esac
-echo "$as_me:7348: result: $with_versioned_syms" >&5
+echo "$as_me:7334: result: $with_versioned_syms" >&5
 echo "${ECHO_T}$with_versioned_syms" >&6
 
 RESULTING_SYMS=
@@ -7361,7 +7347,7 @@ then
                MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-Wl,%\\${VERSIONED_SYMS} -Wl,%"`
                test -n "$verbose" && echo "    MK_SHARED_LIB:  $MK_SHARED_LIB" 1>&6
 
-echo "${as_me:-configure}:7364: testing MK_SHARED_LIB:  $MK_SHARED_LIB ..." 1>&5
+echo "${as_me:-configure}:7350: testing MK_SHARED_LIB:  $MK_SHARED_LIB ..." 1>&5
 
                ;;
        (*-dy\ *)
@@ -7369,11 +7355,11 @@ echo "${as_me:-configure}:7364: testing MK_SHARED_LIB:  $MK_SHARED_LIB ..." 1>&5
                MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-dy%\\${VERSIONED_SYMS} -dy%"`
                test -n "$verbose" && echo "    MK_SHARED_LIB:  $MK_SHARED_LIB" 1>&6
 
-echo "${as_me:-configure}:7372: testing MK_SHARED_LIB:  $MK_SHARED_LIB ..." 1>&5
+echo "${as_me:-configure}:7358: testing MK_SHARED_LIB:  $MK_SHARED_LIB ..." 1>&5
 
                ;;
        (*)
-               { echo "$as_me:7376: WARNING: this system does not support versioned-symbols" >&5
+               { echo "$as_me:7362: WARNING: this system does not support versioned-symbols" >&5
 echo "$as_me: WARNING: this system does not support versioned-symbols" >&2;}
                ;;
        esac
@@ -7385,7 +7371,7 @@ echo "$as_me: WARNING: this system does not support versioned-symbols" >&2;}
        # symbols.
        if test "x$VERSIONED_SYMS" != "x"
        then
-               echo "$as_me:7388: checking if wildcards can be used to selectively omit symbols" >&5
+               echo "$as_me:7374: checking if wildcards can be used to selectively omit symbols" >&5
 echo $ECHO_N "checking if wildcards can be used to selectively omit symbols... $ECHO_C" >&6
                WILDCARD_SYMS=no
 
@@ -7422,16 +7408,16 @@ local:
 } submodule_1.0;
 EOF
                cat >conftest.$ac_ext <<EOF
-#line 7425 "configure"
-int    _ismissing(void) { return 1; }
-int    _localf1(void) { return 1; }
-int    _localf2(void) { return 2; }
-int    globalf1(void) { return 1; }
-int    globalf2(void) { return 2; }
-int    _sublocalf1(void) { return 1; }
-int    _sublocalf2(void) { return 2; }
-int    subglobalf1(void) { return 1; }
-int    subglobalf2(void) { return 2; }
+#line 7411 "configure"
+extern int _ismissing(void);    int _ismissing(void)  { return 1; }
+extern int _localf1(void);      int _localf1(void)    { return 1; }
+extern int _localf2(void);      int _localf2(void)    { return 2; }
+extern int globalf1(void);      int globalf1(void)    { return 1; }
+extern int globalf2(void);      int globalf2(void)    { return 2; }
+extern int _sublocalf1(void);   int _sublocalf1(void) { return 1; }
+extern int _sublocalf2(void);   int _sublocalf2(void) { return 2; }
+extern int subglobalf1(void);   int subglobalf1(void) { return 1; }
+extern int subglobalf2(void);   int subglobalf2(void) { return 2; }
 EOF
                cat >conftest.mk <<EOF
 CC=${CC}
@@ -7453,7 +7439,7 @@ EOF
                        cf_missing="`nm -P conftest.so 2>&5 |${FGREP-fgrep} _ismissing | ${EGREP-egrep} '[      ][DT][  ]'`"
                        test -n "$cf_missing" && WILDCARD_SYMS=yes
                fi
-               echo "$as_me:7456: result: $WILDCARD_SYMS" >&5
+               echo "$as_me:7442: result: $WILDCARD_SYMS" >&5
 echo "${ECHO_T}$WILDCARD_SYMS" >&6
                rm -f conftest.*
        fi
@@ -7466,7 +7452,7 @@ done
 ### Checks for special libraries, must be done up-front.
 SHLIB_LIST=""
 
-echo "$as_me:7469: checking if you want to link with the GPM mouse library" >&5
+echo "$as_me:7455: checking if you want to link with the GPM mouse library" >&5
 echo $ECHO_N "checking if you want to link with the GPM mouse library... $ECHO_C" >&6
 
 # Check whether --with-gpm or --without-gpm was given.
@@ -7476,27 +7462,27 @@ if test "${with_gpm+set}" = set; then
 else
   with_gpm=maybe
 fi;
-echo "$as_me:7479: result: $with_gpm" >&5
+echo "$as_me:7465: result: $with_gpm" >&5
 echo "${ECHO_T}$with_gpm" >&6
 
 if test "$with_gpm" != no ; then
-       echo "$as_me:7483: checking for gpm.h" >&5
+       echo "$as_me:7469: checking for gpm.h" >&5
 echo $ECHO_N "checking for gpm.h... $ECHO_C" >&6
 if test "${ac_cv_header_gpm_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 7489 "configure"
+#line 7475 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 _ACEOF
-if { (eval echo "$as_me:7493: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:7479: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:7499: \$? = $ac_status" >&5
+  echo "$as_me:7485: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -7515,7 +7501,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:7518: result: $ac_cv_header_gpm_h" >&5
+echo "$as_me:7504: result: $ac_cv_header_gpm_h" >&5
 echo "${ECHO_T}$ac_cv_header_gpm_h" >&6
 if test "$ac_cv_header_gpm_h" = yes; then
 
@@ -7526,7 +7512,7 @@ EOF
                if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then
                        test -n "$verbose" && echo "    assuming we really have GPM library" 1>&6
 
-echo "${as_me:-configure}:7529: testing assuming we really have GPM library ..." 1>&5
+echo "${as_me:-configure}:7515: testing assuming we really have GPM library ..." 1>&5
 
 cat >>confdefs.h <<\EOF
 #define HAVE_LIBGPM 1
@@ -7534,7 +7520,7 @@ EOF
 
                        with_gpm=yes
                else
-                       echo "$as_me:7537: checking for Gpm_Open in -lgpm" >&5
+                       echo "$as_me:7523: checking for Gpm_Open in -lgpm" >&5
 echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7542,7 +7528,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 7545 "configure"
+#line 7531 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -7551,7 +7537,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char Gpm_Open ();
+char Gpm_Open (void);
 int
 main (void)
 {
@@ -7561,16 +7547,16 @@ Gpm_Open ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7564: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7550: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7567: \$? = $ac_status" >&5
+  echo "$as_me:7553: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7570: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7556: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7573: \$? = $ac_status" >&5
+  echo "$as_me:7559: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_Gpm_Open=yes
 else
@@ -7581,18 +7567,18 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:7584: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:7570: result: $ac_cv_lib_gpm_Gpm_Open" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
 if test "$ac_cv_lib_gpm_Gpm_Open" = yes; then
   with_gpm=yes
 else
 
                                if test "$with_gpm" = maybe; then
-                                       { echo "$as_me:7591: WARNING: Cannot link with GPM library" >&5
+                                       { echo "$as_me:7577: WARNING: Cannot link with GPM library" >&5
 echo "$as_me: WARNING: Cannot link with GPM library" >&2;}
                                        with_gpm=no
                                else
-                                       { { echo "$as_me:7595: error: Cannot link with GPM library" >&5
+                                       { { echo "$as_me:7581: error: Cannot link with GPM library" >&5
 echo "$as_me: error: Cannot link with GPM library" >&2;}
    { (exit 1); exit 1; }; }
                                fi
@@ -7603,7 +7589,7 @@ fi
 
 else
 
-               test "$with_gpm" != maybe && { echo "$as_me:7606: WARNING: Cannot find GPM header" >&5
+               test "$with_gpm" != maybe && { echo "$as_me:7592: WARNING: Cannot find GPM header" >&5
 echo "$as_me: WARNING: Cannot find GPM header" >&2;}
                with_gpm=no
 
@@ -7612,7 +7598,7 @@ fi
 fi
 
 if test "$with_gpm" != no ; then
-       echo "$as_me:7615: checking if you want to load GPM dynamically" >&5
+       echo "$as_me:7601: checking if you want to load GPM dynamically" >&5
 echo $ECHO_N "checking if you want to load GPM dynamically... $ECHO_C" >&6
 
 # Check whether --with-dlsym or --without-dlsym was given.
@@ -7622,18 +7608,18 @@ if test "${with_dlsym+set}" = set; then
 else
   with_dlsym=yes
 fi;
-       echo "$as_me:7625: result: $with_dlsym" >&5
+       echo "$as_me:7611: result: $with_dlsym" >&5
 echo "${ECHO_T}$with_dlsym" >&6
        if test "x$with_dlsym" = xyes ; then
 
 cf_have_dlsym=no
-echo "$as_me:7630: checking for dlsym" >&5
+echo "$as_me:7616: checking for dlsym" >&5
 echo $ECHO_N "checking for dlsym... $ECHO_C" >&6
 if test "${ac_cv_func_dlsym+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 7636 "configure"
+#line 7622 "configure"
 #include "confdefs.h"
 #define dlsym autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -7664,16 +7650,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7667: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7653: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7670: \$? = $ac_status" >&5
+  echo "$as_me:7656: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7673: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7659: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7676: \$? = $ac_status" >&5
+  echo "$as_me:7662: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_dlsym=yes
 else
@@ -7683,14 +7669,14 @@ ac_cv_func_dlsym=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:7686: result: $ac_cv_func_dlsym" >&5
+echo "$as_me:7672: result: $ac_cv_func_dlsym" >&5
 echo "${ECHO_T}$ac_cv_func_dlsym" >&6
 if test "$ac_cv_func_dlsym" = yes; then
   cf_have_dlsym=yes
 else
 
 cf_have_libdl=no
-echo "$as_me:7693: checking for dlsym in -ldl" >&5
+echo "$as_me:7679: checking for dlsym in -ldl" >&5
 echo $ECHO_N "checking for dlsym in -ldl... $ECHO_C" >&6
 if test "${ac_cv_lib_dl_dlsym+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7698,7 +7684,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 7701 "configure"
+#line 7687 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -7707,7 +7693,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char dlsym ();
+char dlsym (void);
 int
 main (void)
 {
@@ -7717,16 +7703,16 @@ dlsym ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7720: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7706: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7723: \$? = $ac_status" >&5
+  echo "$as_me:7709: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7726: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7712: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7729: \$? = $ac_status" >&5
+  echo "$as_me:7715: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dl_dlsym=yes
 else
@@ -7737,7 +7723,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:7740: result: $ac_cv_lib_dl_dlsym" >&5
+echo "$as_me:7726: result: $ac_cv_lib_dl_dlsym" >&5
 echo "${ECHO_T}$ac_cv_lib_dl_dlsym" >&6
 if test "$ac_cv_lib_dl_dlsym" = yes; then
 
@@ -7766,10 +7752,10 @@ done
 LIBS="$cf_add_libs"
  }
 
-       echo "$as_me:7769: checking whether able to link to dl*() functions" >&5
+       echo "$as_me:7755: checking whether able to link to dl*() functions" >&5
 echo $ECHO_N "checking whether able to link to dl*() functions... $ECHO_C" >&6
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 7772 "configure"
+#line 7758 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 int
@@ -7787,16 +7773,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7790: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7776: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7793: \$? = $ac_status" >&5
+  echo "$as_me:7779: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7796: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7782: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7799: \$? = $ac_status" >&5
+  echo "$as_me:7785: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
 cat >>confdefs.h <<\EOF
@@ -7807,15 +7793,15 @@ else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 
-               { { echo "$as_me:7810: error: Cannot link test program for libdl" >&5
+               { { echo "$as_me:7796: error: Cannot link test program for libdl" >&5
 echo "$as_me: error: Cannot link test program for libdl" >&2;}
    { (exit 1); exit 1; }; }
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-       echo "$as_me:7815: result: ok" >&5
+       echo "$as_me:7801: result: ok" >&5
 echo "${ECHO_T}ok" >&6
 else
-       { { echo "$as_me:7818: error: Cannot find dlsym function" >&5
+       { { echo "$as_me:7804: error: Cannot find dlsym function" >&5
 echo "$as_me: error: Cannot find dlsym function" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -7823,12 +7809,12 @@ fi
                if test "x$with_gpm" != xyes ; then
                        test -n "$verbose" && echo "    assuming soname for gpm is $with_gpm" 1>&6
 
-echo "${as_me:-configure}:7826: testing assuming soname for gpm is $with_gpm ..." 1>&5
+echo "${as_me:-configure}:7812: testing assuming soname for gpm is $with_gpm ..." 1>&5
 
                        cf_cv_gpm_soname="$with_gpm"
                else
 
-echo "$as_me:7831: checking for soname of gpm library" >&5
+echo "$as_me:7817: checking for soname of gpm library" >&5
 echo $ECHO_N "checking for soname of gpm library... $ECHO_C" >&6
 if test "${cf_cv_gpm_soname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7862,15 +7848,15 @@ for cf_add_1lib in $cf_add_0lib; do
 done
 LIBS="$cf_add_libs"
 
-       if { (eval echo "$as_me:7865: \"$ac_compile\"") >&5
+       if { (eval echo "$as_me:7851: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:7868: \$? = $ac_status" >&5
+  echo "$as_me:7854: \$? = $ac_status" >&5
   (exit "$ac_status"); } ; then
-               if { (eval echo "$as_me:7870: \"$ac_link\"") >&5
+               if { (eval echo "$as_me:7856: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7873: \$? = $ac_status" >&5
+  echo "$as_me:7859: \$? = $ac_status" >&5
   (exit "$ac_status"); } ; then
                        cf_cv_gpm_soname="`ldd \"conftest$ac_exeext\" 2>/dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | ${FGREP-fgrep} libgpm.`"
                        test -z "$cf_cv_gpm_soname" && cf_cv_gpm_soname=unknown
@@ -7881,7 +7867,7 @@ LIBS="$cf_save_LIBS"
 fi
 
 fi
-echo "$as_me:7884: result: $cf_cv_gpm_soname" >&5
+echo "$as_me:7870: result: $cf_cv_gpm_soname" >&5
 echo "${ECHO_T}$cf_cv_gpm_soname" >&6
 
                fi
@@ -7949,7 +7935,7 @@ cat >>confdefs.h <<\EOF
 #define HAVE_LIBGPM 1
 EOF
 
-echo "$as_me:7952: checking for Gpm_Wgetch in -lgpm" >&5
+echo "$as_me:7938: checking for Gpm_Wgetch in -lgpm" >&5
 echo $ECHO_N "checking for Gpm_Wgetch in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_Gpm_Wgetch+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7957,7 +7943,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 7960 "configure"
+#line 7946 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -7966,7 +7952,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char Gpm_Wgetch ();
+char Gpm_Wgetch (void);
 int
 main (void)
 {
@@ -7976,16 +7962,16 @@ Gpm_Wgetch ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7979: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7965: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7982: \$? = $ac_status" >&5
+  echo "$as_me:7968: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7985: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7971: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7988: \$? = $ac_status" >&5
+  echo "$as_me:7974: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_Gpm_Wgetch=yes
 else
@@ -7996,11 +7982,11 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:7999: result: $ac_cv_lib_gpm_Gpm_Wgetch" >&5
+echo "$as_me:7985: result: $ac_cv_lib_gpm_Gpm_Wgetch" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Wgetch" >&6
 if test "$ac_cv_lib_gpm_Gpm_Wgetch" = yes; then
 
-echo "$as_me:8003: checking if GPM is weakly bound to curses library" >&5
+echo "$as_me:7989: checking if GPM is weakly bound to curses library" >&5
 echo $ECHO_N "checking if GPM is weakly bound to curses library... $ECHO_C" >&6
 if test "${cf_cv_check_gpm_wgetch+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8024,15 +8010,15 @@ CF_EOF
        # to rely on the static library, noting that some packagers may not
        # include it.
        LIBS="-static -lgpm -dynamic $LIBS"
-       if { (eval echo "$as_me:8027: \"$ac_compile\"") >&5
+       if { (eval echo "$as_me:8013: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8030: \$? = $ac_status" >&5
+  echo "$as_me:8016: \$? = $ac_status" >&5
   (exit "$ac_status"); } ; then
-               if { (eval echo "$as_me:8032: \"$ac_link\"") >&5
+               if { (eval echo "$as_me:8018: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8035: \$? = $ac_status" >&5
+  echo "$as_me:8021: \$? = $ac_status" >&5
   (exit "$ac_status"); } ; then
                        cf_cv_check_gpm_wgetch="`nm \"conftest$ac_exeext\" | ${EGREP-egrep} '\<wgetch\>' | ${EGREP-egrep} '\<[vVwW]\>'`"
                        test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes
@@ -8044,11 +8030,11 @@ CF_EOF
 fi
 
 fi
-echo "$as_me:8047: result: $cf_cv_check_gpm_wgetch" >&5
+echo "$as_me:8033: result: $cf_cv_check_gpm_wgetch" >&5
 echo "${ECHO_T}$cf_cv_check_gpm_wgetch" >&6
 
 if test "$cf_cv_check_gpm_wgetch" != yes ; then
-       { echo "$as_me:8051: WARNING: GPM library is already linked with curses - read the FAQ" >&5
+       { echo "$as_me:8037: WARNING: GPM library is already linked with curses - read the FAQ" >&5
 echo "$as_me: WARNING: GPM library is already linked with curses - read the FAQ" >&2;}
 fi
 
@@ -8056,7 +8042,7 @@ fi
 
 fi
 
-echo "$as_me:8059: checking if you want to use PCRE2 for regular-expressions" >&5
+echo "$as_me:8045: checking if you want to use PCRE2 for regular-expressions" >&5
 echo $ECHO_N "checking if you want to use PCRE2 for regular-expressions... $ECHO_C" >&6
 
 # Check whether --with-pcre2 or --without-pcre2 was given.
@@ -8065,7 +8051,7 @@ if test "${with_pcre2+set}" = set; then
 
 fi;
 test -z "$with_pcre2" && with_pcre2=no
-echo "$as_me:8068: result: $with_pcre2" >&5
+echo "$as_me:8054: result: $with_pcre2" >&5
 echo "${ECHO_T}$with_pcre2" >&6
 
 if test "x$with_pcre2" != xno ; then
@@ -8076,17 +8062,17 @@ if test "x$with_pcre2" != xno ; then
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$cf_with_pcre2"; then
        test -n "$verbose" && echo "    found package $cf_with_pcre2" 1>&6
 
-echo "${as_me:-configure}:8079: testing found package $cf_with_pcre2 ..." 1>&5
+echo "${as_me:-configure}:8065: testing found package $cf_with_pcre2 ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$cf_with_pcre2" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "$cf_with_pcre2" 2>/dev/null`"
        test -n "$verbose" && echo "    package $cf_with_pcre2 CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:8085: testing package $cf_with_pcre2 CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:8071: testing package $cf_with_pcre2 CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package $cf_with_pcre2 LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:8089: testing package $cf_with_pcre2 LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:8075: testing package $cf_with_pcre2 LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -8210,7 +8196,7 @@ else
 fi
 
        done
-       cf_with_pcre2_ok=yes || { { echo "$as_me:8213: error: Cannot find PCRE2 library" >&5
+       cf_with_pcre2_ok=yes || { { echo "$as_me:8199: error: Cannot find PCRE2 library" >&5
 echo "$as_me: error: Cannot find PCRE2 library" >&2;}
    { (exit 1); exit 1; }; }
 
@@ -8223,7 +8209,7 @@ EOF
        (*pcre2-posix*|*pcreposix*)
                ;;
        (*)
-               echo "$as_me:8226: checking for regcomp in -lpcre2-posix" >&5
+               echo "$as_me:8212: checking for regcomp in -lpcre2-posix" >&5
 echo $ECHO_N "checking for regcomp in -lpcre2-posix... $ECHO_C" >&6
 if test "${ac_cv_lib_pcre2_posix_regcomp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8231,7 +8217,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lpcre2-posix  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 8234 "configure"
+#line 8220 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -8240,7 +8226,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char regcomp ();
+char regcomp (void);
 int
 main (void)
 {
@@ -8250,16 +8236,16 @@ regcomp ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:8253: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8239: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8256: \$? = $ac_status" >&5
+  echo "$as_me:8242: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:8259: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8245: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8262: \$? = $ac_status" >&5
+  echo "$as_me:8248: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_pcre2_posix_regcomp=yes
 else
@@ -8270,7 +8256,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:8273: result: $ac_cv_lib_pcre2_posix_regcomp" >&5
+echo "$as_me:8259: result: $ac_cv_lib_pcre2_posix_regcomp" >&5
 echo "${ECHO_T}$ac_cv_lib_pcre2_posix_regcomp" >&6
 if test "$ac_cv_lib_pcre2_posix_regcomp" = yes; then
 
@@ -8291,7 +8277,7 @@ done
 LIBS="$cf_add_libs"
 
 else
-  echo "$as_me:8294: checking for regcomp in -lpcreposix" >&5
+  echo "$as_me:8280: checking for regcomp in -lpcreposix" >&5
 echo $ECHO_N "checking for regcomp in -lpcreposix... $ECHO_C" >&6
 if test "${ac_cv_lib_pcreposix_regcomp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8299,7 +8285,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lpcreposix  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 8302 "configure"
+#line 8288 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -8308,7 +8294,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char regcomp ();
+char regcomp (void);
 int
 main (void)
 {
@@ -8318,16 +8304,16 @@ regcomp ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:8321: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8307: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8324: \$? = $ac_status" >&5
+  echo "$as_me:8310: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:8327: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8313: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8330: \$? = $ac_status" >&5
+  echo "$as_me:8316: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_pcreposix_regcomp=yes
 else
@@ -8338,7 +8324,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:8341: result: $ac_cv_lib_pcreposix_regcomp" >&5
+echo "$as_me:8327: result: $ac_cv_lib_pcreposix_regcomp" >&5
 echo "${ECHO_T}$ac_cv_lib_pcreposix_regcomp" >&6
 if test "$ac_cv_lib_pcreposix_regcomp" = yes; then
 
@@ -8359,7 +8345,7 @@ done
 LIBS="$cf_add_libs"
 
 else
-  { { echo "$as_me:8362: error: Cannot find PCRE2 POSIX library" >&5
+  { { echo "$as_me:8348: error: Cannot find PCRE2 POSIX library" >&5
 echo "$as_me: error: Cannot find PCRE2 POSIX library" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -8374,23 +8360,23 @@ fi
 for ac_header in pcre2posix.h pcreposix.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:8377: checking for $ac_header" >&5
+echo "$as_me:8363: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 8383 "configure"
+#line 8369 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:8387: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:8373: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:8393: \$? = $ac_status" >&5
+  echo "$as_me:8379: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -8409,7 +8395,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:8412: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:8398: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -8422,13 +8408,13 @@ done
 for ac_func in PCRE2regcomp
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:8425: checking for $ac_func" >&5
+echo "$as_me:8411: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 8431 "configure"
+#line 8417 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -8459,16 +8445,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:8462: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8448: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8465: \$? = $ac_status" >&5
+  echo "$as_me:8451: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:8468: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8454: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8471: \$? = $ac_status" >&5
+  echo "$as_me:8457: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -8478,7 +8464,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:8481: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:8467: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -8492,7 +8478,7 @@ fi
 
 # not everyone has "test -c"
 if test -c /dev/sysmouse 2>/dev/null ; then
-echo "$as_me:8495: checking if you want to use sysmouse" >&5
+echo "$as_me:8481: checking if you want to use sysmouse" >&5
 echo $ECHO_N "checking if you want to use sysmouse... $ECHO_C" >&6
 
 # Check whether --with-sysmouse or --without-sysmouse was given.
@@ -8504,7 +8490,7 @@ else
 fi;
        if test "$cf_with_sysmouse" != no ; then
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 8507 "configure"
+#line 8493 "configure"
 #include "confdefs.h"
 
 #include <osreldate.h>
@@ -8527,16 +8513,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8530: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8516: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8533: \$? = $ac_status" >&5
+  echo "$as_me:8519: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8536: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8522: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8539: \$? = $ac_status" >&5
+  echo "$as_me:8525: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_with_sysmouse=yes
 else
@@ -8546,7 +8532,7 @@ cf_with_sysmouse=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        fi
-echo "$as_me:8549: result: $cf_with_sysmouse" >&5
+echo "$as_me:8535: result: $cf_with_sysmouse" >&5
 echo "${ECHO_T}$cf_with_sysmouse" >&6
 test "$cf_with_sysmouse" = yes &&
 cat >>confdefs.h <<\EOF
@@ -8556,7 +8542,7 @@ EOF
 fi
 
 # pretend that ncurses==ncursesw==ncursest
-echo "$as_me:8559: checking if you want to disable library suffixes" >&5
+echo "$as_me:8545: checking if you want to disable library suffixes" >&5
 echo $ECHO_N "checking if you want to disable library suffixes... $ECHO_C" >&6
 
 # Check whether --enable-lib-suffixes or --disable-lib-suffixes was given.
@@ -8573,13 +8559,13 @@ else
        disable_lib_suffixes=no
 
 fi;
-echo "$as_me:8576: result: $disable_lib_suffixes" >&5
+echo "$as_me:8562: result: $disable_lib_suffixes" >&5
 echo "${ECHO_T}$disable_lib_suffixes" >&6
 
 ### If we're building with rpath, try to link non-standard libs that way too.
 if test "$DFT_LWR_MODEL" = "shared" && test "x$cf_cv_enable_rpath" != xno; then
 
-echo "$as_me:8582: checking if rpath-hack should be disabled" >&5
+echo "$as_me:8568: checking if rpath-hack should be disabled" >&5
 echo $ECHO_N "checking if rpath-hack should be disabled... $ECHO_C" >&6
 
 # Check whether --enable-rpath-hack or --disable-rpath-hack was given.
@@ -8597,22 +8583,22 @@ else
 
 fi;
 if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi
-echo "$as_me:8600: result: $cf_disable_rpath_hack" >&5
+echo "$as_me:8586: result: $cf_disable_rpath_hack" >&5
 echo "${ECHO_T}$cf_disable_rpath_hack" >&6
 
 if test "$enable_rpath_hack" = yes ; then
 
-echo "$as_me:8605: checking for updated LDFLAGS" >&5
+echo "$as_me:8591: checking for updated LDFLAGS" >&5
 echo $ECHO_N "checking for updated LDFLAGS... $ECHO_C" >&6
 if test -n "$LD_RPATH_OPT" ; then
-       echo "$as_me:8608: result: maybe" >&5
+       echo "$as_me:8594: result: maybe" >&5
 echo "${ECHO_T}maybe" >&6
 
        for ac_prog in ldd
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:8615: checking for $ac_word" >&5
+echo "$as_me:8601: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_cf_ldd_prog+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8627,7 +8613,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_cf_ldd_prog="$ac_prog"
-echo "$as_me:8630: found $ac_dir/$ac_word" >&5
+echo "$as_me:8616: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -8635,10 +8621,10 @@ fi
 fi
 cf_ldd_prog=$ac_cv_prog_cf_ldd_prog
 if test -n "$cf_ldd_prog"; then
-  echo "$as_me:8638: result: $cf_ldd_prog" >&5
+  echo "$as_me:8624: result: $cf_ldd_prog" >&5
 echo "${ECHO_T}$cf_ldd_prog" >&6
 else
-  echo "$as_me:8641: result: no" >&5
+  echo "$as_me:8627: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -8652,7 +8638,7 @@ test -n "$cf_ldd_prog" || cf_ldd_prog="no"
                cf_rpath_oops=
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 8655 "configure"
+#line 8641 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -8664,16 +8650,16 @@ printf("Hello");
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:8667: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8653: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8670: \$? = $ac_status" >&5
+  echo "$as_me:8656: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:8673: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8659: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8676: \$? = $ac_status" >&5
+  echo "$as_me:8662: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
                 cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[         ]/%/%' -e 's%/[^/][^/]*$%%' |sort | uniq`
@@ -8701,7 +8687,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
                                        then
                                                test -n "$verbose" && echo "    ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6
 
-echo "${as_me:-configure}:8704: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
+echo "${as_me:-configure}:8690: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
 
                                                LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
                                                break
@@ -8713,11 +8699,11 @@ echo "${as_me:-configure}:8704: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS
 
        test -n "$verbose" && echo "    ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:8716: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:8702: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
 
 test -n "$verbose" && echo "   ...checking LDFLAGS $LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:8720: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:8706: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
 
 cf_rpath_dst=
 for cf_rpath_src in $LDFLAGS
@@ -8754,7 +8740,7 @@ do
                        then
                                test -n "$verbose" && echo "    ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
 
-echo "${as_me:-configure}:8757: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
+echo "${as_me:-configure}:8743: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
 
                                EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
                        fi
@@ -8767,11 +8753,11 @@ LDFLAGS=$cf_rpath_dst
 
 test -n "$verbose" && echo "   ...checked LDFLAGS $LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:8770: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:8756: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
 
 test -n "$verbose" && echo "   ...checking LIBS $LIBS" 1>&6
 
-echo "${as_me:-configure}:8774: testing ...checking LIBS $LIBS ..." 1>&5
+echo "${as_me:-configure}:8760: testing ...checking LIBS $LIBS ..." 1>&5
 
 cf_rpath_dst=
 for cf_rpath_src in $LIBS
@@ -8808,7 +8794,7 @@ do
                        then
                                test -n "$verbose" && echo "    ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
 
-echo "${as_me:-configure}:8811: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
+echo "${as_me:-configure}:8797: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
 
                                EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
                        fi
@@ -8821,14 +8807,14 @@ LIBS=$cf_rpath_dst
 
 test -n "$verbose" && echo "   ...checked LIBS $LIBS" 1>&6
 
-echo "${as_me:-configure}:8824: testing ...checked LIBS $LIBS ..." 1>&5
+echo "${as_me:-configure}:8810: testing ...checked LIBS $LIBS ..." 1>&5
 
        test -n "$verbose" && echo "    ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:8828: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:8814: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
 
 else
-       echo "$as_me:8831: result: no" >&5
+       echo "$as_me:8817: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -8842,7 +8828,7 @@ fi
 EXTRA_PKG_LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS"
 if test -n "$EXTRA_PKG_LDFLAGS"
 then
-       echo "$as_me:8845: checking if you want to disable extra LDFLAGS for package-scripts" >&5
+       echo "$as_me:8831: checking if you want to disable extra LDFLAGS for package-scripts" >&5
 echo $ECHO_N "checking if you want to disable extra LDFLAGS for package-scripts... $ECHO_C" >&6
 
 # Check whether --enable-pkg-ldflags or --disable-pkg-ldflags was given.
@@ -8859,7 +8845,7 @@ else
        disable_pkg_ldflags=no
 
 fi;
-       echo "$as_me:8862: result: $disable_pkg_ldflags" >&5
+       echo "$as_me:8848: result: $disable_pkg_ldflags" >&5
 echo "${ECHO_T}$disable_pkg_ldflags" >&6
        test "$disable_pkg_ldflags" = yes && EXTRA_PKG_LDFLAGS=
 fi
@@ -8867,8 +8853,8 @@ fi
 ###############################################################################
 
 ###    use option --with-extra-suffix to append suffix to headers and libraries
-echo "$as_me:8870: checking if you wish to append extra suffix to header/library paths" >&5
-echo $ECHO_N "checking if you wish to append extra suffix to header/library paths... $ECHO_C" >&6
+echo "$as_me:8856: checking for extra suffix to append to header/library paths" >&5
+echo $ECHO_N "checking for extra suffix to append to header/library paths... $ECHO_C" >&6
 EXTRA_SUFFIX=
 
 # Check whether --with-extra-suffix or --without-extra-suffix was given.
@@ -8886,11 +8872,11 @@ if test "${with_extra_suffix+set}" = set; then
        esac
 
 fi;
-echo "$as_me:8889: result: $EXTRA_SUFFIX" >&5
-echo "${ECHO_T}$EXTRA_SUFFIX" >&6
+echo "$as_me:8875: result: ${EXTRA_SUFFIX:-(none)}" >&5
+echo "${ECHO_T}${EXTRA_SUFFIX:-(none)}" >&6
 
 ###    use option --disable-overwrite to leave out the link to -lcurses
-echo "$as_me:8893: checking if you wish to install ncurses overwriting curses" >&5
+echo "$as_me:8879: checking if you wish to install ncurses overwriting curses" >&5
 echo $ECHO_N "checking if you wish to install ncurses overwriting curses... $ECHO_C" >&6
 
 # Check whether --enable-overwrite or --disable-overwrite was given.
@@ -8900,10 +8886,10 @@ if test "${enable_overwrite+set}" = set; then
 else
   if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi
 fi;
-echo "$as_me:8903: result: $with_overwrite" >&5
+echo "$as_me:8889: result: $with_overwrite" >&5
 echo "${ECHO_T}$with_overwrite" >&6
 
-echo "$as_me:8906: checking if external terminfo-database is used" >&5
+echo "$as_me:8892: checking if external terminfo-database is used" >&5
 echo $ECHO_N "checking if external terminfo-database is used... $ECHO_C" >&6
 
 # Check whether --enable-database or --disable-database was given.
@@ -8913,7 +8899,7 @@ if test "${enable_database+set}" = set; then
 else
   use_database=yes
 fi;
-echo "$as_me:8916: result: $use_database" >&5
+echo "$as_me:8902: result: $use_database" >&5
 echo "${ECHO_T}$use_database" >&6
 
 case "$host_os" in
@@ -8929,7 +8915,7 @@ NCURSES_USE_DATABASE=0
 if test "$use_database" != no ; then
        NCURSES_USE_DATABASE=1
 
-       echo "$as_me:8932: checking which terminfo source-file will be installed" >&5
+       echo "$as_me:8918: checking which terminfo source-file will be installed" >&5
 echo $ECHO_N "checking which terminfo source-file will be installed... $ECHO_C" >&6
 
 # Check whether --with-database or --without-database was given.
@@ -8937,10 +8923,10 @@ if test "${with_database+set}" = set; then
   withval="$with_database"
   TERMINFO_SRC=$withval
 fi;
-       echo "$as_me:8940: result: $TERMINFO_SRC" >&5
+       echo "$as_me:8926: result: $TERMINFO_SRC" >&5
 echo "${ECHO_T}$TERMINFO_SRC" >&6
 
-       echo "$as_me:8943: checking whether to use hashed database instead of directory/tree" >&5
+       echo "$as_me:8929: checking whether to use hashed database instead of directory/tree" >&5
 echo $ECHO_N "checking whether to use hashed database instead of directory/tree... $ECHO_C" >&6
 
 # Check whether --with-hashed-db or --without-hashed-db was given.
@@ -8950,14 +8936,14 @@ if test "${with_hashed_db+set}" = set; then
 else
   with_hashed_db=no
 fi;
-       echo "$as_me:8953: result: $with_hashed_db" >&5
+       echo "$as_me:8939: result: $with_hashed_db" >&5
 echo "${ECHO_T}$with_hashed_db" >&6
 else
        with_hashed_db=no
 fi
 
-echo "$as_me:8959: checking for list of fallback descriptions" >&5
-echo $ECHO_N "checking for list of fallback descriptions... $ECHO_C" >&6
+echo "$as_me:8945: checking for list of fallback terminal descriptions" >&5
+echo $ECHO_N "checking for list of fallback terminal descriptions... $ECHO_C" >&6
 
 # Check whether --with-fallbacks or --without-fallbacks was given.
 if test "${with_fallbacks+set}" = set; then
@@ -8966,15 +8952,15 @@ if test "${with_fallbacks+set}" = set; then
 else
   with_fallback=
 fi;
-echo "$as_me:8969: result: $with_fallback" >&5
-echo "${ECHO_T}$with_fallback" >&6
+echo "$as_me:8955: result: ${with_fallback:-(none)}" >&5
+echo "${ECHO_T}${with_fallback:-(none)}" >&6
 
 case ".$with_fallback" in
 (.|.no)
        FALLBACK_LIST=
        ;;
 (.yes)
-       { echo "$as_me:8977: WARNING: expected a list of terminal descriptions" >&5
+       { echo "$as_me:8963: WARNING: expected a list of terminal descriptions" >&5
 echo "$as_me: WARNING: expected a list of terminal descriptions" >&2;}
        ;;
 (*)
@@ -8990,7 +8976,7 @@ esac
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}tic", so it can be a program name with args.
 set dummy ${ac_tool_prefix}tic; ac_word=$2
-echo "$as_me:8993: checking for $ac_word" >&5
+echo "$as_me:8979: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_TIC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9005,7 +8991,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_TIC="${ac_tool_prefix}tic"
-echo "$as_me:9008: found $ac_dir/$ac_word" >&5
+echo "$as_me:8994: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -9013,10 +8999,10 @@ fi
 fi
 TIC=$ac_cv_prog_TIC
 if test -n "$TIC"; then
-  echo "$as_me:9016: result: $TIC" >&5
+  echo "$as_me:9002: result: $TIC" >&5
 echo "${ECHO_T}$TIC" >&6
 else
-  echo "$as_me:9019: result: no" >&5
+  echo "$as_me:9005: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -9025,7 +9011,7 @@ if test -z "$ac_cv_prog_TIC"; then
   ac_ct_TIC=$TIC
   # Extract the first word of "tic", so it can be a program name with args.
 set dummy tic; ac_word=$2
-echo "$as_me:9028: checking for $ac_word" >&5
+echo "$as_me:9014: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_TIC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9040,7 +9026,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_TIC="tic"
-echo "$as_me:9043: found $ac_dir/$ac_word" >&5
+echo "$as_me:9029: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -9048,10 +9034,10 @@ fi
 fi
 ac_ct_TIC=$ac_cv_prog_ac_ct_TIC
 if test -n "$ac_ct_TIC"; then
-  echo "$as_me:9051: result: $ac_ct_TIC" >&5
+  echo "$as_me:9037: result: $ac_ct_TIC" >&5
 echo "${ECHO_T}$ac_ct_TIC" >&6
 else
-  echo "$as_me:9054: result: no" >&5
+  echo "$as_me:9040: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -9063,7 +9049,7 @@ fi
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}infocmp", so it can be a program name with args.
 set dummy ${ac_tool_prefix}infocmp; ac_word=$2
-echo "$as_me:9066: checking for $ac_word" >&5
+echo "$as_me:9052: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_INFOCMP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9078,7 +9064,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_INFOCMP="${ac_tool_prefix}infocmp"
-echo "$as_me:9081: found $ac_dir/$ac_word" >&5
+echo "$as_me:9067: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -9086,10 +9072,10 @@ fi
 fi
 INFOCMP=$ac_cv_prog_INFOCMP
 if test -n "$INFOCMP"; then
-  echo "$as_me:9089: result: $INFOCMP" >&5
+  echo "$as_me:9075: result: $INFOCMP" >&5
 echo "${ECHO_T}$INFOCMP" >&6
 else
-  echo "$as_me:9092: result: no" >&5
+  echo "$as_me:9078: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -9098,7 +9084,7 @@ if test -z "$ac_cv_prog_INFOCMP"; then
   ac_ct_INFOCMP=$INFOCMP
   # Extract the first word of "infocmp", so it can be a program name with args.
 set dummy infocmp; ac_word=$2
-echo "$as_me:9101: checking for $ac_word" >&5
+echo "$as_me:9087: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_INFOCMP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9113,7 +9099,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_INFOCMP="infocmp"
-echo "$as_me:9116: found $ac_dir/$ac_word" >&5
+echo "$as_me:9102: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -9121,10 +9107,10 @@ fi
 fi
 ac_ct_INFOCMP=$ac_cv_prog_ac_ct_INFOCMP
 if test -n "$ac_ct_INFOCMP"; then
-  echo "$as_me:9124: result: $ac_ct_INFOCMP" >&5
+  echo "$as_me:9110: result: $ac_ct_INFOCMP" >&5
 echo "${ECHO_T}$ac_ct_INFOCMP" >&6
 else
-  echo "$as_me:9127: result: no" >&5
+  echo "$as_me:9113: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -9139,10 +9125,10 @@ then
 # Check whether --with-tic-path or --without-tic-path was given.
 if test "${with_tic_path+set}" = set; then
   withval="$with_tic_path"
-  echo "$as_me:9142: checking for tic program for fallbacks" >&5
+  echo "$as_me:9128: checking for tic program for fallbacks" >&5
 echo $ECHO_N "checking for tic program for fallbacks... $ECHO_C" >&6
                TIC=$withval
-               echo "$as_me:9145: result: $TIC" >&5
+               echo "$as_me:9131: result: $TIC" >&5
 echo "${ECHO_T}$TIC" >&6
 
 if test "x$prefix" != xNONE; then
@@ -9170,7 +9156,7 @@ case ".$TIC" in
        TIC=`echo "$TIC" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:9173: error: expected a pathname, not \"$TIC\"" >&5
+       { { echo "$as_me:9159: error: expected a pathname, not \"$TIC\"" >&5
 echo "$as_me: error: expected a pathname, not \"$TIC\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -9183,7 +9169,7 @@ for ac_prog in $TIC tic
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:9186: checking for $ac_word" >&5
+echo "$as_me:9172: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_TIC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9200,7 +9186,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_TIC="$ac_dir/$ac_word"
-   echo "$as_me:9203: found $ac_dir/$ac_word" >&5
+   echo "$as_me:9189: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -9211,10 +9197,10 @@ fi
 TIC=$ac_cv_path_TIC
 
 if test -n "$TIC"; then
-  echo "$as_me:9214: result: $TIC" >&5
+  echo "$as_me:9200: result: $TIC" >&5
 echo "${ECHO_T}$TIC" >&6
 else
-  echo "$as_me:9217: result: no" >&5
+  echo "$as_me:9203: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -9273,7 +9259,7 @@ IFS="$cf_save_ifs"
 
 if test -n "$cf_path_prog" ; then
 
-echo "${as_me:-configure}:9276: testing defining path for ${cf_path_prog} ..." 1>&5
+echo "${as_me:-configure}:9262: testing defining path for ${cf_path_prog} ..." 1>&5
 
 cat >>confdefs.h <<EOF
 #define TIC_PATH "$cf_path_prog"
@@ -9288,7 +9274,7 @@ fi
 
                if test -z "$TIC"
                then
-                       { echo "$as_me:9291: WARNING: no tic program found for fallbacks" >&5
+                       { echo "$as_me:9277: WARNING: no tic program found for fallbacks" >&5
 echo "$as_me: WARNING: no tic program found for fallbacks" >&2;}
                fi
 
@@ -9297,10 +9283,10 @@ fi;
 # Check whether --with-infocmp-path or --without-infocmp-path was given.
 if test "${with_infocmp_path+set}" = set; then
   withval="$with_infocmp_path"
-  echo "$as_me:9300: checking for infocmp program for fallbacks" >&5
+  echo "$as_me:9286: checking for infocmp program for fallbacks" >&5
 echo $ECHO_N "checking for infocmp program for fallbacks... $ECHO_C" >&6
                INFOCMP=$withval
-               echo "$as_me:9303: result: $INFOCMP" >&5
+               echo "$as_me:9289: result: $INFOCMP" >&5
 echo "${ECHO_T}$INFOCMP" >&6
 
 if test "x$prefix" != xNONE; then
@@ -9328,7 +9314,7 @@ case ".$INFOCMP" in
        INFOCMP=`echo "$INFOCMP" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:9331: error: expected a pathname, not \"$INFOCMP\"" >&5
+       { { echo "$as_me:9317: error: expected a pathname, not \"$INFOCMP\"" >&5
 echo "$as_me: error: expected a pathname, not \"$INFOCMP\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -9341,7 +9327,7 @@ for ac_prog in $INFOCMP infocmp
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:9344: checking for $ac_word" >&5
+echo "$as_me:9330: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_INFOCMP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9358,7 +9344,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_INFOCMP="$ac_dir/$ac_word"
-   echo "$as_me:9361: found $ac_dir/$ac_word" >&5
+   echo "$as_me:9347: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -9369,10 +9355,10 @@ fi
 INFOCMP=$ac_cv_path_INFOCMP
 
 if test -n "$INFOCMP"; then
-  echo "$as_me:9372: result: $INFOCMP" >&5
+  echo "$as_me:9358: result: $INFOCMP" >&5
 echo "${ECHO_T}$INFOCMP" >&6
 else
-  echo "$as_me:9375: result: no" >&5
+  echo "$as_me:9361: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -9431,7 +9417,7 @@ IFS="$cf_save_ifs"
 
 if test -n "$cf_path_prog" ; then
 
-echo "${as_me:-configure}:9434: testing defining path for ${cf_path_prog} ..." 1>&5
+echo "${as_me:-configure}:9420: testing defining path for ${cf_path_prog} ..." 1>&5
 
 cat >>confdefs.h <<EOF
 #define INFOCMP_PATH "$cf_path_prog"
@@ -9446,7 +9432,7 @@ fi
 
                if test -z "$INFOCMP"
                then
-                       { echo "$as_me:9449: WARNING: no infocmp program found for fallbacks" >&5
+                       { echo "$as_me:9435: WARNING: no infocmp program found for fallbacks" >&5
 echo "$as_me: WARNING: no infocmp program found for fallbacks" >&2;}
                fi
 
@@ -9456,7 +9442,7 @@ fi;
        test -z "$INFOCMP" && FALLBACK_LIST=
        if test -z "$FALLBACK_LIST"
        then
-               { echo "$as_me:9459: WARNING: ignoring fallback option because tic/infocmp are not available" >&5
+               { echo "$as_me:9445: WARNING: ignoring fallback option because tic/infocmp are not available" >&5
 echo "$as_me: WARNING: ignoring fallback option because tic/infocmp are not available" >&2;}
        fi
 fi
@@ -9464,7 +9450,7 @@ fi
 USE_FALLBACKS=
 test -z "$FALLBACK_LIST" && USE_FALLBACKS="#"
 
-echo "$as_me:9467: checking if you want modern xterm or antique" >&5
+echo "$as_me:9453: checking if you want modern xterm or antique" >&5
 echo $ECHO_N "checking if you want modern xterm or antique... $ECHO_C" >&6
 
 # Check whether --with-xterm-new or --without-xterm-new was given.
@@ -9478,7 +9464,7 @@ case "$with_xterm_new" in
 (no) with_xterm_new=xterm-old;;
 (*)     with_xterm_new=xterm-new;;
 esac
-echo "$as_me:9481: result: $with_xterm_new" >&5
+echo "$as_me:9467: result: $with_xterm_new" >&5
 echo "${ECHO_T}$with_xterm_new" >&6
 WHICH_XTERM=$with_xterm_new
 
@@ -9491,7 +9477,7 @@ case $host_os in
        ;;
 esac
 
-echo "$as_me:9494: checking if xterm backspace sends BS or DEL" >&5
+echo "$as_me:9480: checking if xterm backspace sends BS or DEL" >&5
 echo $ECHO_N "checking if xterm backspace sends BS or DEL... $ECHO_C" >&6
 
 # Check whether --with-xterm-kbs or --without-xterm-kbs was given.
@@ -9499,7 +9485,7 @@ if test "${with_xterm_kbs+set}" = set; then
   withval="$with_xterm_kbs"
   with_xterm_kbs=$withval
 else
-  with_xterm_kbs=BS
+  with_xterm_kbs=auto
 fi;
 case x$with_xterm_kbs in
 (xyes|xno|xBS|xbs|x8)
@@ -9508,18 +9494,21 @@ case x$with_xterm_kbs in
 (xDEL|xdel|x127)
        with_xterm_kbs=DEL
        ;;
+(xauto)
+       with_xterm_kbs=$want_xterm_kbs
+       ;;
 (*)
        with_xterm_kbs=$withval
        ;;
 esac
-echo "$as_me:9515: result: $with_xterm_kbs" >&5
+echo "$as_me:9504: result: $with_xterm_kbs" >&5
 echo "${ECHO_T}$with_xterm_kbs" >&6
 XTERM_KBS=$with_xterm_kbs
 
 if test "x$with_xterm_kbs" != "x$want_xterm_kbs"
 then
-       { echo "$as_me:9521: WARNING: expected --with-xterm-kbs=$want_xterm_kbs for $host_os" >&5
-echo "$as_me: WARNING: expected --with-xterm-kbs=$want_xterm_kbs for $host_os" >&2;}
+       { echo "$as_me:9510: WARNING: expected --with-xterm-kbs=$want_xterm_kbs for $host_os, have $with_xterm_kbs" >&5
+echo "$as_me: WARNING: expected --with-xterm-kbs=$want_xterm_kbs for $host_os, have $with_xterm_kbs" >&2;}
 fi
 
 MAKE_TERMINFO=
@@ -9528,7 +9517,7 @@ if test "$use_database" = no ; then
        MAKE_TERMINFO="#"
 else
 
-echo "$as_me:9531: checking for list of terminfo directories" >&5
+echo "$as_me:9520: checking for list of terminfo directories" >&5
 echo $ECHO_N "checking for list of terminfo directories... $ECHO_C" >&6
 
 # Check whether --with-terminfo-dirs or --without-terminfo-dirs was given.
@@ -9568,7 +9557,7 @@ case ".$cf_src_path" in
        cf_src_path=`echo "$cf_src_path" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:9571: error: expected a pathname, not \"$cf_src_path\"" >&5
+       { { echo "$as_me:9560: error: expected a pathname, not \"$cf_src_path\"" >&5
 echo "$as_me: error: expected a pathname, not \"$cf_src_path\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -9591,7 +9580,7 @@ case "x$cf_dst_eval" in
        ;;
 esac
 
-echo "$as_me:9594: result: $TERMINFO_DIRS" >&5
+echo "$as_me:9583: result: $TERMINFO_DIRS" >&5
 echo "${ECHO_T}$TERMINFO_DIRS" >&6
 test -n "$TERMINFO_DIRS" &&
 cat >>confdefs.h <<EOF
@@ -9600,13 +9589,13 @@ EOF
 
 case "x$TERMINFO" in
 x???:*)
-       { echo "$as_me:9603: WARNING: ignoring non-directory/file TERMINFO value" >&5
+       { echo "$as_me:9592: WARNING: ignoring non-directory/file TERMINFO value" >&5
 echo "$as_me: WARNING: ignoring non-directory/file TERMINFO value" >&2;}
        unset TERMINFO
        ;;
 esac
 
-echo "$as_me:9609: checking for default terminfo directory" >&5
+echo "$as_me:9598: checking for default terminfo directory" >&5
 echo $ECHO_N "checking for default terminfo directory... $ECHO_C" >&6
 
 # Check whether --with-default-terminfo-dir or --without-default-terminfo-dir was given.
@@ -9642,7 +9631,7 @@ case ".$withval" in
        withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:9645: error: expected a pathname, not \"$withval\"" >&5
+       { { echo "$as_me:9634: error: expected a pathname, not \"$withval\"" >&5
 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -9651,7 +9640,7 @@ esac
 fi
 eval TERMINFO="$withval"
 
-echo "$as_me:9654: result: $TERMINFO" >&5
+echo "$as_me:9643: result: $TERMINFO" >&5
 echo "${ECHO_T}$TERMINFO" >&6
 
 cat >>confdefs.h <<EOF
@@ -9662,7 +9651,7 @@ fi
 
 ###    use option --disable-big-core to make tic run on small machines
 ###    We need 4Mb, check if we can allocate 50% more than that.
-echo "$as_me:9665: checking if big-core option selected" >&5
+echo "$as_me:9654: checking if big-core option selected" >&5
 echo $ECHO_N "checking if big-core option selected... $ECHO_C" >&6
 
 # Check whether --enable-big-core or --disable-big-core was given.
@@ -9674,12 +9663,12 @@ else
   with_big_core=no
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 9677 "configure"
+#line 9666 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
 #include <string.h>
-int main() {
+int main(void) {
        unsigned long n = 6000000L;
        char *s = malloc(n);
        if (s != 0)
@@ -9688,15 +9677,15 @@ int main() {
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:9691: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9680: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9694: \$? = $ac_status" >&5
+  echo "$as_me:9683: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:9696: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9685: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9699: \$? = $ac_status" >&5
+  echo "$as_me:9688: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   with_big_core=yes
 else
@@ -9708,7 +9697,7 @@ fi
 rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 fi;
-echo "$as_me:9711: result: $with_big_core" >&5
+echo "$as_me:9700: result: $with_big_core" >&5
 echo "${ECHO_T}$with_big_core" >&6
 test "x$with_big_core" = "xyes" &&
 cat >>confdefs.h <<\EOF
@@ -9718,7 +9707,7 @@ EOF
 ### ISO C only guarantees 512-char strings, we have tables which load faster
 ### when constructed using "big" strings.  More than the C compiler, the awk
 ### program is a limit on most vendor UNIX systems.  Check that we can build.
-echo "$as_me:9721: checking if big-strings option selected" >&5
+echo "$as_me:9710: checking if big-strings option selected" >&5
 echo $ECHO_N "checking if big-strings option selected... $ECHO_C" >&6
 
 # Check whether --enable-big-strings or --disable-big-strings was given.
@@ -9742,14 +9731,14 @@ else
        esac
 
 fi;
-echo "$as_me:9745: result: $with_big_strings" >&5
+echo "$as_me:9734: result: $with_big_strings" >&5
 echo "${ECHO_T}$with_big_strings" >&6
 
 USE_BIG_STRINGS=0
 test "x$with_big_strings" = "xyes" && USE_BIG_STRINGS=1
 
 ###    use option --enable-termcap to compile in the termcap fallback support
-echo "$as_me:9752: checking if you want termcap-fallback support" >&5
+echo "$as_me:9741: checking if you want termcap-fallback support" >&5
 echo $ECHO_N "checking if you want termcap-fallback support... $ECHO_C" >&6
 
 # Check whether --enable-termcap or --disable-termcap was given.
@@ -9759,14 +9748,14 @@ if test "${enable_termcap+set}" = set; then
 else
   with_termcap=no
 fi;
-echo "$as_me:9762: result: $with_termcap" >&5
+echo "$as_me:9751: result: $with_termcap" >&5
 echo "${ECHO_T}$with_termcap" >&6
 
 NCURSES_USE_TERMCAP=0
 if test "x$with_termcap" != "xyes" ; then
        if test "$use_database" = no ; then
                if test -z "$with_fallback" ; then
-                       { { echo "$as_me:9769: error: You have disabled the database w/o specifying fallbacks" >&5
+                       { { echo "$as_me:9758: error: You have disabled the database w/o specifying fallbacks" >&5
 echo "$as_me: error: You have disabled the database w/o specifying fallbacks" >&2;}
    { (exit 1); exit 1; }; }
                fi
@@ -9779,13 +9768,13 @@ EOF
 else
 
        if test "$with_ticlib" != no ; then
-               { { echo "$as_me:9782: error: Options --with-ticlib and --enable-termcap cannot be combined" >&5
+               { { echo "$as_me:9771: error: Options --with-ticlib and --enable-termcap cannot be combined" >&5
 echo "$as_me: error: Options --with-ticlib and --enable-termcap cannot be combined" >&2;}
    { (exit 1); exit 1; }; }
        fi
 
        NCURSES_USE_TERMCAP=1
-       echo "$as_me:9788: checking for list of termcap files" >&5
+       echo "$as_me:9777: checking for list of termcap files" >&5
 echo $ECHO_N "checking for list of termcap files... $ECHO_C" >&6
 
 # Check whether --with-termpath or --without-termpath was given.
@@ -9825,7 +9814,7 @@ case ".$cf_src_path" in
        cf_src_path=`echo "$cf_src_path" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:9828: error: expected a pathname, not \"$cf_src_path\"" >&5
+       { { echo "$as_me:9817: error: expected a pathname, not \"$cf_src_path\"" >&5
 echo "$as_me: error: expected a pathname, not \"$cf_src_path\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -9848,7 +9837,7 @@ case "x$cf_dst_eval" in
        ;;
 esac
 
-       echo "$as_me:9851: result: $TERMPATH" >&5
+       echo "$as_me:9840: result: $TERMPATH" >&5
 echo "${ECHO_T}$TERMPATH" >&6
        test -n "$TERMPATH" &&
 cat >>confdefs.h <<EOF
@@ -9856,7 +9845,7 @@ cat >>confdefs.h <<EOF
 EOF
 
        ###     use option --enable-getcap to use a hacked getcap for reading termcaps
-       echo "$as_me:9859: checking if fast termcap-loader is needed" >&5
+       echo "$as_me:9848: checking if fast termcap-loader is needed" >&5
 echo $ECHO_N "checking if fast termcap-loader is needed... $ECHO_C" >&6
 
 # Check whether --enable-getcap or --disable-getcap was given.
@@ -9866,14 +9855,14 @@ if test "${enable_getcap+set}" = set; then
 else
   with_getcap=no
 fi;
-       echo "$as_me:9869: result: $with_getcap" >&5
+       echo "$as_me:9858: result: $with_getcap" >&5
 echo "${ECHO_T}$with_getcap" >&6
        test "x$with_getcap" = "xyes" &&
 cat >>confdefs.h <<\EOF
 #define USE_GETCAP 1
 EOF
 
-       echo "$as_me:9876: checking if translated termcaps will be cached in ~/.terminfo" >&5
+       echo "$as_me:9865: checking if translated termcaps will be cached in ~/.terminfo" >&5
 echo $ECHO_N "checking if translated termcaps will be cached in ~/.terminfo... $ECHO_C" >&6
 
 # Check whether --enable-getcap-cache or --disable-getcap-cache was given.
@@ -9883,7 +9872,7 @@ if test "${enable_getcap_cache+set}" = set; then
 else
   with_getcap_cache=no
 fi;
-       echo "$as_me:9886: result: $with_getcap_cache" >&5
+       echo "$as_me:9875: result: $with_getcap_cache" >&5
 echo "${ECHO_T}$with_getcap_cache" >&6
        test "x$with_getcap_cache" = "xyes" &&
 cat >>confdefs.h <<\EOF
@@ -9893,7 +9882,7 @@ EOF
 fi
 
 ###   Use option --disable-home-terminfo to completely remove ~/.terminfo
-echo "$as_me:9896: checking if ~/.terminfo is wanted" >&5
+echo "$as_me:9885: checking if ~/.terminfo is wanted" >&5
 echo $ECHO_N "checking if ~/.terminfo is wanted... $ECHO_C" >&6
 
 # Check whether --enable-home-terminfo or --disable-home-terminfo was given.
@@ -9903,14 +9892,14 @@ if test "${enable_home_terminfo+set}" = set; then
 else
   with_home_terminfo=yes
 fi;
-echo "$as_me:9906: result: $with_home_terminfo" >&5
+echo "$as_me:9895: result: $with_home_terminfo" >&5
 echo "${ECHO_T}$with_home_terminfo" >&6
 test "x$with_home_terminfo" = "xyes" &&
 cat >>confdefs.h <<\EOF
 #define USE_HOME_TERMINFO 1
 EOF
 
-echo "$as_me:9913: checking if you want to permit root to use ncurses environment variables" >&5
+echo "$as_me:9902: checking if you want to permit root to use ncurses environment variables" >&5
 echo $ECHO_N "checking if you want to permit root to use ncurses environment variables... $ECHO_C" >&6
 
 # Check whether --enable-root-environ or --disable-root-environ was given.
@@ -9920,30 +9909,47 @@ if test "${enable_root_environ+set}" = set; then
 else
   with_root_environ=yes
 fi;
-echo "$as_me:9923: result: $with_root_environ" >&5
+echo "$as_me:9912: result: $with_root_environ" >&5
 echo "${ECHO_T}$with_root_environ" >&6
 test "x$with_root_environ" = xyes &&
 cat >>confdefs.h <<\EOF
 #define USE_ROOT_ENVIRON 1
 EOF
 
-echo "$as_me:9930: checking if you want to permit setuid programs to access all files" >&5
+echo "$as_me:9919: checking if you want to permit setuid programs to access all files" >&5
 echo $ECHO_N "checking if you want to permit setuid programs to access all files... $ECHO_C" >&6
 
-# Check whether --enable-root-environ or --disable-root-environ was given.
-if test "${enable_root_environ+set}" = set; then
-  enableval="$enable_root_environ"
+# Check whether --enable-root-access or --disable-root-access was given.
+if test "${enable_root_access+set}" = set; then
+  enableval="$enable_root_access"
   with_root_access=$enableval
 else
   with_root_access=yes
 fi;
-echo "$as_me:9940: result: $with_root_access" >&5
+echo "$as_me:9929: result: $with_root_access" >&5
 echo "${ECHO_T}$with_root_access" >&6
 test "x$with_root_access" = xyes &&
 cat >>confdefs.h <<\EOF
 #define USE_ROOT_ACCESS 1
 EOF
 
+echo "$as_me:9936: checking if you want to permit setuid use of ncurses environment variables" >&5
+echo $ECHO_N "checking if you want to permit setuid use of ncurses environment variables... $ECHO_C" >&6
+
+# Check whether --enable-setuid-environ or --disable-setuid-environ was given.
+if test "${enable_setuid_environ+set}" = set; then
+  enableval="$enable_setuid_environ"
+  with_setuid_environ=$enableval
+else
+  with_setuid_environ=$with_root_environ
+fi;
+echo "$as_me:9946: result: $with_setuid_environ" >&5
+echo "${ECHO_T}$with_setuid_environ" >&6
+test "x$with_setuid_environ" = xyes &&
+cat >>confdefs.h <<\EOF
+#define USE_SETUID_ENVIRON 1
+EOF
+
 ###   Use option --enable-symlinks to make tic use symlinks, not hard links
 ###   to reduce storage requirements for the terminfo database.
 
@@ -9952,23 +9958,23 @@ unistd.h \
 
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:9955: checking for $ac_header" >&5
+echo "$as_me:9961: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 9961 "configure"
+#line 9967 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:9965: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:9971: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:9971: \$? = $ac_status" >&5
+  echo "$as_me:9977: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -9987,7 +9993,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:9990: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:9996: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -10002,13 +10008,13 @@ for ac_func in \
        unlink
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10005: checking for $ac_func" >&5
+echo "$as_me:10011: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 10011 "configure"
+#line 10017 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -10039,16 +10045,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:10042: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10048: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10045: \$? = $ac_status" >&5
+  echo "$as_me:10051: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:10048: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10054: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10051: \$? = $ac_status" >&5
+  echo "$as_me:10057: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -10058,7 +10064,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:10061: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:10067: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -10075,13 +10081,13 @@ for ac_func in \
                symlink
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:10078: checking for $ac_func" >&5
+echo "$as_me:10084: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 10084 "configure"
+#line 10090 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -10112,16 +10118,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:10115: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10121: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10118: \$? = $ac_status" >&5
+  echo "$as_me:10124: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:10121: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10127: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10124: \$? = $ac_status" >&5
+  echo "$as_me:10130: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -10131,7 +10137,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:10134: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:10140: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -10142,7 +10148,7 @@ fi
 done
 
 else
-       echo "$as_me:10145: checking if link/symlink functions work" >&5
+       echo "$as_me:10151: checking if link/symlink functions work" >&5
 echo $ECHO_N "checking if link/symlink functions work... $ECHO_C" >&6
 if test "${cf_cv_link_funcs+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10155,7 +10161,7 @@ else
                        eval 'ac_cv_func_'$cf_func'=error'
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 10158 "configure"
+#line 10164 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -10163,8 +10169,8 @@ $ac_includes_default
 int main(void)
 {
        int fail = 0;
-       char *src = "conftest.tmp";
-       char *dst = "conftest.chk";
+       char src[] = "conftest.tmp";
+       char dst[] = "conftest.chk";
        struct stat src_sb, dst_sb;
        FILE *fp = fopen(src, "w");
        if (fp == 0) { fail = 3; } else {
@@ -10189,15 +10195,15 @@ int main(void)
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:10192: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10198: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10195: \$? = $ac_status" >&5
+  echo "$as_me:10201: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:10197: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10203: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10200: \$? = $ac_status" >&5
+  echo "$as_me:10206: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                        cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
@@ -10215,7 +10221,7 @@ fi
                test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
 
 fi
-echo "$as_me:10218: result: $cf_cv_link_funcs" >&5
+echo "$as_me:10224: result: $cf_cv_link_funcs" >&5
 echo "${ECHO_T}$cf_cv_link_funcs" >&6
        test "$ac_cv_func_link"    = yes &&
 cat >>confdefs.h <<\EOF
@@ -10235,7 +10241,7 @@ with_symlinks=no
 # soft links (symbolic links) are useful for some systems where hard links do
 # not work, or to make it simpler to copy terminfo trees around.
 if test "x$ac_cv_func_symlink" = xyes ; then
-       echo "$as_me:10238: checking if tic should use symbolic links" >&5
+       echo "$as_me:10244: checking if tic should use symbolic links" >&5
 echo $ECHO_N "checking if tic should use symbolic links... $ECHO_C" >&6
 
 # Check whether --enable-symlinks or --disable-symlinks was given.
@@ -10245,21 +10251,21 @@ if test "${enable_symlinks+set}" = set; then
 else
   with_symlinks=no
 fi;
-       echo "$as_me:10248: result: $with_symlinks" >&5
+       echo "$as_me:10254: result: $with_symlinks" >&5
 echo "${ECHO_T}$with_symlinks" >&6
 fi
 
 # If we have hard links and did not choose to use soft links instead, there is
 # no reason to make this choice optional - use the hard links.
 if test "$with_symlinks" = no ; then
-       echo "$as_me:10255: checking if tic should use hard links" >&5
+       echo "$as_me:10261: checking if tic should use hard links" >&5
 echo $ECHO_N "checking if tic should use hard links... $ECHO_C" >&6
        if test "x$ac_cv_func_link" = xyes ; then
                with_links=yes
        else
                with_links=no
        fi
-       echo "$as_me:10262: result: $with_links" >&5
+       echo "$as_me:10268: result: $with_links" >&5
 echo "${ECHO_T}$with_links" >&6
 fi
 
@@ -10275,7 +10281,7 @@ EOF
 
 ###   use option --enable-broken-linker to force on use of broken-linker support
 
-echo "$as_me:10278: checking if you want broken-linker support code" >&5
+echo "$as_me:10284: checking if you want broken-linker support code" >&5
 echo $ECHO_N "checking if you want broken-linker support code... $ECHO_C" >&6
 
 # Check whether --enable-broken_linker or --disable-broken_linker was given.
@@ -10285,7 +10291,7 @@ if test "${enable_broken_linker+set}" = set; then
 else
   with_broken_linker=no
 fi;
-echo "$as_me:10288: result: $with_broken_linker" >&5
+echo "$as_me:10294: result: $with_broken_linker" >&5
 echo "${ECHO_T}$with_broken_linker" >&6
 
 : "${BROKEN_LINKER:=0}"
@@ -10299,7 +10305,7 @@ EOF
 fi
 
 ###   use option --enable-bsdpad to have tputs process BSD-style prefix padding
-echo "$as_me:10302: checking if tputs should process BSD-style prefix padding" >&5
+echo "$as_me:10308: checking if tputs should process BSD-style prefix padding" >&5
 echo $ECHO_N "checking if tputs should process BSD-style prefix padding... $ECHO_C" >&6
 
 # Check whether --enable-bsdpad or --disable-bsdpad was given.
@@ -10309,7 +10315,7 @@ if test "${enable_bsdpad+set}" = set; then
 else
   with_bsdpad=no
 fi;
-echo "$as_me:10312: result: $with_bsdpad" >&5
+echo "$as_me:10318: result: $with_bsdpad" >&5
 echo "${ECHO_T}$with_bsdpad" >&6
 test "x$with_bsdpad" = xyes &&
 cat >>confdefs.h <<\EOF
@@ -10328,14 +10334,14 @@ NCURSES_WINT_T=0
 # Check to define _XOPEN_SOURCE "automatically"
 CPPFLAGS_before_XOPEN="$CPPFLAGS"
 
-echo "$as_me:10331: checking if the POSIX test-macros are already defined" >&5
+echo "$as_me:10337: checking if the POSIX test-macros are already defined" >&5
 echo $ECHO_N "checking if the POSIX test-macros are already defined... $ECHO_C" >&6
 if test "${cf_cv_posix_visible+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 10338 "configure"
+#line 10344 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -10354,16 +10360,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10357: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10363: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10360: \$? = $ac_status" >&5
+  echo "$as_me:10366: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10363: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10369: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10366: \$? = $ac_status" >&5
+  echo "$as_me:10372: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_posix_visible=no
 else
@@ -10374,7 +10380,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:10377: result: $cf_cv_posix_visible" >&5
+echo "$as_me:10383: result: $cf_cv_posix_visible" >&5
 echo "${ECHO_T}$cf_cv_posix_visible" >&6
 
 if test "$cf_cv_posix_visible" = no; then
@@ -10387,9 +10393,6 @@ case "$host_os" in
 (aix[4-7]*)
        cf_xopen_source="-D_ALL_SOURCE"
        ;;
-(msys)
-       cf_XOPEN_SOURCE=600
-       ;;
 (darwin[0-8].*)
        cf_xopen_source="-D_APPLE_C_SOURCE"
        ;;
@@ -10415,18 +10418,18 @@ case "$host_os" in
        cf_xopen_source="-D_SGI_SOURCE"
        cf_XOPEN_SOURCE=
        ;;
-(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
 
 cf_gnu_xopen_source=$cf_XOPEN_SOURCE
 
-echo "$as_me:10422: checking if this is the GNU C library" >&5
+echo "$as_me:10425: checking if this is the GNU C library" >&5
 echo $ECHO_N "checking if this is the GNU C library... $ECHO_C" >&6
 if test "${cf_cv_gnu_library+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 10429 "configure"
+#line 10432 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -10445,16 +10448,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10448: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10451: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10451: \$? = $ac_status" >&5
+  echo "$as_me:10454: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10454: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10457: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10457: \$? = $ac_status" >&5
+  echo "$as_me:10460: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_library=yes
 else
@@ -10465,7 +10468,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:10468: result: $cf_cv_gnu_library" >&5
+echo "$as_me:10471: result: $cf_cv_gnu_library" >&5
 echo "${ECHO_T}$cf_cv_gnu_library" >&6
 
 if test x$cf_cv_gnu_library = xyes; then
@@ -10473,7 +10476,7 @@ if test x$cf_cv_gnu_library = xyes; then
        # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
        # was changed to help a little.  newlib incorporated the change about 4
        # years later.
-       echo "$as_me:10476: checking if _DEFAULT_SOURCE can be used as a basis" >&5
+       echo "$as_me:10479: checking if _DEFAULT_SOURCE can be used as a basis" >&5
 echo $ECHO_N "checking if _DEFAULT_SOURCE can be used as a basis... $ECHO_C" >&6
 if test "${cf_cv_gnu_library_219+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10485,7 +10488,7 @@ else
        CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 10488 "configure"
+#line 10491 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -10504,16 +10507,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10507: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10510: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10510: \$? = $ac_status" >&5
+  echo "$as_me:10513: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10513: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10516: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10516: \$? = $ac_status" >&5
+  echo "$as_me:10519: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_library_219=yes
 else
@@ -10525,12 +10528,12 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CPPFLAGS="$cf_save"
 
 fi
-echo "$as_me:10528: result: $cf_cv_gnu_library_219" >&5
+echo "$as_me:10531: result: $cf_cv_gnu_library_219" >&5
 echo "${ECHO_T}$cf_cv_gnu_library_219" >&6
 
        if test "x$cf_cv_gnu_library_219" = xyes; then
                cf_save="$CPPFLAGS"
-               echo "$as_me:10533: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5
+               echo "$as_me:10536: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5
 echo $ECHO_N "checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_gnu_dftsrc_219+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10635,7 +10638,7 @@ if test -n "$cf_new_extra_cppflags" ; then
 fi
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 10638 "configure"
+#line 10641 "configure"
 #include "confdefs.h"
 
                                #include <limits.h>
@@ -10655,16 +10658,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10658: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10661: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10661: \$? = $ac_status" >&5
+  echo "$as_me:10664: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10664: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10667: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10667: \$? = $ac_status" >&5
+  echo "$as_me:10670: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_dftsrc_219=yes
 else
@@ -10675,7 +10678,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:10678: result: $cf_cv_gnu_dftsrc_219" >&5
+echo "$as_me:10681: result: $cf_cv_gnu_dftsrc_219" >&5
 echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6
                test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
        else
@@ -10684,14 +10687,14 @@ echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6
 
        if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
 
-               echo "$as_me:10687: checking if we must define _GNU_SOURCE" >&5
+               echo "$as_me:10690: checking if we must define _GNU_SOURCE" >&5
 echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_gnu_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 10694 "configure"
+#line 10697 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -10706,16 +10709,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10709: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10712: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10712: \$? = $ac_status" >&5
+  echo "$as_me:10715: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10715: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10718: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10718: \$? = $ac_status" >&5
+  echo "$as_me:10721: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_source=no
 else
@@ -10822,7 +10825,7 @@ if test -n "$cf_new_extra_cppflags" ; then
 fi
 
                         cat >"conftest.$ac_ext" <<_ACEOF
-#line 10825 "configure"
+#line 10828 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -10837,16 +10840,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10840: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10843: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10843: \$? = $ac_status" >&5
+  echo "$as_me:10846: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10846: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10849: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10849: \$? = $ac_status" >&5
+  echo "$as_me:10852: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_source=no
 else
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:10864: result: $cf_cv_gnu_source" >&5
+echo "$as_me:10867: result: $cf_cv_gnu_source" >&5
 echo "${ECHO_T}$cf_cv_gnu_source" >&6
 
                if test "$cf_cv_gnu_source" = yes
                then
-               echo "$as_me:10869: checking if we should also define _DEFAULT_SOURCE" >&5
+               echo "$as_me:10872: checking if we should also define _DEFAULT_SOURCE" >&5
 echo $ECHO_N "checking if we should also define _DEFAULT_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_default_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10876,7 +10879,7 @@ else
        CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 10879 "configure"
+#line 10882 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -10891,16 +10894,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10894: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10897: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10897: \$? = $ac_status" >&5
+  echo "$as_me:10900: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10900: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10903: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10903: \$? = $ac_status" >&5
+  echo "$as_me:10906: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_default_source=no
 else
@@ -10911,7 +10914,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:10914: result: $cf_cv_default_source" >&5
+echo "$as_me:10917: result: $cf_cv_default_source" >&5
 echo "${ECHO_T}$cf_cv_default_source" >&6
                        if test "$cf_cv_default_source" = yes
                        then
@@ -10948,16 +10951,16 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
        sed     -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?[         ]/ /g' \
                -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?$//g'`
 
-echo "$as_me:10951: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:10954: checking if we should define _POSIX_C_SOURCE" >&5
 echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_posix_c_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
-echo "${as_me:-configure}:10957: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:10960: testing if the symbol is already defined go no further ..." 1>&5
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 10960 "configure"
+#line 10963 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -10965,23 +10968,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10975: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10978: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10978: \$? = $ac_status" >&5
+  echo "$as_me:10981: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10981: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10984: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10984: \$? = $ac_status" >&5
+  echo "$as_me:10987: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_posix_c_source=no
 else
@@ -11002,7 +11005,7 @@ cf_want_posix_source=no
         esac
         if test "$cf_want_posix_source" = yes ; then
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 11005 "configure"
+#line 11008 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -11010,23 +11013,23 @@ main (void)
 {
 
 #ifdef _POSIX_SOURCE
-make an error
+#error _POSIX_SOURCE is defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11020: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11023: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11023: \$? = $ac_status" >&5
+  echo "$as_me:11026: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11026: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11029: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11029: \$? = $ac_status" >&5
+  echo "$as_me:11032: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -11037,7 +11040,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
         fi
 
-echo "${as_me:-configure}:11040: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:11043: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
 
         CFLAGS="$cf_trim_CFLAGS"
         CPPFLAGS="$cf_trim_CPPFLAGS"
@@ -11045,10 +11048,10 @@ echo "${as_me:-configure}:11040: testing ifdef from value $cf_POSIX_C_SOURCE ...
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
 
-echo "${as_me:-configure}:11048: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:11051: testing if the second compile does not leave our definition intact error ..." 1>&5
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 11051 "configure"
+#line 11054 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -11056,23 +11059,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11066: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11069: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11069: \$? = $ac_status" >&5
+  echo "$as_me:11072: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11072: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11075: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11075: \$? = $ac_status" >&5
+  echo "$as_me:11078: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -11088,7 +11091,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:11091: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:11094: result: $cf_cv_posix_c_source" >&5
 echo "${ECHO_T}$cf_cv_posix_c_source" >&6
 
 if test "$cf_cv_posix_c_source" != no ; then
@@ -11205,7 +11208,7 @@ fi # cf_cv_posix_visible
        # OpenBSD 6.x has broken locale support, both compile-time and runtime.
        # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
        # Abusing the conformance level is a workaround.
-       { echo "$as_me:11208: WARNING: this system does not provide usable locale support" >&5
+       { echo "$as_me:11211: WARNING: this system does not provide usable locale support" >&5
 echo "$as_me: WARNING: this system does not provide usable locale support" >&2;}
        cf_xopen_source="-D_BSD_SOURCE"
        cf_XOPEN_SOURCE=700
@@ -11237,26 +11240,24 @@ echo "$as_me: WARNING: this system does not provide usable locale support" >&2;}
        ;;
 (*)
 
-echo "$as_me:11240: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:11243: checking if we should define _XOPEN_SOURCE" >&5
 echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_xopen_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 11247 "configure"
+#line 11250 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -11264,16 +11265,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11267: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11268: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11270: \$? = $ac_status" >&5
+  echo "$as_me:11271: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11273: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11274: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11276: \$? = $ac_status" >&5
+  echo "$as_me:11277: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -11285,19 +11286,17 @@ cf_save="$CPPFLAGS"
        CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 11288 "configure"
+#line 11289 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -11305,16 +11304,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11308: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11307: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11311: \$? = $ac_status" >&5
+  echo "$as_me:11310: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11314: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11313: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11317: \$? = $ac_status" >&5
+  echo "$as_me:11316: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -11329,7 +11328,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:11332: result: $cf_cv_xopen_source" >&5
+echo "$as_me:11331: result: $cf_cv_xopen_source" >&5
 echo "${ECHO_T}$cf_cv_xopen_source" >&6
 
 if test "$cf_cv_xopen_source" != no ; then
@@ -11489,16 +11488,16 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
        sed     -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?[         ]/ /g' \
                -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?$//g'`
 
-echo "$as_me:11492: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:11491: checking if we should define _POSIX_C_SOURCE" >&5
 echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_posix_c_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
-echo "${as_me:-configure}:11498: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:11497: testing if the symbol is already defined go no further ..." 1>&5
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 11501 "configure"
+#line 11500 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -11506,23 +11505,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11516: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11515: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11519: \$? = $ac_status" >&5
+  echo "$as_me:11518: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11522: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11521: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11525: \$? = $ac_status" >&5
+  echo "$as_me:11524: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_posix_c_source=no
 else
@@ -11543,7 +11542,7 @@ cf_want_posix_source=no
         esac
         if test "$cf_want_posix_source" = yes ; then
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 11546 "configure"
+#line 11545 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -11551,23 +11550,23 @@ main (void)
 {
 
 #ifdef _POSIX_SOURCE
-make an error
+#error _POSIX_SOURCE is defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11561: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11560: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11564: \$? = $ac_status" >&5
+  echo "$as_me:11563: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11567: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11566: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11570: \$? = $ac_status" >&5
+  echo "$as_me:11569: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -11578,7 +11577,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
         fi
 
-echo "${as_me:-configure}:11581: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:11580: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
 
         CFLAGS="$cf_trim_CFLAGS"
         CPPFLAGS="$cf_trim_CPPFLAGS"
@@ -11586,10 +11585,10 @@ echo "${as_me:-configure}:11581: testing ifdef from value $cf_POSIX_C_SOURCE ...
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
 
-echo "${as_me:-configure}:11589: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:11588: testing if the second compile does not leave our definition intact error ..." 1>&5
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 11592 "configure"
+#line 11591 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -11597,23 +11596,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11607: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11606: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11610: \$? = $ac_status" >&5
+  echo "$as_me:11609: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11613: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11612: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11616: \$? = $ac_status" >&5
+  echo "$as_me:11615: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -11629,7 +11628,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:11632: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:11631: result: $cf_cv_posix_c_source" >&5
 echo "${ECHO_T}$cf_cv_posix_c_source" >&6
 
 if test "$cf_cv_posix_c_source" != no ; then
 fi # cf_cv_posix_visible
 
        # Some of these niche implementations use copy/paste, double-check...
-       if test "$cf_cv_xopen_source" != no ; then
-               test -n "$verbose" && echo "    checking if _POSIX_C_SOURCE inteferes" 1>&6
+       if test "$cf_cv_xopen_source" = no ; then
+               test -n "$verbose" && echo "    checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE" 1>&6
 
-echo "${as_me:-configure}:11745: testing checking if _POSIX_C_SOURCE inteferes ..." 1>&5
+echo "${as_me:-configure}:11744: testing checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE ..." 1>&5
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 11748 "configure"
+#line 11747 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -11765,23 +11762,23 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11768: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11765: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11771: \$? = $ac_status" >&5
+  echo "$as_me:11768: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11774: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11771: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11777: \$? = $ac_status" >&5
+  echo "$as_me:11774: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 
-                       { echo "$as_me:11784: WARNING: _POSIX_C_SOURCE definition is not usable" >&5
+                       { echo "$as_me:11781: WARNING: _POSIX_C_SOURCE definition is not usable" >&5
 echo "$as_me: WARNING: _POSIX_C_SOURCE definition is not usable" >&2;}
                        CPPFLAGS="$cf_save_xopen_cppflags"
 fi
@@ -11804,7 +11801,7 @@ do
        test "$CFLAGS" != "$cf_old_cflag" || break
        test -n "$verbose" && echo "    removing old option $cf_add_cflags from CFLAGS" 1>&6
 
-echo "${as_me:-configure}:11807: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5
+echo "${as_me:-configure}:11804: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5
 
        CFLAGS="$cf_old_cflag"
 done
@@ -11816,7 +11813,7 @@ do
        test "$CPPFLAGS" != "$cf_old_cflag" || break
        test -n "$verbose" && echo "    removing old option $cf_add_cflags from CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:11819: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:11816: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5
 
        CPPFLAGS="$cf_old_cflag"
 done
@@ -11904,7 +11901,7 @@ done
 if test -n "$cf_new_cflags" ; then
        test -n "$verbose" && echo "    add to \$CFLAGS $cf_new_cflags" 1>&6
 
-echo "${as_me:-configure}:11907: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+echo "${as_me:-configure}:11904: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
 
        test -n "$CFLAGS" && CFLAGS="$CFLAGS "
        CFLAGS="${CFLAGS}$cf_new_cflags"
@@ -11914,7 +11911,7 @@ fi
 if test -n "$cf_new_cppflags" ; then
        test -n "$verbose" && echo "    add to \$CPPFLAGS $cf_new_cppflags" 1>&6
 
-echo "${as_me:-configure}:11917: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+echo "${as_me:-configure}:11914: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
 
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
@@ -11924,7 +11921,7 @@ fi
 if test -n "$cf_new_extra_cppflags" ; then
        test -n "$verbose" && echo "    add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
 
-echo "${as_me:-configure}:11927: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+echo "${as_me:-configure}:11924: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
 
        test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
        EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
@@ -11936,10 +11933,10 @@ done
 fi
 
 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
-       echo "$as_me:11939: checking if _XOPEN_SOURCE really is set" >&5
+       echo "$as_me:11936: checking if _XOPEN_SOURCE really is set" >&5
 echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 11942 "configure"
+#line 11939 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 int
@@ -11947,23 +11944,23 @@ main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11957: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11954: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11960: \$? = $ac_status" >&5
+  echo "$as_me:11957: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11963: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11960: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11966: \$? = $ac_status" >&5
+  echo "$as_me:11963: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_XOPEN_SOURCE_set=yes
 else
@@ -11972,12 +11969,12 @@ cat "conftest.$ac_ext" >&5
 cf_XOPEN_SOURCE_set=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-       echo "$as_me:11975: result: $cf_XOPEN_SOURCE_set" >&5
+       echo "$as_me:11972: result: $cf_XOPEN_SOURCE_set" >&5
 echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6
        if test "$cf_XOPEN_SOURCE_set" = yes
        then
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 11980 "configure"
+#line 11977 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 int
@@ -11985,23 +11982,23 @@ main (void)
 {
 
 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
-make an error
+#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11995: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11992: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11998: \$? = $ac_status" >&5
+  echo "$as_me:11995: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12001: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11998: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12004: \$? = $ac_status" >&5
+  echo "$as_me:12001: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_XOPEN_SOURCE_set_ok=yes
 else
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_XOPEN_SOURCE_set_ok" = no
                then
-                       { echo "$as_me:12015: WARNING: _XOPEN_SOURCE is lower than requested" >&5
+                       { echo "$as_me:12012: WARNING: _XOPEN_SOURCE is lower than requested" >&5
 echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;}
                fi
        else
 
-echo "$as_me:12020: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:12017: checking if we should define _XOPEN_SOURCE" >&5
 echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_xopen_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 12027 "configure"
+#line 12024 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -12044,16 +12039,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12047: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12042: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12050: \$? = $ac_status" >&5
+  echo "$as_me:12045: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12053: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12048: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12056: \$? = $ac_status" >&5
+  echo "$as_me:12051: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -12065,19 +12060,17 @@ cf_save="$CPPFLAGS"
        CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 12068 "configure"
+#line 12063 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -12085,16 +12078,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12088: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12081: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12091: \$? = $ac_status" >&5
+  echo "$as_me:12084: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12094: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12087: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12097: \$? = $ac_status" >&5
+  echo "$as_me:12090: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -12109,7 +12102,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:12112: result: $cf_cv_xopen_source" >&5
+echo "$as_me:12105: result: $cf_cv_xopen_source" >&5
 echo "${ECHO_T}$cf_cv_xopen_source" >&6
 
 if test "$cf_cv_xopen_source" != no ; then
@@ -12260,14 +12253,14 @@ CPPFLAGS_after_XOPEN="$CPPFLAGS"
 
 # Work around breakage on OS X
 
-echo "$as_me:12263: checking if SIGWINCH is defined" >&5
+echo "$as_me:12256: checking if SIGWINCH is defined" >&5
 echo $ECHO_N "checking if SIGWINCH is defined... $ECHO_C" >&6
 if test "${cf_cv_define_sigwinch+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 12270 "configure"
+#line 12263 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -12282,23 +12275,23 @@ int x = SIGWINCH; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12285: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12278: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12288: \$? = $ac_status" >&5
+  echo "$as_me:12281: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12291: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12284: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12294: \$? = $ac_status" >&5
+  echo "$as_me:12287: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_define_sigwinch=yes
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 12301 "configure"
+#line 12294 "configure"
 #include "confdefs.h"
 
 #undef _XOPEN_SOURCE
@@ -12316,16 +12309,16 @@ int x = SIGWINCH; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12319: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12312: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12322: \$? = $ac_status" >&5
+  echo "$as_me:12315: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12325: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12318: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12328: \$? = $ac_status" >&5
+  echo "$as_me:12321: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_define_sigwinch=maybe
 else
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:12342: result: $cf_cv_define_sigwinch" >&5
+echo "$as_me:12335: result: $cf_cv_define_sigwinch" >&5
 echo "${ECHO_T}$cf_cv_define_sigwinch" >&6
 
 if test "$cf_cv_define_sigwinch" = maybe ; then
-echo "$as_me:12346: checking for actual SIGWINCH definition" >&5
+echo "$as_me:12339: checking for actual SIGWINCH definition" >&5
 echo $ECHO_N "checking for actual SIGWINCH definition... $ECHO_C" >&6
 if test "${cf_cv_fixup_sigwinch+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12354,7 +12347,7 @@ cf_sigwinch=32
 while test "$cf_sigwinch" != 1
 do
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 12357 "configure"
+#line 12350 "configure"
 #include "confdefs.h"
 
 #undef _XOPEN_SOURCE
@@ -12368,7 +12361,7 @@ main (void)
 {
 
 #if SIGWINCH != $cf_sigwinch
-make an error
+#error SIGWINCH is not $cf_sigwinch
 #endif
 int x = SIGWINCH; (void)x
   ;
@@ -12376,16 +12369,16 @@ int x = SIGWINCH; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12379: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12372: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12382: \$? = $ac_status" >&5
+  echo "$as_me:12375: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12385: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12378: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12388: \$? = $ac_status" >&5
+  echo "$as_me:12381: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_fixup_sigwinch=$cf_sigwinch
         break
@@ -12399,7 +12392,7 @@ cf_sigwinch="`expr "$cf_sigwinch" - 1`"
 done
 
 fi
-echo "$as_me:12402: result: $cf_cv_fixup_sigwinch" >&5
+echo "$as_me:12395: result: $cf_cv_fixup_sigwinch" >&5
 echo "${ECHO_T}$cf_cv_fixup_sigwinch" >&6
 
        if test "$cf_cv_fixup_sigwinch" != unknown ; then
 
 # Checks for CODESET support.
 
-echo "$as_me:12412: checking for nl_langinfo and CODESET" >&5
+echo "$as_me:12405: checking for nl_langinfo and CODESET" >&5
 echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
 if test "${am_cv_langinfo_codeset+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 12418 "configure"
+#line 12411 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -12429,16 +12422,16 @@ char* cs = nl_langinfo(CODESET); (void)cs
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12432: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12425: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12435: \$? = $ac_status" >&5
+  echo "$as_me:12428: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12438: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12431: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12441: \$? = $ac_status" >&5
+  echo "$as_me:12434: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   am_cv_langinfo_codeset=yes
 else
@@ -12449,7 +12442,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:12452: result: $am_cv_langinfo_codeset" >&5
+echo "$as_me:12445: result: $am_cv_langinfo_codeset" >&5
 echo "${ECHO_T}$am_cv_langinfo_codeset" >&6
        if test "$am_cv_langinfo_codeset" = yes; then
 
@@ -12463,7 +12456,7 @@ EOF
 NCURSES_OK_WCHAR_T=
 NCURSES_OK_WINT_T=
 
-echo "$as_me:12466: checking if you want wide-character code" >&5
+echo "$as_me:12459: checking if you want wide-character code" >&5
 echo $ECHO_N "checking if you want wide-character code... $ECHO_C" >&6
 
 # Check whether --enable-widec or --disable-widec was given.
@@ -12471,9 +12464,9 @@ if test "${enable_widec+set}" = set; then
   enableval="$enable_widec"
   with_widec=$enableval
 else
-  with_widec=no
+  with_widec=$cf_dft_widec
 fi;
-echo "$as_me:12476: result: $with_widec" >&5
+echo "$as_me:12469: result: $with_widec" >&5
 echo "${ECHO_T}$with_widec" >&6
 
 NCURSES_WCWIDTH_GRAPHICS=1
@@ -12495,7 +12488,7 @@ EOF
        (*_XOPEN_SOURCE=*)
                ;;
        (*)
-               { echo "$as_me:12498: WARNING: _XOPEN_SOURCE feature test macro appears to be predefined" >&5
+               { echo "$as_me:12491: WARNING: _XOPEN_SOURCE feature test macro appears to be predefined" >&5
 echo "$as_me: WARNING: _XOPEN_SOURCE feature test macro appears to be predefined" >&2;}
                # CPPFLAGS="$CPPFLAGS -DNCURSES_WIDECHAR"
                CPPFLAGS_after_XOPEN="$CPPFLAGS_after_XOPEN -DNCURSES_WIDECHAR"
@@ -12508,23 +12501,23 @@ wctype.h \
 
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:12511: checking for $ac_header" >&5
+echo "$as_me:12504: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 12517 "configure"
+#line 12510 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:12521: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:12514: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:12527: \$? = $ac_status" >&5
+  echo "$as_me:12520: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -12543,7 +12536,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:12546: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:12539: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -12553,17 +12546,17 @@ EOF
 fi
 done
 
-echo "$as_me:12556: checking if wchar.h can be used as is" >&5
+echo "$as_me:12549: checking if wchar.h can be used as is" >&5
 echo $ECHO_N "checking if wchar.h can be used as is... $ECHO_C" >&6
 if test "${cf_cv_wchar_h_okay+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 12563 "configure"
+#line 12556 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
+$ac_includes_default
 #ifdef HAVE_WCHAR_H
 #include <wchar.h>
 #endif
@@ -12576,22 +12569,22 @@ main (void)
 {
 
        wint_t foo = 0;
-       int bar = iswpunct(foo)
+       int bar = iswpunct(foo); (void) bar
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12585: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12578: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12588: \$? = $ac_status" >&5
+  echo "$as_me:12581: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12591: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12584: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12594: \$? = $ac_status" >&5
+  echo "$as_me:12587: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_wchar_h_okay=yes
 else
@@ -12601,16 +12594,16 @@ cf_cv_wchar_h_okay=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:12604: result: $cf_cv_wchar_h_okay" >&5
+echo "$as_me:12597: result: $cf_cv_wchar_h_okay" >&5
 echo "${ECHO_T}$cf_cv_wchar_h_okay" >&6
 
 if test "$cf_cv_wchar_h_okay" = no
 then
 
-echo "$as_me:12610: checking if we must define _XOPEN_SOURCE_EXTENDED" >&5
+echo "$as_me:12603: checking if we must define _XOPEN_SOURCE_EXTENDED" >&5
 echo $ECHO_N "checking if we must define _XOPEN_SOURCE_EXTENDED... $ECHO_C" >&6
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 12613 "configure"
+#line 12606 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 
@@ -12619,23 +12612,23 @@ main (void)
 {
 
 #ifndef _XOPEN_SOURCE_EXTENDED
-make an error
+#error _XOPEN_SOURCE_EXTENDED is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12629: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12622: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12632: \$? = $ac_status" >&5
+  echo "$as_me:12625: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12635: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12628: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12638: \$? = $ac_status" >&5
+  echo "$as_me:12631: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=no
 else
@@ -12644,16 +12637,16 @@ cat "conftest.$ac_ext" >&5
 cf_result=yes
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-echo "$as_me:12647: result: $cf_result" >&5
+echo "$as_me:12640: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
 
 if test "$cf_result" = yes ; then
        CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
 elif test "x" != "x" ; then
-       echo "$as_me:12653: checking checking for compatible value versus " >&5
+       echo "$as_me:12646: checking checking for compatible value versus " >&5
 echo $ECHO_N "checking checking for compatible value versus ... $ECHO_C" >&6
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 12656 "configure"
+#line 12649 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 
@@ -12662,23 +12655,23 @@ main (void)
 {
 
 #if _XOPEN_SOURCE_EXTENDED- < 0
-make an error
+#error _XOPEN_SOURCE_EXTENDED- is negative
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:12672: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12665: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:12675: \$? = $ac_status" >&5
+  echo "$as_me:12668: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:12678: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12671: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12681: \$? = $ac_status" >&5
+  echo "$as_me:12674: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -12687,7 +12680,7 @@ cat "conftest.$ac_ext" >&5
 cf_result=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-       echo "$as_me:12690: result: $cf_result" >&5
+       echo "$as_me:12683: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
        if test "$cf_result" = no ; then
                # perhaps we can override it - try...
@@ -12697,7 +12690,7 @@ fi
 
 fi
 
-echo "$as_me:12700: checking if wcwidth agrees graphics are single-width" >&5
+echo "$as_me:12693: checking if wcwidth agrees graphics are single-width" >&5
 echo $ECHO_N "checking if wcwidth agrees graphics are single-width... $ECHO_C" >&6
 if test "${cf_cv_wcwidth_graphics+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12768,7 +12761,7 @@ if test "$cross_compiling" = yes; then
   cf_cv_wcwidth_graphics=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 12771 "configure"
+#line 12764 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -12782,7 +12775,7 @@ int
 main(void)
 {
        FILE *fp;
-       int value;
+       unsigned value;
        char buffer[MY_LEN + 1];
        char notes[MY_LEN + 1];
        int totals = 0;
@@ -12798,9 +12791,9 @@ main(void)
                                        fprintf(stderr, "\\t%s", buffer);
                                } else if (sscanf(buffer, "%x %s", &value, notes) == 2) {
                                        ++totals;
-                                       if (wcwidth(value) == 1)
+                                       if (wcwidth((int)value) == 1)
                                                ++passed;
-                                       fprintf(stderr, "%d\\t%s", wcwidth(value), buffer);
+                                       fprintf(stderr, "%d\\t%s", wcwidth((int)value), buffer);
                                } else {
                                        fprintf(stderr, "?\\t%s", buffer);
                                }
@@ -12813,15 +12806,15 @@ main(void)
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:12816: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12809: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12819: \$? = $ac_status" >&5
+  echo "$as_me:12812: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:12821: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12814: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12824: \$? = $ac_status" >&5
+  echo "$as_me:12817: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_wcwidth_graphics=yes
 else
@@ -12834,7 +12827,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes
 fi
 
 fi
-echo "$as_me:12837: result: $cf_cv_wcwidth_graphics" >&5
+echo "$as_me:12830: result: $cf_cv_wcwidth_graphics" >&5
 echo "${ECHO_T}$cf_cv_wcwidth_graphics" >&6
 
        test "$cf_cv_wcwidth_graphics" = no && NCURSES_WCWIDTH_GRAPHICS=0
@@ -12845,13 +12838,13 @@ echo "${ECHO_T}$cf_cv_wcwidth_graphics" >&6
 for ac_func in putwc btowc wctob wmemchr mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:12848: checking for $ac_func" >&5
+echo "$as_me:12841: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 12854 "configure"
+#line 12847 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -12882,16 +12875,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12885: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12878: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12888: \$? = $ac_status" >&5
+  echo "$as_me:12881: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12891: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12884: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12894: \$? = $ac_status" >&5
+  echo "$as_me:12887: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -12901,7 +12894,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:12904: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:12897: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -12916,23 +12909,23 @@ done
 for ac_header in wchar.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:12919: checking for $ac_header" >&5
+echo "$as_me:12912: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 12925 "configure"
+#line 12918 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:12929: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:12922: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:12935: \$? = $ac_status" >&5
+  echo "$as_me:12928: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -12951,7 +12944,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:12954: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:12947: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -12961,7 +12954,7 @@ EOF
 fi
 done
 
-echo "$as_me:12964: checking for multibyte character support" >&5
+echo "$as_me:12957: checking for multibyte character support" >&5
 echo $ECHO_N "checking for multibyte character support... $ECHO_C" >&6
 if test "${cf_cv_utf8_lib+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12969,7 +12962,7 @@ else
 
        cf_save_LIBS="$LIBS"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 12972 "configure"
+#line 12965 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -12986,16 +12979,16 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12989: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12982: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12992: \$? = $ac_status" >&5
+  echo "$as_me:12985: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12995: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12988: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12998: \$? = $ac_status" >&5
+  echo "$as_me:12991: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_utf8_lib=yes
 else
@@ -13007,12 +13000,12 @@ cat "conftest.$ac_ext" >&5
 cf_cv_header_path_utf8=
 cf_cv_library_path_utf8=
 
-echo "${as_me:-configure}:13010: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:13003: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
 
 cf_save_LIBS="$LIBS"
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13015 "configure"
+#line 13008 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -13025,16 +13018,16 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13028: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13021: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13031: \$? = $ac_status" >&5
+  echo "$as_me:13024: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13034: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13027: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13037: \$? = $ac_status" >&5
+  echo "$as_me:13030: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_find_linkage_utf8=yes
@@ -13048,7 +13041,7 @@ cat "conftest.$ac_ext" >&5
 LIBS="-lutf8  $cf_save_LIBS"
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13051 "configure"
+#line 13044 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -13061,16 +13054,16 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13064: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13057: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13067: \$? = $ac_status" >&5
+  echo "$as_me:13060: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13070: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13063: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13073: \$? = $ac_status" >&5
+  echo "$as_me:13066: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_find_linkage_utf8=yes
@@ -13087,9 +13080,9 @@ cat "conftest.$ac_ext" >&5
 
        test -n "$verbose" && echo "    find linkage for utf8 library" 1>&6
 
-echo "${as_me:-configure}:13090: testing find linkage for utf8 library ..." 1>&5
+echo "${as_me:-configure}:13083: testing find linkage for utf8 library ..." 1>&5
 
-echo "${as_me:-configure}:13092: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:13085: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
 
        cf_save_CPPFLAGS="$CPPFLAGS"
        cf_test_CPPFLAGS="$CPPFLAGS"
@@ -13180,7 +13173,7 @@ cf_search="$cf_search $cf_header_path_list"
                if test -d "$cf_cv_header_path_utf8" ; then
                        test -n "$verbose" && echo "    ... testing $cf_cv_header_path_utf8" 1>&6
 
-echo "${as_me:-configure}:13183: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:13176: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
 
                        CPPFLAGS="$cf_save_CPPFLAGS"
 
@@ -13188,7 +13181,7 @@ echo "${as_me:-configure}:13183: testing ... testing $cf_cv_header_path_utf8 ...
        CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 13191 "configure"
+#line 13184 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -13201,21 +13194,21 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13204: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13197: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13207: \$? = $ac_status" >&5
+  echo "$as_me:13200: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13210: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13203: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13213: \$? = $ac_status" >&5
+  echo "$as_me:13206: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                                test -n "$verbose" && echo "    ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6
 
-echo "${as_me:-configure}:13218: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:13211: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
 
                                cf_cv_find_linkage_utf8=maybe
                                cf_test_CPPFLAGS="$CPPFLAGS"
@@ -13233,7 +13226,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
        if test "$cf_cv_find_linkage_utf8" = maybe ; then
 
-echo "${as_me:-configure}:13236: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:13229: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
 
                cf_save_LIBS="$LIBS"
                cf_save_LDFLAGS="$LDFLAGS"
@@ -13308,13 +13301,13 @@ cf_search="$cf_library_path_list $cf_search"
                                if test -d "$cf_cv_library_path_utf8" ; then
                                        test -n "$verbose" && echo "    ... testing $cf_cv_library_path_utf8" 1>&6
 
-echo "${as_me:-configure}:13311: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:13304: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
 
                                        CPPFLAGS="$cf_test_CPPFLAGS"
                                        LIBS="-lutf8  $cf_save_LIBS"
                                        LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8"
                                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 13317 "configure"
+#line 13310 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -13327,21 +13320,21 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13330: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13323: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13333: \$? = $ac_status" >&5
+  echo "$as_me:13326: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13336: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13329: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13339: \$? = $ac_status" >&5
+  echo "$as_me:13332: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                                        test -n "$verbose" && echo "    ... found utf8 library in $cf_cv_library_path_utf8" 1>&6
 
-echo "${as_me:-configure}:13344: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:13337: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
 
                                        cf_cv_find_linkage_utf8=yes
                                        cf_cv_library_file_utf8="-lutf8"
@@ -13383,7 +13376,7 @@ fi
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:13386: result: $cf_cv_utf8_lib" >&5
+echo "$as_me:13379: result: $cf_cv_utf8_lib" >&5
 echo "${ECHO_T}$cf_cv_utf8_lib" >&6
 
 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
@@ -13421,7 +13414,7 @@ if test -n "$cf_cv_header_path_utf8" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 13424 "configure"
+#line 13417 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -13433,16 +13426,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13436: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13429: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13439: \$? = $ac_status" >&5
+  echo "$as_me:13432: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13442: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13435: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13445: \$? = $ac_status" >&5
+  echo "$as_me:13438: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -13459,7 +13452,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:13462: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:13455: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -13495,7 +13488,7 @@ if test -n "$cf_cv_library_path_utf8" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:13498: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:13491: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
        fi
 
 # This is needed on Tru64 5.0 to declare mbstate_t
-echo "$as_me:13530: checking if we must include wchar.h to declare mbstate_t" >&5
+echo "$as_me:13523: checking if we must include wchar.h to declare mbstate_t" >&5
 echo $ECHO_N "checking if we must include wchar.h to declare mbstate_t... $ECHO_C" >&6
 if test "${cf_cv_mbstate_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13537 "configure"
+#line 13530 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -13546,29 +13539,29 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-mbstate_t state
+mbstate_t state; (void)state
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13555: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13548: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13558: \$? = $ac_status" >&5
+  echo "$as_me:13551: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13561: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13554: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13564: \$? = $ac_status" >&5
+  echo "$as_me:13557: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_mbstate_t=no
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13571 "configure"
+#line 13564 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -13581,22 +13574,22 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-mbstate_t value
+mbstate_t value; (void) value
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13590: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13583: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13593: \$? = $ac_status" >&5
+  echo "$as_me:13586: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13596: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13589: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13599: \$? = $ac_status" >&5
+  echo "$as_me:13592: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_mbstate_t=yes
 else
@@ -13608,7 +13601,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:13611: result: $cf_cv_mbstate_t" >&5
+echo "$as_me:13604: result: $cf_cv_mbstate_t" >&5
 echo "${ECHO_T}$cf_cv_mbstate_t" >&6
 
 if test "$cf_cv_mbstate_t" = yes ; then
@@ -13626,14 +13619,14 @@ if test "$cf_cv_mbstate_t" = unknown ; then
 fi
 
 # This is needed on Tru64 5.0 to declare wchar_t
-echo "$as_me:13629: checking if we must include wchar.h to declare wchar_t" >&5
+echo "$as_me:13622: checking if we must include wchar.h to declare wchar_t" >&5
 echo $ECHO_N "checking if we must include wchar.h to declare wchar_t... $ECHO_C" >&6
 if test "${cf_cv_wchar_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13636 "configure"
+#line 13629 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -13645,29 +13638,29 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-wchar_t state
+wchar_t state; (void)state
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13654: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13647: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13657: \$? = $ac_status" >&5
+  echo "$as_me:13650: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13660: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13653: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13663: \$? = $ac_status" >&5
+  echo "$as_me:13656: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_wchar_t=no
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13670 "configure"
+#line 13663 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -13680,22 +13673,22 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-wchar_t value
+wchar_t value; (void) value
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13689: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13682: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13692: \$? = $ac_status" >&5
+  echo "$as_me:13685: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13695: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13688: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13698: \$? = $ac_status" >&5
+  echo "$as_me:13691: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_wchar_t=yes
 else
@@ -13707,7 +13700,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:13710: result: $cf_cv_wchar_t" >&5
+echo "$as_me:13703: result: $cf_cv_wchar_t" >&5
 echo "${ECHO_T}$cf_cv_wchar_t" >&6
 
 if test "$cf_cv_wchar_t" = yes ; then
@@ -13730,14 +13723,14 @@ if test "$cf_cv_wchar_t" != unknown ; then
 fi
 
 # This is needed on Tru64 5.0 to declare wint_t
-echo "$as_me:13733: checking if we must include wchar.h to declare wint_t" >&5
+echo "$as_me:13726: checking if we must include wchar.h to declare wint_t" >&5
 echo $ECHO_N "checking if we must include wchar.h to declare wint_t... $ECHO_C" >&6
 if test "${cf_cv_wint_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13740 "configure"
+#line 13733 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -13749,29 +13742,29 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-wint_t state
+wint_t state; (void)state
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13758: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13751: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13761: \$? = $ac_status" >&5
+  echo "$as_me:13754: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13764: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13757: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13767: \$? = $ac_status" >&5
+  echo "$as_me:13760: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_wint_t=no
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13774 "configure"
+#line 13767 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -13784,22 +13777,22 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-wint_t value
+wint_t value; (void) value
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13793: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13786: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13796: \$? = $ac_status" >&5
+  echo "$as_me:13789: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13799: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13792: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13802: \$? = $ac_status" >&5
+  echo "$as_me:13795: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_wint_t=yes
 else
@@ -13811,7 +13804,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:13814: result: $cf_cv_wint_t" >&5
+echo "$as_me:13807: result: $cf_cv_wint_t" >&5
 echo "${ECHO_T}$cf_cv_wint_t" >&6
 
 if test "$cf_cv_wint_t" = yes ; then
@@ -13843,7 +13836,7 @@ EOF
 fi
 
 ###   use option --disable-lp64 to allow long chtype
-echo "$as_me:13846: checking whether to enable _LP64 definition in curses.h" >&5
+echo "$as_me:13839: checking whether to enable _LP64 definition in curses.h" >&5
 echo $ECHO_N "checking whether to enable _LP64 definition in curses.h... $ECHO_C" >&6
 
 # Check whether --enable-lp64 or --disable-lp64 was given.
@@ -13853,7 +13846,7 @@ if test "${enable_lp64+set}" = set; then
 else
   with_lp64=$cf_dft_with_lp64
 fi;
-echo "$as_me:13856: result: $with_lp64" >&5
+echo "$as_me:13849: result: $with_lp64" >&5
 echo "${ECHO_T}$with_lp64" >&6
 
 if test "x$with_lp64" = xyes ; then
@@ -13869,7 +13862,7 @@ if test "${enable_largefile+set}" = set; then
 fi;
 if test "$enable_largefile" != no; then
 
-  echo "$as_me:13872: checking for special C compiler options needed for large files" >&5
+  echo "$as_me:13865: checking for special C compiler options needed for large files" >&5
 echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6
 if test "${ac_cv_sys_largefile_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13881,7 +13874,7 @@ else
         # IRIX 6.2 and later do not support large files by default,
         # so use the C compiler's -n32 option if that helps.
          cat >"conftest.$ac_ext" <<_ACEOF
-#line 13884 "configure"
+#line 13877 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
@@ -13901,16 +13894,16 @@ main (void)
 }
 _ACEOF
         rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13904: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13897: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13907: \$? = $ac_status" >&5
+  echo "$as_me:13900: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13910: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13903: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13913: \$? = $ac_status" >&5
+  echo "$as_me:13906: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
 rm -f "conftest.$ac_objext"
         CC="$CC -n32"
         rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13923: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13916: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13926: \$? = $ac_status" >&5
+  echo "$as_me:13919: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13929: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13922: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13932: \$? = $ac_status" >&5
+  echo "$as_me:13925: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sys_largefile_CC=' -n32'; break
 else
@@ -13943,13 +13936,13 @@ rm -f "conftest.$ac_objext"
        rm -f "conftest.$ac_ext"
     fi
 fi
-echo "$as_me:13946: result: $ac_cv_sys_largefile_CC" >&5
+echo "$as_me:13939: result: $ac_cv_sys_largefile_CC" >&5
 echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6
   if test "$ac_cv_sys_largefile_CC" != no; then
     CC=$CC$ac_cv_sys_largefile_CC
   fi
 
-  echo "$as_me:13952: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+  echo "$as_me:13945: checking for _FILE_OFFSET_BITS value needed for large files" >&5
 echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6
 if test "${ac_cv_sys_file_offset_bits+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13957,7 +13950,7 @@ else
   while :; do
   ac_cv_sys_file_offset_bits=no
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 13960 "configure"
+#line 13953 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
@@ -13977,16 +13970,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:13980: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13973: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:13983: \$? = $ac_status" >&5
+  echo "$as_me:13976: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:13986: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13979: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13989: \$? = $ac_status" >&5
+  echo "$as_me:13982: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -13995,7 +13988,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 13998 "configure"
+#line 13991 "configure"
 #include "confdefs.h"
 #define _FILE_OFFSET_BITS 64
 #include <sys/types.h>
@@ -14016,16 +14009,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14019: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14012: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14022: \$? = $ac_status" >&5
+  echo "$as_me:14015: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14025: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14018: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14028: \$? = $ac_status" >&5
+  echo "$as_me:14021: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sys_file_offset_bits=64; break
 else
@@ -14036,7 +14029,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   break
 done
 fi
-echo "$as_me:14039: result: $ac_cv_sys_file_offset_bits" >&5
+echo "$as_me:14032: result: $ac_cv_sys_file_offset_bits" >&5
 echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6
 if test "$ac_cv_sys_file_offset_bits" != no; then
 
@@ -14046,7 +14039,7 @@ EOF
 
 fi
 rm -rf conftest*
-  echo "$as_me:14049: checking for _LARGE_FILES value needed for large files" >&5
+  echo "$as_me:14042: checking for _LARGE_FILES value needed for large files" >&5
 echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6
 if test "${ac_cv_sys_large_files+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14054,7 +14047,7 @@ else
   while :; do
   ac_cv_sys_large_files=no
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14057 "configure"
+#line 14050 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
@@ -14074,16 +14067,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14077: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14070: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14080: \$? = $ac_status" >&5
+  echo "$as_me:14073: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14083: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14076: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14086: \$? = $ac_status" >&5
+  echo "$as_me:14079: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -14092,7 +14085,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14095 "configure"
+#line 14088 "configure"
 #include "confdefs.h"
 #define _LARGE_FILES 1
 #include <sys/types.h>
@@ -14113,16 +14106,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14116: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14109: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14119: \$? = $ac_status" >&5
+  echo "$as_me:14112: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14122: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14115: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14125: \$? = $ac_status" >&5
+  echo "$as_me:14118: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sys_large_files=1; break
 else
@@ -14133,7 +14126,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   break
 done
 fi
-echo "$as_me:14136: result: $ac_cv_sys_large_files" >&5
+echo "$as_me:14129: result: $ac_cv_sys_large_files" >&5
 echo "${ECHO_T}$ac_cv_sys_large_files" >&6
 if test "$ac_cv_sys_large_files" != no; then
 
@@ -14146,7 +14139,7 @@ rm -rf conftest*
 fi
 
        if test "$enable_largefile" != no ; then
-       echo "$as_me:14149: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+       echo "$as_me:14142: checking for _LARGEFILE_SOURCE value needed for large files" >&5
 echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6
 if test "${ac_cv_sys_largefile_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14154,28 +14147,31 @@ else
   while :; do
   ac_cv_sys_largefile_source=no
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14157 "configure"
+#line 14150 "configure"
 #include "confdefs.h"
 #include <stdio.h>
+    #include <sys/types.h>
 int
 main (void)
 {
-return !fseeko;
+
+    int (*my_fseeko)(FILE *, off_t, int) = fseeko;
+    return my_fseeko(stdin, 0, 0);
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14169: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14165: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14172: \$? = $ac_status" >&5
+  echo "$as_me:14168: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14175: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14171: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14178: \$? = $ac_status" >&5
+  echo "$as_me:14174: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -14184,29 +14180,32 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14187 "configure"
+#line 14183 "configure"
 #include "confdefs.h"
 #define _LARGEFILE_SOURCE 1
 #include <stdio.h>
+    #include <sys/types.h>
 int
 main (void)
 {
-return !fseeko;
+
+    int (*my_fseeko)(FILE *, off_t, int) = fseeko;
+    return my_fseeko(stdin, 0, 0);
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14200: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14199: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14203: \$? = $ac_status" >&5
+  echo "$as_me:14202: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14206: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14205: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14209: \$? = $ac_status" >&5
+  echo "$as_me:14208: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sys_largefile_source=1; break
 else
@@ -14217,7 +14216,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   break
 done
 fi
-echo "$as_me:14220: result: $ac_cv_sys_largefile_source" >&5
+echo "$as_me:14219: result: $ac_cv_sys_largefile_source" >&5
 echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6
 if test "$ac_cv_sys_largefile_source" != no; then
 
@@ -14231,34 +14230,36 @@ rm -rf conftest*
 # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
 # in glibc 2.1.3, but that breaks too many other things.
 # If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-echo "$as_me:14234: checking for fseeko" >&5
+echo "$as_me:14233: checking for fseeko" >&5
 echo $ECHO_N "checking for fseeko... $ECHO_C" >&6
 if test "${ac_cv_func_fseeko+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14240 "configure"
+#line 14239 "configure"
 #include "confdefs.h"
 #include <stdio.h>
+                             #include <sys/types.h>
 int
 main (void)
 {
-return fseeko && fseeko (stdin, 0, 0);
+int (*my_fseeko)(FILE *, off_t, int) = fseeko;
+                            return my_fseeko && my_fseeko (stdin, 0, 0);
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:14252: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14253: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:14255: \$? = $ac_status" >&5
+  echo "$as_me:14256: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:14258: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14259: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14261: \$? = $ac_status" >&5
+  echo "$as_me:14262: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_fseeko=yes
 else
@@ -14268,7 +14269,7 @@ ac_cv_func_fseeko=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:14271: result: $ac_cv_func_fseeko" >&5
+echo "$as_me:14272: result: $ac_cv_func_fseeko" >&5
 echo "${ECHO_T}$ac_cv_func_fseeko" >&6
 if test $ac_cv_func_fseeko = yes; then
 
 
        fi
 
-       echo "$as_me:14310: checking whether to use struct dirent64" >&5
+       echo "$as_me:14311: checking whether to use struct dirent64" >&5
 echo $ECHO_N "checking whether to use struct dirent64... $ECHO_C" >&6
 if test "${cf_cv_struct_dirent64+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 14317 "configure"
+#line 14318 "configure"
 #include "confdefs.h"
 
 #pragma GCC diagnostic error "-Wincompatible-pointer-types"
 #include <sys/types.h>
 #include <dirent.h>
 
+#ifndef __REDIRECT
+/* if transitional largefile support is setup, this is true */
+extern struct dirent64 * readdir(DIR *);
+#endif
+
 int
 main (void)
 {
 
-               /* if transitional largefile support is setup, this is true */
-               extern struct dirent64 * readdir(DIR *);
-               struct dirent64 *x = readdir((DIR *)0);
-               struct dirent *y = readdir((DIR *)0);
+               DIR *dp = opendir(".");
+               struct dirent64 *x = readdir(dp);
+               struct dirent *y = readdir(dp);
                int z = x - y;
                (void)z;
 
@@ -14337,16 +14342,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14340: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14345: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14343: \$? = $ac_status" >&5
+  echo "$as_me:14348: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14346: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14351: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14349: \$? = $ac_status" >&5
+  echo "$as_me:14354: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_struct_dirent64=yes
 else
@@ -14357,7 +14362,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:14360: result: $cf_cv_struct_dirent64" >&5
+echo "$as_me:14365: result: $cf_cv_struct_dirent64" >&5
 echo "${ECHO_T}$cf_cv_struct_dirent64" >&6
        test "$cf_cv_struct_dirent64" = yes &&
 cat >>confdefs.h <<\EOF
@@ -14367,7 +14372,7 @@ EOF
        fi
 
 ###   use option --disable-tparm-varargs to make tparm() conform to X/Open
-echo "$as_me:14370: checking if you want tparm not to use X/Open fixed-parameter list" >&5
+echo "$as_me:14375: checking if you want tparm not to use X/Open fixed-parameter list" >&5
 echo $ECHO_N "checking if you want tparm not to use X/Open fixed-parameter list... $ECHO_C" >&6
 
 # Check whether --enable-tparm-varargs or --disable-tparm-varargs was given.
@@ -14377,14 +14382,14 @@ if test "${enable_tparm_varargs+set}" = set; then
 else
   with_tparm_varargs=yes
 fi;
-echo "$as_me:14380: result: $with_tparm_varargs" >&5
+echo "$as_me:14385: result: $with_tparm_varargs" >&5
 echo "${ECHO_T}$with_tparm_varargs" >&6
 NCURSES_TPARM_VARARGS=0
 test "x$with_tparm_varargs" = xyes && NCURSES_TPARM_VARARGS=1
 
 ###   use option --disable-tic-depends to make libtic not explicitly depend on ncurses/ncursesw
 if test "$with_ticlib" != no ; then
-echo "$as_me:14387: checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library" >&5
+echo "$as_me:14392: checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library" >&5
 echo $ECHO_N "checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library... $ECHO_C" >&6
 
 # Check whether --enable-tic-depends or --disable-tic-depends was given.
@@ -14394,14 +14399,14 @@ if test "${enable_tic_depends+set}" = set; then
 else
   with_tic_depends=yes
 fi;
-echo "$as_me:14397: result: $with_tic_depends" >&5
+echo "$as_me:14402: result: $with_tic_depends" >&5
 echo "${ECHO_T}$with_tic_depends" >&6
 else
        with_tic_depends=no
 fi
 
 ###   use option --enable-wattr-macros to enable wattr* macros in curses.h
-echo "$as_me:14404: checking if you want to enable wattr* macros" >&5
+echo "$as_me:14409: checking if you want to enable wattr* macros" >&5
 echo $ECHO_N "checking if you want to enable wattr* macros... $ECHO_C" >&6
 
 # Check whether --enable-wattr-macros or --disable-wattr-macros was given.
@@ -14413,15 +14418,15 @@ else
 fi;
 if [ "x$with_wattr_macros" != xyes ]; then
        NCURSES_WATTR_MACROS=0
-       echo "$as_me:14416: result: no" >&5
+       echo "$as_me:14421: result: no" >&5
 echo "${ECHO_T}no" >&6
 else
        NCURSES_WATTR_MACROS=1
-       echo "$as_me:14420: result: yes" >&5
+       echo "$as_me:14425: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 fi
 
-echo "$as_me:14424: checking for X11 rgb file" >&5
+echo "$as_me:14429: checking for X11 rgb file" >&5
 echo $ECHO_N "checking for X11 rgb file... $ECHO_C" >&6
 
 # Check whether --with-x11-rgb or --without-x11-rgb was given.
@@ -14485,7 +14490,7 @@ case ".$cf_path" in
        cf_path=`echo "$cf_path" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:14488: error: expected a pathname, not \"$cf_path\"" >&5
+       { { echo "$as_me:14493: error: expected a pathname, not \"$cf_path\"" >&5
 echo "$as_me: error: expected a pathname, not \"$cf_path\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -14493,7 +14498,7 @@ esac
 
 fi
 
-echo "$as_me:14496: result: $RGB_PATH" >&5
+echo "$as_me:14501: result: $RGB_PATH" >&5
 echo "${ECHO_T}$RGB_PATH" >&6
 
 cat >>confdefs.h <<EOF
@@ -14507,7 +14512,8 @@ then
 fi
 
 ###   use option --with-bool to override bool's type
-echo "$as_me:14510: checking for type of bool" >&5
+
+echo "$as_me:14516: checking for type of bool" >&5
 echo $ECHO_N "checking for type of bool... $ECHO_C" >&6
 
 # Check whether --with-bool or --without-bool was given.
@@ -14517,10 +14523,17 @@ if test "${with_bool+set}" = set; then
 else
   NCURSES_BOOL=auto
 fi;
-echo "$as_me:14520: result: $NCURSES_BOOL" >&5
+echo "$as_me:14526: result: $NCURSES_BOOL" >&5
 echo "${ECHO_T}$NCURSES_BOOL" >&6
+case x$NCURSES_BOOL in
+(x|xyes|xno)
+       { { echo "$as_me:14530: error: expected a type name for bool" >&5
+echo "$as_me: error: expected a type name for bool" >&2;}
+   { (exit 1); exit 1; }; }
+       ;;
+esac
 
-echo "$as_me:14523: checking for alternate terminal capabilities file" >&5
+echo "$as_me:14536: checking for alternate terminal capabilities file" >&5
 echo $ECHO_N "checking for alternate terminal capabilities file... $ECHO_C" >&6
 
 # Check whether --with-caps or --without-caps was given.
@@ -14532,15 +14545,16 @@ else
 fi;
 if test ! -f "${srcdir}/include/${TERMINFO_CAPS}"
 then
-       { echo "$as_me:14535: WARNING: file not found: \"${srcdir}/include/${TERMINFO_CAPS}\"" >&5
+       { echo "$as_me:14548: WARNING: file not found: \"${srcdir}/include/${TERMINFO_CAPS}\"" >&5
 echo "$as_me: WARNING: file not found: \"${srcdir}/include/${TERMINFO_CAPS}\"" >&2;}
        TERMINFO_CAPS=Caps
 fi
-echo "$as_me:14539: result: $TERMINFO_CAPS" >&5
+echo "$as_me:14552: result: $TERMINFO_CAPS" >&5
 echo "${ECHO_T}$TERMINFO_CAPS" >&6
 
 ###   use option --with-chtype to override chtype's type
-echo "$as_me:14543: checking for type of chtype" >&5
+
+echo "$as_me:14557: checking for type of chtype" >&5
 echo $ECHO_N "checking for type of chtype... $ECHO_C" >&6
 
 # Check whether --with-chtype or --without-chtype was given.
@@ -14550,11 +14564,19 @@ if test "${with_chtype+set}" = set; then
 else
   NCURSES_CHTYPE=$cf_dft_chtype
 fi;
-echo "$as_me:14553: result: $NCURSES_CHTYPE" >&5
+echo "$as_me:14567: result: $NCURSES_CHTYPE" >&5
 echo "${ECHO_T}$NCURSES_CHTYPE" >&6
+case x$NCURSES_CHTYPE in
+(x|xyes|xno)
+       { { echo "$as_me:14571: error: expected a type name for chtype" >&5
+echo "$as_me: error: expected a type name for chtype" >&2;}
+   { (exit 1); exit 1; }; }
+       ;;
+esac
 
 ###   use option --with-ospeed to override ospeed's type
-echo "$as_me:14557: checking for type of ospeed" >&5
+
+echo "$as_me:14579: checking for type of ospeed" >&5
 echo $ECHO_N "checking for type of ospeed... $ECHO_C" >&6
 
 # Check whether --with-ospeed or --without-ospeed was given.
@@ -14564,12 +14586,20 @@ if test "${with_ospeed+set}" = set; then
 else
   NCURSES_OSPEED=short
 fi;
-echo "$as_me:14567: result: $NCURSES_OSPEED" >&5
+echo "$as_me:14589: result: $NCURSES_OSPEED" >&5
 echo "${ECHO_T}$NCURSES_OSPEED" >&6
+case x$NCURSES_OSPEED in
+(x|xyes|xno)
+       { { echo "$as_me:14593: error: expected a type name for ospeed" >&5
+echo "$as_me: error: expected a type name for ospeed" >&2;}
+   { (exit 1); exit 1; }; }
+       ;;
+esac
 
 ###   use option --with-mmask-t to override mmask_t's type
-echo "$as_me:14571: checking for type of mmask_t" >&5
-echo $ECHO_N "checking for type of mmask_t... $ECHO_C" >&6
+
+echo "$as_me:14601: checking for type of mmask-t" >&5
+echo $ECHO_N "checking for type of mmask-t... $ECHO_C" >&6
 
 # Check whether --with-mmask-t or --without-mmask-t was given.
 if test "${with_mmask_t+set}" = set; then
@@ -14578,11 +14608,18 @@ if test "${with_mmask_t+set}" = set; then
 else
   NCURSES_MMASK_T=$cf_dft_mmask_t
 fi;
-echo "$as_me:14581: result: $NCURSES_MMASK_T" >&5
+echo "$as_me:14611: result: $NCURSES_MMASK_T" >&5
 echo "${ECHO_T}$NCURSES_MMASK_T" >&6
+case x$NCURSES_MMASK_T in
+(x|xyes|xno)
+       { { echo "$as_me:14615: error: expected a type name for mmask-t" >&5
+echo "$as_me: error: expected a type name for mmask-t" >&2;}
+   { (exit 1); exit 1; }; }
+       ;;
+esac
 
 ###   use option --with-ccharw-max to override CCHARW_MAX size
-echo "$as_me:14585: checking for size CCHARW_MAX" >&5
+echo "$as_me:14622: checking for size CCHARW_MAX" >&5
 echo $ECHO_N "checking for size CCHARW_MAX... $ECHO_C" >&6
 
 # Check whether --with-ccharw-max or --without-ccharw-max was given.
@@ -14592,16 +14629,16 @@ if test "${with_ccharw_max+set}" = set; then
 else
   NCURSES_CCHARW_MAX=$cf_dft_ccharw_max
 fi;
-echo "$as_me:14595: result: $NCURSES_CCHARW_MAX" >&5
+echo "$as_me:14632: result: $NCURSES_CCHARW_MAX" >&5
 echo "${ECHO_T}$NCURSES_CCHARW_MAX" >&6
 
-echo "$as_me:14598: checking for signed char" >&5
+echo "$as_me:14635: checking for signed char" >&5
 echo $ECHO_N "checking for signed char... $ECHO_C" >&6
 if test "${ac_cv_type_signed_char+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14604 "configure"
+#line 14641 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -14616,16 +14653,16 @@ if (sizeof (signed char))
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14619: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14656: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14622: \$? = $ac_status" >&5
+  echo "$as_me:14659: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14625: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14662: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14628: \$? = $ac_status" >&5
+  echo "$as_me:14665: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_type_signed_char=yes
 else
@@ -14635,10 +14672,10 @@ ac_cv_type_signed_char=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:14638: result: $ac_cv_type_signed_char" >&5
+echo "$as_me:14675: result: $ac_cv_type_signed_char" >&5
 echo "${ECHO_T}$ac_cv_type_signed_char" >&6
 
-echo "$as_me:14641: checking size of signed char" >&5
+echo "$as_me:14678: checking size of signed char" >&5
 echo $ECHO_N "checking size of signed char... $ECHO_C" >&6
 if test "${ac_cv_sizeof_signed_char+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14647,7 +14684,7 @@ else
   if test "$cross_compiling" = yes; then
   # Depending upon the size, compute the lo and hi bounds.
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 14650 "configure"
+#line 14687 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -14659,21 +14696,21 @@ int _array_ [1 - 2 * !((sizeof (signed char)) >= 0)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14662: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14699: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14665: \$? = $ac_status" >&5
+  echo "$as_me:14702: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14668: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14705: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14671: \$? = $ac_status" >&5
+  echo "$as_me:14708: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_lo=0 ac_mid=0
   while :; do
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 14676 "configure"
+#line 14713 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -14685,16 +14722,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14688: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14725: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14691: \$? = $ac_status" >&5
+  echo "$as_me:14728: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14694: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14731: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14697: \$? = $ac_status" >&5
+  echo "$as_me:14734: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_hi=$ac_mid; break
 else
@@ -14710,7 +14747,7 @@ cat "conftest.$ac_ext" >&5
 ac_hi=-1 ac_mid=-1
   while :; do
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 14713 "configure"
+#line 14750 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -14722,16 +14759,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) >= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14725: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14762: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14728: \$? = $ac_status" >&5
+  echo "$as_me:14765: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14731: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14768: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14734: \$? = $ac_status" >&5
+  echo "$as_me:14771: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_lo=$ac_mid; break
 else
@@ -14747,7 +14784,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 while test "x$ac_lo" != "x$ac_hi"; do
   ac_mid=`expr '(' "$ac_hi" - "$ac_lo" ')' / 2 + "$ac_lo"`
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14750 "configure"
+#line 14787 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -14759,16 +14796,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:14762: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14799: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:14765: \$? = $ac_status" >&5
+  echo "$as_me:14802: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:14768: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14805: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14771: \$? = $ac_status" >&5
+  echo "$as_me:14808: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_hi=$ac_mid
 else
@@ -14781,12 +14818,12 @@ done
 ac_cv_sizeof_signed_char=$ac_lo
 else
   if test "$cross_compiling" = yes; then
-  { { echo "$as_me:14784: error: cannot run test program while cross compiling" >&5
+  { { echo "$as_me:14821: error: cannot run test program while cross compiling" >&5
 echo "$as_me: error: cannot run test program while cross compiling" >&2;}
    { (exit 1); exit 1; }; }
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 14789 "configure"
+#line 14826 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -14802,15 +14839,15 @@ fclose (f);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:14805: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14842: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:14808: \$? = $ac_status" >&5
+  echo "$as_me:14845: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:14810: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14847: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14813: \$? = $ac_status" >&5
+  echo "$as_me:14850: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sizeof_signed_char=`cat conftest.val`
 else
@@ -14826,7 +14863,7 @@ else
   ac_cv_sizeof_signed_char=0
 fi
 fi
-echo "$as_me:14829: result: $ac_cv_sizeof_signed_char" >&5
+echo "$as_me:14866: result: $ac_cv_sizeof_signed_char" >&5
 echo "${ECHO_T}$ac_cv_sizeof_signed_char" >&6
 cat >>confdefs.h <<EOF
 #define SIZEOF_SIGNED_CHAR $ac_cv_sizeof_signed_char
@@ -14837,8 +14874,8 @@ if test "$ac_cv_sizeof_signed_char" = 1 ; then
 else
        NCURSES_SBOOL="char"
 fi
-echo "$as_me:14840: checking if you want to use signed Boolean array in term.h" >&5
-echo $ECHO_N "checking if you want to use signed Boolean array in term.h... $ECHO_C" >&6
+echo "$as_me:14877: checking whether to use signed chars for Boolean array in term.h" >&5
+echo $ECHO_N "checking whether to use signed chars for Boolean array in term.h... $ECHO_C" >&6
 
 # Check whether --enable-signed-char or --disable-signed-char was given.
 if test "${enable_signed_char+set}" = set; then
@@ -14847,13 +14884,14 @@ if test "${enable_signed_char+set}" = set; then
 else
   with_signed_char=$cf_dft_signed_char
 fi;
-echo "$as_me:14850: result: $with_signed_char" >&5
+echo "$as_me:14887: result: $with_signed_char" >&5
 echo "${ECHO_T}$with_signed_char" >&6
 test "x$with_signed_char" != xyes && NCURSES_SBOOL="char"
 
 ###   use option --with-tparm-arg to override tparm's argument type
-echo "$as_me:14855: checking for type of tparm args" >&5
-echo $ECHO_N "checking for type of tparm args... $ECHO_C" >&6
+
+echo "$as_me:14893: checking for type of tparm-arg" >&5
+echo $ECHO_N "checking for type of tparm-arg... $ECHO_C" >&6
 
 # Check whether --with-tparm-arg or --without-tparm-arg was given.
 if test "${with_tparm_arg+set}" = set; then
@@ -14862,11 +14900,18 @@ if test "${with_tparm_arg+set}" = set; then
 else
   NCURSES_TPARM_ARG=$cf_dft_tparm_arg
 fi;
-echo "$as_me:14865: result: $NCURSES_TPARM_ARG" >&5
+echo "$as_me:14903: result: $NCURSES_TPARM_ARG" >&5
 echo "${ECHO_T}$NCURSES_TPARM_ARG" >&6
+case x$NCURSES_TPARM_ARG in
+(x|xyes|xno)
+       { { echo "$as_me:14907: error: expected a type name for tparm-arg" >&5
+echo "$as_me: error: expected a type name for tparm-arg" >&2;}
+   { (exit 1); exit 1; }; }
+       ;;
+esac
 
 ### Enable compiling-in rcs id's
-echo "$as_me:14869: checking if RCS identifiers should be compiled-in" >&5
+echo "$as_me:14914: checking if RCS identifiers should be compiled-in" >&5
 echo $ECHO_N "checking if RCS identifiers should be compiled-in... $ECHO_C" >&6
 
 # Check whether --with-rcs-ids or --without-rcs-ids was given.
@@ -14876,7 +14921,7 @@ if test "${with_rcs_ids+set}" = set; then
 else
   with_rcs_ids=no
 fi;
-echo "$as_me:14879: result: $with_rcs_ids" >&5
+echo "$as_me:14924: result: $with_rcs_ids" >&5
 echo "${ECHO_T}$with_rcs_ids" >&6
 test "x$with_rcs_ids" = xyes &&
 cat >>confdefs.h <<\EOF
@@ -14885,7 +14930,7 @@ EOF
 
 ###############################################################################
 
-echo "$as_me:14888: checking format of man-pages" >&5
+echo "$as_me:14933: checking format of man-pages" >&5
 echo $ECHO_N "checking format of man-pages... $ECHO_C" >&6
 
 # Check whether --with-manpage-format or --without-manpage-format was given.
@@ -14976,14 +15021,51 @@ case "$MANPAGE_FORMAT" in
        ;;
 esac
 
-echo "$as_me:14979: result: $MANPAGE_FORMAT" >&5
+echo "$as_me:15024: result: $MANPAGE_FORMAT" >&5
 echo "${ECHO_T}$MANPAGE_FORMAT" >&6
 if test -n "$cf_unknown" ; then
-       { echo "$as_me:14982: WARNING: Unexpected manpage-format $cf_unknown" >&5
+       { echo "$as_me:15027: WARNING: Unexpected manpage-format $cf_unknown" >&5
 echo "$as_me: WARNING: Unexpected manpage-format $cf_unknown" >&2;}
 fi
 
-echo "$as_me:14986: checking for manpage renaming" >&5
+cf_manpage_format=no
+cf_manpage_inboth=no
+cf_manpage_so_strip=
+cf_manpage_compress=
+cf_manpage_coptions=
+
+for cf_item in $MANPAGE_FORMAT
+do
+case "$cf_item" in
+(catonly)
+       cf_manpage_format=yes
+       cf_manpage_inboth=no
+       ;;
+(formatted)
+       cf_manpage_format=yes
+       cf_manpage_inboth=yes
+       ;;
+(compress)
+       cf_manpage_so_strip="Z"
+       cf_manpage_compress=compress
+       ;;
+(gzip)
+       cf_manpage_so_strip="gz"
+       cf_manpage_compress=gzip
+       cf_manpage_coptions=-n
+       ;;
+(bzip2)
+       cf_manpage_so_strip="bz2"
+       cf_manpage_compress=bzip2
+       ;;
+(xz)
+       cf_manpage_so_strip="xz"
+       cf_manpage_compress=xz
+       ;;
+esac
+done
+
+echo "$as_me:15068: checking for manpage renaming" >&5
 echo $ECHO_N "checking for manpage renaming... $ECHO_C" >&6
 
 # Check whether --with-manpage-renames or --without-manpage-renames was given.
@@ -15012,15 +15094,15 @@ if test "$MANPAGE_RENAMES" = man/man_db.renames ; then
 elif test "$MANPAGE_RENAMES" = no ; then
        :
 elif test ! -f "$MANPAGE_RENAMES" ; then
-       { { echo "$as_me:15015: error: not a filename: $MANPAGE_RENAMES" >&5
+       { { echo "$as_me:15097: error: not a filename: $MANPAGE_RENAMES" >&5
 echo "$as_me: error: not a filename: $MANPAGE_RENAMES" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-echo "$as_me:15020: result: $MANPAGE_RENAMES" >&5
+echo "$as_me:15102: result: $MANPAGE_RENAMES" >&5
 echo "${ECHO_T}$MANPAGE_RENAMES" >&6
 
-echo "$as_me:15023: checking if manpage aliases will be installed" >&5
+echo "$as_me:15105: checking if manpage aliases will be installed" >&5
 echo $ECHO_N "checking if manpage aliases will be installed... $ECHO_C" >&6
 
 # Check whether --with-manpage-aliases or --without-manpage-aliases was given.
@@ -15031,7 +15113,7 @@ else
   MANPAGE_ALIASES=yes
 fi;
 
-echo "$as_me:15034: result: $MANPAGE_ALIASES" >&5
+echo "$as_me:15116: result: $MANPAGE_ALIASES" >&5
 echo "${ECHO_T}$MANPAGE_ALIASES" >&6
 
 case "x$LN_S" in
@@ -15045,7 +15127,7 @@ esac
 
 MANPAGE_SYMLINKS=no
 if test "$MANPAGE_ALIASES" = yes ; then
-echo "$as_me:15048: checking if manpage symlinks should be used" >&5
+echo "$as_me:15130: checking if manpage symlinks should be used" >&5
 echo $ECHO_N "checking if manpage symlinks should be used... $ECHO_C" >&6
 
 # Check whether --with-manpage-symlinks or --without-manpage-symlinks was given.
@@ -15056,19 +15138,19 @@ else
   MANPAGE_SYMLINKS=$cf_use_symlinks
 fi;
 
-if test "$$cf_use_symlinks" = no; then
+if test "$cf_use_symlinks" = no; then
 if test "$MANPAGE_SYMLINKS" = yes ; then
-       { echo "$as_me:15061: WARNING: cannot make symlinks" >&5
+       { echo "$as_me:15143: WARNING: cannot make symlinks" >&5
 echo "$as_me: WARNING: cannot make symlinks" >&2;}
        MANPAGE_SYMLINKS=no
 fi
 fi
 
-echo "$as_me:15067: result: $MANPAGE_SYMLINKS" >&5
+echo "$as_me:15149: result: $MANPAGE_SYMLINKS" >&5
 echo "${ECHO_T}$MANPAGE_SYMLINKS" >&6
 fi
 
-echo "$as_me:15071: checking for manpage tbl" >&5
+echo "$as_me:15153: checking for manpage tbl" >&5
 echo $ECHO_N "checking for manpage tbl... $ECHO_C" >&6
 
 # Check whether --with-manpage-tbl or --without-manpage-tbl was given.
@@ -15079,7 +15161,7 @@ else
   MANPAGE_TBL=no
 fi;
 
-echo "$as_me:15082: result: $MANPAGE_TBL" >&5
+echo "$as_me:15164: result: $MANPAGE_TBL" >&5
 echo "${ECHO_T}$MANPAGE_TBL" >&6
 
 if test "$prefix" = "NONE" ; then
@@ -15088,47 +15170,8 @@ else
        cf_prefix="$prefix"
 fi
 
-case "$MANPAGE_FORMAT" in
-(*catonly*)
-       cf_format=yes
-       cf_inboth=no
-       ;;
-(*formatted*)
-       cf_format=yes
-       cf_inboth=yes
-       ;;
-(*)
-       cf_format=no
-       cf_inboth=no
-       ;;
-esac
-
 test ! -d man && mkdir man
 
-cf_so_strip=
-cf_compress=
-for cf_manpage_format in $MANPAGE_FORMAT
-do
-case "$cf_manpage_format" in
-(compress)
-       cf_so_strip="Z"
-       cf_compress=compress
-       ;;
-(gzip)
-       cf_so_strip="gz"
-       cf_compress=gzip
-       ;;
-(bzip2)
-       cf_so_strip="bz2"
-       cf_compress=bzip2
-       ;;
-(xz)
-       cf_so_strip="xz"
-       cf_compress=xz
-       ;;
-esac
-done
-
 cf_edit_man=./edit_man.sh
 cf_man_alias=`pwd`/man_alias.sed
 
@@ -15146,6 +15189,7 @@ NCURSES_PATCH="$NCURSES_PATCH"
 
 NCURSES_OSPEED="$NCURSES_OSPEED"
 TERMINFO="$TERMINFO"
+TERMINFO_DIRS="$TERMINFO_DIRS"
 
 INSTALL="$INSTALL"
 INSTALL_DATA="$INSTALL_DATA"
@@ -15170,8 +15214,8 @@ top_srcdir=\$srcdir/..
 shift || exit 1
 
 if test "\$form" = normal ; then
-       if test "$cf_format" = yes ; then
-       if test "$cf_inboth" = no ; then
+       if test "$cf_manpage_format" = yes ; then
+       if test "$cf_manpage_inboth" = no ; then
                $SHELL "\$0" format "\$verb" "\$mandir" "\$srcdir" "\$@"
                exit $?
        fi
@@ -15223,9 +15267,9 @@ CF_EOF2
 
        aliases=
        cf_source=\`basename "\$i"\`
-       inalias=\$cf_source
-       test ! -f "\$inalias" && inalias="\$srcdir/\$inalias"
-       if test ! -f "\$inalias" ; then
+       cf_full_alias=\$cf_source
+       test ! -f "\$cf_full_alias" && cf_full_alias="\$srcdir/\$cf_full_alias"
+       if test ! -f "\$cf_full_alias" ; then
                echo ".. skipped \$cf_source"
                continue
        fi
@@ -15234,8 +15278,9 @@ CF_EOF
 if test "$MANPAGE_ALIASES" != no ; then
 cat >>$cf_edit_man <<CF_EOF
        nCurses=ignore.3x
+       cf_part_alias=\`echo \$cf_full_alias| sed -e 's,^.*/,,'\`
        test "$with_curses_h" = yes && nCurses=ncurses.3x
-       aliases=\`sed -f "\$top_srcdir/man/manlinks.sed" "\$inalias" |sed -f "$cf_man_alias" | sort -u; test "\$inalias" = "\$nCurses" && echo curses\`
+       aliases=\`sed -f "\$top_srcdir/man/manlinks.sed" "\$cf_full_alias" |sed -f "$cf_man_alias" | sort -u; test "\$cf_part_alias" = "\$nCurses" && echo curses\`
 CF_EOF
 fi
 
@@ -15302,15 +15347,15 @@ cat >>$cf_edit_man <<CF_EOF
        fi
 CF_EOF
 
-if test -n "$cf_compress" ; then
+if test -n "$cf_manpage_compress" ; then
 cat >>$cf_edit_man <<CF_EOF
        if test "\$verb" = installing ; then
-       if ( "$cf_compress" -f \$TMP )
+       if ( "$cf_manpage_compress" -f \$TMP )
        then
-               mv \$TMP.$cf_so_strip \$TMP
+               mv \$TMP.$cf_manpage_so_strip \$TMP
        fi
        fi
-       cf_target="\$cf_target.$cf_so_strip"
+       cf_target="\$cf_target.$cf_manpage_so_strip"
 CF_EOF
 fi
 
@@ -15327,6 +15372,14 @@ esac
 
 cat >>$cf_edit_man <<CF_EOF
        suffix=\`basename "\$cf_target" | sed -e 's%^[^.]*%%'\`
+       extra_suffix=
+       if test -n "$EXTRA_SUFFIX" ; then
+               case \$cf_target in
+               (*${EXTRA_SUFFIX}\$suffix)
+                       extra_suffix="$EXTRA_SUFFIX"
+                       ;;
+               esac
+       fi
        if test "\$verb" = installing ; then
                echo "\$verb \$cf_target"
                \$INSTALL_DATA \$TMP "\$cf_target"
@@ -15334,13 +15387,14 @@ cat >>$cf_edit_man <<CF_EOF
                test -n "\$aliases" && (
                        cd "\$cf_subdir\${section}" && (
                                cf_source=\`echo "\$cf_target" |sed -e 's%^.*/\\([^/][^/]*/[^/][^/]*$\\)%\\1%'\`
-                               test -n "$cf_so_strip" && cf_source=\`echo "\$cf_source" |sed -e 's%\\.$cf_so_strip\$%%'\`
+                               test -n "$cf_manpage_so_strip" && cf_source=\`echo "\$cf_source" |sed -e 's%\\.$cf_manpage_so_strip\$%%'\`
                                cf_target=\`basename "\$cf_target"\`
                                for cf_alias in \$aliases
                                do
                                        if test "\$section" = 1 ; then
                                                cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\`
                                        fi
+                                       cf_alias="\${cf_alias}\${extra_suffix}"
 
                                        if test "$MANPAGE_SYMLINKS" = yes ; then
                                                if test -f "\$cf_alias\${suffix}" ; then
@@ -15368,11 +15422,11 @@ cat >>$cf_edit_man <<CF_EOF
                                        elif test "\$cf_target" != "\$cf_alias\${suffix}" ; then
                                                echo ".so \$cf_source" >\$TMP
 CF_EOF
-if test -n "$cf_compress" ; then
+if test -n "$cf_manpage_compress" ; then
 cat >>$cf_edit_man <<CF_EOF
-                                               if test -n "$cf_so_strip" ; then
-                                                       "$cf_compress" -f \$TMP
-                                                       mv \$TMP.$cf_so_strip \$TMP
+                                               if test -n "$cf_manpage_so_strip" ; then
+                                                       "$cf_manpage_compress" $cf_manpage_coptions -f \$TMP
+                                                       mv \$TMP.$cf_manpage_so_strip \$TMP
                                                fi
 CF_EOF
 fi
@@ -15397,6 +15451,7 @@ cat >>$cf_edit_man <<CF_EOF
                                        if test "\$section" = 1 ; then
                                                cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\`
                                        fi
+                                       cf_alias="\${cf_alias}\${extra_suffix}"
 
                                        echo ".. \$verb alias \$cf_alias\${suffix}"
                                        rm -f "\$cf_alias\${suffix}"
@@ -15411,7 +15466,7 @@ cat >>$cf_edit_man <<CF_EOF
 esac
 done
 
-if test "$cf_inboth" = yes ; then
+if test "$cf_manpage_inboth" = yes ; then
 if test "\$form" != format ; then
        $SHELL "\$0" format "\$verb" "\$mandir" "\$srcdir" "\$@"
 fi
@@ -15424,7 +15479,7 @@ chmod 755 "$cf_edit_man"
 ###############################################################################
 
 ### Note that some functions (such as const) are normally disabled anyway.
-echo "$as_me:15427: checking if you want to build with function extensions" >&5
+echo "$as_me:15482: checking if you want to build with function extensions" >&5
 echo $ECHO_N "checking if you want to build with function extensions... $ECHO_C" >&6
 
 # Check whether --enable-ext-funcs or --disable-ext-funcs was given.
@@ -15434,7 +15489,7 @@ if test "${enable_ext_funcs+set}" = set; then
 else
   with_ext_funcs=yes
 fi;
-echo "$as_me:15437: result: $with_ext_funcs" >&5
+echo "$as_me:15492: result: $with_ext_funcs" >&5
 echo "${ECHO_T}$with_ext_funcs" >&6
 if test "x$with_ext_funcs" = xyes ; then
        NCURSES_EXT_FUNCS=1
@@ -15471,10 +15526,6 @@ cat >>confdefs.h <<\EOF
 #define HAVE_USE_DEFAULT_COLORS 1
 EOF
 
-cat >>confdefs.h <<\EOF
-#define HAVE_USE_EXTENDED_NAMES 1
-EOF
-
 cat >>confdefs.h <<\EOF
 #define HAVE_USE_SCREEN 1
 EOF
@@ -15494,7 +15545,7 @@ else
        GENERATED_EXT_FUNCS=
 fi
 
-echo "$as_me:15497: checking if you want to build with SCREEN extensions" >&5
+echo "$as_me:15548: checking if you want to build with SCREEN extensions" >&5
 echo $ECHO_N "checking if you want to build with SCREEN extensions... $ECHO_C" >&6
 
 # Check whether --enable-sp-funcs or --disable-sp-funcs was given.
@@ -15504,7 +15555,7 @@ if test "${enable_sp_funcs+set}" = set; then
 else
   with_sp_funcs=$cf_dft_ext_spfuncs
 fi;
-echo "$as_me:15507: result: $with_sp_funcs" >&5
+echo "$as_me:15558: result: $with_sp_funcs" >&5
 echo "${ECHO_T}$with_sp_funcs" >&6
 if test "x$with_sp_funcs" = xyes ; then
        NCURSES_SP_FUNCS=1
@@ -15523,7 +15574,7 @@ else
        GENERATED_SP_FUNCS=
 fi
 
-echo "$as_me:15526: checking if you want to build with terminal-driver" >&5
+echo "$as_me:15577: checking if you want to build with terminal-driver" >&5
 echo $ECHO_N "checking if you want to build with terminal-driver... $ECHO_C" >&6
 
 # Check whether --enable-term-driver or --disable-term-driver was given.
@@ -15533,7 +15584,7 @@ if test "${enable_term_driver+set}" = set; then
 else
   with_term_driver=no
 fi;
-echo "$as_me:15536: result: $with_term_driver" >&5
+echo "$as_me:15587: result: $with_term_driver" >&5
 echo "${ECHO_T}$with_term_driver" >&6
 if test "x$with_term_driver" = xyes ; then
 
@@ -15542,19 +15593,19 @@ cat >>confdefs.h <<\EOF
 EOF
 
        if test "x$with_termlib" != xno ; then
-               { { echo "$as_me:15545: error: The term-driver option conflicts with the termlib option" >&5
+               { { echo "$as_me:15596: error: The term-driver option conflicts with the termlib option" >&5
 echo "$as_me: error: The term-driver option conflicts with the termlib option" >&2;}
    { (exit 1); exit 1; }; }
        fi
        if test "x$with_sp_funcs" != xyes ; then
-               { { echo "$as_me:15550: error: The term-driver option relies upon sp-funcs" >&5
+               { { echo "$as_me:15601: error: The term-driver option relies upon sp-funcs" >&5
 echo "$as_me: error: The term-driver option relies upon sp-funcs" >&2;}
    { (exit 1); exit 1; }; }
        fi
 fi
 
 ###   use option --enable-const to turn on use of const beyond that in XSI.
-echo "$as_me:15557: checking for extended use of const keyword" >&5
+echo "$as_me:15608: checking for extended use of const keyword" >&5
 echo $ECHO_N "checking for extended use of const keyword... $ECHO_C" >&6
 
 # Check whether --enable-const or --disable-const was given.
@@ -15564,7 +15615,7 @@ if test "${enable_const+set}" = set; then
 else
   with_ext_const=$cf_dft_ext_const
 fi;
-echo "$as_me:15567: result: $with_ext_const" >&5
+echo "$as_me:15618: result: $with_ext_const" >&5
 echo "${ECHO_T}$with_ext_const" >&6
 NCURSES_CONST='/*nothing*/'
 if test "x$with_ext_const" = xyes ; then
@@ -15572,7 +15623,7 @@ if test "x$with_ext_const" = xyes ; then
 fi
 
 ###   use option --enable-ext-colors to turn on use of colors beyond 16.
-echo "$as_me:15575: checking if you want to use extended colors" >&5
+echo "$as_me:15626: checking if you want to use extended colors" >&5
 echo $ECHO_N "checking if you want to use extended colors... $ECHO_C" >&6
 
 # Check whether --enable-ext-colors or --disable-ext-colors was given.
@@ -15582,12 +15633,12 @@ if test "${enable_ext_colors+set}" = set; then
 else
   with_ext_colors=$cf_dft_ext_colors
 fi;
-echo "$as_me:15585: result: $with_ext_colors" >&5
+echo "$as_me:15636: result: $with_ext_colors" >&5
 echo "${ECHO_T}$with_ext_colors" >&6
 NCURSES_EXT_COLORS=0
 if test "x$with_ext_colors" = xyes ; then
        if test "x$with_widec" != xyes ; then
-               { echo "$as_me:15590: WARNING: This option applies only to wide-character library" >&5
+               { echo "$as_me:15641: WARNING: This option applies only to wide-character library" >&5
 echo "$as_me: WARNING: This option applies only to wide-character library" >&2;}
        else
                # cannot be ABI 5 since it changes sizeof(cchar_t)
@@ -15598,7 +15649,7 @@ if test "${with_abi_version+set}" != set; then
                cf_cv_rel_version=6.0
                cf_cv_abi_version=6
                cf_cv_abi_default=6
-               { echo "$as_me:15601: WARNING: overriding ABI version to $cf_cv_abi_default" >&5
+               { echo "$as_me:15652: WARNING: overriding ABI version to $cf_cv_abi_default" >&5
 echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_default" >&2;}
                ;;
        esac
@@ -15626,7 +15677,7 @@ EOF
 fi
 
 ###   use option --enable-ext-mouse to modify coding to support 5-button mice
-echo "$as_me:15629: checking if you want to use extended mouse encoding" >&5
+echo "$as_me:15680: checking if you want to use extended mouse encoding" >&5
 echo $ECHO_N "checking if you want to use extended mouse encoding... $ECHO_C" >&6
 
 # Check whether --enable-ext-mouse or --disable-ext-mouse was given.
@@ -15636,7 +15687,7 @@ if test "${enable_ext_mouse+set}" = set; then
 else
   with_ext_mouse=$cf_dft_ext_mouse
 fi;
-echo "$as_me:15639: result: $with_ext_mouse" >&5
+echo "$as_me:15690: result: $with_ext_mouse" >&5
 echo "${ECHO_T}$with_ext_mouse" >&6
 if test "x$with_ext_mouse" = xyes ; then
 
@@ -15646,7 +15697,7 @@ if test "${with_abi_version+set}" != set; then
                cf_cv_rel_version=6.0
                cf_cv_abi_version=6
                cf_cv_abi_default=6
-               { echo "$as_me:15649: WARNING: overriding ABI version to $cf_cv_abi_default" >&5
+               { echo "$as_me:15700: WARNING: overriding ABI version to $cf_cv_abi_default" >&5
 echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_default" >&2;}
                ;;
        esac
 
 fi
 
-case $cf_cv_abi_default in
-(5)
+if test $cf_cv_abi_default -le 5 ; then
        NCURSES_MOUSE_VERSION=1
-       ;;
-(6)
+elif test $cf_cv_abi_default -le 6 ; then
        NCURSES_MOUSE_VERSION=2
-       ;;
-([789])
+else
        NCURSES_MOUSE_VERSION=3
-       ;;
-esac
+fi
 
 ###   use option --enable-ext-putwin to turn on extended screendumps
-echo "$as_me:15670: checking if you want to use extended putwin/screendump" >&5
+echo "$as_me:15717: checking if you want to use extended putwin/screendump" >&5
 echo $ECHO_N "checking if you want to use extended putwin/screendump... $ECHO_C" >&6
 
 # Check whether --enable-ext-putwin or --disable-ext-putwin was given.
@@ -15677,7 +15724,7 @@ if test "${enable_ext_putwin+set}" = set; then
 else
   with_ext_putwin=$cf_dft_ext_putwin
 fi;
-echo "$as_me:15680: result: $with_ext_putwin" >&5
+echo "$as_me:15727: result: $with_ext_putwin" >&5
 echo "${ECHO_T}$with_ext_putwin" >&6
 if test "x$with_ext_putwin" = xyes ; then
 
@@ -15687,7 +15734,7 @@ EOF
 
 fi
 
-echo "$as_me:15690: checking if you want \$NCURSES_NO_PADDING code" >&5
+echo "$as_me:15737: checking if you want \$NCURSES_NO_PADDING code" >&5
 echo $ECHO_N "checking if you want \$NCURSES_NO_PADDING code... $ECHO_C" >&6
 
 # Check whether --enable-no-padding or --disable-no-padding was given.
@@ -15697,7 +15744,7 @@ if test "${enable_no_padding+set}" = set; then
 else
   with_no_padding=$with_ext_funcs
 fi;
-echo "$as_me:15700: result: $with_no_padding" >&5
+echo "$as_me:15747: result: $with_no_padding" >&5
 echo "${ECHO_T}$with_no_padding" >&6
 test "x$with_no_padding" = xyes &&
 cat >>confdefs.h <<\EOF
@@ -15705,7 +15752,7 @@ cat >>confdefs.h <<\EOF
 EOF
 
 ###   use option --enable-sigwinch to turn on use of SIGWINCH logic
-echo "$as_me:15708: checking if you want SIGWINCH handler" >&5
+echo "$as_me:15755: checking if you want SIGWINCH handler" >&5
 echo $ECHO_N "checking if you want SIGWINCH handler... $ECHO_C" >&6
 
 # Check whether --enable-sigwinch or --disable-sigwinch was given.
@@ -15715,15 +15762,22 @@ if test "${enable_sigwinch+set}" = set; then
 else
   with_sigwinch=$with_ext_funcs
 fi;
-echo "$as_me:15718: result: $with_sigwinch" >&5
+echo "$as_me:15765: result: $with_sigwinch" >&5
 echo "${ECHO_T}$with_sigwinch" >&6
-test "x$with_sigwinch" = xyes &&
+if test "x$with_sigwinch" = xyes
+then
+
 cat >>confdefs.h <<\EOF
 #define USE_SIGWINCH 1
 EOF
 
+       cf_cv_enable_sigwinch=1
+else
+       cf_cv_enable_sigwinch=0
+fi
+
 ###   use option --enable-tcap-names to allow user to define new capabilities
-echo "$as_me:15726: checking if you want user-definable terminal capabilities like termcap" >&5
+echo "$as_me:15780: checking if you want user-definable terminal capabilities like termcap" >&5
 echo $ECHO_N "checking if you want user-definable terminal capabilities like termcap... $ECHO_C" >&6
 
 # Check whether --enable-tcap-names or --disable-tcap-names was given.
@@ -15733,14 +15787,21 @@ if test "${enable_tcap_names+set}" = set; then
 else
   with_tcap_names=$with_ext_funcs
 fi;
-echo "$as_me:15736: result: $with_tcap_names" >&5
+echo "$as_me:15790: result: $with_tcap_names" >&5
 echo "${ECHO_T}$with_tcap_names" >&6
 NCURSES_XNAMES=0
-test "x$with_tcap_names" = xyes && NCURSES_XNAMES=1
+if test "x$with_tcap_names" = xyes; then
+       NCURSES_XNAMES=1
+
+cat >>confdefs.h <<\EOF
+#define NCURSES_XNAMES 1
+EOF
+
+fi
 
 ##############################################################################
 
-echo "$as_me:15743: checking if you want to link with the pthread library" >&5
+echo "$as_me:15804: checking if you want to link with the pthread library" >&5
 echo $ECHO_N "checking if you want to link with the pthread library... $ECHO_C" >&6
 
 # Check whether --with-pthread or --without-pthread was given.
@@ -15750,27 +15811,27 @@ if test "${with_pthread+set}" = set; then
 else
   with_pthread=no
 fi;
-echo "$as_me:15753: result: $with_pthread" >&5
+echo "$as_me:15814: result: $with_pthread" >&5
 echo "${ECHO_T}$with_pthread" >&6
 
 if test "$with_pthread" != no ; then
-       echo "$as_me:15757: checking for pthread.h" >&5
+       echo "$as_me:15818: checking for pthread.h" >&5
 echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6
 if test "${ac_cv_header_pthread_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 15763 "configure"
+#line 15824 "configure"
 #include "confdefs.h"
 #include <pthread.h>
 _ACEOF
-if { (eval echo "$as_me:15767: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:15828: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:15773: \$? = $ac_status" >&5
+  echo "$as_me:15834: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -15789,7 +15850,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:15792: result: $ac_cv_header_pthread_h" >&5
+echo "$as_me:15853: result: $ac_cv_header_pthread_h" >&5
 echo "${ECHO_T}$ac_cv_header_pthread_h" >&6
 if test "$ac_cv_header_pthread_h" = yes; then
 
@@ -15799,7 +15860,7 @@ EOF
 
        for cf_lib_pthread in pthread c_r
        do
-           echo "$as_me:15802: checking if we can link with the $cf_lib_pthread library" >&5
+           echo "$as_me:15863: checking if we can link with the $cf_lib_pthread library" >&5
 echo $ECHO_N "checking if we can link with the $cf_lib_pthread library... $ECHO_C" >&6
            cf_save_LIBS="$LIBS"
 
@@ -15820,7 +15881,7 @@ done
 LIBS="$cf_add_libs"
 
            cat >"conftest.$ac_ext" <<_ACEOF
-#line 15823 "configure"
+#line 15884 "configure"
 #include "confdefs.h"
 
 #include <pthread.h>
@@ -15837,16 +15898,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:15840: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15901: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:15843: \$? = $ac_status" >&5
+  echo "$as_me:15904: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:15846: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15907: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15849: \$? = $ac_status" >&5
+  echo "$as_me:15910: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   with_pthread=yes
 else
@@ -15856,7 +15917,7 @@ with_pthread=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
            LIBS="$cf_save_LIBS"
-           echo "$as_me:15859: result: $with_pthread" >&5
+           echo "$as_me:15920: result: $with_pthread" >&5
 echo "${ECHO_T}$with_pthread" >&6
            test "$with_pthread" = yes && break
        done
@@ -15884,7 +15945,7 @@ cat >>confdefs.h <<\EOF
 EOF
 
        else
-           { { echo "$as_me:15887: error: Cannot link with pthread library" >&5
+           { { echo "$as_me:15948: error: Cannot link with pthread library" >&5
 echo "$as_me: error: Cannot link with pthread library" >&2;}
    { (exit 1); exit 1; }; }
        fi
 fi
 
 if test "x$with_pthread" != xno; then
-       echo "$as_me:15897: checking for pthread_kill" >&5
+       echo "$as_me:15958: checking for pthread_kill" >&5
 echo $ECHO_N "checking for pthread_kill... $ECHO_C" >&6
 if test "${ac_cv_func_pthread_kill+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 15903 "configure"
+#line 15964 "configure"
 #include "confdefs.h"
 #define pthread_kill autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -15931,16 +15992,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:15934: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15995: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:15937: \$? = $ac_status" >&5
+  echo "$as_me:15998: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:15940: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16001: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15943: \$? = $ac_status" >&5
+  echo "$as_me:16004: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_pthread_kill=yes
 else
@@ -15950,11 +16011,11 @@ ac_cv_func_pthread_kill=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:15953: result: $ac_cv_func_pthread_kill" >&5
+echo "$as_me:16014: result: $ac_cv_func_pthread_kill" >&5
 echo "${ECHO_T}$ac_cv_func_pthread_kill" >&6
 if test "$ac_cv_func_pthread_kill" = yes; then
 
-               echo "$as_me:15957: checking if you want to allow EINTR in wgetch with pthreads" >&5
+               echo "$as_me:16018: checking if you want to allow EINTR in wgetch with pthreads" >&5
 echo $ECHO_N "checking if you want to allow EINTR in wgetch with pthreads... $ECHO_C" >&6
 
 # Check whether --enable-pthreads-eintr or --disable-pthreads-eintr was given.
@@ -15964,7 +16025,7 @@ if test "${enable_pthreads_eintr+set}" = set; then
 else
   use_pthreads_eintr=no
 fi;
-               echo "$as_me:15967: result: $use_pthreads_eintr" >&5
+               echo "$as_me:16028: result: $use_pthreads_eintr" >&5
 echo "${ECHO_T}$use_pthreads_eintr" >&6
                if test "x$use_pthreads_eintr" = xyes ; then
 
@@ -15975,7 +16036,7 @@ EOF
                fi
 fi
 
-       echo "$as_me:15978: checking if you want to use weak-symbols for pthreads" >&5
+       echo "$as_me:16039: checking if you want to use weak-symbols for pthreads" >&5
 echo $ECHO_N "checking if you want to use weak-symbols for pthreads... $ECHO_C" >&6
 
 # Check whether --enable-weak-symbols or --disable-weak-symbols was given.
@@ -15985,18 +16046,18 @@ if test "${enable_weak_symbols+set}" = set; then
 else
   use_weak_symbols=no
 fi;
-       echo "$as_me:15988: result: $use_weak_symbols" >&5
+       echo "$as_me:16049: result: $use_weak_symbols" >&5
 echo "${ECHO_T}$use_weak_symbols" >&6
        if test "x$use_weak_symbols" = xyes ; then
 
-echo "$as_me:15992: checking if $CC supports weak symbols" >&5
+echo "$as_me:16053: checking if $CC supports weak symbols" >&5
 echo $ECHO_N "checking if $CC supports weak symbols... $ECHO_C" >&6
 if test "${cf_cv_weak_symbols+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 15999 "configure"
+#line 16060 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -16022,16 +16083,16 @@ weak_symbol(fopen);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:16025: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16086: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:16028: \$? = $ac_status" >&5
+  echo "$as_me:16089: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:16031: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16092: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16034: \$? = $ac_status" >&5
+  echo "$as_me:16095: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_weak_symbols=yes
 else
@@ -16042,7 +16103,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:16045: result: $cf_cv_weak_symbols" >&5
+echo "$as_me:16106: result: $cf_cv_weak_symbols" >&5
 echo "${ECHO_T}$cf_cv_weak_symbols" >&6
 
        else
@@ -16092,7 +16153,7 @@ fi
 # opaque outside of that, so there is no --enable-opaque option.  We can use
 # this option without --with-pthreads, but this will be always set for
 # pthreads.
-echo "$as_me:16095: checking if you want reentrant code" >&5
+echo "$as_me:16156: checking if you want reentrant code" >&5
 echo $ECHO_N "checking if you want reentrant code... $ECHO_C" >&6
 
 # Check whether --enable-reentrant or --disable-reentrant was given.
@@ -16102,7 +16163,7 @@ if test "${enable_reentrant+set}" = set; then
 else
   with_reentrant=no
 fi;
-echo "$as_me:16105: result: $with_reentrant" >&5
+echo "$as_me:16166: result: $with_reentrant" >&5
 echo "${ECHO_T}$with_reentrant" >&6
 if test "x$with_reentrant" = xyes ; then
        cf_cv_enable_reentrant=1
@@ -16191,7 +16252,7 @@ if test "${with_abi_version+set}" != set; then
                cf_cv_rel_version=6.0
                cf_cv_abi_version=6
                cf_cv_abi_default=6
-               { echo "$as_me:16194: WARNING: overriding ABI version to $cf_cv_abi_default" >&5
+               { echo "$as_me:16255: WARNING: overriding ABI version to $cf_cv_abi_default" >&5
 echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_default" >&2;}
                ;;
        esac
@@ -16203,15 +16264,15 @@ else
        NCURSES_SIZE_T=$cf_dft_ordinate_type
 fi
 
-echo "$as_me:16206: checking if you want opaque curses-library structures" >&5
-echo $ECHO_N "checking if you want opaque curses-library structures... $ECHO_C" >&6
+echo "$as_me:16267: checking whether curses library structures should be opaque" >&5
+echo $ECHO_N "checking whether curses library structures should be opaque... $ECHO_C" >&6
 
 # Check whether --enable-opaque-curses or --disable-opaque-curses was given.
 if test "${enable_opaque_curses+set}" = set; then
   enableval="$enable_opaque_curses"
-  test "$enableval" != yes && enableval=no
-       if test "$enableval" != "no" ; then
-    enable_opaque_curses=yes
+  test "$enableval" != no && enableval=yes
+       if test "$enableval" != "yes" ; then
+    enable_opaque_curses=no
        else
 
         test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes
@@ -16219,58 +16280,79 @@ if test "${enable_opaque_curses+set}" = set; then
 
        fi
 else
-  enableval=no
+  enableval=yes
 
         test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes
         test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=$cf_dft_opaque_curses
 
 fi;
-echo "$as_me:16228: result: $enable_opaque_curses" >&5
+echo "$as_me:16289: result: $enable_opaque_curses" >&5
 echo "${ECHO_T}$enable_opaque_curses" >&6
 
 test "$cf_cv_enable_reentrant" = 1 && \
 test "$enable_opaque_curses" = no && \
-{ { echo "$as_me:16233: error: reentrant configuration requires opaque library" >&5
+{ { echo "$as_me:16294: error: reentrant configuration requires opaque library" >&5
 echo "$as_me: error: reentrant configuration requires opaque library" >&2;}
    { (exit 1); exit 1; }; }
 
-echo "$as_me:16237: checking if you want opaque form-library structures" >&5
-echo $ECHO_N "checking if you want opaque form-library structures... $ECHO_C" >&6
+echo "$as_me:16298: checking whether form library structures should be opaque" >&5
+echo $ECHO_N "checking whether form library structures should be opaque... $ECHO_C" >&6
 
 # Check whether --enable-opaque-form or --disable-opaque-form was given.
 if test "${enable_opaque_form+set}" = set; then
   enableval="$enable_opaque_form"
-  enable_opaque_form=yes
+  test "$enableval" != no && enableval=yes
+       if test "$enableval" != "yes" ; then
+    enable_opaque_form=no
+       else
+               enable_opaque_form=$cf_dft_opaque_curses
+       fi
 else
-  enable_opaque_form=no
+  enableval=yes
+       enable_opaque_form=$cf_dft_opaque_curses
+
 fi;
-echo "$as_me:16247: result: $enable_opaque_form" >&5
+echo "$as_me:16315: result: $enable_opaque_form" >&5
 echo "${ECHO_T}$enable_opaque_form" >&6
 
-echo "$as_me:16250: checking if you want opaque menu-library structures" >&5
-echo $ECHO_N "checking if you want opaque menu-library structures... $ECHO_C" >&6
+echo "$as_me:16318: checking whether menu library structures should be opaque" >&5
+echo $ECHO_N "checking whether menu library structures should be opaque... $ECHO_C" >&6
 
 # Check whether --enable-opaque-menu or --disable-opaque-menu was given.
 if test "${enable_opaque_menu+set}" = set; then
   enableval="$enable_opaque_menu"
-  enable_opaque_menu=yes
+  test "$enableval" != no && enableval=yes
+       if test "$enableval" != "yes" ; then
+    enable_opaque_menu=no
+       else
+               enable_opaque_menu=$cf_dft_opaque_curses
+       fi
 else
-  enable_opaque_menu=no
+  enableval=yes
+       enable_opaque_menu=$cf_dft_opaque_curses
+
 fi;
-echo "$as_me:16260: result: $enable_opaque_menu" >&5
+echo "$as_me:16335: result: $enable_opaque_menu" >&5
 echo "${ECHO_T}$enable_opaque_menu" >&6
 
-echo "$as_me:16263: checking if you want opaque panel-library structures" >&5
-echo $ECHO_N "checking if you want opaque panel-library structures... $ECHO_C" >&6
+echo "$as_me:16338: checking whether panel library structures should be opaque" >&5
+echo $ECHO_N "checking whether panel library structures should be opaque... $ECHO_C" >&6
 
 # Check whether --enable-opaque-panel or --disable-opaque-panel was given.
 if test "${enable_opaque_panel+set}" = set; then
   enableval="$enable_opaque_panel"
-  enable_opaque_panel=yes
+  test "$enableval" != no && enableval=yes
+       if test "$enableval" != "yes" ; then
+    enable_opaque_panel=no
+       else
+               enable_opaque_panel=$cf_dft_opaque_curses
+       fi
 else
-  enable_opaque_panel=no
+  enableval=yes
+       enable_opaque_panel=$cf_dft_opaque_curses
+
 fi;
-echo "$as_me:16273: result: $enable_opaque_panel" >&5
+echo "$as_me:16355: result: $enable_opaque_panel" >&5
 echo "${ECHO_T}$enable_opaque_panel" >&6
 
 NCURSES_OPAQUE=0;              test "$enable_opaque_curses" = yes && NCURSES_OPAQUE=1
@@ -16280,7 +16362,7 @@ NCURSES_OPAQUE_PANEL=0; test "$enable_opaque_panel"  = yes && NCURSES_OPAQUE_PAN
 
 ### Allow using a different wrap-prefix
 if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
-       echo "$as_me:16283: checking for prefix used to wrap public variables" >&5
+       echo "$as_me:16365: checking for prefix used to wrap public variables" >&5
 echo $ECHO_N "checking for prefix used to wrap public variables... $ECHO_C" >&6
 
 # Check whether --with-wrap-prefix or --without-wrap-prefix was given.
@@ -16290,7 +16372,7 @@ if test "${with_wrap_prefix+set}" = set; then
 else
   NCURSES_WRAP_PREFIX=_nc_
 fi;
-       echo "$as_me:16293: result: $NCURSES_WRAP_PREFIX" >&5
+       echo "$as_me:16375: result: $NCURSES_WRAP_PREFIX" >&5
 echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6
 else
        NCURSES_WRAP_PREFIX=_nc_
@@ -16303,7 +16385,7 @@ EOF
 ###############################################################################
 # These options are relatively safe to experiment with.
 
-echo "$as_me:16306: checking if you want all development code" >&5
+echo "$as_me:16388: checking if you want all development code" >&5
 echo $ECHO_N "checking if you want all development code... $ECHO_C" >&6
 
 # Check whether --with-develop or --without-develop was given.
@@ -16313,11 +16395,29 @@ if test "${with_develop+set}" = set; then
 else
   with_develop=no
 fi;
-echo "$as_me:16316: result: $with_develop" >&5
+echo "$as_me:16398: result: $with_develop" >&5
 echo "${ECHO_T}$with_develop" >&6
 
+###   use option --enable-check-size to detect screensize with CPR
+echo "$as_me:16402: checking if you want to check screensize of serial terminals" >&5
+echo $ECHO_N "checking if you want to check screensize of serial terminals... $ECHO_C" >&6
+
+# Check whether --enable-check-size or --disable-check-size was given.
+if test "${enable_check_size+set}" = set; then
+  enableval="$enable_check_size"
+
+else
+  enable_check_size=$with_develop
+fi;
+echo "$as_me:16412: result: $enable_check_size" >&5
+echo "${ECHO_T}$enable_check_size" >&6
+test "x$enable_check_size" = xyes &&
+cat >>confdefs.h <<\EOF
+#define USE_CHECK_SIZE 1
+EOF
+
 ###   use option --enable-hard-tabs to turn on use of hard-tabs optimize
-echo "$as_me:16320: checking if you want hard-tabs code" >&5
+echo "$as_me:16420: checking if you want hard-tabs code" >&5
 echo $ECHO_N "checking if you want hard-tabs code... $ECHO_C" >&6
 
 # Check whether --enable-hard-tabs or --disable-hard-tabs was given.
@@ -16327,7 +16427,7 @@ if test "${enable_hard_tabs+set}" = set; then
 else
   enable_hard_tabs=$with_develop
 fi;
-echo "$as_me:16330: result: $enable_hard_tabs" >&5
+echo "$as_me:16430: result: $enable_hard_tabs" >&5
 echo "${ECHO_T}$enable_hard_tabs" >&6
 test "x$enable_hard_tabs" = xyes &&
 cat >>confdefs.h <<\EOF
@@ -16335,7 +16435,7 @@ cat >>confdefs.h <<\EOF
 EOF
 
 ###   use option --enable-xmc-glitch to turn on use of magic-cookie optimize
-echo "$as_me:16338: checking if you want limited support for xmc" >&5
+echo "$as_me:16438: checking if you want limited support for xmc" >&5
 echo $ECHO_N "checking if you want limited support for xmc... $ECHO_C" >&6
 
 # Check whether --enable-xmc-glitch or --disable-xmc-glitch was given.
@@ -16345,7 +16445,7 @@ if test "${enable_xmc_glitch+set}" = set; then
 else
   enable_xmc_glitch=$with_develop
 fi;
-echo "$as_me:16348: result: $enable_xmc_glitch" >&5
+echo "$as_me:16448: result: $enable_xmc_glitch" >&5
 echo "${ECHO_T}$enable_xmc_glitch" >&6
 test "x$enable_xmc_glitch" = xyes &&
 cat >>confdefs.h <<\EOF
@@ -16355,7 +16455,7 @@ EOF
 ###############################################################################
 # These are just experimental, probably should not be in a package:
 
-echo "$as_me:16358: checking if you do not want to assume colors are white-on-black" >&5
+echo "$as_me:16458: checking if you do not want to assume colors are white-on-black" >&5
 echo $ECHO_N "checking if you do not want to assume colors are white-on-black... $ECHO_C" >&6
 
 # Check whether --enable-assumed-color or --disable-assumed-color was given.
@@ -16365,7 +16465,7 @@ if test "${enable_assumed_color+set}" = set; then
 else
   with_assumed_color=yes
 fi;
-echo "$as_me:16368: result: $with_assumed_color" >&5
+echo "$as_me:16468: result: $with_assumed_color" >&5
 echo "${ECHO_T}$with_assumed_color" >&6
 test "x$with_assumed_color" = xyes &&
 cat >>confdefs.h <<\EOF
@@ -16373,7 +16473,7 @@ cat >>confdefs.h <<\EOF
 EOF
 
 ###   use option --enable-hashmap to turn on use of hashmap scrolling logic
-echo "$as_me:16376: checking if you want hashmap scrolling-optimization code" >&5
+echo "$as_me:16476: checking if you want hashmap scrolling-optimization code" >&5
 echo $ECHO_N "checking if you want hashmap scrolling-optimization code... $ECHO_C" >&6
 
 # Check whether --enable-hashmap or --disable-hashmap was given.
@@ -16383,7 +16483,7 @@ if test "${enable_hashmap+set}" = set; then
 else
   with_hashmap=yes
 fi;
-echo "$as_me:16386: result: $with_hashmap" >&5
+echo "$as_me:16486: result: $with_hashmap" >&5
 echo "${ECHO_T}$with_hashmap" >&6
 test "x$with_hashmap" = xyes &&
 cat >>confdefs.h <<\EOF
@@ -16391,7 +16491,7 @@ cat >>confdefs.h <<\EOF
 EOF
 
 ###   use option --enable-colorfgbg to turn on use of $COLORFGBG environment
-echo "$as_me:16394: checking if you want colorfgbg code" >&5
+echo "$as_me:16494: checking if you want colorfgbg code" >&5
 echo $ECHO_N "checking if you want colorfgbg code... $ECHO_C" >&6
 
 # Check whether --enable-colorfgbg or --disable-colorfgbg was given.
@@ -16401,7 +16501,7 @@ if test "${enable_colorfgbg+set}" = set; then
 else
   with_colorfgbg=no
 fi;
-echo "$as_me:16404: result: $with_colorfgbg" >&5
+echo "$as_me:16504: result: $with_colorfgbg" >&5
 echo "${ECHO_T}$with_colorfgbg" >&6
 test "x$with_colorfgbg" = xyes &&
 cat >>confdefs.h <<\EOF
@@ -16409,7 +16509,7 @@ cat >>confdefs.h <<\EOF
 EOF
 
 ###   use option --enable-fvisibility to turn on use of gcc-specific feature
-echo "$as_me:16412: checking if you want to use gcc -fvisibility option" >&5
+echo "$as_me:16512: checking if you want to use gcc -fvisibility option" >&5
 echo $ECHO_N "checking if you want to use gcc -fvisibility option... $ECHO_C" >&6
 
 # Check whether --enable-fvisibility or --disable-fvisibility was given.
@@ -16419,14 +16519,14 @@ if test "${enable_fvisibility+set}" = set; then
 else
   cf_with_fvisibility=no
 fi;
-echo "$as_me:16422: result: $cf_with_fvisibility" >&5
+echo "$as_me:16522: result: $cf_with_fvisibility" >&5
 echo "${ECHO_T}$cf_with_fvisibility" >&6
 
 NCURSES_IMPEXP=
 NCURSES_CXX_IMPEXP=
 if test "x$cf_with_fvisibility" = xyes; then
 
-echo "$as_me:16429: checking if $CC -fvisibility=hidden option works" >&5
+echo "$as_me:16529: checking if $CC -fvisibility=hidden option works" >&5
 echo $ECHO_N "checking if $CC -fvisibility=hidden option works... $ECHO_C" >&6
 if test "${cf_cv_fvisibility_hidden+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16435,7 +16535,7 @@ else
     cf_save_cflags="$CFLAGS"
     CFLAGS="$CFLAGS -fvisibility=hidden"
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 16438 "configure"
+#line 16538 "configure"
 #include "confdefs.h"
 
 __attribute__ ((visibility("default"))) int somefunc() {return 42;}
@@ -16451,16 +16551,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16454: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16554: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16457: \$? = $ac_status" >&5
+  echo "$as_me:16557: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16460: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16560: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16463: \$? = $ac_status" >&5
+  echo "$as_me:16563: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_fvisibility_hidden=yes
 else
@@ -16472,7 +16572,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
     CFLAGS=$cf_save_cflags
 
 fi
-echo "$as_me:16475: result: $cf_cv_fvisibility_hidden" >&5
+echo "$as_me:16575: result: $cf_cv_fvisibility_hidden" >&5
 echo "${ECHO_T}$cf_cv_fvisibility_hidden" >&6
 
        if test "x$cf_cv_fvisibility_hidden" = xyes
@@ -16587,7 +16687,7 @@ ac_link='$CXX -o "conftest$ac_exeext" $CXXFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 ac_main_return="return"
 
-echo "$as_me:16590: checking if $CXX -fvisibility=hidden option works" >&5
+echo "$as_me:16690: checking if $CXX -fvisibility=hidden option works" >&5
 echo $ECHO_N "checking if $CXX -fvisibility=hidden option works... $ECHO_C" >&6
 if test "${cf_cv_fvisibility_hidden2+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16596,7 +16696,7 @@ else
     cf_save_cflags="$CXXFLAGS"
     CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 16599 "configure"
+#line 16699 "configure"
 #include "confdefs.h"
 
 __attribute__ ((visibility("default"))) int somefunc() {return 42;}
@@ -16612,16 +16712,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16615: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16715: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16618: \$? = $ac_status" >&5
+  echo "$as_me:16718: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16621: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16721: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16624: \$? = $ac_status" >&5
+  echo "$as_me:16724: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_fvisibility_hidden2=yes
 else
@@ -16633,7 +16733,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
     CXXFLAGS=$cf_save_cflags
 
 fi
-echo "$as_me:16636: result: $cf_cv_fvisibility_hidden2" >&5
+echo "$as_me:16736: result: $cf_cv_fvisibility_hidden2" >&5
 echo "${ECHO_T}$cf_cv_fvisibility_hidden2" >&6
 
                if test "x$cf_cv_fvisibility_hidden2" = xyes
@@ -16756,7 +16856,7 @@ ac_main_return="return"
 fi
 
 ###   use option --enable-interop to turn on use of bindings used for interop
-echo "$as_me:16759: checking if you want interop bindings" >&5
+echo "$as_me:16859: checking if you want interop bindings" >&5
 echo $ECHO_N "checking if you want interop bindings... $ECHO_C" >&6
 
 # Check whether --enable-interop or --disable-interop was given.
@@ -16766,13 +16866,13 @@ if test "${enable_interop+set}" = set; then
 else
   with_exp_interop=$cf_dft_interop
 fi;
-echo "$as_me:16769: result: $with_exp_interop" >&5
+echo "$as_me:16869: result: $with_exp_interop" >&5
 echo "${ECHO_T}$with_exp_interop" >&6
 
 NCURSES_INTEROP_FUNCS=0
 test "x$with_exp_interop" = xyes && NCURSES_INTEROP_FUNCS=1
 
-echo "$as_me:16775: checking if you want experimental safe-sprintf code" >&5
+echo "$as_me:16875: checking if you want experimental safe-sprintf code" >&5
 echo $ECHO_N "checking if you want experimental safe-sprintf code... $ECHO_C" >&6
 
 # Check whether --enable-safe-sprintf or --disable-safe-sprintf was given.
@@ -16782,13 +16882,13 @@ if test "${enable_safe_sprintf+set}" = set; then
 else
   with_safe_sprintf=no
 fi;
-echo "$as_me:16785: result: $with_safe_sprintf" >&5
+echo "$as_me:16885: result: $with_safe_sprintf" >&5
 echo "${ECHO_T}$with_safe_sprintf" >&6
 
 ###   use option --disable-scroll-hints to turn off use of scroll-hints scrolling logic
 # when hashmap is used scroll hints are useless
 if test "$with_hashmap" = no ; then
-echo "$as_me:16791: checking if you want to experiment without scrolling-hints code" >&5
+echo "$as_me:16891: checking if you want to experiment without scrolling-hints code" >&5
 echo $ECHO_N "checking if you want to experiment without scrolling-hints code... $ECHO_C" >&6
 
 # Check whether --enable-scroll-hints or --disable-scroll-hints was given.
@@ -16798,7 +16898,7 @@ if test "${enable_scroll_hints+set}" = set; then
 else
   with_scroll_hints=yes
 fi;
-echo "$as_me:16801: result: $with_scroll_hints" >&5
+echo "$as_me:16901: result: $with_scroll_hints" >&5
 echo "${ECHO_T}$with_scroll_hints" >&6
 test "x$with_scroll_hints" = xyes &&
 cat >>confdefs.h <<\EOF
@@ -16807,7 +16907,7 @@ EOF
 
 fi
 
-echo "$as_me:16810: checking if you want wgetch-events code" >&5
+echo "$as_me:16910: checking if you want wgetch-events code" >&5
 echo $ECHO_N "checking if you want wgetch-events code... $ECHO_C" >&6
 
 # Check whether --enable-wgetch-events or --disable-wgetch-events was given.
@@ -16817,7 +16917,7 @@ if test "${enable_wgetch_events+set}" = set; then
 else
   with_wgetch_events=no
 fi;
-echo "$as_me:16820: result: $with_wgetch_events" >&5
+echo "$as_me:16920: result: $with_wgetch_events" >&5
 echo "${ECHO_T}$with_wgetch_events" >&6
 if test "x$with_wgetch_events" = xyes ; then
 
@@ -16832,7 +16932,7 @@ fi
 
 case "$cf_cv_system_name" in
 (*mingw32*|*mingw64*|*-msvc*)
-       echo "$as_me:16835: checking if you want experimental-Windows driver" >&5
+       echo "$as_me:16935: checking if you want experimental-Windows driver" >&5
 echo $ECHO_N "checking if you want experimental-Windows driver... $ECHO_C" >&6
 
 # Check whether --enable-exp-win32 or --disable-exp-win32 was given.
@@ -16842,7 +16942,7 @@ if test "${enable_exp_win32+set}" = set; then
 else
   with_exp_win32=no
 fi;
-       echo "$as_me:16845: result: $with_exp_win32" >&5
+       echo "$as_me:16945: result: $with_exp_win32" >&5
 echo "${ECHO_T}$with_exp_win32" >&6
        if test "x$with_exp_win32" = xyes
        then
@@ -16868,7 +16968,7 @@ esac
 
 ###    use option --disable-echo to suppress full display compiling commands
 
-echo "$as_me:16871: checking if you want to see long compiling messages" >&5
+echo "$as_me:16971: checking if you want to see long compiling messages" >&5
 echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6
 
 # Check whether --enable-echo or --disable-echo was given.
@@ -16902,7 +17002,7 @@ else
        ECHO_CC=''
 
 fi;
-echo "$as_me:16905: result: $enableval" >&5
+echo "$as_me:17005: result: $enableval" >&5
 echo "${ECHO_T}$enableval" >&6
 
 if test "x$enable_echo" = xyes; then
@@ -16915,7 +17015,7 @@ fi
 
 # --disable-stripping is used for debugging
 
-echo "$as_me:16918: checking if you want to install stripped executables" >&5
+echo "$as_me:17018: checking if you want to install stripped executables" >&5
 echo $ECHO_N "checking if you want to install stripped executables... $ECHO_C" >&6
 
 # Check whether --enable-stripping or --disable-stripping was given.
@@ -16932,7 +17032,7 @@ else
        enable_stripping=yes
 
 fi;
-echo "$as_me:16935: result: $enable_stripping" >&5
+echo "$as_me:17035: result: $enable_stripping" >&5
 echo "${ECHO_T}$enable_stripping" >&6
 
 if test "$enable_stripping" = yes
@@ -16943,7 +17043,7 @@ else
 fi
 
 : "${INSTALL:=install}"
-echo "$as_me:16946: checking if install accepts -p option" >&5
+echo "$as_me:17046: checking if install accepts -p option" >&5
 echo $ECHO_N "checking if install accepts -p option... $ECHO_C" >&6
 if test "${cf_cv_install_p+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16974,10 +17074,10 @@ else
        rm -rf ./conftest*
 
 fi
-echo "$as_me:16977: result: $cf_cv_install_p" >&5
+echo "$as_me:17077: result: $cf_cv_install_p" >&5
 echo "${ECHO_T}$cf_cv_install_p" >&6
 
-echo "$as_me:16980: checking if install needs to be told about ownership" >&5
+echo "$as_me:17080: checking if install needs to be told about ownership" >&5
 echo $ECHO_N "checking if install needs to be told about ownership... $ECHO_C" >&6
 case `$ac_config_guess` in
 (*minix)
@@ -16988,7 +17088,7 @@ case `$ac_config_guess` in
        ;;
 esac
 
-echo "$as_me:16991: result: $with_install_o" >&5
+echo "$as_me:17091: result: $with_install_o" >&5
 echo "${ECHO_T}$with_install_o" >&6
 if test "x$with_install_o" = xyes
 then
@@ -16997,6 +17097,72 @@ else
        INSTALL_OPT_O=
 fi
 
+if test -n "$INSTALL_OPT_S"
+then
+       echo "$as_me:17102: checking if you want to specify strip-program" >&5
+echo $ECHO_N "checking if you want to specify strip-program... $ECHO_C" >&6
+
+# Check whether --with-strip-program or --without-strip-program was given.
+if test "${with_strip_program+set}" = set; then
+  withval="$with_strip_program"
+  with_strip_program=$withval
+else
+  with_strip_program=no
+fi;
+       echo "$as_me:17112: result: $with_strip_program" >&5
+echo "${ECHO_T}$with_strip_program" >&6
+       if test "$with_strip_program" != no
+       then
+               echo "$as_me:17116: checking if strip-program is supported with this installer" >&5
+echo $ECHO_N "checking if strip-program is supported with this installer... $ECHO_C" >&6
+               cf_install_program=`echo "$INSTALL" | sed -e 's%[ ]*[ ]-.%%'`
+               check_install_strip=no
+               if test -f "$cf_install_program"
+               then
+                       check_install_version=`"$cf_install_program" --version 2>/dev/null | head -n 1 | grep coreutils`
+                       if test -n "$check_install_version"
+                       then
+                               check_install_strip="option"
+                       else
+                               for check_strip_variable in STRIPBIN STRIP
+                               do
+                                       if strings "$cf_install_program" | grep "^$check_strip_variable$" >/dev/null
+                                       then
+                                               check_install_strip="environ"
+                                               break
+                                       fi
+                               done
+                       fi
+               fi
+               echo "$as_me:17137: result: $check_install_strip" >&5
+echo "${ECHO_T}$check_install_strip" >&6
+               case "$check_install_strip" in
+               (no)
+                       { echo "$as_me:17141: WARNING: $cf_install_program does not support strip program option" >&5
+echo "$as_me: WARNING: $cf_install_program does not support strip program option" >&2;}
+                       with_strip_program=no
+                       ;;
+               (environ)
+                       cat >install.tmp <<-CF_EOF
+                       #! $SHELL
+                       STRIPBIN="$with_strip_program" \\
+                       STRIP="$with_strip_program" \\
+                       $INSTALL "$@"
+                       CF_EOF
+                       INSTALL="`pwd`/install.tmp"
+                       chmod +x "$INSTALL"
+                       test -n "$verbose" && echo "    created $INSTALL" 1>&6
+
+echo "${as_me:-configure}:17156: testing created $INSTALL ..." 1>&5
+
+                       ;;
+               (option)
+                       INSTALL_OPT_S="$INSTALL_OPT_S --strip-program=\"$with_strip_program\""
+                       ;;
+               esac
+       fi
+fi
+
 # If we're avoiding relinking of shared libraries during install, that is to
 # avoid modifying the build-tree.  For the same reason, avoid doing ranlib if
 # the install program has "-p" (for preserving timestamps).
@@ -17013,7 +17179,7 @@ fi
 
 ###    use option --enable-warnings to turn on all gcc warnings
 
-echo "$as_me:17016: checking if you want to use C11 _Noreturn feature" >&5
+echo "$as_me:17182: checking if you want to use C11 _Noreturn feature" >&5
 echo $ECHO_N "checking if you want to use C11 _Noreturn feature... $ECHO_C" >&6
 
 # Check whether --enable-stdnoreturn or --disable-stdnoreturn was given.
@@ -17030,21 +17196,20 @@ else
        enable_stdnoreturn=no
 
 fi;
-echo "$as_me:17033: result: $enable_stdnoreturn" >&5
+echo "$as_me:17199: result: $enable_stdnoreturn" >&5
 echo "${ECHO_T}$enable_stdnoreturn" >&6
 
 if test $enable_stdnoreturn = yes; then
-echo "$as_me:17037: checking for C11 _Noreturn feature" >&5
+echo "$as_me:17203: checking for C11 _Noreturn feature" >&5
 echo $ECHO_N "checking for C11 _Noreturn feature... $ECHO_C" >&6
 if test "${cf_cv_c11_noreturn+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17043 "configure"
+#line 17209 "configure"
 #include "confdefs.h"
 
-#include <stdio.h>
-#include <stdlib.h>
+$ac_includes_default
 #include <stdnoreturn.h>
 static _Noreturn void giveup(void) { exit(0); }
 
@@ -17057,16 +17222,16 @@ if (feof(stdin)) giveup()
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:17060: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17225: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17063: \$? = $ac_status" >&5
+  echo "$as_me:17228: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:17066: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17231: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17069: \$? = $ac_status" >&5
+  echo "$as_me:17234: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_c11_noreturn=yes
 else
@@ -17077,7 +17242,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:17080: result: $cf_cv_c11_noreturn" >&5
+echo "$as_me:17245: result: $cf_cv_c11_noreturn" >&5
 echo "${ECHO_T}$cf_cv_c11_noreturn" >&6
 else
        cf_cv_c11_noreturn=no,
@@ -17133,16 +17298,16 @@ then
                then
                        test -n "$verbose" && echo "    repairing CFLAGS: $CFLAGS" 1>&6
 
-echo "${as_me:-configure}:17136: testing repairing CFLAGS: $CFLAGS ..." 1>&5
+echo "${as_me:-configure}:17301: testing repairing CFLAGS: $CFLAGS ..." 1>&5
 
                        CFLAGS="$cf_temp_flags"
                        test -n "$verbose" && echo "    ... fixed $CFLAGS" 1>&6
 
-echo "${as_me:-configure}:17141: testing ... fixed $CFLAGS ..." 1>&5
+echo "${as_me:-configure}:17306: testing ... fixed $CFLAGS ..." 1>&5
 
                        test -n "$verbose" && echo "    ... extra $EXTRA_CFLAGS" 1>&6
 
-echo "${as_me:-configure}:17145: testing ... extra $EXTRA_CFLAGS ..." 1>&5
+echo "${as_me:-configure}:17310: testing ... extra $EXTRA_CFLAGS ..." 1>&5
 
                fi
                ;;
@@ -17181,16 +17346,16 @@ then
                then
                        test -n "$verbose" && echo "    repairing CPPFLAGS: $CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:17184: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:17349: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5
 
                        CPPFLAGS="$cf_temp_flags"
                        test -n "$verbose" && echo "    ... fixed $CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:17189: testing ... fixed $CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:17354: testing ... fixed $CPPFLAGS ..." 1>&5
 
                        test -n "$verbose" && echo "    ... extra $EXTRA_CFLAGS" 1>&6
 
-echo "${as_me:-configure}:17193: testing ... extra $EXTRA_CFLAGS ..." 1>&5
+echo "${as_me:-configure}:17358: testing ... extra $EXTRA_CFLAGS ..." 1>&5
 
                fi
                ;;
@@ -17229,23 +17394,23 @@ then
                then
                        test -n "$verbose" && echo "    repairing LDFLAGS: $LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:17232: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:17397: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5
 
                        LDFLAGS="$cf_temp_flags"
                        test -n "$verbose" && echo "    ... fixed $LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:17237: testing ... fixed $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:17402: testing ... fixed $LDFLAGS ..." 1>&5
 
                        test -n "$verbose" && echo "    ... extra $EXTRA_CFLAGS" 1>&6
 
-echo "${as_me:-configure}:17241: testing ... extra $EXTRA_CFLAGS ..." 1>&5
+echo "${as_me:-configure}:17406: testing ... extra $EXTRA_CFLAGS ..." 1>&5
 
                fi
                ;;
        esac
 fi
 
-echo "$as_me:17248: checking if you want to turn on gcc warnings" >&5
+echo "$as_me:17413: checking if you want to turn on gcc warnings" >&5
 echo $ECHO_N "checking if you want to turn on gcc warnings... $ECHO_C" >&6
 
 # Check whether --enable-warnings or --disable-warnings was given.
@@ -17262,7 +17427,7 @@ else
        enable_warnings=no
 
 fi;
-echo "$as_me:17265: result: $enable_warnings" >&5
+echo "$as_me:17430: result: $enable_warnings" >&5
 echo "${ECHO_T}$enable_warnings" >&6
 if test "$enable_warnings" = "yes"
 then
@@ -17286,7 +17451,7 @@ do
 done
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 17289 "configure"
+#line 17454 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -17301,28 +17466,29 @@ String foo = malloc(1); free((void*)foo)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:17304: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17469: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17307: \$? = $ac_status" >&5
+  echo "$as_me:17472: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:17310: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17475: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17313: \$? = $ac_status" >&5
+  echo "$as_me:17478: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
-echo "$as_me:17316: checking for X11/Xt const-feature" >&5
+echo "$as_me:17481: checking for X11/Xt const-feature" >&5
 echo $ECHO_N "checking for X11/Xt const-feature... $ECHO_C" >&6
 if test "${cf_cv_const_x_string+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 17323 "configure"
+#line 17488 "configure"
 #include "confdefs.h"
 
+#undef  _CONST_X_STRING
 #define _CONST_X_STRING        /* X11R7.8 (perhaps) */
 #undef  XTSTRINGDEFINES        /* X11R5 and later */
 #include <stdlib.h>
@@ -17337,16 +17503,16 @@ String foo = malloc(1); *foo = 0
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:17340: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17506: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17343: \$? = $ac_status" >&5
+  echo "$as_me:17509: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:17346: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17512: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17349: \$? = $ac_status" >&5
+  echo "$as_me:17515: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                        cf_cv_const_x_string=no
@@ -17361,7 +17527,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:17364: result: $cf_cv_const_x_string" >&5
+echo "$as_me:17530: result: $cf_cv_const_x_string" >&5
 echo "${ECHO_T}$cf_cv_const_x_string" >&6
 
 LIBS="$cf_save_LIBS_CF_CONST_X_STRING"
@@ -17390,7 +17556,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
  fi
 cat > "conftest.$ac_ext" <<EOF
-#line 17393 "${as_me:-configure}"
+#line 17559 "${as_me:-configure}"
 int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
 if test "$INTEL_COMPILER" = yes
@@ -17406,7 +17572,7 @@ then
 # remark #981: operands are evaluated in unspecified order
 # warning #279: controlling expression is constant
 
-       { echo "$as_me:17409: checking for $CC warning options..." >&5
+       { echo "$as_me:17575: checking for $CC warning options..." >&5
 echo "$as_me: checking for $CC warning options..." >&6;}
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
@@ -17422,12 +17588,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
                wd981
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo "$as_me:17425: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:17591: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17428: \$? = $ac_status" >&5
+  echo "$as_me:17594: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:17430: result: ... -$cf_opt" >&5
+                       test -n "$verbose" && echo "$as_me:17596: result: ... -$cf_opt" >&5
 echo "${ECHO_T}... -$cf_opt" >&6
                        EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
                fi
@@ -17435,7 +17601,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
        CFLAGS="$cf_save_CFLAGS"
 elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
 then
-       { echo "$as_me:17438: checking for $CC warning options..." >&5
+       { echo "$as_me:17604: checking for $CC warning options..." >&5
 echo "$as_me: checking for $CC warning options..." >&6;}
        cf_save_CFLAGS="$CFLAGS"
        cf_warn_CONST=""
@@ -17458,12 +17624,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
                Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas Wswitch-enum
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo "$as_me:17461: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:17627: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17464: \$? = $ac_status" >&5
+  echo "$as_me:17630: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:17466: result: ... -$cf_opt" >&5
+                       test -n "$verbose" && echo "$as_me:17632: result: ... -$cf_opt" >&5
 echo "${ECHO_T}... -$cf_opt" >&6
                        case "$cf_opt" in
                        (Winline)
@@ -17471,7 +17637,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
                                ([34].*)
                                        test -n "$verbose" && echo "    feature is broken in gcc $GCC_VERSION" 1>&6
 
-echo "${as_me:-configure}:17474: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:17640: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
 
                                        continue;;
                                esac
@@ -17481,7 +17647,7 @@ echo "${as_me:-configure}:17474: testing feature is broken in gcc $GCC_VERSION .
                                ([12].*)
                                        test -n "$verbose" && echo "    feature is broken in gcc $GCC_VERSION" 1>&6
 
-echo "${as_me:-configure}:17484: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:17650: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
 
                                        continue;;
                                esac
@@ -17514,10 +17680,10 @@ cat > conftest.i <<EOF
 EOF
 if test "$GCC" = yes
 then
-       { echo "$as_me:17517: checking for $CC __attribute__ directives..." >&5
+       { echo "$as_me:17683: checking for $CC __attribute__ directives..." >&5
 echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
 cat > "conftest.$ac_ext" <<EOF
-#line 17520 "${as_me:-configure}"
+#line 17686 "${as_me:-configure}"
 #include <stdio.h>
 #include "confdefs.h"
 #include "conftest.h"
@@ -17567,12 +17733,12 @@ EOF
                        ;;
                esac
 
-               if { (eval echo "$as_me:17570: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:17736: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17573: \$? = $ac_status" >&5
+  echo "$as_me:17739: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:17575: result: ... $cf_attribute" >&5
+                       test -n "$verbose" && echo "$as_me:17741: result: ... $cf_attribute" >&5
 echo "${ECHO_T}... $cf_attribute" >&6
                        cat conftest.h >>confdefs.h
                        case "$cf_attribute" in
@@ -17644,12 +17810,12 @@ INTEL_CPLUSPLUS=no
 if test "$GCC" = yes ; then
        case "$host_os" in
        (linux*|gnu*)
-               echo "$as_me:17647: checking if this is really Intel C++ compiler" >&5
+               echo "$as_me:17813: checking if this is really Intel C++ compiler" >&5
 echo $ECHO_N "checking if this is really Intel C++ compiler... $ECHO_C" >&6
                cf_save_CFLAGS="$CXXFLAGS"
                CXXFLAGS="$CXXFLAGS -no-gcc"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 17652 "configure"
+#line 17818 "configure"
 #include "confdefs.h"
 
 int
@@ -17658,7 +17824,7 @@ main (void)
 
 #ifdef __INTEL_COMPILER
 #else
-make an error
+#error __INTEL_COMPILER is not defined
 #endif
 
   ;
@@ -17666,16 +17832,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:17669: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17835: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17672: \$? = $ac_status" >&5
+  echo "$as_me:17838: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:17675: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17841: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17678: \$? = $ac_status" >&5
+  echo "$as_me:17844: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   INTEL_CPLUSPLUS=yes
 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
@@ -17686,7 +17852,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CXXFLAGS="$cf_save_CFLAGS"
-               echo "$as_me:17689: result: $INTEL_CPLUSPLUS" >&5
+               echo "$as_me:17855: result: $INTEL_CPLUSPLUS" >&5
 echo "${ECHO_T}$INTEL_CPLUSPLUS" >&6
                ;;
        esac
 CLANG_CPLUSPLUS=no
 
 if test "$GCC" = yes ; then
-       echo "$as_me:17698: checking if this is really Clang C++ compiler" >&5
+       echo "$as_me:17864: checking if this is really Clang C++ compiler" >&5
 echo $ECHO_N "checking if this is really Clang C++ compiler... $ECHO_C" >&6
        cf_save_CFLAGS="$CXXFLAGS"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 17702 "configure"
+#line 17868 "configure"
 #include "confdefs.h"
 
 int
@@ -17708,7 +17874,7 @@ main (void)
 
 #ifdef __clang__
 #else
-make an error
+#error __clang__ is not defined
 #endif
 
   ;
@@ -17716,16 +17882,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:17719: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17885: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17722: \$? = $ac_status" >&5
+  echo "$as_me:17888: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:17725: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17891: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17728: \$? = $ac_status" >&5
+  echo "$as_me:17894: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   CLANG_CPLUSPLUS=yes
 
@@ -17735,7 +17901,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        CXXFLAGS="$cf_save_CFLAGS"
-       echo "$as_me:17738: result: $CLANG_CPLUSPLUS" >&5
+       echo "$as_me:17904: result: $CLANG_CPLUSPLUS" >&5
 echo "${ECHO_T}$CLANG_CPLUSPLUS" >&6
 fi
 
@@ -17744,30 +17910,30 @@ CLANG_VERSION=none
 if test "x$CLANG_CPLUSPLUS" = "xyes" ; then
        case "$CC" in
        (c[1-9][0-9]|*/c[1-9][0-9])
-               { echo "$as_me:17747: WARNING: replacing broken compiler alias $CC" >&5
+               { echo "$as_me:17913: WARNING: replacing broken compiler alias $CC" >&5
 echo "$as_me: WARNING: replacing broken compiler alias $CC" >&2;}
                CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
                CC=clang
                ;;
        esac
 
-       echo "$as_me:17754: checking version of $CC" >&5
+       echo "$as_me:17920: checking version of $CC" >&5
 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
        CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
        test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
-       echo "$as_me:17758: result: $CLANG_VERSION" >&5
+       echo "$as_me:17924: result: $CLANG_VERSION" >&5
 echo "${ECHO_T}$CLANG_VERSION" >&6
 
        for cf_clang_opt in \
                -Qunused-arguments \
                -Wno-error=implicit-function-declaration
        do
-               echo "$as_me:17765: checking if option $cf_clang_opt works" >&5
+               echo "$as_me:17931: checking if option $cf_clang_opt works" >&5
 echo $ECHO_N "checking if option $cf_clang_opt works... $ECHO_C" >&6
                cf_save_CFLAGS="$CFLAGS"
                CFLAGS="$CFLAGS $cf_clang_opt"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 17770 "configure"
+#line 17936 "configure"
 #include "confdefs.h"
 
                        #include <stdio.h>
@@ -17781,16 +17947,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17784: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17950: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17787: \$? = $ac_status" >&5
+  echo "$as_me:17953: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:17790: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17956: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17793: \$? = $ac_status" >&5
+  echo "$as_me:17959: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                        cf_clang_optok=yes
@@ -17801,13 +17967,13 @@ cat "conftest.$ac_ext" >&5
                        cf_clang_optok=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:17804: result: $cf_clang_optok" >&5
+               echo "$as_me:17970: result: $cf_clang_optok" >&5
 echo "${ECHO_T}$cf_clang_optok" >&6
                CFLAGS="$cf_save_CFLAGS"
                if test "$cf_clang_optok" = yes; then
                        test -n "$verbose" && echo "    adding option $cf_clang_opt" 1>&6
 
-echo "${as_me:-configure}:17810: testing adding option $cf_clang_opt ..." 1>&5
+echo "${as_me:-configure}:17976: testing adding option $cf_clang_opt ..." 1>&5
 
        test -n "$CFLAGS" && CFLAGS="$CFLAGS "
        CFLAGS="${CFLAGS}$cf_clang_opt"
@@ -17824,7 +17990,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 ac_main_return="return"
 
 cat > conftest.$ac_ext <<EOF
-#line 17827 "configure"
+#line 17993 "configure"
 int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
 
@@ -17842,7 +18008,7 @@ then
 # remark #981: operands are evaluated in unspecified order
 # warning #269: invalid format string conversion
 
-       { echo "$as_me:17845: checking for $CC warning options..." >&5
+       { echo "$as_me:18011: checking for $CC warning options..." >&5
 echo "$as_me: checking for $CC warning options..." >&6;}
        cf_save_CXXFLAGS="$CXXFLAGS"
        EXTRA_CXXFLAGS="-Wall"
@@ -17859,12 +18025,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
                wd981
        do
                CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt"
-               if { (eval echo "$as_me:17862: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:18028: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17865: \$? = $ac_status" >&5
+  echo "$as_me:18031: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:17867: result: ... -$cf_opt" >&5
+                       test -n "$verbose" && echo "$as_me:18033: result: ... -$cf_opt" >&5
 echo "${ECHO_T}... -$cf_opt" >&6
                        EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
                fi
@@ -17873,7 +18039,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
 
 elif test "$GXX" = yes
 then
-       { echo "$as_me:17876: checking for $CXX warning options..." >&5
+       { echo "$as_me:18042: checking for $CXX warning options..." >&5
 echo "$as_me: checking for $CXX warning options..." >&6;}
        cf_save_CXXFLAGS="$CXXFLAGS"
        EXTRA_CXXFLAGS="-W -Wall"
@@ -17903,16 +18069,16 @@ echo "$as_me: checking for $CXX warning options..." >&6;}
                Wundef $cf_gxx_extra_warnings Wno-unused
        do
                CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt"
-               if { (eval echo "$as_me:17906: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:18072: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17909: \$? = $ac_status" >&5
+  echo "$as_me:18075: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:17911: result: ... -$cf_opt" >&5
+                       test -n "$verbose" && echo "$as_me:18077: result: ... -$cf_opt" >&5
 echo "${ECHO_T}... -$cf_opt" >&6
                        EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
                else
-                       test -n "$verbose" && echo "$as_me:17915: result: ... no -$cf_opt" >&5
+                       test -n "$verbose" && echo "$as_me:18081: result: ... no -$cf_opt" >&5
 echo "${ECHO_T}... no -$cf_opt" >&6
                fi
        done
@@ -17930,7 +18096,7 @@ ac_main_return="return"
        fi
 fi
 
-echo "$as_me:17933: checking if you want to work around bogus compiler/loader warnings" >&5
+echo "$as_me:18099: checking if you want to work around bogus compiler/loader warnings" >&5
 echo $ECHO_N "checking if you want to work around bogus compiler/loader warnings... $ECHO_C" >&6
 
 # Check whether --enable-string-hacks or --disable-string-hacks was given.
@@ -17940,7 +18106,7 @@ if test "${enable_string_hacks+set}" = set; then
 else
   enable_string_hacks=no
 fi;
-echo "$as_me:17943: result: $enable_string_hacks" >&5
+echo "$as_me:18109: result: $enable_string_hacks" >&5
 echo "${ECHO_T}$enable_string_hacks" >&6
 
 if test "x$enable_string_hacks" = "xyes"; then
@@ -17949,15 +18115,15 @@ cat >>confdefs.h <<\EOF
 #define USE_STRING_HACKS 1
 EOF
 
-       { echo "$as_me:17952: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&5
+       { echo "$as_me:18118: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&5
 echo "$as_me: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&2;}
-       echo "$as_me:17954: checking for strlcat" >&5
+       echo "$as_me:18120: checking for strlcat" >&5
 echo $ECHO_N "checking for strlcat... $ECHO_C" >&6
 if test "${ac_cv_func_strlcat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17960 "configure"
+#line 18126 "configure"
 #include "confdefs.h"
 #define strlcat autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -17988,16 +18154,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17991: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18157: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17994: \$? = $ac_status" >&5
+  echo "$as_me:18160: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:17997: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18163: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18000: \$? = $ac_status" >&5
+  echo "$as_me:18166: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_strlcat=yes
 else
@@ -18007,7 +18173,7 @@ ac_cv_func_strlcat=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:18010: result: $ac_cv_func_strlcat" >&5
+echo "$as_me:18176: result: $ac_cv_func_strlcat" >&5
 echo "${ECHO_T}$ac_cv_func_strlcat" >&6
 if test "$ac_cv_func_strlcat" = yes; then
 
@@ -18017,7 +18183,7 @@ EOF
 
 else
 
-               echo "$as_me:18020: checking for strlcat in -lbsd" >&5
+               echo "$as_me:18186: checking for strlcat in -lbsd" >&5
 echo $ECHO_N "checking for strlcat in -lbsd... $ECHO_C" >&6
 if test "${ac_cv_lib_bsd_strlcat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -18025,7 +18191,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 18028 "configure"
+#line 18194 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -18034,7 +18200,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char strlcat ();
+char strlcat (void);
 int
 main (void)
 {
@@ -18044,16 +18210,16 @@ strlcat ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:18047: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18213: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:18050: \$? = $ac_status" >&5
+  echo "$as_me:18216: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:18053: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18219: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18056: \$? = $ac_status" >&5
+  echo "$as_me:18222: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_bsd_strlcat=yes
 else
@@ -18064,7 +18230,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:18067: result: $ac_cv_lib_bsd_strlcat" >&5
+echo "$as_me:18233: result: $ac_cv_lib_bsd_strlcat" >&5
 echo "${ECHO_T}$ac_cv_lib_bsd_strlcat" >&6
 if test "$ac_cv_lib_bsd_strlcat" = yes; then
 
@@ -18087,23 +18253,23 @@ LIBS="$cf_add_libs"
 for ac_header in bsd/string.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:18090: checking for $ac_header" >&5
+echo "$as_me:18256: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 18096 "configure"
+#line 18262 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:18100: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:18266: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:18106: \$? = $ac_status" >&5
+  echo "$as_me:18272: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -18122,7 +18288,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:18125: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:18291: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
 for ac_func in strlcpy snprintf
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:18146: checking for $ac_func" >&5
+echo "$as_me:18312: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 18152 "configure"
+#line 18318 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -18180,16 +18346,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:18183: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18349: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:18186: \$? = $ac_status" >&5
+  echo "$as_me:18352: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:18189: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18355: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18192: \$? = $ac_status" >&5
+  echo "$as_me:18358: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -18199,7 +18365,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:18202: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:18368: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -18212,7 +18378,7 @@ done
 fi
 
 ###    use option --enable-assertions to turn on generation of assertion code
-echo "$as_me:18215: checking if you want to enable runtime assertions" >&5
+echo "$as_me:18381: checking if you want to enable runtime assertions" >&5
 echo $ECHO_N "checking if you want to enable runtime assertions... $ECHO_C" >&6
 
 # Check whether --enable-assertions or --disable-assertions was given.
@@ -18222,7 +18388,7 @@ if test "${enable_assertions+set}" = set; then
 else
   with_assertions=no
 fi;
-echo "$as_me:18225: result: $with_assertions" >&5
+echo "$as_me:18391: result: $with_assertions" >&5
 echo "${ECHO_T}$with_assertions" >&6
 if test -n "$GCC"
 then
@@ -18238,7 +18404,7 @@ fi
 
 ###    use option --disable-leaks to suppress "permanent" leaks, for testing
 
-echo "$as_me:18241: checking if you want to use dmalloc for testing" >&5
+echo "$as_me:18407: checking if you want to use dmalloc for testing" >&5
 echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" >&6
 
 # Check whether --with-dmalloc or --without-dmalloc was given.
@@ -18260,7 +18426,7 @@ EOF
 else
   with_dmalloc=
 fi;
-echo "$as_me:18263: result: ${with_dmalloc:-no}" >&5
+echo "$as_me:18429: result: ${with_dmalloc:-no}" >&5
 echo "${ECHO_T}${with_dmalloc:-no}" >&6
 
 case ".$with_cflags" in
 esac
 
 if test "$with_dmalloc" = yes ; then
-       echo "$as_me:18377: checking for dmalloc.h" >&5
+       echo "$as_me:18543: checking for dmalloc.h" >&5
 echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6
 if test "${ac_cv_header_dmalloc_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 18383 "configure"
+#line 18549 "configure"
 #include "confdefs.h"
 #include <dmalloc.h>
 _ACEOF
-if { (eval echo "$as_me:18387: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:18553: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:18393: \$? = $ac_status" >&5
+  echo "$as_me:18559: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -18409,11 +18575,11 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:18412: result: $ac_cv_header_dmalloc_h" >&5
+echo "$as_me:18578: result: $ac_cv_header_dmalloc_h" >&5
 echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6
 if test "$ac_cv_header_dmalloc_h" = yes; then
 
-echo "$as_me:18416: checking for dmalloc_debug in -ldmalloc" >&5
+echo "$as_me:18582: checking for dmalloc_debug in -ldmalloc" >&5
 echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6
 if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -18421,7 +18587,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldmalloc  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 18424 "configure"
+#line 18590 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -18430,7 +18596,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char dmalloc_debug ();
+char dmalloc_debug (void);
 int
 main (void)
 {
@@ -18440,16 +18606,16 @@ dmalloc_debug ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:18443: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18609: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:18446: \$? = $ac_status" >&5
+  echo "$as_me:18612: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:18449: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18615: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18452: \$? = $ac_status" >&5
+  echo "$as_me:18618: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dmalloc_dmalloc_debug=yes
 else
@@ -18460,7 +18626,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:18463: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
+echo "$as_me:18629: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
 echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6
 if test "$ac_cv_lib_dmalloc_dmalloc_debug" = yes; then
   cat >>confdefs.h <<EOF
@@ -18475,7 +18641,7 @@ fi
 
 fi
 
-echo "$as_me:18478: checking if you want to use dbmalloc for testing" >&5
+echo "$as_me:18644: checking if you want to use dbmalloc for testing" >&5
 echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C" >&6
 
 # Check whether --with-dbmalloc or --without-dbmalloc was given.
@@ -18497,7 +18663,7 @@ EOF
 else
   with_dbmalloc=
 fi;
-echo "$as_me:18500: result: ${with_dbmalloc:-no}" >&5
+echo "$as_me:18666: result: ${with_dbmalloc:-no}" >&5
 echo "${ECHO_T}${with_dbmalloc:-no}" >&6
 
 case ".$with_cflags" in
 esac
 
 if test "$with_dbmalloc" = yes ; then
-       echo "$as_me:18614: checking for dbmalloc.h" >&5
+       echo "$as_me:18780: checking for dbmalloc.h" >&5
 echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6
 if test "${ac_cv_header_dbmalloc_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 18620 "configure"
+#line 18786 "configure"
 #include "confdefs.h"
 #include <dbmalloc.h>
 _ACEOF
-if { (eval echo "$as_me:18624: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:18790: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:18630: \$? = $ac_status" >&5
+  echo "$as_me:18796: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -18646,11 +18812,11 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:18649: result: $ac_cv_header_dbmalloc_h" >&5
+echo "$as_me:18815: result: $ac_cv_header_dbmalloc_h" >&5
 echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6
 if test "$ac_cv_header_dbmalloc_h" = yes; then
 
-echo "$as_me:18653: checking for debug_malloc in -ldbmalloc" >&5
+echo "$as_me:18819: checking for debug_malloc in -ldbmalloc" >&5
 echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6
 if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -18658,7 +18824,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldbmalloc  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 18661 "configure"
+#line 18827 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -18667,7 +18833,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char debug_malloc ();
+char debug_malloc (void);
 int
 main (void)
 {
@@ -18677,16 +18843,16 @@ debug_malloc ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:18680: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18846: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:18683: \$? = $ac_status" >&5
+  echo "$as_me:18849: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:18686: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18852: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18689: \$? = $ac_status" >&5
+  echo "$as_me:18855: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dbmalloc_debug_malloc=yes
 else
@@ -18697,7 +18863,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:18700: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
+echo "$as_me:18866: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
 echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6
 if test "$ac_cv_lib_dbmalloc_debug_malloc" = yes; then
   cat >>confdefs.h <<EOF
@@ -18712,7 +18878,7 @@ fi
 
 fi
 
-echo "$as_me:18715: checking if you want to use valgrind for testing" >&5
+echo "$as_me:18881: checking if you want to use valgrind for testing" >&5
 echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C" >&6
 
 # Check whether --with-valgrind or --without-valgrind was given.
@@ -18734,7 +18900,7 @@ EOF
 else
   with_valgrind=
 fi;
-echo "$as_me:18737: result: ${with_valgrind:-no}" >&5
+echo "$as_me:18903: result: ${with_valgrind:-no}" >&5
 echo "${ECHO_T}${with_valgrind:-no}" >&6
 
 case ".$with_cflags" in
@@ -18847,7 +19013,7 @@ fi
        ;;
 esac
 
-echo "$as_me:18850: checking if you want to perform memory-leak testing" >&5
+echo "$as_me:19016: checking if you want to perform memory-leak testing" >&5
 echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO_C" >&6
 
 # Check whether --enable-leaks or --disable-leaks was given.
@@ -18858,7 +19024,7 @@ else
   enable_leaks=yes
 fi;
 if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi
-echo "$as_me:18861: result: $with_no_leaks" >&5
+echo "$as_me:19027: result: $with_no_leaks" >&5
 echo "${ECHO_T}$with_no_leaks" >&6
 
 if test "$enable_leaks" = no ; then
@@ -18910,7 +19076,7 @@ case "$CFLAGS $CPPFLAGS" in
        ;;
 esac
 
-echo "$as_me:18913: checking whether to add trace feature to all models" >&5
+echo "$as_me:19079: checking whether to add trace feature to all models" >&5
 echo $ECHO_N "checking whether to add trace feature to all models... $ECHO_C" >&6
 
 # Check whether --with-trace or --without-trace was given.
@@ -18920,7 +19086,7 @@ if test "${with_trace+set}" = set; then
 else
   cf_with_trace=$cf_all_traces
 fi;
-echo "$as_me:18923: result: $cf_with_trace" >&5
+echo "$as_me:19089: result: $cf_with_trace" >&5
 echo "${ECHO_T}$cf_with_trace" >&6
 
 if test "x$cf_with_trace" = xyes ; then
@@ -19034,7 +19200,7 @@ else
        ADA_TRACE=FALSE
 fi
 
-echo "$as_me:19037: checking if we want to use GNAT projects" >&5
+echo "$as_me:19203: checking if we want to use GNAT projects" >&5
 echo $ECHO_N "checking if we want to use GNAT projects... $ECHO_C" >&6
 
 # Check whether --enable-gnat-projects or --disable-gnat-projects was given.
@@ -19051,7 +19217,7 @@ else
        enable_gnat_projects=yes
 
 fi;
-echo "$as_me:19054: result: $enable_gnat_projects" >&5
+echo "$as_me:19220: result: $enable_gnat_projects" >&5
 echo "${ECHO_T}$enable_gnat_projects" >&6
 
 ###    Checks for libraries.
@@ -19064,14 +19230,14 @@ case "$cf_cv_system_name" in
                CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN"
        fi
 
-echo "$as_me:19067: checking if ssp library is needed" >&5
+echo "$as_me:19233: checking if ssp library is needed" >&5
 echo $ECHO_N "checking if ssp library is needed... $ECHO_C" >&6
 if test "${cf_cv_need_libssp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19074 "configure"
+#line 19240 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -19088,16 +19254,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19091: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19257: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19094: \$? = $ac_status" >&5
+  echo "$as_me:19260: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19097: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19263: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19100: \$? = $ac_status" >&5
+  echo "$as_me:19266: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_need_libssp=no
 else
@@ -19107,7 +19273,7 @@ cat "conftest.$ac_ext" >&5
        cf_save_LIBS="$LIBS"
        LIBS="$LIBS -lssp"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 19110 "configure"
+#line 19276 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -19124,16 +19290,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19127: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19293: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19130: \$? = $ac_status" >&5
+  echo "$as_me:19296: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19133: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19299: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19136: \$? = $ac_status" >&5
+  echo "$as_me:19302: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_need_libssp=yes
 else
@@ -19147,7 +19313,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:19150: result: $cf_cv_need_libssp" >&5
+echo "$as_me:19316: result: $cf_cv_need_libssp" >&5
 echo "${ECHO_T}$cf_cv_need_libssp" >&6
 
 if test "x$cf_cv_need_libssp" = xyes
 
        ;;
 (*)
-echo "$as_me:19176: checking for gettimeofday" >&5
-echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6
-if test "${ac_cv_func_gettimeofday+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 19182 "configure"
-#include "confdefs.h"
-#define gettimeofday autoconf_temporary
-#include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
-#undef gettimeofday
-
-#ifdef __cplusplus
-extern "C"
-#endif
-
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char gettimeofday (void);
-
-int
-main (void)
-{
-
-/* The GNU C library defines stubs for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday)
-#error found stub for gettimeofday
-#endif
-
-       return gettimeofday ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19213: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:19216: \$? = $ac_status" >&5
-  (exit "$ac_status"); } &&
-         { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19219: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:19222: \$? = $ac_status" >&5
-  (exit "$ac_status"); }; }; then
-  ac_cv_func_gettimeofday=yes
-else
-  echo "$as_me: failed program was:" >&5
-cat "conftest.$ac_ext" >&5
-ac_cv_func_gettimeofday=no
-fi
-rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-fi
-echo "$as_me:19232: result: $ac_cv_func_gettimeofday" >&5
-echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6
-if test "$ac_cv_func_gettimeofday" = yes; then
-
-cat >>confdefs.h <<\EOF
-#define HAVE_GETTIMEOFDAY 1
-EOF
-
-else
-
-echo "$as_me:19242: checking for gettimeofday in -lbsd" >&5
-echo $ECHO_N "checking for gettimeofday in -lbsd... $ECHO_C" >&6
-if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbsd  $LIBS"
-cat >"conftest.$ac_ext" <<_ACEOF
-#line 19250 "configure"
-#include "confdefs.h"
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char gettimeofday ();
-int
-main (void)
-{
-gettimeofday ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19269: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:19272: \$? = $ac_status" >&5
-  (exit "$ac_status"); } &&
-         { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19275: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:19278: \$? = $ac_status" >&5
-  (exit "$ac_status"); }; }; then
-  ac_cv_lib_bsd_gettimeofday=yes
-else
-  echo "$as_me: failed program was:" >&5
-cat "conftest.$ac_ext" >&5
-ac_cv_lib_bsd_gettimeofday=no
-fi
-rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:19289: result: $ac_cv_lib_bsd_gettimeofday" >&5
-echo "${ECHO_T}$ac_cv_lib_bsd_gettimeofday" >&6
-if test "$ac_cv_lib_bsd_gettimeofday" = yes; then
-
-cat >>confdefs.h <<\EOF
-#define HAVE_GETTIMEOFDAY 1
-EOF
-
-cf_add_libs="$LIBS"
-# reverse order
-cf_add_0lib=
-for cf_add_1lib in -lbsd; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
-# filter duplicates
-for cf_add_1lib in $cf_add_0lib; do
-       for cf_add_2lib in $cf_add_libs; do
-               if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
-                       cf_add_1lib=
-                       break
-               fi
-       done
-       test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
-done
-LIBS="$cf_add_libs"
-
-fi
-
-fi
        ;;
 esac
 
-echo "$as_me:19319: checking if -lm needed for math functions" >&5
+echo "$as_me:19345: checking if -lm needed for math functions" >&5
 echo $ECHO_N "checking if -lm needed for math functions... $ECHO_C" >&6
 if test "${cf_cv_need_libm+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 19326 "configure"
+#line 19352 "configure"
 #include "confdefs.h"
 
                #include <stdio.h>
@@ -19339,16 +19365,16 @@ double x = rand(); printf("result = %g\\n", pow(sin(x),x))
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19342: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19368: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19345: \$? = $ac_status" >&5
+  echo "$as_me:19371: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19348: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19374: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19351: \$? = $ac_status" >&5
+  echo "$as_me:19377: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_need_libm=no
 else
@@ -19358,7 +19384,7 @@ cf_cv_need_libm=yes
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:19361: result: $cf_cv_need_libm" >&5
+echo "$as_me:19387: result: $cf_cv_need_libm" >&5
 echo "${ECHO_T}$cf_cv_need_libm" >&6
 
 if test "$cf_cv_need_libm" = yes
@@ -19366,14 +19392,14 @@ then
 
        cf_save_LIBS="$LIBS"
        LIBS="$LIBS -lm"
-       echo "$as_me:19369: checking if -lm is available for math functions" >&5
+       echo "$as_me:19395: checking if -lm is available for math functions" >&5
 echo $ECHO_N "checking if -lm is available for math functions... $ECHO_C" >&6
 if test "${cf_cv_have_libm+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 19376 "configure"
+#line 19402 "configure"
 #include "confdefs.h"
 
                #include <stdio.h>
@@ -19389,16 +19415,16 @@ double x = rand(); printf("result = %g\\n", pow(sin(x),x))
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19392: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19418: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19395: \$? = $ac_status" >&5
+  echo "$as_me:19421: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19398: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19424: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19401: \$? = $ac_status" >&5
+  echo "$as_me:19427: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have_libm=yes
 else
@@ -19408,7 +19434,7 @@ cf_cv_have_libm=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:19411: result: $cf_cv_have_libm" >&5
+echo "$as_me:19437: result: $cf_cv_have_libm" >&5
 echo "${ECHO_T}$cf_cv_have_libm" >&6
        LIBS="$cf_save_LIBS"
 
@@ -19430,13 +19456,13 @@ EOF
 fi
 
 ###    Checks for header files.
-echo "$as_me:19433: checking whether time.h and sys/time.h may both be included" >&5
+echo "$as_me:19459: checking whether time.h and sys/time.h may both be included" >&5
 echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
 if test "${ac_cv_header_time+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 19439 "configure"
+#line 19465 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -19452,16 +19478,16 @@ return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:19455: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19481: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:19458: \$? = $ac_status" >&5
+  echo "$as_me:19484: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:19461: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19487: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19464: \$? = $ac_status" >&5
+  echo "$as_me:19490: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_header_time=yes
 else
@@ -19471,7 +19497,7 @@ ac_cv_header_time=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:19474: result: $ac_cv_header_time" >&5
+echo "$as_me:19500: result: $ac_cv_header_time" >&5
 echo "${ECHO_T}$ac_cv_header_time" >&6
 if test $ac_cv_header_time = yes; then
 
@@ -19486,7 +19512,7 @@ cf_regex_libs=
 case "$host_os" in
 (mingw*)
        # -lsystre -ltre -lintl -liconv
-       echo "$as_me:19489: checking for regcomp in -lsystre" >&5
+       echo "$as_me:19515: checking for regcomp in -lsystre" >&5
 echo $ECHO_N "checking for regcomp in -lsystre... $ECHO_C" >&6
 if test "${ac_cv_lib_systre_regcomp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19494,7 +19520,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsystre  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19497 "configure"
+#line 19523 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -19503,7 +19529,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char regcomp ();
+char regcomp (void);
 int
 main (void)
 {
@@ -19513,16 +19539,16 @@ regcomp ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19516: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19542: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19519: \$? = $ac_status" >&5
+  echo "$as_me:19545: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19522: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19548: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19525: \$? = $ac_status" >&5
+  echo "$as_me:19551: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_systre_regcomp=yes
 else
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:19536: result: $ac_cv_lib_systre_regcomp" >&5
+echo "$as_me:19562: result: $ac_cv_lib_systre_regcomp" >&5
 echo "${ECHO_T}$ac_cv_lib_systre_regcomp" >&6
 if test "$ac_cv_lib_systre_regcomp" = yes; then
 
-               echo "$as_me:19540: checking for libiconv_open in -liconv" >&5
+               echo "$as_me:19566: checking for libiconv_open in -liconv" >&5
 echo $ECHO_N "checking for libiconv_open in -liconv... $ECHO_C" >&6
 if test "${ac_cv_lib_iconv_libiconv_open+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19545,7 +19571,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-liconv  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19548 "configure"
+#line 19574 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -19554,7 +19580,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char libiconv_open ();
+char libiconv_open (void);
 int
 main (void)
 {
@@ -19564,16 +19590,16 @@ libiconv_open ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19567: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19593: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19570: \$? = $ac_status" >&5
+  echo "$as_me:19596: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19573: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19599: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19576: \$? = $ac_status" >&5
+  echo "$as_me:19602: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_iconv_libiconv_open=yes
 else
@@ -19584,7 +19610,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:19587: result: $ac_cv_lib_iconv_libiconv_open" >&5
+echo "$as_me:19613: result: $ac_cv_lib_iconv_libiconv_open" >&5
 echo "${ECHO_T}$ac_cv_lib_iconv_libiconv_open" >&6
 if test "$ac_cv_lib_iconv_libiconv_open" = yes; then
 
@@ -19606,7 +19632,7 @@ LIBS="$cf_add_libs"
 
 fi
 
-               echo "$as_me:19609: checking for libintl_gettext in -lintl" >&5
+               echo "$as_me:19635: checking for libintl_gettext in -lintl" >&5
 echo $ECHO_N "checking for libintl_gettext in -lintl... $ECHO_C" >&6
 if test "${ac_cv_lib_intl_libintl_gettext+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19614,7 +19640,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lintl  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19617 "configure"
+#line 19643 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -19623,7 +19649,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char libintl_gettext ();
+char libintl_gettext (void);
 int
 main (void)
 {
@@ -19633,16 +19659,16 @@ libintl_gettext ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19636: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19662: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19639: \$? = $ac_status" >&5
+  echo "$as_me:19665: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19642: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19668: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19645: \$? = $ac_status" >&5
+  echo "$as_me:19671: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_intl_libintl_gettext=yes
 else
@@ -19653,7 +19679,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:19656: result: $ac_cv_lib_intl_libintl_gettext" >&5
+echo "$as_me:19682: result: $ac_cv_lib_intl_libintl_gettext" >&5
 echo "${ECHO_T}$ac_cv_lib_intl_libintl_gettext" >&6
 if test "$ac_cv_lib_intl_libintl_gettext" = yes; then
 
@@ -19675,7 +19701,7 @@ LIBS="$cf_add_libs"
 
 fi
 
-               echo "$as_me:19678: checking for tre_regcomp in -ltre" >&5
+               echo "$as_me:19704: checking for tre_regcomp in -ltre" >&5
 echo $ECHO_N "checking for tre_regcomp in -ltre... $ECHO_C" >&6
 if test "${ac_cv_lib_tre_tre_regcomp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19683,7 +19709,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ltre  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19686 "configure"
+#line 19712 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -19692,7 +19718,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char tre_regcomp ();
+char tre_regcomp (void);
 int
 main (void)
 {
@@ -19702,16 +19728,16 @@ tre_regcomp ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19705: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19731: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19708: \$? = $ac_status" >&5
+  echo "$as_me:19734: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19711: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19737: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19714: \$? = $ac_status" >&5
+  echo "$as_me:19740: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_tre_tre_regcomp=yes
 else
@@ -19722,7 +19748,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:19725: result: $ac_cv_lib_tre_tre_regcomp" >&5
+echo "$as_me:19751: result: $ac_cv_lib_tre_tre_regcomp" >&5
 echo "${ECHO_T}$ac_cv_lib_tre_tre_regcomp" >&6
 if test "$ac_cv_lib_tre_tre_regcomp" = yes; then
 
@@ -19764,7 +19790,7 @@ LIBS="$cf_add_libs"
 
 else
 
-               echo "$as_me:19767: checking for regcomp in -lgnurx" >&5
+               echo "$as_me:19793: checking for regcomp in -lgnurx" >&5
 echo $ECHO_N "checking for regcomp in -lgnurx... $ECHO_C" >&6
 if test "${ac_cv_lib_gnurx_regcomp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19772,7 +19798,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgnurx  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19775 "configure"
+#line 19801 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -19781,7 +19807,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char regcomp ();
+char regcomp (void);
 int
 main (void)
 {
@@ -19791,16 +19817,16 @@ regcomp ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19794: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19820: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19797: \$? = $ac_status" >&5
+  echo "$as_me:19823: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19800: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19826: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19803: \$? = $ac_status" >&5
+  echo "$as_me:19829: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gnurx_regcomp=yes
 else
@@ -19811,7 +19837,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:19814: result: $ac_cv_lib_gnurx_regcomp" >&5
+echo "$as_me:19840: result: $ac_cv_lib_gnurx_regcomp" >&5
 echo "${ECHO_T}$ac_cv_lib_gnurx_regcomp" >&6
 if test "$ac_cv_lib_gnurx_regcomp" = yes; then
 
        ;;
 (*)
        cf_regex_libs="regex re"
-       echo "$as_me:19842: checking for regcomp" >&5
+       echo "$as_me:19868: checking for regcomp" >&5
 echo $ECHO_N "checking for regcomp... $ECHO_C" >&6
 if test "${ac_cv_func_regcomp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 19848 "configure"
+#line 19874 "configure"
 #include "confdefs.h"
 #define regcomp autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -19876,16 +19902,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19879: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19905: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19882: \$? = $ac_status" >&5
+  echo "$as_me:19908: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19885: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19911: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19888: \$? = $ac_status" >&5
+  echo "$as_me:19914: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_regcomp=yes
 else
@@ -19895,7 +19921,7 @@ ac_cv_func_regcomp=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:19898: result: $ac_cv_func_regcomp" >&5
+echo "$as_me:19924: result: $ac_cv_func_regcomp" >&5
 echo "${ECHO_T}$ac_cv_func_regcomp" >&6
 if test "$ac_cv_func_regcomp" = yes; then
   cf_regex_func=regcomp
@@ -19904,7 +19930,7 @@ else
                for cf_regex_lib in $cf_regex_libs
                do
                        as_ac_Lib=`echo "ac_cv_lib_$cf_regex_lib''_regcomp" | $as_tr_sh`
-echo "$as_me:19907: checking for regcomp in -l$cf_regex_lib" >&5
+echo "$as_me:19933: checking for regcomp in -l$cf_regex_lib" >&5
 echo $ECHO_N "checking for regcomp in -l$cf_regex_lib... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Lib+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19912,7 +19938,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-l$cf_regex_lib  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19915 "configure"
+#line 19941 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -19921,7 +19947,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char regcomp ();
+char regcomp (void);
 int
 main (void)
 {
@@ -19931,16 +19957,16 @@ regcomp ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19934: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19960: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19937: \$? = $ac_status" >&5
+  echo "$as_me:19963: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19940: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19966: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19943: \$? = $ac_status" >&5
+  echo "$as_me:19969: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_Lib=yes"
 else
@@ -19951,7 +19977,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:19954: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
+echo "$as_me:19980: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Lib"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Lib"'}'`" = yes; then
 
 esac
 
 if test "$cf_regex_func" = no ; then
-       echo "$as_me:19986: checking for compile" >&5
+       echo "$as_me:20012: checking for compile" >&5
 echo $ECHO_N "checking for compile... $ECHO_C" >&6
 if test "${ac_cv_func_compile+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 19992 "configure"
+#line 20018 "configure"
 #include "confdefs.h"
 #define compile autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -20020,16 +20046,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20023: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20049: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20026: \$? = $ac_status" >&5
+  echo "$as_me:20052: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20029: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20055: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20032: \$? = $ac_status" >&5
+  echo "$as_me:20058: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_compile=yes
 else
@@ -20039,13 +20065,13 @@ ac_cv_func_compile=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:20042: result: $ac_cv_func_compile" >&5
+echo "$as_me:20068: result: $ac_cv_func_compile" >&5
 echo "${ECHO_T}$ac_cv_func_compile" >&6
 if test "$ac_cv_func_compile" = yes; then
   cf_regex_func=compile
 else
 
-               echo "$as_me:20048: checking for compile in -lgen" >&5
+               echo "$as_me:20074: checking for compile in -lgen" >&5
 echo $ECHO_N "checking for compile in -lgen... $ECHO_C" >&6
 if test "${ac_cv_lib_gen_compile+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -20053,7 +20079,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgen  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20056 "configure"
+#line 20082 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -20062,7 +20088,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char compile ();
+char compile (void);
 int
 main (void)
 {
@@ -20072,16 +20098,16 @@ compile ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20075: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20101: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20078: \$? = $ac_status" >&5
+  echo "$as_me:20104: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20081: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20107: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20084: \$? = $ac_status" >&5
+  echo "$as_me:20110: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gen_compile=yes
 else
@@ -20092,7 +20118,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:20095: result: $ac_cv_lib_gen_compile" >&5
+echo "$as_me:20121: result: $ac_cv_lib_gen_compile" >&5
 echo "${ECHO_T}$ac_cv_lib_gen_compile" >&6
 if test "$ac_cv_lib_gen_compile" = yes; then
 
 fi
 
 if test "$cf_regex_func" = no ; then
-       { echo "$as_me:20123: WARNING: cannot find regular expression library" >&5
+       { echo "$as_me:20149: WARNING: cannot find regular expression library" >&5
 echo "$as_me: WARNING: cannot find regular expression library" >&2;}
 fi
 
-echo "$as_me:20127: checking for regular-expression headers" >&5
+echo "$as_me:20153: checking for regular-expression headers" >&5
 echo $ECHO_N "checking for regular-expression headers... $ECHO_C" >&6
 if test "${cf_cv_regex_hdrs+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -20136,7 +20162,7 @@ case "$cf_regex_func" in
        for cf_regex_hdr in regexp.h regexpr.h
        do
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 20139 "configure"
+#line 20165 "configure"
 #include "confdefs.h"
 #include <$cf_regex_hdr>
 int
@@ -20153,16 +20179,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20156: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20182: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20159: \$? = $ac_status" >&5
+  echo "$as_me:20185: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20162: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20188: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20165: \$? = $ac_status" >&5
+  echo "$as_me:20191: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                        cf_cv_regex_hdrs=$cf_regex_hdr
@@ -20179,7 +20205,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
        for cf_regex_hdr in regex.h
        do
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 20182 "configure"
+#line 20208 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$cf_regex_hdr>
@@ -20199,16 +20225,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20202: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20228: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20205: \$? = $ac_status" >&5
+  echo "$as_me:20231: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20208: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20234: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20211: \$? = $ac_status" >&5
+  echo "$as_me:20237: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                        cf_cv_regex_hdrs=$cf_regex_hdr
@@ -20224,11 +20250,11 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 esac
 
 fi
-echo "$as_me:20227: result: $cf_cv_regex_hdrs" >&5
+echo "$as_me:20253: result: $cf_cv_regex_hdrs" >&5
 echo "${ECHO_T}$cf_cv_regex_hdrs" >&6
 
 case "$cf_cv_regex_hdrs" in
-       (no)            { echo "$as_me:20231: WARNING: no regular expression header found" >&5
+       (no)            { echo "$as_me:20257: WARNING: no regular expression header found" >&5
 echo "$as_me: WARNING: no regular expression header found" >&2;} ;;
        (regex.h)
 cat >>confdefs.h <<\EOF
@@ -20254,6 +20280,7 @@ limits.h \
 locale.h \
 math.h \
 poll.h \
+sys/auxv.h \
 sys/ioctl.h \
 sys/param.h \
 sys/poll.h \
@@ -20265,23 +20292,23 @@ wctype.h \
 
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:20268: checking for $ac_header" >&5
+echo "$as_me:20295: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 20274 "configure"
+#line 20301 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:20278: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:20305: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:20284: \$? = $ac_status" >&5
+  echo "$as_me:20311: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -20300,7 +20327,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:20303: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:20330: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -20313,23 +20340,23 @@ done
 for ac_header in unistd.h getopt.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:20316: checking for $ac_header" >&5
+echo "$as_me:20343: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 20322 "configure"
+#line 20349 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:20326: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:20353: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:20332: \$? = $ac_status" >&5
+  echo "$as_me:20359: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -20348,7 +20375,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:20351: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:20378: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -20358,7 +20385,7 @@ EOF
 fi
 done
 
-echo "$as_me:20361: checking for header declaring getopt variables" >&5
+echo "$as_me:20388: checking for header declaring getopt variables" >&5
 echo $ECHO_N "checking for header declaring getopt variables... $ECHO_C" >&6
 if test "${cf_cv_getopt_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -20368,7 +20395,7 @@ cf_cv_getopt_header=none
 for cf_header in stdio.h stdlib.h unistd.h getopt.h
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20371 "configure"
+#line 20398 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -20381,16 +20408,16 @@ int x = optind; char *y = optarg; (void)x; (void)y
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20384: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20411: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20387: \$? = $ac_status" >&5
+  echo "$as_me:20414: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20390: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20417: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20393: \$? = $ac_status" >&5
+  echo "$as_me:20420: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_getopt_header=$cf_header
  break
@@ -20402,7 +20429,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:20405: result: $cf_cv_getopt_header" >&5
+echo "$as_me:20432: result: $cf_cv_getopt_header" >&5
 echo "${ECHO_T}$cf_cv_getopt_header" >&6
 if test "$cf_cv_getopt_header" != none ; then
 
@@ -20419,20 +20446,17 @@ EOF
 
 fi
 
-echo "$as_me:20422: checking if external environ is declared" >&5
+echo "$as_me:20449: checking if external environ is declared" >&5
 echo $ECHO_N "checking if external environ is declared... $ECHO_C" >&6
 if test "${cf_cv_dcl_environ+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 20429 "configure"
+#line 20456 "configure"
 #include "confdefs.h"
 
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <unistd.h>
+$ac_includes_default
 int
 main (void)
 {
@@ -20442,16 +20466,16 @@ void* x = (void*) environ; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20445: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20469: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20448: \$? = $ac_status" >&5
+  echo "$as_me:20472: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20451: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20475: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20454: \$? = $ac_status" >&5
+  echo "$as_me:20478: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_dcl_environ=yes
 else
@@ -20462,7 +20486,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:20465: result: $cf_cv_dcl_environ" >&5
+echo "$as_me:20489: result: $cf_cv_dcl_environ" >&5
 echo "${ECHO_T}$cf_cv_dcl_environ" >&6
 
 if test "$cf_cv_dcl_environ" = no ; then
 
 # It's possible (for near-UNIX clones) that the data doesn't exist
 
-echo "$as_me:20480: checking if external environ exists" >&5
+echo "$as_me:20504: checking if external environ exists" >&5
 echo $ECHO_N "checking if external environ exists... $ECHO_C" >&6
 if test "${cf_cv_have_environ+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 20487 "configure"
+#line 20511 "configure"
 #include "confdefs.h"
 
 #undef environ
@@ -20499,16 +20523,16 @@ environ = 2
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20502: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20526: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20505: \$? = $ac_status" >&5
+  echo "$as_me:20529: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20508: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20532: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20511: \$? = $ac_status" >&5
+  echo "$as_me:20535: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have_environ=yes
 else
@@ -20519,7 +20543,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:20522: result: $cf_cv_have_environ" >&5
+echo "$as_me:20546: result: $cf_cv_have_environ" >&5
 echo "${ECHO_T}$cf_cv_have_environ" >&6
 
 if test "$cf_cv_have_environ" = yes ; then
@@ -20532,13 +20556,13 @@ EOF
 
 fi
 
-echo "$as_me:20535: checking for getenv" >&5
+echo "$as_me:20559: checking for getenv" >&5
 echo $ECHO_N "checking for getenv... $ECHO_C" >&6
 if test "${ac_cv_func_getenv+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 20541 "configure"
+#line 20565 "configure"
 #include "confdefs.h"
 #define getenv autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -20569,16 +20593,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20572: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20596: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20575: \$? = $ac_status" >&5
+  echo "$as_me:20599: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20578: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20602: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20581: \$? = $ac_status" >&5
+  echo "$as_me:20605: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_getenv=yes
 else
@@ -20588,19 +20612,19 @@ ac_cv_func_getenv=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:20591: result: $ac_cv_func_getenv" >&5
+echo "$as_me:20615: result: $ac_cv_func_getenv" >&5
 echo "${ECHO_T}$ac_cv_func_getenv" >&6
 
 for ac_func in putenv setenv strdup
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:20597: checking for $ac_func" >&5
+echo "$as_me:20621: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 20603 "configure"
+#line 20627 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -20631,16 +20655,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20634: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20658: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20637: \$? = $ac_status" >&5
+  echo "$as_me:20661: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20640: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20664: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20643: \$? = $ac_status" >&5
+  echo "$as_me:20667: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -20650,7 +20674,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:20653: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:20677: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -20660,7 +20684,7 @@ EOF
 fi
 done
 
-echo "$as_me:20663: checking if getenv returns consistent values" >&5
+echo "$as_me:20687: checking if getenv returns consistent values" >&5
 echo $ECHO_N "checking if getenv returns consistent values... $ECHO_C" >&6
 if test "${cf_cv_consistent_getenv+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -20670,7 +20694,7 @@ if test "$cross_compiling" = yes; then
   cf_cv_consistent_getenv=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 20673 "configure"
+#line 20697 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -20739,7 +20763,7 @@ int main(void)
                                }
                        }
                } while (found);
-               sprintf(value, "%lu:%p", (unsigned long) k, &mynames[j]);
+               sprintf(value, "%lu:%p", (unsigned long) k, (void*)&mynames[j]);
                set_value(name, value);
                mynames[j] = str_alloc(name);
                myvalues[j] = str_alloc(value);
@@ -20775,15 +20799,15 @@ int main(void)
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:20778: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20802: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20781: \$? = $ac_status" >&5
+  echo "$as_me:20805: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:20783: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20807: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20786: \$? = $ac_status" >&5
+  echo "$as_me:20810: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_consistent_getenv=yes
 else
@@ -20796,7 +20820,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes
 fi
 
 fi
-echo "$as_me:20799: result: $cf_cv_consistent_getenv" >&5
+echo "$as_me:20823: result: $cf_cv_consistent_getenv" >&5
 echo "${ECHO_T}$cf_cv_consistent_getenv" >&6
 
 if test "x$cf_cv_consistent_getenv" = xno
 if test "x$cf_cv_consistent_getenv" = xno && \
        test "x$cf_with_trace" = xyes
 then
-       { echo "$as_me:20814: WARNING: The NCURSES_TRACE environment variable is not supported with this configuration" >&5
+       { echo "$as_me:20838: WARNING: The NCURSES_TRACE environment variable is not supported with this configuration" >&5
 echo "$as_me: WARNING: The NCURSES_TRACE environment variable is not supported with this configuration" >&2;}
 fi
 
-echo "$as_me:20818: checking if sys/time.h works with sys/select.h" >&5
+echo "$as_me:20842: checking if sys/time.h works with sys/select.h" >&5
 echo $ECHO_N "checking if sys/time.h works with sys/select.h... $ECHO_C" >&6
 if test "${cf_cv_sys_time_select+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20825 "configure"
+#line 20849 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -20842,16 +20866,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20845: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20869: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20848: \$? = $ac_status" >&5
+  echo "$as_me:20872: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20851: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20875: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20854: \$? = $ac_status" >&5
+  echo "$as_me:20878: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_sys_time_select=yes
 else
@@ -20863,7 +20887,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
 
-echo "$as_me:20866: result: $cf_cv_sys_time_select" >&5
+echo "$as_me:20890: result: $cf_cv_sys_time_select" >&5
 echo "${ECHO_T}$cf_cv_sys_time_select" >&6
 test "$cf_cv_sys_time_select" = yes &&
 cat >>confdefs.h <<\EOF
@@ -20878,13 +20902,13 @@ ac_link='$CC -o "conftest$ac_exeext" $CFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac_ex
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 ac_main_return="return"
 
-echo "$as_me:20881: checking for an ANSI C-conforming const" >&5
+echo "$as_me:20905: checking for an ANSI C-conforming const" >&5
 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
 if test "${ac_cv_c_const+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 20887 "configure"
+#line 20911 "configure"
 #include "confdefs.h"
 
 int
@@ -20894,13 +20918,13 @@ main (void)
 #ifndef __cplusplus
   /* Ultrix mips cc rejects this.  */
   typedef int charset[2];
-  const charset x;
+  const charset x; (void)x;
   /* SunOS 4.1.1 cc rejects this.  */
   char const *const *ccp;
   char **p;
   /* NEC SVR4.0.2 mips cc rejects this.  */
   struct point {int x, y;};
-  static struct point const zero = {0,0};
+  static struct point const zero = {0,0}; (void)zero;
   /* AIX XL C 1.02.0.0 rejects this.
      It does not let you subtract one const X* pointer from another in
      an arm of an if-expression whose if-part is not a constant
@@ -20916,16 +20940,19 @@ main (void)
     char const *s = 0 ? (char *) 0 : (char const *) 0;
 
     *t++ = 0;
+       (void)s;
   }
   { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
     int x[] = {25, 17};
     const int *foo = &x[0];
     ++foo;
+       (void)foo;
   }
   { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
     typedef const int *iptr;
     iptr p = 0;
     ++p;
+       (void)p;
   }
   { /* AIX XL C 1.02.0.0 rejects this saying
        "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
@@ -20934,6 +20961,7 @@ main (void)
   }
   { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
     const int foo = 10;
+       (void)foo;
   }
 #endif
 
@@ -20942,16 +20970,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20945: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20973: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20948: \$? = $ac_status" >&5
+  echo "$as_me:20976: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20951: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20979: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20954: \$? = $ac_status" >&5
+  echo "$as_me:20982: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_c_const=yes
 else
@@ -20961,7 +20989,7 @@ ac_cv_c_const=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:20964: result: $ac_cv_c_const" >&5
+echo "$as_me:20992: result: $ac_cv_c_const" >&5
 echo "${ECHO_T}$ac_cv_c_const" >&6
 if test $ac_cv_c_const = no; then
 
@@ -20971,7 +20999,7 @@ EOF
 
 fi
 
-echo "$as_me:20974: checking for inline" >&5
+echo "$as_me:21002: checking for inline" >&5
 echo $ECHO_N "checking for inline... $ECHO_C" >&6
 if test "${ac_cv_c_inline+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -20979,25 +21007,25 @@ else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 20982 "configure"
+#line 21010 "configure"
 #include "confdefs.h"
 #ifndef __cplusplus
-static $ac_kw int static_foo () {return 0; }
-$ac_kw int foo () {return 0; }
+static $ac_kw int static_foo (void) {return 0; }
+$ac_kw int foo (void) {return 0; }
 #endif
 
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20991: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:21019: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20994: \$? = $ac_status" >&5
+  echo "$as_me:21022: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20997: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21025: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21000: \$? = $ac_status" >&5
+  echo "$as_me:21028: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_c_inline=$ac_kw; break
 else
@@ -21008,7 +21036,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:21011: result: $ac_cv_c_inline" >&5
+echo "$as_me:21039: result: $ac_cv_c_inline" >&5
 echo "${ECHO_T}$ac_cv_c_inline" >&6
 case $ac_cv_c_inline in
   inline | yes) ;;
@@ -21034,7 +21062,7 @@ if test "$ac_cv_c_inline" != no ; then
                :
        elif test "$GCC" = yes
        then
-               echo "$as_me:21037: checking if $CC supports options to tune inlining" >&5
+               echo "$as_me:21065: checking if $CC supports options to tune inlining" >&5
 echo $ECHO_N "checking if $CC supports options to tune inlining... $ECHO_C" >&6
 if test "${cf_cv_gcc_inline+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21043,7 +21071,7 @@ else
                cf_save_CFLAGS=$CFLAGS
                CFLAGS="$CFLAGS --param max-inline-insns-single=1200"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 21046 "configure"
+#line 21074 "configure"
 #include "confdefs.h"
 inline int foo(void) { return 1; }
 int
@@ -21055,16 +21083,16 @@ ${cf_cv_main_return:-return} foo()
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:21058: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:21086: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:21061: \$? = $ac_status" >&5
+  echo "$as_me:21089: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:21064: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21092: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21067: \$? = $ac_status" >&5
+  echo "$as_me:21095: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gcc_inline=yes
 else
@@ -21076,7 +21104,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CFLAGS=$cf_save_CFLAGS
 
 fi
-echo "$as_me:21079: result: $cf_cv_gcc_inline" >&5
+echo "$as_me:21107: result: $cf_cv_gcc_inline" >&5
 echo "${ECHO_T}$cf_cv_gcc_inline" >&6
                if test "$cf_cv_gcc_inline" = yes ; then
 
@@ -21182,7 +21210,7 @@ fi
        fi
 fi
 
-echo "$as_me:21185: checking for signal global datatype" >&5
+echo "$as_me:21213: checking for signal global datatype" >&5
 echo $ECHO_N "checking for signal global datatype... $ECHO_C" >&6
 if test "${cf_cv_sig_atomic_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21194,7 +21222,7 @@ else
                "int"
        do
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 21197 "configure"
+#line 21225 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -21218,16 +21246,16 @@ signal(SIGINT, handler);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:21221: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:21249: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:21224: \$? = $ac_status" >&5
+  echo "$as_me:21252: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:21227: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21255: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21230: \$? = $ac_status" >&5
+  echo "$as_me:21258: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_sig_atomic_t=$cf_type
 else
@@ -21241,7 +21269,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
 
-echo "$as_me:21244: result: $cf_cv_sig_atomic_t" >&5
+echo "$as_me:21272: result: $cf_cv_sig_atomic_t" >&5
 echo "${ECHO_T}$cf_cv_sig_atomic_t" >&6
 test "$cf_cv_sig_atomic_t" != no &&
 cat >>confdefs.h <<EOF
@@ -21250,7 +21278,7 @@ EOF
 
 if test "$NCURSES_CHTYPE" = auto ; then
 
-echo "$as_me:21253: checking for type of chtype" >&5
+echo "$as_me:21281: checking for type of chtype" >&5
 echo $ECHO_N "checking for type of chtype... $ECHO_C" >&6
 if test "${cf_cv_typeof_chtype+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21260,7 +21288,7 @@ else
   cf_cv_typeof_chtype=long
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 21263 "configure"
+#line 21291 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -21295,15 +21323,15 @@ int main(void)
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:21298: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21326: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21301: \$? = $ac_status" >&5
+  echo "$as_me:21329: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:21303: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21331: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21306: \$? = $ac_status" >&5
+  echo "$as_me:21334: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_typeof_chtype=`cat cf_test.out`
 else
@@ -21318,7 +21346,7 @@ fi
 
 fi
 
-echo "$as_me:21321: result: $cf_cv_typeof_chtype" >&5
+echo "$as_me:21349: result: $cf_cv_typeof_chtype" >&5
 echo "${ECHO_T}$cf_cv_typeof_chtype" >&6
 
 cat >>confdefs.h <<EOF
@@ -21330,35 +21358,35 @@ else
 fi
 test "$cf_cv_typeof_chtype" = unsigned && cf_cv_typeof_chtype=""
 
-echo "$as_me:21333: checking if unsigned literals are legal" >&5
+echo "$as_me:21361: checking if unsigned literals are legal" >&5
 echo $ECHO_N "checking if unsigned literals are legal... $ECHO_C" >&6
 if test "${cf_cv_unsigned_literals+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 21340 "configure"
+#line 21368 "configure"
 #include "confdefs.h"
 
 int
 main (void)
 {
-long x = 1L + 1UL + 1U + 1
+long x = 1L + 1UL + 1U + 1; (void)x
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:21352: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:21380: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:21355: \$? = $ac_status" >&5
+  echo "$as_me:21383: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:21358: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21386: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21361: \$? = $ac_status" >&5
+  echo "$as_me:21389: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_unsigned_literals=yes
 else
@@ -21370,7 +21398,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
 
-echo "$as_me:21373: result: $cf_cv_unsigned_literals" >&5
+echo "$as_me:21401: result: $cf_cv_unsigned_literals" >&5
 echo "${ECHO_T}$cf_cv_unsigned_literals" >&6
 
 cf_cv_1UL="1"
@@ -21386,21 +21414,17 @@ test "$cf_cv_typeof_mmask_t" = unsigned && cf_cv_typeof_mmask_t=""
 
 ###    Checks for external-data
 
-echo "$as_me:21389: checking if external errno is declared" >&5
+echo "$as_me:21417: checking if external errno is declared" >&5
 echo $ECHO_N "checking if external errno is declared... $ECHO_C" >&6
 if test "${cf_cv_dcl_errno+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 21396 "configure"
+#line 21424 "configure"
 #include "confdefs.h"
 
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-#include <sys/types.h>
+$ac_includes_default
 #include <errno.h>
 int
 main (void)
@@ -21411,16 +21435,16 @@ int x = (int) errno; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:21414: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:21438: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:21417: \$? = $ac_status" >&5
+  echo "$as_me:21441: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:21420: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21444: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21423: \$? = $ac_status" >&5
+  echo "$as_me:21447: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_dcl_errno=yes
 else
@@ -21431,7 +21455,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:21434: result: $cf_cv_dcl_errno" >&5
+echo "$as_me:21458: result: $cf_cv_dcl_errno" >&5
 echo "${ECHO_T}$cf_cv_dcl_errno" >&6
 
 if test "$cf_cv_dcl_errno" = no ; then
 
 # It's possible (for near-UNIX clones) that the data doesn't exist
 
-echo "$as_me:21449: checking if external errno exists" >&5
+echo "$as_me:21473: checking if external errno exists" >&5
 echo $ECHO_N "checking if external errno exists... $ECHO_C" >&6
 if test "${cf_cv_have_errno+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 21456 "configure"
+#line 21480 "configure"
 #include "confdefs.h"
 
 #undef errno
@@ -21468,16 +21492,16 @@ errno = 2
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21471: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21495: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21474: \$? = $ac_status" >&5
+  echo "$as_me:21498: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21477: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21501: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21480: \$? = $ac_status" >&5
+  echo "$as_me:21504: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have_errno=yes
 else
@@ -21488,7 +21512,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:21491: result: $cf_cv_have_errno" >&5
+echo "$as_me:21515: result: $cf_cv_have_errno" >&5
 echo "${ECHO_T}$cf_cv_have_errno" >&6
 
 if test "$cf_cv_have_errno" = yes ; then
@@ -21501,7 +21525,7 @@ EOF
 
 fi
 
-echo "$as_me:21504: checking if data-only library module links" >&5
+echo "$as_me:21528: checking if data-only library module links" >&5
 echo $ECHO_N "checking if data-only library module links... $ECHO_C" >&6
 if test "${cf_cv_link_dataonly+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21509,36 +21533,40 @@ else
 
        rm -f conftest.a
        cat >conftest.$ac_ext <<EOF
-#line 21512 "configure"
+#line 21536 "configure"
 int    testdata[3] = { 123, 456, 789 };
 EOF
-       if { (eval echo "$as_me:21515: \"$ac_compile\"") >&5
+       if { (eval echo "$as_me:21539: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:21518: \$? = $ac_status" >&5
+  echo "$as_me:21542: \$? = $ac_status" >&5
   (exit "$ac_status"); } ; then
                mv conftest.o data.o && \
                ( $AR $ARFLAGS conftest.a data.o ) 2>&5 1>/dev/null
        fi
        rm -f conftest.$ac_ext data.o
        cat >conftest.$ac_ext <<EOF
-#line 21525 "configure"
+#line 21549 "configure"
+extern int testfunc(void);
+#if defined(NeXT)
 int    testfunc(void)
 {
-#if defined(NeXT)
        ${cf_cv_main_return:-return}(1);        /* I'm told this linker is broken */
+}
 #else
-       extern int testdata[3];
+extern int testdata[3];
+int    testfunc(void)
+{
        return testdata[0] == 123
           &&  testdata[1] == 456
           &&  testdata[2] == 789;
-#endif
 }
+#endif
 EOF
-       if { (eval echo "$as_me:21538: \"$ac_compile\"") >&5
+       if { (eval echo "$as_me:21566: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:21541: \$? = $ac_status" >&5
+  echo "$as_me:21569: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
                mv conftest.o func.o && \
                ( $AR $ARFLAGS conftest.a func.o ) 2>&5 1>/dev/null
@@ -21551,26 +21579,26 @@ EOF
   cf_cv_link_dataonly=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 21554 "configure"
+#line 21582 "configure"
 #include "confdefs.h"
 
+       extern int testfunc(void);
        int main(void)
        {
-               extern int testfunc();
                ${cf_cv_main_return:-return} (!testfunc());
        }
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:21565: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21593: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21568: \$? = $ac_status" >&5
+  echo "$as_me:21596: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:21570: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21598: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21573: \$? = $ac_status" >&5
+  echo "$as_me:21601: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_link_dataonly=yes
 else
@@ -21585,7 +21613,7 @@ fi
 
 fi
 
-echo "$as_me:21588: result: $cf_cv_link_dataonly" >&5
+echo "$as_me:21616: result: $cf_cv_link_dataonly" >&5
 echo "${ECHO_T}$cf_cv_link_dataonly" >&6
 
 if test "$cf_cv_link_dataonly" = no ; then
 
 ###    Checks for library functions.
 
+echo "$as_me:21630: checking for clock_gettime" >&5
+echo $ECHO_N "checking for clock_gettime... $ECHO_C" >&6
+if test "${cf_cv_func_clock_gettime+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+               cat >"conftest.$ac_ext" <<_ACEOF
+#line 21637 "configure"
+#include "confdefs.h"
+#include <time.h>
+int
+main (void)
+{
+struct timespec ts;
+               int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext" "conftest$ac_exeext"
+if { (eval echo "$as_me:21650: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:21653: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest$ac_exeext"'
+  { (eval echo "$as_me:21656: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:21659: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  cf_cv_func_clock_gettime=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+cf_cv_func_clock_gettime=no
+fi
+rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
+
+fi
+echo "$as_me:21670: result: $cf_cv_func_clock_gettime" >&5
+echo "${ECHO_T}$cf_cv_func_clock_gettime" >&6
+
+if test "$cf_cv_func_clock_gettime" = yes
+then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_CLOCK_GETTIME 1
+EOF
+
+else
+echo "$as_me:21681: checking for gettimeofday" >&5
+echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6
+if test "${ac_cv_func_gettimeofday+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 21687 "configure"
+#include "confdefs.h"
+#define gettimeofday autoconf_temporary
+#include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef gettimeofday
+
+#ifdef __cplusplus
+extern "C"
+#endif
+
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char gettimeofday (void);
+
+int
+main (void)
+{
+
+/* The GNU C library defines stubs for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday)
+#error found stub for gettimeofday
+#endif
+
+       return gettimeofday ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext" "conftest$ac_exeext"
+if { (eval echo "$as_me:21718: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:21721: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest$ac_exeext"'
+  { (eval echo "$as_me:21724: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:21727: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  ac_cv_func_gettimeofday=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+ac_cv_func_gettimeofday=no
+fi
+rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
+fi
+echo "$as_me:21737: result: $ac_cv_func_gettimeofday" >&5
+echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6
+if test "$ac_cv_func_gettimeofday" = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_GETTIMEOFDAY 1
+EOF
+
+else
+
+echo "$as_me:21747: checking for gettimeofday in -lbsd" >&5
+echo $ECHO_N "checking for gettimeofday in -lbsd... $ECHO_C" >&6
+if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat >"conftest.$ac_ext" <<_ACEOF
+#line 21755 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char gettimeofday (void);
+int
+main (void)
+{
+gettimeofday ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext" "conftest$ac_exeext"
+if { (eval echo "$as_me:21774: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:21777: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest$ac_exeext"'
+  { (eval echo "$as_me:21780: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:21783: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  ac_cv_lib_bsd_gettimeofday=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+ac_cv_lib_bsd_gettimeofday=no
+fi
+rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:21794: result: $ac_cv_lib_bsd_gettimeofday" >&5
+echo "${ECHO_T}$ac_cv_lib_bsd_gettimeofday" >&6
+if test "$ac_cv_lib_bsd_gettimeofday" = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_GETTIMEOFDAY 1
+EOF
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lbsd; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+       for cf_add_2lib in $cf_add_libs; do
+               if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+                       cf_add_1lib=
+                       break
+               fi
+       done
+       test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+fi
+
+fi
+fi
+
 for ac_func in \
 fpathconf \
 getcwd \
+getauxval \
 getegid \
 geteuid \
 getopt \
+getuid \
 issetugid \
 localeconv \
 poll \
-putenv \
 remove \
 select \
 setbuf \
 setbuffer \
-setenv \
 setfsuid \
 setvbuf \
 sigaction \
@@ -21629,13 +21850,13 @@ vsnprintf \
 
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:21632: checking for $ac_func" >&5
+echo "$as_me:21853: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 21638 "configure"
+#line 21859 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -21666,16 +21887,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21669: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21890: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21672: \$? = $ac_status" >&5
+  echo "$as_me:21893: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21675: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21896: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21678: \$? = $ac_status" >&5
+  echo "$as_me:21899: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -21685,7 +21906,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:21688: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:21909: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -21695,14 +21916,14 @@ EOF
 fi
 done
 
-echo "$as_me:21698: checking if _PATH_TTYS is defined in ttyent.h" >&5
+echo "$as_me:21919: checking if _PATH_TTYS is defined in ttyent.h" >&5
 echo $ECHO_N "checking if _PATH_TTYS is defined in ttyent.h... $ECHO_C" >&6
 if test "${cf_cv_PATH_TTYS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21705 "configure"
+#line 21926 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -21717,16 +21938,16 @@ FILE *fp = fopen(_PATH_TTYS, "r"); (void)fp
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:21720: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:21941: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:21723: \$? = $ac_status" >&5
+  echo "$as_me:21944: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:21726: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21947: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21729: \$? = $ac_status" >&5
+  echo "$as_me:21950: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_PATH_TTYS=yes
 else
@@ -21736,7 +21957,7 @@ cf_cv_PATH_TTYS=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:21739: result: $cf_cv_PATH_TTYS" >&5
+echo "$as_me:21960: result: $cf_cv_PATH_TTYS" >&5
 echo "${ECHO_T}$cf_cv_PATH_TTYS" >&6
 
 if test $cf_cv_PATH_TTYS = no
@@ -21758,7 +21979,7 @@ fi
 
 if test $cf_cv_PATH_TTYS != no
 then
-       echo "$as_me:21761: checking if _PATH_TTYS file exists" >&5
+       echo "$as_me:21982: checking if _PATH_TTYS file exists" >&5
 echo $ECHO_N "checking if _PATH_TTYS file exists... $ECHO_C" >&6
 if test "${cf_cv_have_PATH_TTYS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21768,7 +21989,7 @@ else
   cf_cv_have_PATH_TTYS=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 21771 "configure"
+#line 21992 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -21781,15 +22002,15 @@ int main(void) {
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:21784: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22005: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21787: \$? = $ac_status" >&5
+  echo "$as_me:22008: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:21789: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22010: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21792: \$? = $ac_status" >&5
+  echo "$as_me:22013: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have_PATH_TTYS=yes
 else
@@ -21801,7 +22022,7 @@ fi
 rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 fi
-echo "$as_me:21804: result: $cf_cv_have_PATH_TTYS" >&5
+echo "$as_me:22025: result: $cf_cv_have_PATH_TTYS" >&5
 echo "${ECHO_T}$cf_cv_have_PATH_TTYS" >&6
        test "$cf_cv_have_PATH_TTYS" = no && cf_cv_PATH_TTYS=no
 fi
@@ -21813,14 +22034,14 @@ cat >>confdefs.h <<\EOF
 #define HAVE_PATH_TTYS 1
 EOF
 
-       echo "$as_me:21816: checking for getttynam" >&5
+       echo "$as_me:22037: checking for getttynam" >&5
 echo $ECHO_N "checking for getttynam... $ECHO_C" >&6
 if test "${cf_cv_func_getttynam+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 21823 "configure"
+#line 22044 "configure"
 #include "confdefs.h"
 #include <ttyent.h>
 int
@@ -21832,16 +22053,16 @@ struct ttyent *fp = getttynam("/dev/tty"); (void)fp
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21835: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22056: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21838: \$? = $ac_status" >&5
+  echo "$as_me:22059: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21841: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22062: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21844: \$? = $ac_status" >&5
+  echo "$as_me:22065: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_func_getttynam=yes
 else
@@ -21851,7 +22072,7 @@ cf_cv_func_getttynam=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:21854: result: $cf_cv_func_getttynam" >&5
+echo "$as_me:22075: result: $cf_cv_func_getttynam" >&5
 echo "${ECHO_T}$cf_cv_func_getttynam" >&6
        test "$cf_cv_func_getttynam" = yes && cat >>confdefs.h <<\EOF
 #define HAVE_GETTTYNAM 1
@@ -21861,7 +22082,7 @@ fi
 
 if test "x$ac_cv_func_getopt" = xno && \
    test "x$cf_with_progs$cf_with_tests" != xnono; then
-       { { echo "$as_me:21864: error: getopt is required for building programs" >&5
+       { { echo "$as_me:22085: error: getopt is required for building programs" >&5
 echo "$as_me: error: getopt is required for building programs" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -21870,7 +22091,7 @@ if test "x$with_safe_sprintf" = xyes
 then
        if test "x$ac_cv_func_vsnprintf" = xyes
        then
-               { echo "$as_me:21873: WARNING: will use vsnprintf instead of safe-sprintf option" >&5
+               { echo "$as_me:22094: WARNING: will use vsnprintf instead of safe-sprintf option" >&5
 echo "$as_me: WARNING: will use vsnprintf instead of safe-sprintf option" >&2;}
        else
 
 
 if test "x$with_getcap" = "xyes" ; then
 
-echo "$as_me:21886: checking for terminal-capability database functions" >&5
+echo "$as_me:22107: checking for terminal-capability database functions" >&5
 echo $ECHO_N "checking for terminal-capability database functions... $ECHO_C" >&6
 if test "${cf_cv_cgetent+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21893 "configure"
+#line 22114 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
+$ac_includes_default
 int
 main (void)
 {
@@ -21910,16 +22131,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21913: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22134: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21916: \$? = $ac_status" >&5
+  echo "$as_me:22137: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21919: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22140: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21922: \$? = $ac_status" >&5
+  echo "$as_me:22143: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_cgetent=yes
 else
@@ -21930,7 +22151,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:21933: result: $cf_cv_cgetent" >&5
+echo "$as_me:22154: result: $cf_cv_cgetent" >&5
 echo "${ECHO_T}$cf_cv_cgetent" >&6
 
 if test "$cf_cv_cgetent" = yes
@@ -21940,18 +22161,18 @@ cat >>confdefs.h <<\EOF
 #define HAVE_BSD_CGETENT 1
 EOF
 
-echo "$as_me:21943: checking if cgetent uses const parameter" >&5
+echo "$as_me:22164: checking if cgetent uses const parameter" >&5
 echo $ECHO_N "checking if cgetent uses const parameter... $ECHO_C" >&6
 if test "${cf_cv_cgetent_const+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21950 "configure"
+#line 22171 "configure"
 #include "confdefs.h"
 
 #pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers"
-#include <stdlib.h>
+$ac_includes_default
 int
 main (void)
 {
@@ -21970,16 +22191,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21973: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22194: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21976: \$? = $ac_status" >&5
+  echo "$as_me:22197: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21979: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22200: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21982: \$? = $ac_status" >&5
+  echo "$as_me:22203: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_cgetent_const=yes
 else
@@ -21990,7 +22211,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:21993: result: $cf_cv_cgetent_const" >&5
+echo "$as_me:22214: result: $cf_cv_cgetent_const" >&5
 echo "${ECHO_T}$cf_cv_cgetent_const" >&6
        if test "$cf_cv_cgetent_const" = yes
        then
 
 fi
 
-echo "$as_me:22007: checking for isascii" >&5
+echo "$as_me:22228: checking for isascii" >&5
 echo $ECHO_N "checking for isascii... $ECHO_C" >&6
 if test "${cf_cv_have_isascii+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 22014 "configure"
+#line 22235 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 int
 main (void)
 {
-int x = isascii(' ')
+int x = isascii(' '); (void)x
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:22026: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22247: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22029: \$? = $ac_status" >&5
+  echo "$as_me:22250: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:22032: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22253: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22035: \$? = $ac_status" >&5
+  echo "$as_me:22256: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have_isascii=yes
 else
@@ -22043,7 +22264,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:22046: result: $cf_cv_have_isascii" >&5
+echo "$as_me:22267: result: $cf_cv_have_isascii" >&5
 echo "${ECHO_T}$cf_cv_have_isascii" >&6
 test "$cf_cv_have_isascii" = yes &&
 cat >>confdefs.h <<\EOF
@@ -22051,10 +22272,10 @@ cat >>confdefs.h <<\EOF
 EOF
 
 if test "$ac_cv_func_sigaction" = yes; then
-echo "$as_me:22054: checking whether sigaction needs _POSIX_SOURCE" >&5
+echo "$as_me:22275: checking whether sigaction needs _POSIX_SOURCE" >&5
 echo $ECHO_N "checking whether sigaction needs _POSIX_SOURCE... $ECHO_C" >&6
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 22057 "configure"
+#line 22278 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -22062,22 +22283,22 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-struct sigaction act
+struct sigaction act; (void)act
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:22071: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22292: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22074: \$? = $ac_status" >&5
+  echo "$as_me:22295: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:22077: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22298: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22080: \$? = $ac_status" >&5
+  echo "$as_me:22301: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   sigact_bad=no
 else
@@ -22085,7 +22306,7 @@ else
 cat "conftest.$ac_ext" >&5
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 22088 "configure"
+#line 22309 "configure"
 #include "confdefs.h"
 
 #define _POSIX_SOURCE
@@ -22094,22 +22315,22 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-struct sigaction act
+struct sigaction act; (void)act
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:22103: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22324: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22106: \$? = $ac_status" >&5
+  echo "$as_me:22327: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:22109: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22330: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22112: \$? = $ac_status" >&5
+  echo "$as_me:22333: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   sigact_bad=yes
 
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-echo "$as_me:22128: result: $sigact_bad" >&5
+echo "$as_me:22349: result: $sigact_bad" >&5
 echo "${ECHO_T}$sigact_bad" >&6
 fi
 
-echo "$as_me:22132: checking if nanosleep really works" >&5
+echo "$as_me:22353: checking if nanosleep really works" >&5
 echo $ECHO_N "checking if nanosleep really works... $ECHO_C" >&6
 if test "${cf_cv_func_nanosleep+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -22139,7 +22360,7 @@ if test "$cross_compiling" = yes; then
   cf_cv_func_nanosleep=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 22142 "configure"
+#line 22363 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -22165,15 +22386,15 @@ int main(void) {
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:22168: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22389: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22171: \$? = $ac_status" >&5
+  echo "$as_me:22392: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:22173: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22394: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22176: \$? = $ac_status" >&5
+  echo "$as_me:22397: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_func_nanosleep=yes
 else
@@ -22185,7 +22406,7 @@ fi
 rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 fi
-echo "$as_me:22188: result: $cf_cv_func_nanosleep" >&5
+echo "$as_me:22409: result: $cf_cv_func_nanosleep" >&5
 echo "${ECHO_T}$cf_cv_func_nanosleep" >&6
 
 test "$cf_cv_func_nanosleep" = "yes" &&
@@ -22202,23 +22423,23 @@ sys/termio.h \
 
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:22205: checking for $ac_header" >&5
+echo "$as_me:22426: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 22211 "configure"
+#line 22432 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:22215: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:22436: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:22221: \$? = $ac_status" >&5
+  echo "$as_me:22442: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -22237,7 +22458,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:22240: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:22461: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -22254,31 +22475,31 @@ if test "$ac_cv_header_termios_h" = yes ; then
        (*)     termios_bad=maybe ;;
        esac
        if test "$termios_bad" = maybe ; then
-       echo "$as_me:22257: checking whether termios.h needs _POSIX_SOURCE" >&5
+       echo "$as_me:22478: checking whether termios.h needs _POSIX_SOURCE" >&5
 echo $ECHO_N "checking whether termios.h needs _POSIX_SOURCE... $ECHO_C" >&6
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 22260 "configure"
+#line 22481 "configure"
 #include "confdefs.h"
 #include <termios.h>
 int
 main (void)
 {
-struct termios foo; int x = foo.c_iflag = 1; (void)x
+struct termios foo; int x = (int)(foo.c_iflag = 1); (void)x
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:22272: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22493: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22275: \$? = $ac_status" >&5
+  echo "$as_me:22496: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:22278: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22499: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22281: \$? = $ac_status" >&5
+  echo "$as_me:22502: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   termios_bad=no
 else
@@ -22286,7 +22507,7 @@ else
 cat "conftest.$ac_ext" >&5
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 22289 "configure"
+#line 22510 "configure"
 #include "confdefs.h"
 
 #define _POSIX_SOURCE
@@ -22294,22 +22515,22 @@ cat "conftest.$ac_ext" >&5
 int
 main (void)
 {
-struct termios foo; int x = foo.c_iflag = 2; (void)x
+struct termios foo; int x = (int)(foo.c_iflag = 2); (void)x
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:22303: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22524: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22306: \$? = $ac_status" >&5
+  echo "$as_me:22527: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:22309: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22530: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22312: \$? = $ac_status" >&5
+  echo "$as_me:22533: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   termios_bad=unknown
 else
@@ -22325,19 +22546,19 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-       echo "$as_me:22328: result: $termios_bad" >&5
+       echo "$as_me:22549: result: $termios_bad" >&5
 echo "${ECHO_T}$termios_bad" >&6
        fi
 fi
 
-echo "$as_me:22333: checking for tcgetattr" >&5
+echo "$as_me:22554: checking for tcgetattr" >&5
 echo $ECHO_N "checking for tcgetattr... $ECHO_C" >&6
 if test "${cf_cv_have_tcgetattr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 22340 "configure"
+#line 22561 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -22365,16 +22586,16 @@ tcgetattr(1, &foo);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:22368: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22589: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22371: \$? = $ac_status" >&5
+  echo "$as_me:22592: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:22374: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22595: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22377: \$? = $ac_status" >&5
+  echo "$as_me:22598: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have_tcgetattr=yes
 else
@@ -22384,46 +22605,56 @@ cf_cv_have_tcgetattr=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:22387: result: $cf_cv_have_tcgetattr" >&5
+echo "$as_me:22608: result: $cf_cv_have_tcgetattr" >&5
 echo "${ECHO_T}$cf_cv_have_tcgetattr" >&6
 test "$cf_cv_have_tcgetattr" = yes &&
 cat >>confdefs.h <<\EOF
 #define HAVE_TCGETATTR 1
 EOF
 
-echo "$as_me:22394: checking for vsscanf function or workaround" >&5
+echo "$as_me:22615: checking for vsscanf function or workaround" >&5
 echo $ECHO_N "checking for vsscanf function or workaround... $ECHO_C" >&6
 if test "${cf_cv_func_vsscanf+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 22401 "configure"
+#line 22622 "configure"
 #include "confdefs.h"
 
 #include <stdarg.h>
 #include <stdio.h>
+
+static void
+myfunc(const char *str, const char *fmt, ...)
+{
+       va_list ap;
+       va_start(ap, fmt);
+       vsscanf(str, fmt, ap);
+       va_end(ap);
+}
+
 int
 main (void)
 {
 
-       va_list ap;
-       vsscanf("from", "%d", ap)
+       myfunc("55", "%d");
+
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:22417: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22648: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22420: \$? = $ac_status" >&5
+  echo "$as_me:22651: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:22423: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22654: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22426: \$? = $ac_status" >&5
+  echo "$as_me:22657: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_func_vsscanf=vsscanf
 else
@@ -22431,7 +22662,7 @@ else
 cat "conftest.$ac_ext" >&5
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 22434 "configure"
+#line 22665 "configure"
 #include "confdefs.h"
 
 #include <stdarg.h>
@@ -22453,16 +22684,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:22456: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22687: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22459: \$? = $ac_status" >&5
+  echo "$as_me:22690: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:22462: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22693: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22465: \$? = $ac_status" >&5
+  echo "$as_me:22696: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_func_vsscanf=vfscanf
 else
@@ -22470,7 +22701,7 @@ else
 cat "conftest.$ac_ext" >&5
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 22473 "configure"
+#line 22704 "configure"
 #include "confdefs.h"
 
 #include <stdarg.h>
@@ -22492,16 +22723,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:22495: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22726: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22498: \$? = $ac_status" >&5
+  echo "$as_me:22729: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:22501: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22732: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22504: \$? = $ac_status" >&5
+  echo "$as_me:22735: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_func_vsscanf=_doscan
 else
@@ -22516,7 +22747,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:22519: result: $cf_cv_func_vsscanf" >&5
+echo "$as_me:22750: result: $cf_cv_func_vsscanf" >&5
 echo "${ECHO_T}$cf_cv_func_vsscanf" >&6
 
 case "$cf_cv_func_vsscanf" in
@@ -22542,23 +22773,23 @@ unistd.h \
 
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:22545: checking for $ac_header" >&5
+echo "$as_me:22776: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 22551 "configure"
+#line 22782 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:22555: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:22786: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:22561: \$? = $ac_status" >&5
+  echo "$as_me:22792: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -22577,7 +22808,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:22580: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:22811: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -22587,7 +22818,7 @@ EOF
 fi
 done
 
-echo "$as_me:22590: checking for working mkstemp" >&5
+echo "$as_me:22821: checking for working mkstemp" >&5
 echo $ECHO_N "checking for working mkstemp... $ECHO_C" >&6
 if test "${cf_cv_func_mkstemp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -22598,14 +22829,14 @@ if test "$cross_compiling" = yes; then
   cf_cv_func_mkstemp=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 22601 "configure"
+#line 22832 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
 
 int main(void)
 {
-       char *tmpl = "conftestXXXXXX";
+       static char tmpl[] = "conftestXXXXXX";
        char name[2][80];
        int n;
        int result = 0;
@@ -22633,15 +22864,15 @@ int main(void)
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:22636: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22867: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22639: \$? = $ac_status" >&5
+  echo "$as_me:22870: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:22641: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22872: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22644: \$? = $ac_status" >&5
+  echo "$as_me:22875: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_func_mkstemp=yes
 
@@ -22656,16 +22887,16 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes
 fi
 
 fi
-echo "$as_me:22659: result: $cf_cv_func_mkstemp" >&5
+echo "$as_me:22890: result: $cf_cv_func_mkstemp" >&5
 echo "${ECHO_T}$cf_cv_func_mkstemp" >&6
 if test "x$cf_cv_func_mkstemp" = xmaybe ; then
-       echo "$as_me:22662: checking for mkstemp" >&5
+       echo "$as_me:22893: checking for mkstemp" >&5
 echo $ECHO_N "checking for mkstemp... $ECHO_C" >&6
 if test "${ac_cv_func_mkstemp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 22668 "configure"
+#line 22899 "configure"
 #include "confdefs.h"
 #define mkstemp autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -22696,16 +22927,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:22699: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22930: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22702: \$? = $ac_status" >&5
+  echo "$as_me:22933: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:22705: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22936: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22708: \$? = $ac_status" >&5
+  echo "$as_me:22939: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_mkstemp=yes
 else
@@ -22715,7 +22946,7 @@ ac_cv_func_mkstemp=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:22718: result: $ac_cv_func_mkstemp" >&5
+echo "$as_me:22949: result: $ac_cv_func_mkstemp" >&5
 echo "${ECHO_T}$ac_cv_func_mkstemp" >&6
 
 fi
@@ -22736,21 +22967,21 @@ else
 fi
 
 if test "x$cross_compiling" = xyes ; then
-       { echo "$as_me:22739: WARNING: cross compiling: assume setvbuf params not reversed" >&5
+       { echo "$as_me:22970: WARNING: cross compiling: assume setvbuf params not reversed" >&5
 echo "$as_me: WARNING: cross compiling: assume setvbuf params not reversed" >&2;}
 else
-       echo "$as_me:22742: checking whether setvbuf arguments are reversed" >&5
+       echo "$as_me:22973: checking whether setvbuf arguments are reversed" >&5
 echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6
 if test "${ac_cv_func_setvbuf_reversed+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   if test "$cross_compiling" = yes; then
-  { { echo "$as_me:22748: error: cannot run test program while cross compiling" >&5
+  { { echo "$as_me:22979: error: cannot run test program while cross compiling" >&5
 echo "$as_me: error: cannot run test program while cross compiling" >&2;}
    { (exit 1); exit 1; }; }
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 22753 "configure"
+#line 22984 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 /* If setvbuf has the reversed format, exit 0. */
@@ -22763,19 +22994,19 @@ main (void)
   if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0)
     $ac_main_return(1);
   putc('\r', stdout);
-  $ac_main_return(0);                  /* Non-reversed systems segv here.  */
+  $ac_main_return(0);                   /* Non-reversed systems segv here.  */
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:22770: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23001: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22773: \$? = $ac_status" >&5
+  echo "$as_me:23004: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:22775: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23006: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22778: \$? = $ac_status" >&5
+  echo "$as_me:23009: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_setvbuf_reversed=yes
 else
@@ -22788,7 +23019,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes
 fi
 rm -f core ./core.* ./*.core
 fi
-echo "$as_me:22791: result: $ac_cv_func_setvbuf_reversed" >&5
+echo "$as_me:23022: result: $ac_cv_func_setvbuf_reversed" >&5
 echo "${ECHO_T}$ac_cv_func_setvbuf_reversed" >&6
 if test $ac_cv_func_setvbuf_reversed = yes; then
 
@@ -22799,13 +23030,13 @@ EOF
 fi
 
 fi
-echo "$as_me:22802: checking for intptr_t" >&5
+echo "$as_me:23033: checking for intptr_t" >&5
 echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6
 if test "${ac_cv_type_intptr_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 22808 "configure"
+#line 23039 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -22820,16 +23051,16 @@ if (sizeof (intptr_t))
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:22823: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:23054: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22826: \$? = $ac_status" >&5
+  echo "$as_me:23057: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:22829: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23060: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22832: \$? = $ac_status" >&5
+  echo "$as_me:23063: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_type_intptr_t=yes
 else
@@ -22839,7 +23070,7 @@ ac_cv_type_intptr_t=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:22842: result: $ac_cv_type_intptr_t" >&5
+echo "$as_me:23073: result: $ac_cv_type_intptr_t" >&5
 echo "${ECHO_T}$ac_cv_type_intptr_t" >&6
 if test "$ac_cv_type_intptr_t" = yes; then
   :
@@ -22851,13 +23082,13 @@ EOF
 
 fi
 
-echo "$as_me:22854: checking for ssize_t" >&5
+echo "$as_me:23085: checking for ssize_t" >&5
 echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6
 if test "${ac_cv_type_ssize_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 22860 "configure"
+#line 23091 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -22872,16 +23103,16 @@ if (sizeof (ssize_t))
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:22875: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:23106: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22878: \$? = $ac_status" >&5
+  echo "$as_me:23109: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:22881: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23112: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22884: \$? = $ac_status" >&5
+  echo "$as_me:23115: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_type_ssize_t=yes
 else
@@ -22891,7 +23122,7 @@ ac_cv_type_ssize_t=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:22894: result: $ac_cv_type_ssize_t" >&5
+echo "$as_me:23125: result: $ac_cv_type_ssize_t" >&5
 echo "${ECHO_T}$ac_cv_type_ssize_t" >&6
 if test "$ac_cv_type_ssize_t" = yes; then
   :
@@ -22903,36 +23134,36 @@ EOF
 
 fi
 
-echo "$as_me:22906: checking for type sigaction_t" >&5
+echo "$as_me:23137: checking for type sigaction_t" >&5
 echo $ECHO_N "checking for type sigaction_t... $ECHO_C" >&6
 if test "${cf_cv_type_sigaction+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 22913 "configure"
+#line 23144 "configure"
 #include "confdefs.h"
 
 #include <signal.h>
 int
 main (void)
 {
-sigaction_t x
+sigaction_t x; (void)x
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:22926: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:23157: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22929: \$? = $ac_status" >&5
+  echo "$as_me:23160: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:22932: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23163: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22935: \$? = $ac_status" >&5
+  echo "$as_me:23166: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_type_sigaction=yes
 else
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 
-echo "$as_me:22946: result: $cf_cv_type_sigaction" >&5
+echo "$as_me:23177: result: $cf_cv_type_sigaction" >&5
 echo "${ECHO_T}$cf_cv_type_sigaction" >&6
 test "$cf_cv_type_sigaction" = yes &&
 cat >>confdefs.h <<\EOF
 #define HAVE_TYPE_SIGACTION 1
 EOF
 
-echo "$as_me:22953: checking declaration of size-change" >&5
+echo "$as_me:23184: checking declaration of size-change" >&5
 echo $ECHO_N "checking declaration of size-change... $ECHO_C" >&6
 if test "${cf_cv_sizechange+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -22971,7 +23202,7 @@ do
 
        fi
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 22974 "configure"
+#line 23205 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #ifdef HAVE_TERMIOS_H
@@ -23021,16 +23252,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:23024: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:23255: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:23027: \$? = $ac_status" >&5
+  echo "$as_me:23258: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:23030: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23261: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23033: \$? = $ac_status" >&5
+  echo "$as_me:23264: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_sizechange=yes
 else
@@ -23049,7 +23280,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:23052: result: $cf_cv_sizechange" >&5
+echo "$as_me:23283: result: $cf_cv_sizechange" >&5
 echo "${ECHO_T}$cf_cv_sizechange" >&6
 if test "$cf_cv_sizechange" != no ; then
 
@@ -23067,13 +23298,13 @@ EOF
        esac
 fi
 
-echo "$as_me:23070: checking for memmove" >&5
+echo "$as_me:23301: checking for memmove" >&5
 echo $ECHO_N "checking for memmove... $ECHO_C" >&6
 if test "${ac_cv_func_memmove+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 23076 "configure"
+#line 23307 "configure"
 #include "confdefs.h"
 #define memmove autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -23104,16 +23335,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23107: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23338: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23110: \$? = $ac_status" >&5
+  echo "$as_me:23341: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23113: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23344: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23116: \$? = $ac_status" >&5
+  echo "$as_me:23347: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_memmove=yes
 else
@@ -23123,19 +23354,19 @@ ac_cv_func_memmove=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:23126: result: $ac_cv_func_memmove" >&5
+echo "$as_me:23357: result: $ac_cv_func_memmove" >&5
 echo "${ECHO_T}$ac_cv_func_memmove" >&6
 if test "$ac_cv_func_memmove" = yes; then
   :
 else
 
-echo "$as_me:23132: checking for bcopy" >&5
+echo "$as_me:23363: checking for bcopy" >&5
 echo $ECHO_N "checking for bcopy... $ECHO_C" >&6
 if test "${ac_cv_func_bcopy+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 23138 "configure"
+#line 23369 "configure"
 #include "confdefs.h"
 #define bcopy autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -23166,16 +23397,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23169: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23400: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23172: \$? = $ac_status" >&5
+  echo "$as_me:23403: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23175: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23406: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23178: \$? = $ac_status" >&5
+  echo "$as_me:23409: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_bcopy=yes
 else
@@ -23185,11 +23416,11 @@ ac_cv_func_bcopy=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:23188: result: $ac_cv_func_bcopy" >&5
+echo "$as_me:23419: result: $ac_cv_func_bcopy" >&5
 echo "${ECHO_T}$ac_cv_func_bcopy" >&6
 if test "$ac_cv_func_bcopy" = yes; then
 
-       echo "$as_me:23192: checking if bcopy does overlapping moves" >&5
+       echo "$as_me:23423: checking if bcopy does overlapping moves" >&5
 echo $ECHO_N "checking if bcopy does overlapping moves... $ECHO_C" >&6
 if test "${cf_cv_good_bcopy+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -23199,7 +23430,7 @@ else
   cf_cv_good_bcopy=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 23202 "configure"
+#line 23433 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -23215,15 +23446,15 @@ int main(void) {
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:23218: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23449: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23221: \$? = $ac_status" >&5
+  echo "$as_me:23452: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:23223: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23454: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23226: \$? = $ac_status" >&5
+  echo "$as_me:23457: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_good_bcopy=yes
 else
@@ -23236,7 +23467,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes
 fi
 
 fi
-echo "$as_me:23239: result: $cf_cv_good_bcopy" >&5
+echo "$as_me:23470: result: $cf_cv_good_bcopy" >&5
 echo "${ECHO_T}$cf_cv_good_bcopy" >&6
 
 else
@@ -23263,13 +23494,13 @@ tty >/dev/null 2>&1 || {
 for ac_func in posix_openpt
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:23266: checking for $ac_func" >&5
+echo "$as_me:23497: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 23272 "configure"
+#line 23503 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -23300,16 +23531,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23303: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23534: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23306: \$? = $ac_status" >&5
+  echo "$as_me:23537: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23309: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23540: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23312: \$? = $ac_status" >&5
+  echo "$as_me:23543: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -23319,7 +23550,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:23322: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:23553: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -23329,7 +23560,7 @@ EOF
 fi
 done
  }
-echo "$as_me:23332: checking if poll really works" >&5
+echo "$as_me:23563: checking if poll really works" >&5
 echo $ECHO_N "checking if poll really works... $ECHO_C" >&6
 if test "${cf_cv_working_poll+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -23339,7 +23570,7 @@ if test "$cross_compiling" = yes; then
   cf_cv_working_poll=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 23342 "configure"
+#line 23573 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -23392,15 +23623,15 @@ int main(void) {
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:23395: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23626: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23398: \$? = $ac_status" >&5
+  echo "$as_me:23629: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:23400: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23631: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23403: \$? = $ac_status" >&5
+  echo "$as_me:23634: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_working_poll=yes
 else
 rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 fi
-echo "$as_me:23415: result: $cf_cv_working_poll" >&5
+echo "$as_me:23646: result: $cf_cv_working_poll" >&5
 echo "${ECHO_T}$cf_cv_working_poll" >&6
 test "$cf_cv_working_poll" = "yes" &&
 cat >>confdefs.h <<\EOF
 #define HAVE_WORKING_POLL 1
 EOF
 
-echo "$as_me:23422: checking for va_copy" >&5
+echo "$as_me:23653: checking if MB_LEN_MAX is usable" >&5
+echo $ECHO_N "checking if MB_LEN_MAX is usable... $ECHO_C" >&6
+if test "${cf_cv_mb_len_max+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >"conftest.$ac_ext" <<_ACEOF
+#line 23660 "configure"
+#include "confdefs.h"
+
+$ac_includes_default
+#include <limits.h>
+int
+main (void)
+{
+
+#if defined(MB_LEN_MAX) && MB_LEN_MAX >= 6
+       ${cf_cv_main_return:-return}(0);
+#else
+#error MB_LEN_MAX is not usable
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext"
+if { (eval echo "$as_me:23680: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:23683: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest.$ac_objext"'
+  { (eval echo "$as_me:23686: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:23689: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  cf_cv_mb_len_max=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+cf_cv_mb_len_max=no
+fi
+rm -f "conftest.$ac_objext" "conftest.$ac_ext"
+fi
+echo "$as_me:23699: result: $cf_cv_mb_len_max" >&5
+echo "${ECHO_T}$cf_cv_mb_len_max" >&6
+if test "$cf_cv_mb_len_max" = yes
+then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_CONSISTENT_MB_LEN_MAX 1
+EOF
+
+else
+       { echo "$as_me:23709: WARNING: MB_LEN_MAX is missing/inconsistent in system headers" >&5
+echo "$as_me: WARNING: MB_LEN_MAX is missing/inconsistent in system headers" >&2;}
+fi
+
+echo "$as_me:23713: checking for va_copy" >&5
 echo $ECHO_N "checking for va_copy... $ECHO_C" >&6
 if test "${cf_cv_have_va_copy+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 23429 "configure"
+#line 23720 "configure"
 #include "confdefs.h"
 
 #include <stdarg.h>
@@ -23443,16 +23734,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23446: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23737: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23449: \$? = $ac_status" >&5
+  echo "$as_me:23740: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23452: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23743: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23455: \$? = $ac_status" >&5
+  echo "$as_me:23746: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have_va_copy=yes
 else
@@ -23462,7 +23753,7 @@ cf_cv_have_va_copy=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:23465: result: $cf_cv_have_va_copy" >&5
+echo "$as_me:23756: result: $cf_cv_have_va_copy" >&5
 echo "${ECHO_T}$cf_cv_have_va_copy" >&6
 
 if test "$cf_cv_have_va_copy" = yes;
@@ -23474,14 +23765,14 @@ EOF
 
 else # !cf_cv_have_va_copy
 
-echo "$as_me:23477: checking for __va_copy" >&5
+echo "$as_me:23768: checking for __va_copy" >&5
 echo $ECHO_N "checking for __va_copy... $ECHO_C" >&6
 if test "${cf_cv_have___va_copy+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 23484 "configure"
+#line 23775 "configure"
 #include "confdefs.h"
 
 #include <stdarg.h>
@@ -23498,16 +23789,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23501: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23792: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23504: \$? = $ac_status" >&5
+  echo "$as_me:23795: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23507: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23798: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23510: \$? = $ac_status" >&5
+  echo "$as_me:23801: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have___va_copy=yes
 else
@@ -23517,7 +23808,7 @@ cf_cv_have___va_copy=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:23520: result: $cf_cv_have___va_copy" >&5
+echo "$as_me:23811: result: $cf_cv_have___va_copy" >&5
 echo "${ECHO_T}$cf_cv_have___va_copy" >&6
 
 if test "$cf_cv_have___va_copy" = yes
@@ -23529,14 +23820,14 @@ EOF
 
 else # !cf_cv_have___va_copy
 
-echo "$as_me:23532: checking for __builtin_va_copy" >&5
+echo "$as_me:23823: checking for __builtin_va_copy" >&5
 echo $ECHO_N "checking for __builtin_va_copy... $ECHO_C" >&6
 if test "${cf_cv_have___builtin_va_copy+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 23539 "configure"
+#line 23830 "configure"
 #include "confdefs.h"
 
 #include <stdarg.h>
@@ -23553,16 +23844,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23556: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23847: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23559: \$? = $ac_status" >&5
+  echo "$as_me:23850: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23562: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23853: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23565: \$? = $ac_status" >&5
+  echo "$as_me:23856: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have___builtin_va_copy=yes
 else
@@ -23572,7 +23863,7 @@ cf_cv_have___builtin_va_copy=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:23575: result: $cf_cv_have___builtin_va_copy" >&5
+echo "$as_me:23866: result: $cf_cv_have___builtin_va_copy" >&5
 echo "${ECHO_T}$cf_cv_have___builtin_va_copy" >&6
 
 test "$cf_cv_have___builtin_va_copy" = yes &&
@@ -23590,14 +23881,14 @@ case "${cf_cv_have_va_copy}${cf_cv_have___va_copy}${cf_cv_have___builtin_va_copy
        ;;
 
 (*)
-       echo "$as_me:23593: checking if we can simply copy va_list" >&5
+       echo "$as_me:23884: checking if we can simply copy va_list" >&5
 echo $ECHO_N "checking if we can simply copy va_list... $ECHO_C" >&6
 if test "${cf_cv_pointer_va_list+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 23600 "configure"
+#line 23891 "configure"
 #include "confdefs.h"
 
 #include <stdarg.h>
@@ -23614,16 +23905,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23617: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23908: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23620: \$? = $ac_status" >&5
+  echo "$as_me:23911: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23623: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23914: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23626: \$? = $ac_status" >&5
+  echo "$as_me:23917: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_pointer_va_list=yes
 else
@@ -23633,19 +23924,19 @@ cf_cv_pointer_va_list=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:23636: result: $cf_cv_pointer_va_list" >&5
+echo "$as_me:23927: result: $cf_cv_pointer_va_list" >&5
 echo "${ECHO_T}$cf_cv_pointer_va_list" >&6
 
        if test "$cf_cv_pointer_va_list" = no
        then
-               echo "$as_me:23641: checking if we can copy va_list indirectly" >&5
+               echo "$as_me:23932: checking if we can copy va_list indirectly" >&5
 echo $ECHO_N "checking if we can copy va_list indirectly... $ECHO_C" >&6
 if test "${cf_cv_array_va_list+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 23648 "configure"
+#line 23939 "configure"
 #include "confdefs.h"
 
 #include <stdarg.h>
@@ -23662,16 +23953,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23665: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23956: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23668: \$? = $ac_status" >&5
+  echo "$as_me:23959: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23671: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23962: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23674: \$? = $ac_status" >&5
+  echo "$as_me:23965: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_array_va_list=yes
 else
@@ -23681,7 +23972,7 @@ cf_cv_array_va_list=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:23684: result: $cf_cv_array_va_list" >&5
+echo "$as_me:23975: result: $cf_cv_array_va_list" >&5
 echo "${ECHO_T}$cf_cv_array_va_list" >&6
                test "$cf_cv_array_va_list" = yes &&
 cat >>confdefs.h <<\EOF
@@ -23692,13 +23983,13 @@ EOF
        ;;
 esac
 
-echo "$as_me:23695: checking for pid_t" >&5
+echo "$as_me:23986: checking for pid_t" >&5
 echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
 if test "${ac_cv_type_pid_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 23701 "configure"
+#line 23992 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -23713,16 +24004,16 @@ if (sizeof (pid_t))
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:23716: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:24007: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:23719: \$? = $ac_status" >&5
+  echo "$as_me:24010: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:23722: \"$ac_try\"") >&5
+  { (eval echo "$as_me:24013: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23725: \$? = $ac_status" >&5
+  echo "$as_me:24016: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_type_pid_t=yes
 else
@@ -23732,7 +24023,7 @@ ac_cv_type_pid_t=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:23735: result: $ac_cv_type_pid_t" >&5
+echo "$as_me:24026: result: $ac_cv_type_pid_t" >&5
 echo "${ECHO_T}$ac_cv_type_pid_t" >&6
 if test "$ac_cv_type_pid_t" = yes; then
   :
 for ac_header in unistd.h vfork.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:23750: checking for $ac_header" >&5
+echo "$as_me:24041: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 23756 "configure"
+#line 24047 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:23760: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:24051: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:23766: \$? = $ac_status" >&5
+  echo "$as_me:24057: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -23782,7 +24073,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:23785: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:24076: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -23795,13 +24086,13 @@ done
 for ac_func in fork vfork
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:23798: checking for $ac_func" >&5
+echo "$as_me:24089: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 23804 "configure"
+#line 24095 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -23832,16 +24123,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23835: \"$ac_link\"") >&5
+if { (eval echo "$as_me:24126: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23838: \$? = $ac_status" >&5
+  echo "$as_me:24129: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23841: \"$ac_try\"") >&5
+  { (eval echo "$as_me:24132: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23844: \$? = $ac_status" >&5
+  echo "$as_me:24135: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -23851,7 +24142,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:23854: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:24145: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -23863,7 +24154,7 @@ done
 
 ac_cv_func_fork_works=$ac_cv_func_fork
 if test "x$ac_cv_func_fork" = xyes; then
-  echo "$as_me:23866: checking for working fork" >&5
+  echo "$as_me:24157: checking for working fork" >&5
 echo $ECHO_N "checking for working fork... $ECHO_C" >&6
 if test "${ac_cv_func_fork_works+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -23886,15 +24177,15 @@ else
       }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:23889: \"$ac_link\"") >&5
+if { (eval echo "$as_me:24180: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23892: \$? = $ac_status" >&5
+  echo "$as_me:24183: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:23894: \"$ac_try\"") >&5
+  { (eval echo "$as_me:24185: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23897: \$? = $ac_status" >&5
+  echo "$as_me:24188: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_fork_works=yes
 else
@@ -23906,7 +24197,7 @@ fi
 rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 fi
-echo "$as_me:23909: result: $ac_cv_func_fork_works" >&5
+echo "$as_me:24200: result: $ac_cv_func_fork_works" >&5
 echo "${ECHO_T}$ac_cv_func_fork_works" >&6
 
 fi
@@ -23920,12 +24211,12 @@ if test "x$ac_cv_func_fork_works" = xcross; then
       ac_cv_func_fork_works=yes
       ;;
   esac
-  { echo "$as_me:23923: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&5
+  { echo "$as_me:24214: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&5
 echo "$as_me: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&2;}
 fi
 ac_cv_func_vfork_works=$ac_cv_func_vfork
 if test "x$ac_cv_func_vfork" = xyes; then
-  echo "$as_me:23928: checking for working vfork" >&5
+  echo "$as_me:24219: checking for working vfork" >&5
 echo $ECHO_N "checking for working vfork... $ECHO_C" >&6
 if test "${ac_cv_func_vfork_works+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -23934,7 +24225,7 @@ else
   ac_cv_func_vfork_works=cross
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 23937 "configure"
+#line 24228 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -23953,11 +24244,7 @@ else
    static variable whose address is put into a register that is
    clobbered by the vfork.  */
 static
-#ifdef __cplusplus
 sparc_address_test (int arg)
-# else
-sparc_address_test (arg) int arg;
-#endif
 {
   static pid_t child;
   if (!child) {
@@ -24000,7 +24287,7 @@ main (void)
     /* Convince the compiler that p..p7 are live; otherwise, it might
        use the same hardware register for all 8 local variables.  */
     if (p != p1 || p != p2 || p != p3 || p != p4
-       || p != p5 || p != p6 || p != p7)
+        || p != p5 || p != p6 || p != p7)
       _exit(1);
 
     /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent
@@ -24015,31 +24302,31 @@ main (void)
     while (wait(&status) != child)
       ;
     $ac_main_return(
-        /* Was there some problem with vforking?  */
-        child < 0
+         /* Was there some problem with vforking?  */
+         child < 0
 
-        /* Did the child fail?  (This shouldn't happen.)  */
-        || status
+         /* Did the child fail?  (This shouldn't happen.)  */
+         || status
 
-        /* Did the vfork/compiler bug occur?  */
-        || parent != getpid()
+         /* Did the vfork/compiler bug occur?  */
+         || parent != getpid()
 
-        /* Did the file descriptor bug occur?  */
-        || fstat(fileno(stdout), &st) != 0
-        );
+         /* Did the file descriptor bug occur?  */
+         || fstat(fileno(stdout), &st) != 0
+         );
   }
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:24034: \"$ac_link\"") >&5
+if { (eval echo "$as_me:24321: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:24037: \$? = $ac_status" >&5
+  echo "$as_me:24324: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:24039: \"$ac_try\"") >&5
+  { (eval echo "$as_me:24326: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:24042: \$? = $ac_status" >&5
+  echo "$as_me:24329: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_vfork_works=yes
 else
 rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 fi
-echo "$as_me:24054: result: $ac_cv_func_vfork_works" >&5
+echo "$as_me:24341: result: $ac_cv_func_vfork_works" >&5
 echo "${ECHO_T}$ac_cv_func_vfork_works" >&6
 
 fi;
 if test "x$ac_cv_func_fork_works" = xcross; then
   ac_cv_func_vfork_works=ac_cv_func_vfork
-  { echo "$as_me:24060: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&5
+  { echo "$as_me:24347: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&5
 echo "$as_me: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&2;}
 fi
 
@@ -24082,7 +24369,7 @@ EOF
 
 fi
 
-echo "$as_me:24085: checking if fopen accepts explicit binary mode" >&5
+echo "$as_me:24372: checking if fopen accepts explicit binary mode" >&5
 echo $ECHO_N "checking if fopen accepts explicit binary mode... $ECHO_C" >&6
 if test "${cf_cv_fopen_bin_r+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -24092,7 +24379,7 @@ else
   cf_cv_fopen_bin_r=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 24095 "configure"
+#line 24382 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -24127,15 +24414,15 @@ int main(void)
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:24130: \"$ac_link\"") >&5
+if { (eval echo "$as_me:24417: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:24133: \$? = $ac_status" >&5
+  echo "$as_me:24420: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:24135: \"$ac_try\"") >&5
+  { (eval echo "$as_me:24422: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:24138: \$? = $ac_status" >&5
+  echo "$as_me:24425: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_fopen_bin_r=yes
 else
@@ -24148,7 +24435,7 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes
 fi
 
 fi
-echo "$as_me:24151: result: $cf_cv_fopen_bin_r" >&5
+echo "$as_me:24438: result: $cf_cv_fopen_bin_r" >&5
 echo "${ECHO_T}$cf_cv_fopen_bin_r" >&6
 test "x$cf_cv_fopen_bin_r" != xno &&
 cat >>confdefs.h <<\EOF
@@ -24157,7 +24444,7 @@ EOF
 
 # special check for test/ditto.c
 
-echo "$as_me:24160: checking for openpty in -lutil" >&5
+echo "$as_me:24447: checking for openpty in -lutil" >&5
 echo $ECHO_N "checking for openpty in -lutil... $ECHO_C" >&6
 if test "${ac_cv_lib_util_openpty+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -24165,7 +24452,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lutil  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 24168 "configure"
+#line 24455 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -24174,7 +24461,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char openpty ();
+char openpty (void);
 int
 main (void)
 {
@@ -24184,16 +24471,16 @@ openpty ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:24187: \"$ac_link\"") >&5
+if { (eval echo "$as_me:24474: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:24190: \$? = $ac_status" >&5
+  echo "$as_me:24477: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:24193: \"$ac_try\"") >&5
+  { (eval echo "$as_me:24480: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:24196: \$? = $ac_status" >&5
+  echo "$as_me:24483: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_util_openpty=yes
 else
@@ -24204,7 +24491,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:24207: result: $ac_cv_lib_util_openpty" >&5
+echo "$as_me:24494: result: $ac_cv_lib_util_openpty" >&5
 echo "${ECHO_T}$ac_cv_lib_util_openpty" >&6
 if test "$ac_cv_lib_util_openpty" = yes; then
   cf_cv_lib_util=yes
@@ -24212,7 +24499,7 @@ else
   cf_cv_lib_util=no
 fi
 
-echo "$as_me:24215: checking for openpty header" >&5
+echo "$as_me:24502: checking for openpty header" >&5
 echo $ECHO_N "checking for openpty header... $ECHO_C" >&6
 if test "${cf_cv_func_openpty+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -24239,7 +24526,7 @@ LIBS="$cf_add_libs"
        for cf_header in pty.h libutil.h util.h
        do
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 24242 "configure"
+#line 24529 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -24250,22 +24537,23 @@ main (void)
 
        int x = openpty((int *)0, (int *)0, (char *)0,
                                   (struct termios *)0, (struct winsize *)0);
+       (void)x;
 
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:24259: \"$ac_link\"") >&5
+if { (eval echo "$as_me:24547: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:24262: \$? = $ac_status" >&5
+  echo "$as_me:24550: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:24265: \"$ac_try\"") >&5
+  { (eval echo "$as_me:24553: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:24268: \$? = $ac_status" >&5
+  echo "$as_me:24556: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                cf_cv_func_openpty=$cf_header
@@ -24283,7 +24571,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
        LIBS="$cf_save_LIBS"
 
 fi
-echo "$as_me:24286: result: $cf_cv_func_openpty" >&5
+echo "$as_me:24574: result: $cf_cv_func_openpty" >&5
 echo "${ECHO_T}$cf_cv_func_openpty" >&6
 
 if test "$cf_cv_func_openpty" != no ; then
@@ -24356,7 +24644,7 @@ if test -n "$with_hashed_db/include" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 24359 "configure"
+#line 24647 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -24368,16 +24656,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:24371: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:24659: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:24374: \$? = $ac_status" >&5
+  echo "$as_me:24662: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:24377: \"$ac_try\"") >&5
+  { (eval echo "$as_me:24665: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:24380: \$? = $ac_status" >&5
+  echo "$as_me:24668: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -24394,7 +24682,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:24397: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:24685: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -24430,7 +24718,7 @@ if test -n "$with_hashed_db/lib" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:24433: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:24721: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
@@ -24441,7 +24729,7 @@ fi
        else
                case "$with_hashed_db" in
                (./*|../*|/*)
-                       { echo "$as_me:24444: WARNING: no such directory $with_hashed_db" >&5
+                       { echo "$as_me:24732: WARNING: no such directory $with_hashed_db" >&5
 echo "$as_me: WARNING: no such directory $with_hashed_db" >&2;}
                        ;;
                (*)
@@ -24513,7 +24801,7 @@ if test -n "$cf_item" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 24516 "configure"
+#line 24804 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -24525,16 +24813,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:24528: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:24816: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:24531: \$? = $ac_status" >&5
+  echo "$as_me:24819: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:24534: \"$ac_try\"") >&5
+  { (eval echo "$as_me:24822: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:24537: \$? = $ac_status" >&5
+  echo "$as_me:24825: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -24551,7 +24839,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:24554: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:24842: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -24631,7 +24919,7 @@ if test -n "$cf_item" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:24634: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:24922: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
        fi
 esac
 
-echo "$as_me:24651: checking for db.h" >&5
+echo "$as_me:24939: checking for db.h" >&5
 echo $ECHO_N "checking for db.h... $ECHO_C" >&6
 if test "${ac_cv_header_db_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 24657 "configure"
+#line 24945 "configure"
 #include "confdefs.h"
 #include <db.h>
 _ACEOF
-if { (eval echo "$as_me:24661: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:24949: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:24667: \$? = $ac_status" >&5
+  echo "$as_me:24955: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -24683,11 +24971,11 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:24686: result: $ac_cv_header_db_h" >&5
+echo "$as_me:24974: result: $ac_cv_header_db_h" >&5
 echo "${ECHO_T}$ac_cv_header_db_h" >&6
 if test "$ac_cv_header_db_h" = yes; then
 
-echo "$as_me:24690: checking for version of db" >&5
+echo "$as_me:24978: checking for version of db" >&5
 echo $ECHO_N "checking for version of db... $ECHO_C" >&6
 if test "${cf_cv_hashed_db_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -24698,10 +24986,10 @@ cf_cv_hashed_db_version=unknown
 for cf_db_version in 1 2 3 4 5 6
 do
 
-echo "${as_me:-configure}:24701: testing checking for db version $cf_db_version ..." 1>&5
+echo "${as_me:-configure}:24989: testing checking for db version $cf_db_version ..." 1>&5
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 24704 "configure"
+#line 24992 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -24712,13 +25000,13 @@ $ac_includes_default
 #if $cf_db_version == DB_VERSION_MAJOR
        /* ok */
 #else
-       make an error
+       #error $cf_db_version is not DB_VERSION_MAJOR
 #endif
 #else
 #if $cf_db_version == 1
        /* ok: assuming this is DB 1.8.5 */
 #else
-       make an error
+       #error $cf_db_version is not 1
 #endif
 #endif
 
@@ -24731,16 +25019,16 @@ DBT *foo = 0
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:24734: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:25022: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:24737: \$? = $ac_status" >&5
+  echo "$as_me:25025: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:24740: \"$ac_try\"") >&5
+  { (eval echo "$as_me:25028: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:24743: \$? = $ac_status" >&5
+  echo "$as_me:25031: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_hashed_db_version=$cf_db_version
@@ -24754,16 +25042,16 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:24757: result: $cf_cv_hashed_db_version" >&5
+echo "$as_me:25045: result: $cf_cv_hashed_db_version" >&5
 echo "${ECHO_T}$cf_cv_hashed_db_version" >&6
 
 if test "$cf_cv_hashed_db_version" = unknown ; then
-       { { echo "$as_me:24761: error: Cannot determine version of db" >&5
+       { { echo "$as_me:25049: error: Cannot determine version of db" >&5
 echo "$as_me: error: Cannot determine version of db" >&2;}
    { (exit 1); exit 1; }; }
 else
 
-echo "$as_me:24766: checking for db libraries" >&5
+echo "$as_me:25054: checking for db libraries" >&5
 echo $ECHO_N "checking for db libraries... $ECHO_C" >&6
 if test "${cf_cv_hashed_db_libs+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -24793,10 +25081,10 @@ LIBS="$cf_add_libs"
 
        fi
 
-echo "${as_me:-configure}:24796: testing checking for library $cf_db_libs ..." 1>&5
+echo "${as_me:-configure}:25084: testing checking for library $cf_db_libs ..." 1>&5
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 24799 "configure"
+#line 25087 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -24851,16 +25139,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:24854: \"$ac_link\"") >&5
+if { (eval echo "$as_me:25142: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:24857: \$? = $ac_status" >&5
+  echo "$as_me:25145: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:24860: \"$ac_try\"") >&5
+  { (eval echo "$as_me:25148: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:24863: \$? = $ac_status" >&5
+  echo "$as_me:25151: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        if test -n "$cf_db_libs" ; then
@@ -24880,11 +25168,11 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:24883: result: $cf_cv_hashed_db_libs" >&5
+echo "$as_me:25171: result: $cf_cv_hashed_db_libs" >&5
 echo "${ECHO_T}$cf_cv_hashed_db_libs" >&6
 
        if test "$cf_cv_hashed_db_libs" = unknown ; then
-               { { echo "$as_me:24887: error: Cannot determine library for db" >&5
+               { { echo "$as_me:25175: error: Cannot determine library for db" >&5
 echo "$as_me: error: Cannot determine library for db" >&2;}
    { (exit 1); exit 1; }; }
        elif test "$cf_cv_hashed_db_libs" != default ; then
@@ -24910,7 +25198,7 @@ fi
 
 else
 
-       { { echo "$as_me:24913: error: Cannot find db.h" >&5
+       { { echo "$as_me:25201: error: Cannot find db.h" >&5
 echo "$as_me: error: Cannot find db.h" >&2;}
    { (exit 1); exit 1; }; }
 
@@ -24925,7 +25213,7 @@ fi
 
 # Just in case, check if the C compiler has a bool type.
 
-echo "$as_me:24928: checking if we should include stdbool.h" >&5
+echo "$as_me:25216: checking if we should include stdbool.h" >&5
 echo $ECHO_N "checking if we should include stdbool.h... $ECHO_C" >&6
 
 if test "${cf_cv_header_stdbool_h+set}" = set; then
@@ -24933,35 +25221,35 @@ if test "${cf_cv_header_stdbool_h+set}" = set; then
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 24936 "configure"
+#line 25224 "configure"
 #include "confdefs.h"
 
 int
 main (void)
 {
-bool foo = false
+bool foo = false; (void)foo
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:24948: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:25236: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:24951: \$? = $ac_status" >&5
+  echo "$as_me:25239: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:24954: \"$ac_try\"") >&5
+  { (eval echo "$as_me:25242: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:24957: \$? = $ac_status" >&5
+  echo "$as_me:25245: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_header_stdbool_h=0
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 24964 "configure"
+#line 25252 "configure"
 #include "confdefs.h"
 
 #ifndef __BEOS__
@@ -24971,22 +25259,22 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-bool foo = false
+bool foo = false; (void)foo
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:24980: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:25268: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:24983: \$? = $ac_status" >&5
+  echo "$as_me:25271: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:24986: \"$ac_try\"") >&5
+  { (eval echo "$as_me:25274: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:24989: \$? = $ac_status" >&5
+  echo "$as_me:25277: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_header_stdbool_h=1
 else
@@ -25000,13 +25288,13 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 
 if test "$cf_cv_header_stdbool_h" = 1
-then   echo "$as_me:25003: result: yes" >&5
+then   echo "$as_me:25291: result: yes" >&5
 echo "${ECHO_T}yes" >&6
-else   echo "$as_me:25005: result: no" >&5
+else   echo "$as_me:25293: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
-echo "$as_me:25009: checking for builtin bool type" >&5
+echo "$as_me:25297: checking for builtin bool type" >&5
 echo $ECHO_N "checking for builtin bool type... $ECHO_C" >&6
 
 if test "${cf_cv_cc_bool_type+set}" = set; then
@@ -25014,7 +25302,7 @@ if test "${cf_cv_cc_bool_type+set}" = set; then
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 25017 "configure"
+#line 25305 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -25023,22 +25311,22 @@ else
 int
 main (void)
 {
-bool x = false
+bool x = false; (void)x
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:25032: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:25320: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:25035: \$? = $ac_status" >&5
+  echo "$as_me:25323: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:25038: \"$ac_try\"") >&5
+  { (eval echo "$as_me:25326: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25041: \$? = $ac_status" >&5
+  echo "$as_me:25329: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_cc_bool_type=1
 else
@@ -25051,9 +25339,9 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 
 if test "$cf_cv_cc_bool_type" = 1
-then   echo "$as_me:25054: result: yes" >&5
+then   echo "$as_me:25342: result: yes" >&5
 echo "${ECHO_T}yes" >&6
-else   echo "$as_me:25056: result: no" >&5
+else   echo "$as_me:25344: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -25070,10 +25358,10 @@ if test -n "$GXX" ; then
 
        cf_save="$LIBS"
        LIBS="$LIBS $CXXLIBS"
-       echo "$as_me:25073: checking if we already have C++ library" >&5
+       echo "$as_me:25361: checking if we already have C++ library" >&5
 echo $ECHO_N "checking if we already have C++ library... $ECHO_C" >&6
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 25076 "configure"
+#line 25364 "configure"
 #include "confdefs.h"
 
                        #include <iostream>
@@ -25087,16 +25375,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:25090: \"$ac_link\"") >&5
+if { (eval echo "$as_me:25378: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:25093: \$? = $ac_status" >&5
+  echo "$as_me:25381: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:25096: \"$ac_try\"") >&5
+  { (eval echo "$as_me:25384: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25099: \$? = $ac_status" >&5
+  echo "$as_me:25387: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_have_libstdcpp=yes
 else
@@ -25105,7 +25393,7 @@ cat "conftest.$ac_ext" >&5
 cf_have_libstdcpp=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-       echo "$as_me:25108: result: $cf_have_libstdcpp" >&5
+       echo "$as_me:25396: result: $cf_have_libstdcpp" >&5
 echo "${ECHO_T}$cf_have_libstdcpp" >&6
        LIBS="$cf_save"
 
@@ -25124,7 +25412,7 @@ echo "${ECHO_T}$cf_have_libstdcpp" >&6
                        ;;
                esac
 
-               echo "$as_me:25127: checking for library $cf_stdcpp_libname" >&5
+               echo "$as_me:25415: checking for library $cf_stdcpp_libname" >&5
 echo $ECHO_N "checking for library $cf_stdcpp_libname... $ECHO_C" >&6
 if test "${cf_cv_libstdcpp+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -25150,7 +25438,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 25153 "configure"
+#line 25441 "configure"
 #include "confdefs.h"
 
                                #include <iostream>
@@ -25164,16 +25452,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:25167: \"$ac_link\"") >&5
+if { (eval echo "$as_me:25455: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:25170: \$? = $ac_status" >&5
+  echo "$as_me:25458: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:25173: \"$ac_try\"") >&5
+  { (eval echo "$as_me:25461: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25176: \$? = $ac_status" >&5
+  echo "$as_me:25464: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_libstdcpp=yes
 else
@@ -25185,7 +25473,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
                        LIBS="$cf_save"
 
 fi
-echo "$as_me:25188: result: $cf_cv_libstdcpp" >&5
+echo "$as_me:25476: result: $cf_cv_libstdcpp" >&5
 echo "${ECHO_T}$cf_cv_libstdcpp" >&6
                test "$cf_cv_libstdcpp" = yes && {
 cf_add_libs="$CXXLIBS"
@@ -25207,7 +25495,7 @@ CXXLIBS="$cf_add_libs"
        fi
 fi
 
-       echo "$as_me:25210: checking whether $CXX understands -c and -o together" >&5
+       echo "$as_me:25498: checking whether $CXX understands -c and -o together" >&5
 echo $ECHO_N "checking whether $CXX understands -c and -o together... $ECHO_C" >&6
 if test "${cf_cv_prog_CXX_c_o+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -25222,15 +25510,15 @@ CF_EOF
 # We do the test twice because some compilers refuse to overwrite an
 # existing .o file with -o, though they will create one.
 ac_try='$CXX $CXXFLAGS $CPPFLAGS -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-if { (eval echo "$as_me:25225: \"$ac_try\"") >&5
+if { (eval echo "$as_me:25513: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25228: \$? = $ac_status" >&5
+  echo "$as_me:25516: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
-  test -f conftest2.$ac_objext && { (eval echo "$as_me:25230: \"$ac_try\"") >&5
+  test -f conftest2.$ac_objext && { (eval echo "$as_me:25518: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25233: \$? = $ac_status" >&5
+  echo "$as_me:25521: \$? = $ac_status" >&5
   (exit "$ac_status"); };
 then
   eval cf_cv_prog_CXX_c_o=yes
@@ -25241,10 +25529,10 @@ rm -rf ./conftest*
 
 fi
 if test "$cf_cv_prog_CXX_c_o" = yes; then
-  echo "$as_me:25244: result: yes" >&5
+  echo "$as_me:25532: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
-  echo "$as_me:25247: result: no" >&5
+  echo "$as_me:25535: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -25264,7 +25552,7 @@ case "$cf_cv_system_name" in
        ;;
 esac
 if test "$GXX" = yes; then
-       echo "$as_me:25267: checking for lib$cf_gpp_libname" >&5
+       echo "$as_me:25555: checking for lib$cf_gpp_libname" >&5
 echo $ECHO_N "checking for lib$cf_gpp_libname... $ECHO_C" >&6
        cf_save="$LIBS"
 
@@ -25285,7 +25573,7 @@ done
 LIBS="$cf_add_libs"
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 25288 "configure"
+#line 25576 "configure"
 #include "confdefs.h"
 
 #include <$cf_gpp_libname/builtin.h>
@@ -25299,16 +25587,16 @@ two_arg_error_handler_t foo2 = lib_error_handler
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:25302: \"$ac_link\"") >&5
+if { (eval echo "$as_me:25590: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:25305: \$? = $ac_status" >&5
+  echo "$as_me:25593: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:25308: \"$ac_try\"") >&5
+  { (eval echo "$as_me:25596: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25311: \$? = $ac_status" >&5
+  echo "$as_me:25599: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cxx_library=yes
 
@@ -25345,7 +25633,7 @@ else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 25348 "configure"
+#line 25636 "configure"
 #include "confdefs.h"
 
 #include <builtin.h>
@@ -25359,16 +25647,16 @@ two_arg_error_handler_t foo2 = lib_error_handler
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:25362: \"$ac_link\"") >&5
+if { (eval echo "$as_me:25650: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:25365: \$? = $ac_status" >&5
+  echo "$as_me:25653: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:25368: \"$ac_try\"") >&5
+  { (eval echo "$as_me:25656: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25371: \$? = $ac_status" >&5
+  echo "$as_me:25659: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cxx_library=yes
 
@@ -25401,7 +25689,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
        LIBS="$cf_save"
-       echo "$as_me:25404: result: $cf_cxx_library" >&5
+       echo "$as_me:25692: result: $cf_cxx_library" >&5
 echo "${ECHO_T}$cf_cxx_library" >&6
 fi
 
@@ -25417,7 +25705,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS "conftest.$ac_ext" >&5'
 ac_link='$CXX -o "conftest$ac_exeext" $CXXFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac_ext" $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 ac_main_return="return"
-echo "$as_me:25420: checking how to run the C++ preprocessor" >&5
+echo "$as_me:25708: checking how to run the C++ preprocessor" >&5
 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
 if test -z "$CXXCPP"; then
   if test "${ac_cv_prog_CXXCPP+set}" = set; then
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 25437 "configure"
+#line 25725 "configure"
 #include "confdefs.h"
 #include <assert.h>
                      Syntax error
 _ACEOF
-if { (eval echo "$as_me:25442: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:25730: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:25448: \$? = $ac_status" >&5
+  echo "$as_me:25736: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -25468,17 +25756,17 @@ rm -f conftest.err "conftest.$ac_ext"
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 25471 "configure"
+#line 25759 "configure"
 #include "confdefs.h"
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:25475: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:25763: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:25481: \$? = $ac_status" >&5
+  echo "$as_me:25769: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -25515,7 +25803,7 @@ fi
 else
   ac_cv_prog_CXXCPP=$CXXCPP
 fi
-echo "$as_me:25518: result: $CXXCPP" >&5
+echo "$as_me:25806: result: $CXXCPP" >&5
 echo "${ECHO_T}$CXXCPP" >&6
 ac_preproc_ok=false
 for ac_cxx_preproc_warn_flag in '' yes
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 25528 "configure"
+#line 25816 "configure"
 #include "confdefs.h"
 #include <assert.h>
                      Syntax error
 _ACEOF
-if { (eval echo "$as_me:25533: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:25821: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:25539: \$? = $ac_status" >&5
+  echo "$as_me:25827: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -25559,17 +25847,17 @@ rm -f conftest.err "conftest.$ac_ext"
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 25562 "configure"
+#line 25850 "configure"
 #include "confdefs.h"
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:25566: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:25854: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:25572: \$? = $ac_status" >&5
+  echo "$as_me:25860: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -25597,7 +25885,7 @@ rm -f conftest.err "conftest.$ac_ext"
 if $ac_preproc_ok; then
   :
 else
-  { { echo "$as_me:25600: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5
+  { { echo "$as_me:25888: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5
 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -25612,23 +25900,23 @@ ac_main_return="return"
 for ac_header in typeinfo
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:25615: checking for $ac_header" >&5
+echo "$as_me:25903: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 25621 "configure"
+#line 25909 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:25625: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:25913: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:25631: \$? = $ac_status" >&5
+  echo "$as_me:25919: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -25647,7 +25935,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:25650: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:25938: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -25660,23 +25948,23 @@ done
 for ac_header in iostream
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:25663: checking for $ac_header" >&5
+echo "$as_me:25951: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 25669 "configure"
+#line 25957 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:25673: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:25961: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:25679: \$? = $ac_status" >&5
+  echo "$as_me:25967: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -25695,7 +25983,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:25698: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:25986: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
 done
 
 if test x"$ac_cv_header_iostream" = xyes ; then
-       echo "$as_me:25709: checking if iostream uses std-namespace" >&5
+       echo "$as_me:25997: checking if iostream uses std-namespace" >&5
 echo $ECHO_N "checking if iostream uses std-namespace... $ECHO_C" >&6
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 25712 "configure"
+#line 26000 "configure"
 #include "confdefs.h"
 
 #include <iostream>
@@ -25726,16 +26014,16 @@ cerr << "testing" << endl;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:25729: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26017: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:25732: \$? = $ac_status" >&5
+  echo "$as_me:26020: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:25735: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26023: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25738: \$? = $ac_status" >&5
+  echo "$as_me:26026: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_iostream_namespace=yes
 else
@@ -25744,7 +26032,7 @@ cat "conftest.$ac_ext" >&5
 cf_iostream_namespace=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-       echo "$as_me:25747: result: $cf_iostream_namespace" >&5
+       echo "$as_me:26035: result: $cf_iostream_namespace" >&5
 echo "${ECHO_T}$cf_iostream_namespace" >&6
        if test "$cf_iostream_namespace" = yes ; then
 
@@ -25755,7 +26043,7 @@ EOF
        fi
 fi
 
-echo "$as_me:25758: checking if we should include stdbool.h" >&5
+echo "$as_me:26046: checking if we should include stdbool.h" >&5
 echo $ECHO_N "checking if we should include stdbool.h... $ECHO_C" >&6
 
 if test "${cf_cv_header_stdbool_h+set}" = set; then
@@ -25763,35 +26051,35 @@ if test "${cf_cv_header_stdbool_h+set}" = set; then
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 25766 "configure"
+#line 26054 "configure"
 #include "confdefs.h"
 
 int
 main (void)
 {
-bool foo = false
+bool foo = false; (void)foo
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:25778: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26066: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:25781: \$? = $ac_status" >&5
+  echo "$as_me:26069: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:25784: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26072: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25787: \$? = $ac_status" >&5
+  echo "$as_me:26075: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_header_stdbool_h=0
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 25794 "configure"
+#line 26082 "configure"
 #include "confdefs.h"
 
 #ifndef __BEOS__
@@ -25801,22 +26089,22 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-bool foo = false
+bool foo = false; (void)foo
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:25810: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26098: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:25813: \$? = $ac_status" >&5
+  echo "$as_me:26101: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:25816: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26104: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25819: \$? = $ac_status" >&5
+  echo "$as_me:26107: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_header_stdbool_h=1
 else
@@ -25830,13 +26118,13 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 
 if test "$cf_cv_header_stdbool_h" = 1
-then   echo "$as_me:25833: result: yes" >&5
+then   echo "$as_me:26121: result: yes" >&5
 echo "${ECHO_T}yes" >&6
-else   echo "$as_me:25835: result: no" >&5
+else   echo "$as_me:26123: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
-echo "$as_me:25839: checking for builtin bool type" >&5
+echo "$as_me:26127: checking for builtin bool type" >&5
 echo $ECHO_N "checking for builtin bool type... $ECHO_C" >&6
 
 if test "${cf_cv_builtin_bool+set}" = set; then
@@ -25844,7 +26132,7 @@ if test "${cf_cv_builtin_bool+set}" = set; then
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 25847 "configure"
+#line 26135 "configure"
 #include "confdefs.h"
 
 #include <stdio.h>
@@ -25853,22 +26141,22 @@ else
 int
 main (void)
 {
-bool x = false
+bool x = false; (void)x
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:25862: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26150: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:25865: \$? = $ac_status" >&5
+  echo "$as_me:26153: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:25868: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26156: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25871: \$? = $ac_status" >&5
+  echo "$as_me:26159: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_builtin_bool=1
 else
@@ -25881,23 +26169,22 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 
 if test "$cf_cv_builtin_bool" = 1
-then   echo "$as_me:25884: result: yes" >&5
+then   echo "$as_me:26172: result: yes" >&5
 echo "${ECHO_T}yes" >&6
-else   echo "$as_me:25886: result: no" >&5
+else   echo "$as_me:26174: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
-echo "$as_me:25890: checking for bool" >&5
+echo "$as_me:26178: checking for bool" >&5
 echo $ECHO_N "checking for bool... $ECHO_C" >&6
 if test "${ac_cv_type_bool+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 25896 "configure"
+#line 26184 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -25929,16 +26216,16 @@ if (sizeof (bool))
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:25932: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26219: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:25935: \$? = $ac_status" >&5
+  echo "$as_me:26222: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:25938: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26225: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:25941: \$? = $ac_status" >&5
+  echo "$as_me:26228: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_type_bool=yes
 else
@@ -25948,10 +26235,10 @@ ac_cv_type_bool=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:25951: result: $ac_cv_type_bool" >&5
+echo "$as_me:26238: result: $ac_cv_type_bool" >&5
 echo "${ECHO_T}$ac_cv_type_bool" >&6
 
-echo "$as_me:25954: checking size of bool" >&5
+echo "$as_me:26241: checking size of bool" >&5
 echo $ECHO_N "checking size of bool... $ECHO_C" >&6
 if test "${ac_cv_sizeof_bool+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -25960,11 +26247,10 @@ else
   if test "$cross_compiling" = yes; then
   # Depending upon the size, compute the lo and hi bounds.
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 25963 "configure"
+#line 26250 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -25993,25 +26279,24 @@ int _array_ [1 - 2 * !((sizeof (bool)) >= 0)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:25996: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26282: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:25999: \$? = $ac_status" >&5
+  echo "$as_me:26285: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26002: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26288: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26005: \$? = $ac_status" >&5
+  echo "$as_me:26291: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_lo=0 ac_mid=0
   while :; do
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 26010 "configure"
+#line 26296 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -26040,16 +26325,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:26043: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26328: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26046: \$? = $ac_status" >&5
+  echo "$as_me:26331: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26049: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26334: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26052: \$? = $ac_status" >&5
+  echo "$as_me:26337: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_hi=$ac_mid; break
 else
@@ -26065,11 +26350,10 @@ cat "conftest.$ac_ext" >&5
 ac_hi=-1 ac_mid=-1
   while :; do
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 26068 "configure"
+#line 26353 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -26098,16 +26382,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) >= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:26101: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26385: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26104: \$? = $ac_status" >&5
+  echo "$as_me:26388: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26107: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26391: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26110: \$? = $ac_status" >&5
+  echo "$as_me:26394: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_lo=$ac_mid; break
 else
@@ -26123,11 +26407,10 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 while test "x$ac_lo" != "x$ac_hi"; do
   ac_mid=`expr '(' "$ac_hi" - "$ac_lo" ')' / 2 + "$ac_lo"`
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 26126 "configure"
+#line 26410 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -26156,16 +26439,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:26159: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26442: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26162: \$? = $ac_status" >&5
+  echo "$as_me:26445: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26165: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26448: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26168: \$? = $ac_status" >&5
+  echo "$as_me:26451: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_hi=$ac_mid
 else
@@ -26178,16 +26461,15 @@ done
 ac_cv_sizeof_bool=$ac_lo
 else
   if test "$cross_compiling" = yes; then
-  { { echo "$as_me:26181: error: cannot run test program while cross compiling" >&5
+  { { echo "$as_me:26464: error: cannot run test program while cross compiling" >&5
 echo "$as_me: error: cannot run test program while cross compiling" >&2;}
    { (exit 1); exit 1; }; }
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 26186 "configure"
+#line 26469 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -26220,15 +26502,15 @@ fclose (f);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:26223: \"$ac_link\"") >&5
+if { (eval echo "$as_me:26505: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:26226: \$? = $ac_status" >&5
+  echo "$as_me:26508: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:26228: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26510: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26231: \$? = $ac_status" >&5
+  echo "$as_me:26513: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sizeof_bool=`cat conftest.val`
 else
@@ -26244,13 +26526,13 @@ else
   ac_cv_sizeof_bool=0
 fi
 fi
-echo "$as_me:26247: result: $ac_cv_sizeof_bool" >&5
+echo "$as_me:26529: result: $ac_cv_sizeof_bool" >&5
 echo "${ECHO_T}$ac_cv_sizeof_bool" >&6
 cat >>confdefs.h <<EOF
 #define SIZEOF_BOOL $ac_cv_sizeof_bool
 EOF
 
-echo "$as_me:26253: checking for type of bool" >&5
+echo "$as_me:26535: checking for type of bool" >&5
 echo $ECHO_N "checking for type of bool... $ECHO_C" >&6
 if test "${cf_cv_type_of_bool+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -26269,7 +26551,7 @@ else
 
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 26272 "configure"
+#line 26554 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -26310,15 +26592,15 @@ int main(void)
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:26313: \"$ac_link\"") >&5
+if { (eval echo "$as_me:26595: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:26316: \$? = $ac_status" >&5
+  echo "$as_me:26598: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:26318: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26600: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26321: \$? = $ac_status" >&5
+  echo "$as_me:26603: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_type_of_bool=`cat cf_test.out`
                 if test -z "$cf_cv_type_of_bool"; then
        rm -f cf_test.out
 
 fi
-echo "$as_me:26338: result: $cf_cv_type_of_bool" >&5
+echo "$as_me:26620: result: $cf_cv_type_of_bool" >&5
 echo "${ECHO_T}$cf_cv_type_of_bool" >&6
 
 if test "$cf_cv_type_of_bool" = unknown ; then
        case .$NCURSES_BOOL in
        (.auto|.) NCURSES_BOOL=unsigned;;
        esac
-       { echo "$as_me:26345: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
+       { echo "$as_me:26627: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
 echo "$as_me: WARNING: Assuming $NCURSES_BOOL for type of bool" >&2;}
        cf_cv_type_of_bool=$NCURSES_BOOL
 fi
 
-echo "$as_me:26350: checking for special defines needed for etip.h" >&5
+echo "$as_me:26632: checking for special defines needed for etip.h" >&5
 echo $ECHO_N "checking for special defines needed for etip.h... $ECHO_C" >&6
 cf_save_CXXFLAGS="$CXXFLAGS"
 cf_result="none"
@@ -26365,7 +26647,7 @@ do
        test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
        test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 26368 "configure"
+#line 26650 "configure"
 #include "confdefs.h"
 
 #include <etip.h.in>
@@ -26379,16 +26661,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:26382: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26664: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26385: \$? = $ac_status" >&5
+  echo "$as_me:26667: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26388: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26670: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26391: \$? = $ac_status" >&5
+  echo "$as_me:26673: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        test -n "$cf_math" && cat >>confdefs.h <<EOF
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 done
-echo "$as_me:26412: result: $cf_result" >&5
-echo "${ECHO_T}$cf_result" >&6
+echo "$as_me:26694: result: ${cf_result:-(none)}" >&5
+echo "${ECHO_T}${cf_result:-(none)}" >&6
 CXXFLAGS="$cf_save_CXXFLAGS"
 
 if test -n "$CXX"; then
-echo "$as_me:26417: checking if $CXX accepts override keyword" >&5
+echo "$as_me:26699: checking if $CXX accepts override keyword" >&5
 echo $ECHO_N "checking if $CXX accepts override keyword... $ECHO_C" >&6
 if test "${cf_cv_cpp_override+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -26431,7 +26713,7 @@ ac_main_return="return"
   cf_cv_cpp_override=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 26434 "configure"
+#line 26716 "configure"
 #include "confdefs.h"
 
 class base
@@ -26450,15 +26732,15 @@ int main(void) { }
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:26453: \"$ac_link\"") >&5
+if { (eval echo "$as_me:26735: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:26456: \$? = $ac_status" >&5
+  echo "$as_me:26738: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:26458: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26740: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26461: \$? = $ac_status" >&5
+  echo "$as_me:26743: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_cpp_override=yes
 else
@@ -26477,7 +26759,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 ac_main_return="return"
 
 fi
-echo "$as_me:26480: result: $cf_cv_cpp_override" >&5
+echo "$as_me:26762: result: $cf_cv_cpp_override" >&5
 echo "${ECHO_T}$cf_cv_cpp_override" >&6
 fi
 test "$cf_cv_cpp_override" = yes &&
@@ -26486,7 +26768,7 @@ cat >>confdefs.h <<\EOF
 EOF
 
 if test -n "$CXX"; then
-echo "$as_me:26489: checking if $CXX accepts parameter initialization" >&5
+echo "$as_me:26771: checking if $CXX accepts parameter initialization" >&5
 echo $ECHO_N "checking if $CXX accepts parameter initialization... $ECHO_C" >&6
 if test "${cf_cv_cpp_param_init+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -26503,7 +26785,7 @@ ac_main_return="return"
   cf_cv_cpp_param_init=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 26506 "configure"
+#line 26788 "configure"
 #include "confdefs.h"
 
 class TEST {
@@ -26522,15 +26804,15 @@ int main(void) { }
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:26525: \"$ac_link\"") >&5
+if { (eval echo "$as_me:26807: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:26528: \$? = $ac_status" >&5
+  echo "$as_me:26810: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:26530: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26812: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26533: \$? = $ac_status" >&5
+  echo "$as_me:26815: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_cpp_param_init=yes
 else
@@ -26549,7 +26831,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 ac_main_return="return"
 
 fi
-echo "$as_me:26552: result: $cf_cv_cpp_param_init" >&5
+echo "$as_me:26834: result: $cf_cv_cpp_param_init" >&5
 echo "${ECHO_T}$cf_cv_cpp_param_init" >&6
 fi
 test "$cf_cv_cpp_param_init" = yes &&
@@ -26559,7 +26841,7 @@ EOF
 
 if test -n "$CXX"; then
 
-echo "$as_me:26562: checking if $CXX accepts static_cast" >&5
+echo "$as_me:26844: checking if $CXX accepts static_cast" >&5
 echo $ECHO_N "checking if $CXX accepts static_cast... $ECHO_C" >&6
 if test "${cf_cv_cpp_static_cast+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -26573,7 +26855,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 ac_main_return="return"
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 26576 "configure"
+#line 26858 "configure"
 #include "confdefs.h"
 
 class NCursesPanel
@@ -26617,16 +26899,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:26620: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:26902: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26623: \$? = $ac_status" >&5
+  echo "$as_me:26905: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26626: \"$ac_try\"") >&5
+  { (eval echo "$as_me:26908: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26629: \$? = $ac_status" >&5
+  echo "$as_me:26911: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_cpp_static_cast=yes
 else
@@ -26644,7 +26926,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 ac_main_return="return"
 
 fi
-echo "$as_me:26647: result: $cf_cv_cpp_static_cast" >&5
+echo "$as_me:26929: result: $cf_cv_cpp_static_cast" >&5
 echo "${ECHO_T}$cf_cv_cpp_static_cast" >&6
 
 fi
@@ -26693,17 +26975,16 @@ else
        else
                if test "$cf_cv_header_stdbool_h" = 1 ; then
 
-echo "$as_me:26696: checking for bool" >&5
+echo "$as_me:26978: checking for bool" >&5
 echo $ECHO_N "checking for bool... $ECHO_C" >&6
 if test "${ac_cv_type_bool+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 26702 "configure"
+#line 26984 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -26735,16 +27016,16 @@ if (sizeof (bool))
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:26738: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:27019: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26741: \$? = $ac_status" >&5
+  echo "$as_me:27022: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26744: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27025: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26747: \$? = $ac_status" >&5
+  echo "$as_me:27028: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_type_bool=yes
 else
@@ -26754,10 +27035,10 @@ ac_cv_type_bool=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:26757: result: $ac_cv_type_bool" >&5
+echo "$as_me:27038: result: $ac_cv_type_bool" >&5
 echo "${ECHO_T}$ac_cv_type_bool" >&6
 
-echo "$as_me:26760: checking size of bool" >&5
+echo "$as_me:27041: checking size of bool" >&5
 echo $ECHO_N "checking size of bool... $ECHO_C" >&6
 if test "${ac_cv_sizeof_bool+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -26766,11 +27047,10 @@ else
   if test "$cross_compiling" = yes; then
   # Depending upon the size, compute the lo and hi bounds.
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 26769 "configure"
+#line 27050 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -26799,25 +27079,24 @@ int _array_ [1 - 2 * !((sizeof (bool)) >= 0)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:26802: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:27082: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26805: \$? = $ac_status" >&5
+  echo "$as_me:27085: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26808: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27088: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26811: \$? = $ac_status" >&5
+  echo "$as_me:27091: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_lo=0 ac_mid=0
   while :; do
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 26816 "configure"
+#line 27096 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -26846,16 +27125,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:26849: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:27128: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26852: \$? = $ac_status" >&5
+  echo "$as_me:27131: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26855: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27134: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26858: \$? = $ac_status" >&5
+  echo "$as_me:27137: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_hi=$ac_mid; break
 else
@@ -26871,11 +27150,10 @@ cat "conftest.$ac_ext" >&5
 ac_hi=-1 ac_mid=-1
   while :; do
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 26874 "configure"
+#line 27153 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -26904,16 +27182,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) >= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:26907: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:27185: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26910: \$? = $ac_status" >&5
+  echo "$as_me:27188: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26913: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27191: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26916: \$? = $ac_status" >&5
+  echo "$as_me:27194: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_lo=$ac_mid; break
 else
@@ -26929,11 +27207,10 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 while test "x$ac_lo" != "x$ac_hi"; do
   ac_mid=`expr '(' "$ac_hi" - "$ac_lo" ')' / 2 + "$ac_lo"`
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 26932 "configure"
+#line 27210 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -26962,16 +27239,16 @@ int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:26965: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:27242: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:26968: \$? = $ac_status" >&5
+  echo "$as_me:27245: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:26971: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27248: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:26974: \$? = $ac_status" >&5
+  echo "$as_me:27251: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_hi=$ac_mid
 else
@@ -26984,16 +27261,15 @@ done
 ac_cv_sizeof_bool=$ac_lo
 else
   if test "$cross_compiling" = yes; then
-  { { echo "$as_me:26987: error: cannot run test program while cross compiling" >&5
+  { { echo "$as_me:27264: error: cannot run test program while cross compiling" >&5
 echo "$as_me: error: cannot run test program while cross compiling" >&2;}
    { (exit 1); exit 1; }; }
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 26992 "configure"
+#line 27269 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <stdio.h>
+$ac_includes_default
 
 #if defined(__cplusplus)
 
@@ -27026,15 +27302,15 @@ fclose (f);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:27029: \"$ac_link\"") >&5
+if { (eval echo "$as_me:27305: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:27032: \$? = $ac_status" >&5
+  echo "$as_me:27308: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:27034: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27310: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27037: \$? = $ac_status" >&5
+  echo "$as_me:27313: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sizeof_bool=`cat conftest.val`
 else
@@ -27050,13 +27326,13 @@ else
   ac_cv_sizeof_bool=0
 fi
 fi
-echo "$as_me:27053: result: $ac_cv_sizeof_bool" >&5
+echo "$as_me:27329: result: $ac_cv_sizeof_bool" >&5
 echo "${ECHO_T}$ac_cv_sizeof_bool" >&6
 cat >>confdefs.h <<EOF
 #define SIZEOF_BOOL $ac_cv_sizeof_bool
 EOF
 
-echo "$as_me:27059: checking for type of bool" >&5
+echo "$as_me:27335: checking for type of bool" >&5
 echo $ECHO_N "checking for type of bool... $ECHO_C" >&6
 if test "${cf_cv_type_of_bool+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -27075,7 +27351,7 @@ else
 
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 27078 "configure"
+#line 27354 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -27116,15 +27392,15 @@ int main(void)
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:27119: \"$ac_link\"") >&5
+if { (eval echo "$as_me:27395: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:27122: \$? = $ac_status" >&5
+  echo "$as_me:27398: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:27124: \"$ac_try\"") >&5
+  { (eval echo "$as_me:27400: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27127: \$? = $ac_status" >&5
+  echo "$as_me:27403: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_type_of_bool=`cat cf_test.out`
                 if test -z "$cf_cv_type_of_bool"; then
        rm -f cf_test.out
 
 fi
-echo "$as_me:27144: result: $cf_cv_type_of_bool" >&5
+echo "$as_me:27420: result: $cf_cv_type_of_bool" >&5
 echo "${ECHO_T}$cf_cv_type_of_bool" >&6
 
 if test "$cf_cv_type_of_bool" = unknown ; then
        case .$NCURSES_BOOL in
        (.auto|.) NCURSES_BOOL=unsigned;;
        esac
-       { echo "$as_me:27151: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
+       { echo "$as_me:27427: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
 echo "$as_me: WARNING: Assuming $NCURSES_BOOL for type of bool" >&2;}
        cf_cv_type_of_bool=$NCURSES_BOOL
 fi
 
                else
-                       echo "$as_me:27157: checking for fallback type of bool" >&5
+                       echo "$as_me:27433: checking for fallback type of bool" >&5
 echo $ECHO_N "checking for fallback type of bool... $ECHO_C" >&6
                        case "$host_cpu" in
                        (i?86)  cf_cv_type_of_bool=char ;;
                        (*)     cf_cv_type_of_bool=int  ;;
                        esac
-                       echo "$as_me:27163: result: $cf_cv_type_of_bool" >&5
+                       echo "$as_me:27439: result: $cf_cv_type_of_bool" >&5
 echo "${ECHO_T}$cf_cv_type_of_bool" >&6
                fi
        fi
@@ -27189,7 +27465,7 @@ if test -f "${srcdir}/Ada95/Makefile.in" ; then
 
        if test "$cf_with_ada" != "no" ; then
                if test "$with_libtool" != "no"; then
-                       { echo "$as_me:27192: WARNING: libtool does not support Ada - disabling feature" >&5
+                       { echo "$as_me:27468: WARNING: libtool does not support Ada - disabling feature" >&5
 echo "$as_me: WARNING: libtool does not support Ada - disabling feature" >&2;}
                        cf_with_ada=no
                fi
@@ -27206,7 +27482,7 @@ cf_upper_prog_gnat=`echo "${cf_prog_gnat}" | sed y%abcdefghijklmnopqrstuvwxyz./-
        unset cf_TEMP_gnat
        # Extract the first word of "$cf_prog_gnat", so it can be a program name with args.
 set dummy $cf_prog_gnat; ac_word=$2
-echo "$as_me:27209: checking for $ac_word" >&5
+echo "$as_me:27485: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_cf_TEMP_gnat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -27223,7 +27499,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_cf_TEMP_gnat="$ac_dir/$ac_word"
-   echo "$as_me:27226: found $ac_dir/$ac_word" >&5
+   echo "$as_me:27502: found $ac_dir/$ac_word" >&5
    break
 fi
 done
 cf_TEMP_gnat=$ac_cv_path_cf_TEMP_gnat
 
 if test -n "$cf_TEMP_gnat"; then
-  echo "$as_me:27238: result: $cf_TEMP_gnat" >&5
+  echo "$as_me:27514: result: $cf_TEMP_gnat" >&5
 echo "${ECHO_T}$cf_TEMP_gnat" >&6
 else
-  echo "$as_me:27241: result: no" >&5
+  echo "$as_me:27517: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -27248,7 +27524,7 @@ fi
                unset cf_cv_gnat_version
                unset cf_TEMP_gnat
 
-echo "$as_me:27251: checking for $cf_prog_gnat version" >&5
+echo "$as_me:27527: checking for $cf_prog_gnat version" >&5
 echo $ECHO_N "checking for $cf_prog_gnat version... $ECHO_C" >&6
 if test "${cf_cv_gnat_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -27259,7 +27535,7 @@ cf_cv_gnat_version=`$cf_prog_gnat --version 2>&1 | \
        sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
 
 fi
-echo "$as_me:27262: result: $cf_cv_gnat_version" >&5
+echo "$as_me:27538: result: $cf_cv_gnat_version" >&5
 echo "${ECHO_T}$cf_cv_gnat_version" >&6
 test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
 eval cf_TEMP_gnat=$cf_cv_gnat_version; unset cf_cv_gnat_version
@@ -27288,7 +27564,7 @@ else
                        cd conftest.src
                        for cf_gprconfig in Ada C
                        do
-                               echo "$as_me:27291: checking for gprconfig name for $cf_gprconfig" >&5
+                               echo "$as_me:27567: checking for gprconfig name for $cf_gprconfig" >&5
 echo $ECHO_N "checking for gprconfig name for $cf_gprconfig... $ECHO_C" >&6
                                if test "$cf_gprconfig" = C
                                then
@@ -27307,10 +27583,10 @@ echo $ECHO_N "checking for gprconfig name for $cf_gprconfig... $ECHO_C" >&6
                                if test -n "$cf_gprconfig_value"
                                then
                                        eval "cf_ada_config_$cf_gprconfig=$cf_gprconfig_value"
-                                       echo "$as_me:27310: result: $cf_gprconfig_value" >&5
+                                       echo "$as_me:27586: result: $cf_gprconfig_value" >&5
 echo "${ECHO_T}$cf_gprconfig_value" >&6
                                else
-                                       echo "$as_me:27313: result: missing" >&5
+                                       echo "$as_me:27589: result: missing" >&5
 echo "${ECHO_T}missing" >&6
                                        cf_ada_config="#"
                                        break
@@ -27323,7 +27599,7 @@ echo "${ECHO_T}missing" >&6
        if test "x$cf_ada_config" != "x#"
        then
 
-echo "$as_me:27326: checking for gnat version" >&5
+echo "$as_me:27602: checking for gnat version" >&5
 echo $ECHO_N "checking for gnat version... $ECHO_C" >&6
 if test "${cf_cv_gnat_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -27334,7 +27610,7 @@ cf_cv_gnat_version=`${cf_ada_make:-gnatmake} --version 2>&1 | \
        sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
 
 fi
-echo "$as_me:27337: result: $cf_cv_gnat_version" >&5
+echo "$as_me:27613: result: $cf_cv_gnat_version" >&5
 echo "${ECHO_T}$cf_cv_gnat_version" >&6
 test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
 
@@ -27343,7 +27619,7 @@ case "$cf_cv_gnat_version" in
        cf_cv_prog_gnat_correct=yes
        ;;
 (*)
-       { echo "$as_me:27346: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5
+       { echo "$as_me:27622: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5
 echo "$as_me: WARNING: Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&2;}
        cf_cv_prog_gnat_correct=no
        ;;
@@ -27351,7 +27627,7 @@ esac
 
                # Extract the first word of "m4", so it can be a program name with args.
 set dummy m4; ac_word=$2
-echo "$as_me:27354: checking for $ac_word" >&5
+echo "$as_me:27630: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_M4_exists+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -27366,7 +27642,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_M4_exists="yes"
-echo "$as_me:27369: found $ac_dir/$ac_word" >&5
+echo "$as_me:27645: found $ac_dir/$ac_word" >&5
 break
 done
 
 fi
 M4_exists=$ac_cv_prog_M4_exists
 if test -n "$M4_exists"; then
-  echo "$as_me:27378: result: $M4_exists" >&5
+  echo "$as_me:27654: result: $M4_exists" >&5
 echo "${ECHO_T}$M4_exists" >&6
 else
-  echo "$as_me:27381: result: no" >&5
+  echo "$as_me:27657: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
                if test "$ac_cv_prog_M4_exists" = no; then
                        cf_cv_prog_gnat_correct=no
-                       { echo "$as_me:27387: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&5
+                       { echo "$as_me:27663: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&5
 echo "$as_me: WARNING: Ada95 binding required program m4 not found. Ada95 binding disabled" >&2;}
                fi
                if test "$cf_cv_prog_gnat_correct" = yes; then
-                       echo "$as_me:27391: checking if GNAT works" >&5
+                       echo "$as_me:27667: checking if GNAT works" >&5
 echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6
 
 rm -rf ./conftest* ./*~conftest*
@@ -27416,7 +27692,7 @@ else
 fi
 rm -rf ./conftest* ./*~conftest*
 
-                       echo "$as_me:27419: result: $cf_cv_prog_gnat_correct" >&5
+                       echo "$as_me:27695: result: $cf_cv_prog_gnat_correct" >&5
 echo "${ECHO_T}$cf_cv_prog_gnat_correct" >&6
                fi
        else
@@ -27428,7 +27704,7 @@ fi
 
        ADAFLAGS="$ADAFLAGS -gnatpn"
 
-       echo "$as_me:27431: checking optimization options for ADAFLAGS" >&5
+       echo "$as_me:27707: checking optimization options for ADAFLAGS" >&5
 echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6
        case "$CFLAGS" in
        (*-g*)
@@ -27445,10 +27721,10 @@ echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6
 
                ;;
        esac
-       echo "$as_me:27448: result: $ADAFLAGS" >&5
+       echo "$as_me:27724: result: $ADAFLAGS" >&5
 echo "${ECHO_T}$ADAFLAGS" >&6
 
-echo "$as_me:27451: checking if GNATPREP supports -T option" >&5
+echo "$as_me:27727: checking if GNATPREP supports -T option" >&5
 echo $ECHO_N "checking if GNATPREP supports -T option... $ECHO_C" >&6
 if test "${cf_cv_gnatprep_opt_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -27458,11 +27734,11 @@ cf_cv_gnatprep_opt_t=no
 gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
 
 fi
-echo "$as_me:27461: result: $cf_cv_gnatprep_opt_t" >&5
+echo "$as_me:27737: result: $cf_cv_gnatprep_opt_t" >&5
 echo "${ECHO_T}$cf_cv_gnatprep_opt_t" >&6
 test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
 
-echo "$as_me:27465: checking if GNAT supports generics" >&5
+echo "$as_me:27741: checking if GNAT supports generics" >&5
 echo $ECHO_N "checking if GNAT supports generics... $ECHO_C" >&6
 case "$cf_cv_gnat_version" in
 (3.1[1-9]*|3.[2-9]*|[4-9].*|[1-9][0-9].[0-9]*|20[0-9][0-9])
@@ -27472,7 +27748,7 @@ case "$cf_cv_gnat_version" in
        cf_gnat_generics=no
        ;;
 esac
-echo "$as_me:27475: result: $cf_gnat_generics" >&5
+echo "$as_me:27751: result: $cf_gnat_generics" >&5
 echo "${ECHO_T}$cf_gnat_generics" >&6
 
 if test "$cf_gnat_generics" = yes
@@ -27484,7 +27760,7 @@ else
        cf_generic_objects=
 fi
 
-echo "$as_me:27487: checking if GNAT supports SIGINT" >&5
+echo "$as_me:27763: checking if GNAT supports SIGINT" >&5
 echo $ECHO_N "checking if GNAT supports SIGINT... $ECHO_C" >&6
 if test "${cf_cv_gnat_sigint+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -27532,7 +27808,7 @@ fi
 rm -rf ./conftest* ./*~conftest*
 
 fi
-echo "$as_me:27535: result: $cf_cv_gnat_sigint" >&5
+echo "$as_me:27811: result: $cf_cv_gnat_sigint" >&5
 echo "${ECHO_T}$cf_cv_gnat_sigint" >&6
 
 if test "$cf_cv_gnat_sigint" = yes ; then
@@ -27545,7 +27821,7 @@ cf_gnat_libraries=no
 cf_gnat_projects=no
 
 if test "$enable_gnat_projects" != no ; then
-echo "$as_me:27548: checking if GNAT supports project files" >&5
+echo "$as_me:27824: checking if GNAT supports project files" >&5
 echo $ECHO_N "checking if GNAT supports project files... $ECHO_C" >&6
 case "$cf_cv_gnat_version" in
 (3.[0-9]*)
@@ -27608,15 +27884,15 @@ CF_EOF
        esac
        ;;
 esac
-echo "$as_me:27611: result: $cf_gnat_projects" >&5
+echo "$as_me:27887: result: $cf_gnat_projects" >&5
 echo "${ECHO_T}$cf_gnat_projects" >&6
 fi # enable_gnat_projects
 
 if test "$cf_gnat_projects" = yes
 then
-       echo "$as_me:27617: checking if GNAT supports libraries" >&5
+       echo "$as_me:27893: checking if GNAT supports libraries" >&5
 echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6
-       echo "$as_me:27619: result: $cf_gnat_libraries" >&5
+       echo "$as_me:27895: result: $cf_gnat_libraries" >&5
 echo "${ECHO_T}$cf_gnat_libraries" >&6
 fi
 
@@ -27636,7 +27912,7 @@ then
        then
                USE_GNAT_MAKE_GPR=""
        else
-               { echo "$as_me:27639: WARNING: use old makefile rules since tools are missing" >&5
+               { echo "$as_me:27915: WARNING: use old makefile rules since tools are missing" >&5
 echo "$as_me: WARNING: use old makefile rules since tools are missing" >&2;}
        fi
 fi
@@ -27648,8 +27924,8 @@ else
        USE_GNAT_LIBRARIES="#"
 fi
 
-echo "$as_me:27651: checking for ada-compiler" >&5
-echo $ECHO_N "checking for ada-compiler... $ECHO_C" >&6
+echo "$as_me:27927: checking for Ada95 compiler" >&5
+echo $ECHO_N "checking for Ada95 compiler... $ECHO_C" >&6
 
 # Check whether --with-ada-compiler or --without-ada-compiler was given.
 if test "${with_ada_compiler+set}" = set; then
@@ -27659,13 +27935,13 @@ else
   cf_ada_compiler=gnatmake
 fi;
 
-echo "$as_me:27662: result: $cf_ada_compiler" >&5
+echo "$as_me:27938: result: $cf_ada_compiler" >&5
 echo "${ECHO_T}$cf_ada_compiler" >&6
 
                        cf_ada_package=terminal_interface
 
-echo "$as_me:27667: checking for ada-include" >&5
-echo $ECHO_N "checking for ada-include... $ECHO_C" >&6
+echo "$as_me:27943: checking for Ada95 include directory" >&5
+echo $ECHO_N "checking for Ada95 include directory... $ECHO_C" >&6
 
 # Check whether --with-ada-include or --without-ada-include was given.
 if test "${with_ada_include+set}" = set; then
@@ -27700,7 +27976,7 @@ case ".$withval" in
        withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:27703: error: expected a pathname, not \"$withval\"" >&5
+       { { echo "$as_me:27979: error: expected a pathname, not \"$withval\"" >&5
 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -27709,11 +27985,11 @@ esac
 fi
 eval ADA_INCLUDE="$withval"
 
-echo "$as_me:27712: result: $ADA_INCLUDE" >&5
+echo "$as_me:27988: result: $ADA_INCLUDE" >&5
 echo "${ECHO_T}$ADA_INCLUDE" >&6
 
-echo "$as_me:27715: checking for ada-objects" >&5
-echo $ECHO_N "checking for ada-objects... $ECHO_C" >&6
+echo "$as_me:27991: checking for Ada95 object directory" >&5
+echo $ECHO_N "checking for Ada95 object directory... $ECHO_C" >&6
 
 # Check whether --with-ada-objects or --without-ada-objects was given.
 if test "${with_ada_objects+set}" = set; then
@@ -27748,7 +28024,7 @@ case ".$withval" in
        withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:27751: error: expected a pathname, not \"$withval\"" >&5
+       { { echo "$as_me:28027: error: expected a pathname, not \"$withval\"" >&5
 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -27757,11 +28033,11 @@ esac
 fi
 eval ADA_OBJECTS="$withval"
 
-echo "$as_me:27760: result: $ADA_OBJECTS" >&5
+echo "$as_me:28036: result: $ADA_OBJECTS" >&5
 echo "${ECHO_T}$ADA_OBJECTS" >&6
 
-echo "$as_me:27763: checking if an Ada95 shared-library should be built" >&5
-echo $ECHO_N "checking if an Ada95 shared-library should be built... $ECHO_C" >&6
+echo "$as_me:28039: checking whether to build an Ada95 shared library" >&5
+echo $ECHO_N "checking whether to build an Ada95 shared library... $ECHO_C" >&6
 
 # Check whether --with-ada-sharedlib or --without-ada-sharedlib was given.
 if test "${with_ada_sharedlib+set}" = set; then
@@ -27770,19 +28046,25 @@ if test "${with_ada_sharedlib+set}" = set; then
 else
   with_ada_sharedlib=no
 fi;
-echo "$as_me:27773: result: $with_ada_sharedlib" >&5
-echo "${ECHO_T}$with_ada_sharedlib" >&6
+cf_ada_sharedlib_warn=no
 
 if test "x$with_ada_sharedlib" != xno
 then
        if test "x$cf_gnat_projects" != xyes
        then
-               { echo "$as_me:27780: WARNING: disabling shared-library since GNAT projects are not supported" >&5
-echo "$as_me: WARNING: disabling shared-library since GNAT projects are not supported" >&2;}
                with_ada_sharedlib=no
+               cf_ada_sharedlib_warn=yes
        fi
 fi
 
+echo "$as_me:28060: result: $with_ada_sharedlib" >&5
+echo "${ECHO_T}$with_ada_sharedlib" >&6
+if test "x$cf_ada_sharedlib_warn" != xno
+then
+       { echo "$as_me:28064: WARNING: disabling Ada95 shared library since GNAT projects are not supported" >&5
+echo "$as_me: WARNING: disabling Ada95 shared library since GNAT projects are not supported" >&2;}
+fi
+
 ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
 MAKE_ADA_SHAREDLIB="#"
 
@@ -27797,8 +28079,8 @@ fi
 
                        # allow the Ada binding to be renamed
 
-echo "$as_me:27800: checking for ada-libname" >&5
-echo $ECHO_N "checking for ada-libname... $ECHO_C" >&6
+echo "$as_me:28082: checking for Ada95 curses library name" >&5
+echo $ECHO_N "checking for Ada95 curses library name... $ECHO_C" >&6
 
 # Check whether --with-ada-libname or --without-ada-libname was given.
 if test "${with_ada_libname+set}" = set; then
@@ -27813,7 +28095,7 @@ case "x$ADA_LIBNAME" in
        ;;
 esac
 
-echo "$as_me:27816: result: $ADA_LIBNAME" >&5
+echo "$as_me:28098: result: $ADA_LIBNAME" >&5
 echo "${ECHO_T}$ADA_LIBNAME" >&6
 
                fi
 
 # do this "late" to avoid conflict with header-checks
 if test "x$with_widec" = xyes ; then
-       echo "$as_me:27827: checking for wchar_t" >&5
+       echo "$as_me:28109: checking for wchar_t" >&5
 echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6
 if test "${ac_cv_type_wchar_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 27833 "configure"
+#line 28115 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -27845,16 +28127,16 @@ if (sizeof (wchar_t))
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:27848: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:28130: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:27851: \$? = $ac_status" >&5
+  echo "$as_me:28133: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:27854: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28136: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27857: \$? = $ac_status" >&5
+  echo "$as_me:28139: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_type_wchar_t=yes
 else
@@ -27864,10 +28146,10 @@ ac_cv_type_wchar_t=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:27867: result: $ac_cv_type_wchar_t" >&5
+echo "$as_me:28149: result: $ac_cv_type_wchar_t" >&5
 echo "${ECHO_T}$ac_cv_type_wchar_t" >&6
 
-echo "$as_me:27870: checking size of wchar_t" >&5
+echo "$as_me:28152: checking size of wchar_t" >&5
 echo $ECHO_N "checking size of wchar_t... $ECHO_C" >&6
 if test "${ac_cv_sizeof_wchar_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -27876,7 +28158,7 @@ else
   if test "$cross_compiling" = yes; then
   # Depending upon the size, compute the lo and hi bounds.
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 27879 "configure"
+#line 28161 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -27888,21 +28170,21 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) >= 0)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:27891: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:28173: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:27894: \$? = $ac_status" >&5
+  echo "$as_me:28176: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:27897: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28179: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27900: \$? = $ac_status" >&5
+  echo "$as_me:28182: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_lo=0 ac_mid=0
   while :; do
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 27905 "configure"
+#line 28187 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -27914,16 +28196,16 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:27917: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:28199: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:27920: \$? = $ac_status" >&5
+  echo "$as_me:28202: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:27923: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28205: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27926: \$? = $ac_status" >&5
+  echo "$as_me:28208: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_hi=$ac_mid; break
 else
@@ -27939,7 +28221,7 @@ cat "conftest.$ac_ext" >&5
 ac_hi=-1 ac_mid=-1
   while :; do
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 27942 "configure"
+#line 28224 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -27951,16 +28233,16 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) >= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:27954: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:28236: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:27957: \$? = $ac_status" >&5
+  echo "$as_me:28239: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:27960: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28242: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:27963: \$? = $ac_status" >&5
+  echo "$as_me:28245: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_lo=$ac_mid; break
 else
@@ -27976,7 +28258,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 while test "x$ac_lo" != "x$ac_hi"; do
   ac_mid=`expr '(' "$ac_hi" - "$ac_lo" ')' / 2 + "$ac_lo"`
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 27979 "configure"
+#line 28261 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -27988,16 +28270,16 @@ int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)]
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:27991: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:28273: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:27994: \$? = $ac_status" >&5
+  echo "$as_me:28276: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:27997: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28279: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:28000: \$? = $ac_status" >&5
+  echo "$as_me:28282: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_hi=$ac_mid
 else
@@ -28010,12 +28292,12 @@ done
 ac_cv_sizeof_wchar_t=$ac_lo
 else
   if test "$cross_compiling" = yes; then
-  { { echo "$as_me:28013: error: cannot run test program while cross compiling" >&5
+  { { echo "$as_me:28295: error: cannot run test program while cross compiling" >&5
 echo "$as_me: error: cannot run test program while cross compiling" >&2;}
    { (exit 1); exit 1; }; }
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 28018 "configure"
+#line 28300 "configure"
 #include "confdefs.h"
 $ac_includes_default
 int
@@ -28031,15 +28313,15 @@ fclose (f);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:28034: \"$ac_link\"") >&5
+if { (eval echo "$as_me:28316: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:28037: \$? = $ac_status" >&5
+  echo "$as_me:28319: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:28039: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28321: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:28042: \$? = $ac_status" >&5
+  echo "$as_me:28324: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_sizeof_wchar_t=`cat conftest.val`
 else
@@ -28055,7 +28337,7 @@ else
   ac_cv_sizeof_wchar_t=0
 fi
 fi
-echo "$as_me:28058: result: $ac_cv_sizeof_wchar_t" >&5
+echo "$as_me:28340: result: $ac_cv_sizeof_wchar_t" >&5
 echo "${ECHO_T}$ac_cv_sizeof_wchar_t" >&6
 cat >>confdefs.h <<EOF
 #define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t
@@ -28068,7 +28350,7 @@ EOF
        then
                test -n "$verbose" && echo "    test failed (assume 2)" 1>&6
 
-echo "${as_me:-configure}:28071: testing test failed (assume 2) ..." 1>&5
+echo "${as_me:-configure}:28353: testing test failed (assume 2) ..." 1>&5
 
                sed /SIZEOF_WCHAR_T/d confdefs.h >confdefs.tmp
                mv confdefs.tmp confdefs.h
@@ -28086,7 +28368,7 @@ fi
 ### chooses to split module lists into libraries.
 ###
 ### (see CF_LIB_RULES).
-echo "$as_me:28089: checking for library subsets" >&5
+echo "$as_me:28371: checking for library subsets" >&5
 echo $ECHO_N "checking for library subsets... $ECHO_C" >&6
 LIB_SUBSETS=
 
@@ -28140,7 +28422,7 @@ fi
 test "x$with_widec"     = xyes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
 test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
 
-echo "$as_me:28143: result: $LIB_SUBSETS" >&5
+echo "$as_me:28425: result: $LIB_SUBSETS" >&5
 echo "${ECHO_T}$LIB_SUBSETS" >&6
 
 ### Construct the list of include-directories to be generated
@@ -28171,7 +28453,7 @@ elif test "$includedir" != "/usr/include"; then
 fi
 
 ### Build up pieces for makefile rules
-echo "$as_me:28174: checking default library suffix" >&5
+echo "$as_me:28456: checking default library suffix" >&5
 echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
 
        case $DFT_LWR_MODEL in
@@ -28182,10 +28464,10 @@ echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
        (shared)  DFT_ARG_SUFFIX=''   ;;
        esac
        test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}"
-echo "$as_me:28185: result: $DFT_ARG_SUFFIX" >&5
+echo "$as_me:28467: result: $DFT_ARG_SUFFIX" >&5
 echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6
 
-echo "$as_me:28188: checking default library-dependency suffix" >&5
+echo "$as_me:28470: checking default library-dependency suffix" >&5
 echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
 
        case X$DFT_LWR_MODEL in
@@ -28268,10 +28550,10 @@ echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
                DFT_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_LIB_SUFFIX}"
                DFT_DEP_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_DEP_SUFFIX}"
        fi
-echo "$as_me:28271: result: $DFT_DEP_SUFFIX" >&5
+echo "$as_me:28553: result: $DFT_DEP_SUFFIX" >&5
 echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6
 
-echo "$as_me:28274: checking default object directory" >&5
+echo "$as_me:28556: checking default object directory" >&5
 echo $ECHO_N "checking default object directory... $ECHO_C" >&6
 
        case $DFT_LWR_MODEL in
@@ -28287,11 +28569,11 @@ echo $ECHO_N "checking default object directory... $ECHO_C" >&6
                        DFT_OBJ_SUBDIR='obj_s' ;;
                esac
        esac
-echo "$as_me:28290: result: $DFT_OBJ_SUBDIR" >&5
+echo "$as_me:28572: result: $DFT_OBJ_SUBDIR" >&5
 echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6
 
 if test "x$cf_with_cxx" = xyes ; then
-echo "$as_me:28294: checking c++ library-dependency suffix" >&5
+echo "$as_me:28576: checking c++ library-dependency suffix" >&5
 echo $ECHO_N "checking c++ library-dependency suffix... $ECHO_C" >&6
 if test "$with_libtool" != "no"; then
        # libtool thinks it can make c++ shared libraries (perhaps only g++)
@@ -28384,7 +28666,7 @@ else
        fi
 
 fi
-echo "$as_me:28387: result: $CXX_LIB_SUFFIX" >&5
+echo "$as_me:28669: result: $CXX_LIB_SUFFIX" >&5
 echo "${ECHO_T}$CXX_LIB_SUFFIX" >&6
 
 fi
 
 if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED"
 then
-       echo "$as_me:28563: checking if linker supports switching between static/dynamic" >&5
+       echo "$as_me:28845: checking if linker supports switching between static/dynamic" >&5
 echo $ECHO_N "checking if linker supports switching between static/dynamic... $ECHO_C" >&6
 
        rm -f libconftest.a
        cat >conftest.$ac_ext <<EOF
-#line 28568 "configure"
+#line 28850 "configure"
 #include <stdio.h>
 int cf_ldflags_static(FILE *fp) { return fflush(fp); }
 EOF
-       if { (eval echo "$as_me:28572: \"$ac_compile\"") >&5
+       if { (eval echo "$as_me:28854: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:28575: \$? = $ac_status" >&5
+  echo "$as_me:28857: \$? = $ac_status" >&5
   (exit "$ac_status"); } ; then
                ( $AR $ARFLAGS libconftest.a conftest.o ) 2>&5 1>/dev/null
                ( eval $RANLIB libconftest.a ) 2>&5 >/dev/null
@@ -28583,10 +28865,10 @@ EOF
 
        LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 28586 "configure"
+#line 28868 "configure"
 #include "confdefs.h"
 
-#line 28589 "configure"
+#line 28871 "configure"
 #include <stdio.h>
 int cf_ldflags_static(FILE *fp);
 
@@ -28601,16 +28883,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:28604: \"$ac_link\"") >&5
+if { (eval echo "$as_me:28886: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:28607: \$? = $ac_status" >&5
+  echo "$as_me:28889: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:28610: \"$ac_try\"") >&5
+  { (eval echo "$as_me:28892: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:28613: \$? = $ac_status" >&5
+  echo "$as_me:28895: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        # some linkers simply ignore the -dynamic
@@ -28633,7 +28915,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
        rm -f libconftest.*
        LIBS="$cf_save_LIBS"
 
-       echo "$as_me:28636: result: $cf_ldflags_static" >&5
+       echo "$as_me:28918: result: $cf_ldflags_static" >&5
 echo "${ECHO_T}$cf_ldflags_static" >&6
 
        if test "$cf_ldflags_static" != yes
@@ -28649,7 +28931,7 @@ fi
        ;;
 esac
 
-echo "$as_me:28652: checking where we will install curses.h" >&5
+echo "$as_me:28934: checking where we will install curses.h" >&5
 echo $ECHO_N "checking where we will install curses.h... $ECHO_C" >&6
 
 includesubdir=
@@ -28659,7 +28941,7 @@ if test "$with_overwrite" = no && \
 then
        includesubdir="/ncurses${USE_LIB_SUFFIX}"
 fi
-echo "$as_me:28662: result: ${includedir}${includesubdir}" >&5
+echo "$as_me:28944: result: ${includedir}${includesubdir}" >&5
 echo "${ECHO_T}${includedir}${includesubdir}" >&6
 
 ### Resolve a conflict between normal and wide-curses by forcing applications
@@ -28667,7 +28949,7 @@ echo "${ECHO_T}${includedir}${includesubdir}" >&6
 if test "$with_overwrite" != no ; then
 if test "$NCURSES_LIBUTF8" = 1 ; then
        NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)'
-       { echo "$as_me:28670: WARNING: Wide-character applications must define HAVE_LIBUTF8_H to include curses.h" >&5
+       { echo "$as_me:28952: WARNING: Wide-character applications must define HAVE_LIBUTF8_H to include curses.h" >&5
 echo "$as_me: WARNING: Wide-character applications must define HAVE_LIBUTF8_H to include curses.h" >&2;}
 fi
 fi
@@ -28684,9 +28966,6 @@ case "$cf_cv_system_name" in
 *)     ;;
 esac
 
-# used to separate tack out of the tree
-NCURSES_TREE=
-
 ### predefined stuff for the test programs
 
 cat >>confdefs.h <<\EOF
@@ -28695,7 +28974,7 @@ EOF
 
 # pkgsrc uses these
 
-echo "$as_me:28698: checking for desired basename for form library" >&5
+echo "$as_me:28977: checking for desired basename for form library" >&5
 echo $ECHO_N "checking for desired basename for form library... $ECHO_C" >&6
 
 # Check whether --with-form-libname or --without-form-libname was given.
@@ -28715,10 +28994,10 @@ case "x$FORM_NAME" in
        ;;
 esac
 
-echo "$as_me:28718: result: $FORM_NAME" >&5
+echo "$as_me:28997: result: $FORM_NAME" >&5
 echo "${ECHO_T}$FORM_NAME" >&6
 
-echo "$as_me:28721: checking for desired basename for menu library" >&5
+echo "$as_me:29000: checking for desired basename for menu library" >&5
 echo $ECHO_N "checking for desired basename for menu library... $ECHO_C" >&6
 
 # Check whether --with-menu-libname or --without-menu-libname was given.
@@ -28738,10 +29017,10 @@ case "x$MENU_NAME" in
        ;;
 esac
 
-echo "$as_me:28741: result: $MENU_NAME" >&5
+echo "$as_me:29020: result: $MENU_NAME" >&5
 echo "${ECHO_T}$MENU_NAME" >&6
 
-echo "$as_me:28744: checking for desired basename for panel library" >&5
+echo "$as_me:29023: checking for desired basename for panel library" >&5
 echo $ECHO_N "checking for desired basename for panel library... $ECHO_C" >&6
 
 # Check whether --with-panel-libname or --without-panel-libname was given.
@@ -28761,10 +29040,10 @@ case "x$PANEL_NAME" in
        ;;
 esac
 
-echo "$as_me:28764: result: $PANEL_NAME" >&5
+echo "$as_me:29043: result: $PANEL_NAME" >&5
 echo "${ECHO_T}$PANEL_NAME" >&6
 
-echo "$as_me:28767: checking for desired basename for cxx library" >&5
+echo "$as_me:29046: checking for desired basename for cxx library" >&5
 echo $ECHO_N "checking for desired basename for cxx library... $ECHO_C" >&6
 
 # Check whether --with-cxx-libname or --without-cxx-libname was given.
@@ -28784,13 +29063,13 @@ case "x$CXX_NAME" in
        ;;
 esac
 
-echo "$as_me:28787: result: $CXX_NAME" >&5
+echo "$as_me:29066: result: $CXX_NAME" >&5
 echo "${ECHO_T}$CXX_NAME" >&6
 
 ### Construct the list of subdirectories for which we'll customize makefiles
 ### with the appropriate compile-rules.
 
-echo "$as_me:28793: checking for src modules" >&5
+echo "$as_me:29072: checking for src modules" >&5
 echo $ECHO_N "checking for src modules... $ECHO_C" >&6
 
 # dependencies and linker-arguments for test-programs
@@ -28810,14 +29089,6 @@ for cf_dir in $modules_to_build
 do
        if test -f "$srcdir/$cf_dir/modules" ; then
 
-               # We may/may not have tack in the distribution, though the
-               # makefile is.
-               if test "$cf_dir" = tack ; then
-                       if test "x$cf_with_tack" != "xyes"; then
-                               continue
-                       fi
-               fi
-
                if test -z "$cf_cv_src_modules"; then
                        cf_cv_src_modules=$cf_dir
                else
@@ -28828,9 +29099,7 @@ do
                # well.  These are header files that are the same name as their
                # directory.  Ncurses is the only library that does not follow
                # that pattern.
-               if test "$cf_dir" = tack ; then
-                       continue
-               elif test -f "$srcdir/${cf_dir}/${cf_dir}.h" ; then
+               if test -f "$srcdir/${cf_dir}/${cf_dir}.h" ; then
 
 cf_have_include=`echo "$cf_dir" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
 
@@ -28859,7 +29128,7 @@ eval TEST_ROOT="\$${cf_map_lib_basename}_NAME"
                fi
        fi
 done
-echo "$as_me:28862: result: $cf_cv_src_modules" >&5
+echo "$as_me:29131: result: $cf_cv_src_modules" >&5
 echo "${ECHO_T}$cf_cv_src_modules" >&6
 
 TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
@@ -29020,7 +29289,7 @@ case "$cf_cv_system_name" in
        (*-D_XOPEN_SOURCE_EXTENDED*)
                test -n "$verbose" && echo "    moving _XOPEN_SOURCE_EXTENDED to work around g++ problem" 1>&6
 
-echo "${as_me:-configure}:29023: testing moving _XOPEN_SOURCE_EXTENDED to work around g++ problem ..." 1>&5
+echo "${as_me:-configure}:29292: testing moving _XOPEN_SOURCE_EXTENDED to work around g++ problem ..." 1>&5
 
                CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
                CPPFLAGS=`echo "x$CPPFLAGS" | sed -e  's/^.//' -e 's/-D_XOPEN_SOURCE_EXTENDED//'`
@@ -29031,8 +29300,8 @@ esac
 
 # Help to automatically enable the extended curses features when using either
 # the *-config or the ".pc" files by adding defines.
-echo "$as_me:29034: checking for defines to add to ncurses${USE_CFG_SUFFIX}-config script" >&5
-echo $ECHO_N "checking for defines to add to ncurses${USE_CFG_SUFFIX}-config script... $ECHO_C" >&6
+echo "$as_me:29303: checking for defines to add to ncurses${USE_CFG_SUFFIX}${cf_config_suffix}-config script" >&5
+echo $ECHO_N "checking for defines to add to ncurses${USE_CFG_SUFFIX}${cf_config_suffix}-config script... $ECHO_C" >&6
 PKG_CFLAGS=
 for cf_loop1 in $CPPFLAGS_after_XOPEN
 do
@@ -29047,7 +29316,7 @@ do
        done
        test "$cf_found" = no && PKG_CFLAGS="$PKG_CFLAGS $cf_loop1"
 done
-echo "$as_me:29050: result: $PKG_CFLAGS" >&5
+echo "$as_me:29319: result: $PKG_CFLAGS" >&5
 echo "${ECHO_T}$PKG_CFLAGS" >&6
 
 # AC_CHECK_SIZEOF demands a literal parameter, no variables.  So we do this.
@@ -29108,7 +29377,7 @@ then
        cf_filter_syms=$cf_dft_filter_syms
        test -n "$verbose" && echo "    will map symbols to ABI=$cf_cv_abi_default" 1>&6
 
-echo "${as_me:-configure}:29111: testing will map symbols to ABI=$cf_cv_abi_default ..." 1>&5
+echo "${as_me:-configure}:29380: testing will map symbols to ABI=$cf_cv_abi_default ..." 1>&5
 
 fi
 
@@ -29135,7 +29404,7 @@ fi
 
 # This is used for the *-config script and *.pc data files.
 
-echo "$as_me:29138: checking for linker search path" >&5
+echo "$as_me:29407: checking for linker search path" >&5
 echo $ECHO_N "checking for linker search path... $ECHO_C" >&6
 if test "${cf_cv_ld_searchpath+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -29183,7 +29452,7 @@ then
                        cf_pathlist="$cf_pathlist /lib /usr/lib"
                        ;;
                (*)
-                       { echo "$as_me:29186: WARNING: problem with Solaris architecture" >&5
+                       { echo "$as_me:29455: WARNING: problem with Solaris architecture" >&5
 echo "$as_me: WARNING: problem with Solaris architecture" >&2;}
                        ;;
                esac
@@ -29224,15 +29493,11 @@ done
 test -z "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath=/usr/lib
 
 fi
-echo "$as_me:29227: result: $cf_cv_ld_searchpath" >&5
+echo "$as_me:29496: result: $cf_cv_ld_searchpath" >&5
 echo "${ECHO_T}$cf_cv_ld_searchpath" >&6
 
 LD_SEARCHPATH=`echo "$cf_cv_ld_searchpath"|sed -e 's/ /|/g'`
 
-cat >>confdefs.h <<\EOF
-#define HAVE_CURSES_DATA_BOOLNAMES 1
-EOF
-
 ac_config_files="$ac_config_files include/MKterm.h.awk include/curses.head:include/curses.h.in include/ncurses_dll.h include/termcap.h include/unctrl.h man/man_db.renames $SUB_MAKEFILES Makefile"
 ac_config_commands="$ac_config_commands default"
 cat >confcache <<\_ACEOF
@@ -29245,7 +29510,7 @@ cat >confcache <<\_ACEOF
 # config.status only pays attention to the cache file if you give it
 # the --recheck option to rerun configure.
 #
-# `ac_cv_env_foo' variables (set or unset) will be overriden when
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
 # loading this file, other *unset* `ac_cv_foo' will be assigned the
 # following values.
 
@@ -29314,7 +29579,7 @@ DEFS=-DHAVE_CONFIG_H
 : "${CONFIG_STATUS=./config.status}"
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:29317: creating $CONFIG_STATUS" >&5
+{ echo "$as_me:29582: creating $CONFIG_STATUS" >&5
 echo "$as_me: creating $CONFIG_STATUS" >&6;}
 cat >"$CONFIG_STATUS" <<_ACEOF
 #! $SHELL
@@ -29450,7 +29715,7 @@ EOF
 cat >>"$CONFIG_STATUS" <<EOF
 ac_cs_version="\\
 config.status
-configured by $0, generated by GNU Autoconf 2.52.20230114,
+configured by $0, generated by GNU Autoconf 2.52.20231210,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
 Copyright 2003-2022,2023       Thomas E. Dickey
@@ -29495,7 +29760,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
     echo "$ac_cs_version"; exit 0 ;;
   --he | --h)
     # Conflict between --help and --header
-    { { echo "$as_me:29498: error: ambiguous option: $1
+    { { echo "$as_me:29763: error: ambiguous option: $1
 Try \`$0 --help' for more information." >&5
 echo "$as_me: error: ambiguous option: $1
 Try \`$0 --help' for more information." >&2;}
@@ -29514,7 +29779,7 @@ Try \`$0 --help' for more information." >&2;}
     ac_need_defaults=false;;
 
   # This is an error.
-  -*) { { echo "$as_me:29517: error: unrecognized option: $1
+  -*) { { echo "$as_me:29782: error: unrecognized option: $1
 Try \`$0 --help' for more information." >&5
 echo "$as_me: error: unrecognized option: $1
 Try \`$0 --help' for more information." >&2;}
@@ -29533,7 +29798,7 @@ cat >&5 << _ACEOF
 ## Running config.status.  ##
 ## ----------------------- ##
 
-This file was extended by $as_me 2.52.20230114, executed with
+This file was extended by $as_me 2.52.20231210, executed with
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
   CONFIG_LINKS    = $CONFIG_LINKS
@@ -29644,7 +29909,7 @@ do
   "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
   "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
   "include/ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/ncurses_cfg.h:include/ncurses_cfg.hin" ;;
-  *) { { echo "$as_me:29647: error: invalid argument: $ac_config_target" >&5
+  *) { { echo "$as_me:29912: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
    { (exit 1); exit 1; }; };;
   esac
@@ -29891,10 +30156,17 @@ s,@RGB_PATH@,$RGB_PATH,;t t
 s,@no_x11_rgb@,$no_x11_rgb,;t t
 s,@NCURSES_BOOL@,$NCURSES_BOOL,;t t
 s,@TERMINFO_CAPS@,$TERMINFO_CAPS,;t t
+s,@NCURSES_CHTYPE@,$NCURSES_CHTYPE,;t t
 s,@NCURSES_OSPEED@,$NCURSES_OSPEED,;t t
+s,@NCURSES_MMASK_T@,$NCURSES_MMASK_T,;t t
 s,@NCURSES_CCHARW_MAX@,$NCURSES_CCHARW_MAX,;t t
 s,@NCURSES_SBOOL@,$NCURSES_SBOOL,;t t
 s,@NCURSES_TPARM_ARG@,$NCURSES_TPARM_ARG,;t t
+s,@cf_manpage_format@,$cf_manpage_format,;t t
+s,@cf_manpage_inboth@,$cf_manpage_inboth,;t t
+s,@cf_manpage_so_strip@,$cf_manpage_so_strip,;t t
+s,@cf_manpage_compress@,$cf_manpage_compress,;t t
+s,@cf_manpage_coptions@,$cf_manpage_coptions,;t t
 s,@MANPAGE_RENAMES@,$MANPAGE_RENAMES,;t t
 s,@NCURSES_EXT_FUNCS@,$NCURSES_EXT_FUNCS,;t t
 s,@GENERATED_EXT_FUNCS@,$GENERATED_EXT_FUNCS,;t t
@@ -29903,6 +30175,7 @@ s,@GENERATED_SP_FUNCS@,$GENERATED_SP_FUNCS,;t t
 s,@NCURSES_CONST@,$NCURSES_CONST,;t t
 s,@NCURSES_EXT_COLORS@,$NCURSES_EXT_COLORS,;t t
 s,@NCURSES_MOUSE_VERSION@,$NCURSES_MOUSE_VERSION,;t t
+s,@cf_cv_enable_sigwinch@,$cf_cv_enable_sigwinch,;t t
 s,@NCURSES_XNAMES@,$NCURSES_XNAMES,;t t
 s,@PTHREAD@,$PTHREAD,;t t
 s,@cf_cv_enable_reentrant@,$cf_cv_enable_reentrant,;t t
@@ -29996,7 +30269,6 @@ s,@WITH_OVERWRITE@,$WITH_OVERWRITE,;t t
 s,@TICS_LIST@,$TICS_LIST,;t t
 s,@TINFO_LIST@,$TINFO_LIST,;t t
 s,@SHLIB_LIST@,$SHLIB_LIST,;t t
-s,@NCURSES_TREE@,$NCURSES_TREE,;t t
 s,@FORM_NAME@,$FORM_NAME,;t t
 s,@MENU_NAME@,$MENU_NAME,;t t
 s,@PANEL_NAME@,$PANEL_NAME,;t t
@@ -30158,7 +30430,7 @@ done; }
   esac
 
   if test x"$ac_file" != x-; then
-    { echo "$as_me:30161: creating $ac_file" >&5
+    { echo "$as_me:30433: creating $ac_file" >&5
 echo "$as_me: creating $ac_file" >&6;}
     rm -f "$ac_file"
   fi
@@ -30176,7 +30448,7 @@ echo "$as_me: creating $ac_file" >&6;}
       -) echo "$tmp"/stdin ;;
       [\\/$]*)
          # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:30179: error: cannot find input file: $f" >&5
+         test -f "$f" || { { echo "$as_me:30451: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          echo "$f";;
@@ -30189,7 +30461,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
            echo "$srcdir/$f"
          else
            # /dev/null tree
-           { { echo "$as_me:30192: error: cannot find input file: $f" >&5
+           { { echo "$as_me:30464: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          fi;;
@@ -30205,7 +30477,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
       if test -n "$ac_seen"; then
         ac_used=`grep '@datarootdir@' "$ac_item"`
         if test -z "$ac_used"; then
-          { echo "$as_me:30208: WARNING: datarootdir was used implicitly but not set:
+          { echo "$as_me:30480: WARNING: datarootdir was used implicitly but not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: datarootdir was used implicitly but not set:
 $ac_seen" >&2;}
@@ -30214,7 +30486,7 @@ $ac_seen" >&2;}
       fi
       ac_seen=`grep '${datarootdir}' "$ac_item"`
       if test -n "$ac_seen"; then
-        { echo "$as_me:30217: WARNING: datarootdir was used explicitly but not set:
+        { echo "$as_me:30489: WARNING: datarootdir was used explicitly but not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: datarootdir was used explicitly but not set:
 $ac_seen" >&2;}
@@ -30242,11 +30514,11 @@ s,@INSTALL@,$ac_INSTALL,;t t
 " $ac_file_inputs | (eval "$ac_sed_cmds") >"$tmp"/out
   rm -f "$tmp"/stdin
 EOF
-: "${FGREP:=grep -F}"
-: "${EGREP:=grep -E}"
+test -n "${FGREP}" || FGREP="grep -F"
+test -n "${EGREP}" || EGREP="grep -E"
 cat >>"$CONFIG_STATUS" <<EOF
-  : "\${FGREP:=$FGREP}"
-  : "\${EGREP:=$EGREP}"
+  test -n "\${FGREP}" || FGREP="$FGREP"
+  test -n "\${EGREP}" || EGREP="$EGREP"
 EOF
 cat >>"$CONFIG_STATUS" <<\EOF
   if test x"$ac_file" != x-; then
@@ -30259,7 +30531,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
             ac_init=`$EGREP '[         ]*'$ac_name'[   ]*=' "$ac_file"`
             if test -z "$ac_init"; then
               ac_seen=`echo "$ac_seen" |sed -e 's,^,'"$ac_file"':,'`
-              { echo "$as_me:30262: WARNING: Variable $ac_name is used but was not set:
+              { echo "$as_me:30534: WARNING: Variable $ac_name is used but was not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: Variable $ac_name is used but was not set:
 $ac_seen" >&2;}
@@ -30270,7 +30542,7 @@ $ac_seen" >&2;}
     $EGREP -n '@[A-Z_][A-Z_0-9]+@' "$ac_file" >>"$tmp"/out
     if test -s "$tmp"/out; then
       ac_seen=`sed -e 's,^,'"$ac_file"':,' < "$tmp"/out`
-      { echo "$as_me:30273: WARNING: Some variables may not be substituted:
+      { echo "$as_me:30545: WARNING: Some variables may not be substituted:
 $ac_seen" >&5
 echo "$as_me: WARNING: Some variables may not be substituted:
 $ac_seen" >&2;}
@@ -30319,7 +30591,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
   * )   ac_file_in=$ac_file.in ;;
   esac
 
-  test x"$ac_file" != x- && { echo "$as_me:30322: creating $ac_file" >&5
+  test x"$ac_file" != x- && { echo "$as_me:30594: creating $ac_file" >&5
 echo "$as_me: creating $ac_file" >&6;}
 
   # First look for the input files in the build tree, otherwise in the
@@ -30330,7 +30602,7 @@ echo "$as_me: creating $ac_file" >&6;}
       -) echo "$tmp"/stdin ;;
       [\\/$]*)
          # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:30333: error: cannot find input file: $f" >&5
+         test -f "$f" || { { echo "$as_me:30605: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          echo $f;;
@@ -30343,7 +30615,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
            echo "$srcdir/$f"
          else
            # /dev/null tree
-           { { echo "$as_me:30346: error: cannot find input file: $f" >&5
+           { { echo "$as_me:30618: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          fi;;
@@ -30401,7 +30673,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
   rm -f "$tmp"/in
   if test x"$ac_file" != x-; then
     if cmp -s "$ac_file" "$tmp/config.h" 2>/dev/null; then
-      { echo "$as_me:30404: $ac_file is unchanged" >&5
+      { echo "$as_me:30676: $ac_file is unchanged" >&5
 echo "$as_me: $ac_file is unchanged" >&6;}
     else
       ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
@@ -30788,7 +31060,7 @@ cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
                                (cygdll|msysdll|mingw|msvcdll)
                                        test "x$with_shared_cxx" = xno && test -n "$verbose" && echo "  overriding CXX_MODEL to SHARED" 1>&6
 
-echo "${as_me:-configure}:30791: testing overriding CXX_MODEL to SHARED ..." 1>&5
+echo "${as_me:-configure}:31063: testing overriding CXX_MODEL to SHARED ..." 1>&5
 
                                        with_shared_cxx=yes
                                        ;;
@@ -31145,22 +31417,10 @@ cat >> Makefile <<CF_EOF
 distclean ::
        rm -f config.cache config.log config.status Makefile include/ncurses_cfg.h
        rm -f headers.sh headers.sed mk_shared_lib.sh
-       rm -f edit_man.* man_alias.*
+       rm -f edit_man.* man_alias.* *.tmp
        rm -rf \${DIRS_TO_MAKE}
 CF_EOF
 
-# Special case: tack's manpage lives in its own directory.
-if test "x$cf_with_manpages" = xyes; then
-if test "x$cf_with_tack" = "xyes"; then
-cat >> Makefile <<CF_EOF
-
-install.man \\
-uninstall.man ::
-       ( cd tack && \${MAKE} \${TOP_MFLAGS} \$@ )
-CF_EOF
-fi
-fi
-
 rm -f headers.sed headers.sh
 
 echo creating headers.sh
index 293c3fa3579adf9e22f5eccfb2699aeefd419dd5..2d6836cb7190eb2ceff01bc788aeb8cfe2ca9db3 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright 2018-2022,2023 Thomas E. Dickey                                *
+dnl Copyright 2018-2023,2024 Thomas E. Dickey                                *
 dnl Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -29,7 +29,7 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey 1995-on
 dnl
-dnl $Id: configure.in,v 1.755 2023/01/08 01:50:05 tom Exp $
+dnl $Id: configure.in,v 1.779 2024/04/10 08:04:00 tom Exp $
 dnl Process this file with autoconf to produce a configure script.
 dnl
 dnl For additional information, see
@@ -38,7 +38,7 @@ dnl     https://invisible-island.net/autoconf/my-autoconf.html
 dnl
 dnl ---------------------------------------------------------------------------
 AC_PREREQ(2.52.20210101)
-AC_REVISION($Revision: 1.755 $)
+AC_REVISION($Revision: 1.779 $)
 AC_INIT(ncurses/base/lib_initscr.c)
 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
 
@@ -186,22 +186,6 @@ AC_ARG_WITH(progs,
        [cf_with_progs=yes])
 AC_MSG_RESULT($cf_with_progs)
 
-if test -f "$srcdir/tack/tack.h" ; then
-       if test "x$cross_compiling" = xyes ; then
-               CF_VERBOSE(ignoring tack because we are cross-compiling)
-               cf_with_tack=no
-       else
-               AC_MSG_CHECKING(if you want to build the tack program)
-               AC_ARG_WITH(tack,
-                       [  --without-tack          suppress build/install with tack program],
-                       [cf_with_tack=$withval],
-                       [cf_with_tack=$cf_with_progs])
-               AC_MSG_RESULT($cf_with_tack)
-       fi
-else
-       cf_with_tack=no
-fi
-
 AC_MSG_CHECKING(if you want to build test-programs)
 AC_ARG_WITH(tests,
        [  --without-tests         suppress build/install with test-programs],
@@ -218,7 +202,6 @@ AC_MSG_RESULT($with_curses_h)
 
 modules_to_build="ncurses"
 test "X$cf_with_progs" != Xno && modules_to_build="$modules_to_build progs"
-test "X$cf_with_tack"  != Xno && modules_to_build="$modules_to_build tack"
 modules_to_build="$modules_to_build panel menu form"
 
 AC_ARG_PROGRAM
@@ -234,7 +217,7 @@ AC_SYS_LONG_FILE_NAMES
 # of package conflict.
 cf_config_suffix=
 AC_ARG_WITH(config-suffix,
-       [  --with-config-suffix=X  suffixes ncursesXX-config file],
+       [  --with-config-suffix=X  name ncurses*X-config file with X],
        [case "x$withval" in
        (xyes|xno)
                AC_MSG_WARN(expected a value for config-suffix option)
@@ -250,9 +233,9 @@ CF_WITH_PKG_CONFIG_LIBDIR
 CF_ENABLE_PC_FILES
 if test -z "$MAKE_PC_FILES"
 then
-       AC_MSG_CHECKING(for suffix to add to pc-files)
+       AC_MSG_CHECKING(for suffix to add to pkg-config files)
 AC_ARG_WITH(pc-suffix,
-       [  --with-pc-suffix        suffixes pc-files],
+       [[  --with-pc-suffix[=XXX]  suffix pkg-config files with XXX]],
        [case "x$withval" in
        (xyes|xno)
                PC_MODULE_SUFFIX=
@@ -297,16 +280,16 @@ CF_AR_FLAGS
 dnl Special option for use by system-builders: the install-prefix is used to
 dnl adjust the location into which the actual install is done, so that an
 dnl archive can be built without modifying the host system's configuration.
-AC_MSG_CHECKING(if you have specified an install-prefix)
+AC_MSG_CHECKING(for an installation directory prefix)
 AC_ARG_WITH(install-prefix,
-       [  --with-install-prefix   prefixes actual install-location ($DESTDIR)],
+       [  --with-install-prefix=DESTDIR use DESTDIR as installation directory prefix],
        [case "x$withval" in
        (xyes|xno)
                ;;
        (*)     DESTDIR="$withval"
                ;;
        esac])
-AC_MSG_RESULT($DESTDIR)
+AC_MSG_RESULT([${DESTDIR:-(none)}])
 AC_SUBST(DESTDIR)
 
 ###############################################################################
@@ -466,7 +449,7 @@ case "$DFT_LWR_MODEL" in
 (shared)  LD_MODEL=''   ;;
 esac
 AC_SUBST(LD_MODEL)dnl          the type of link (e.g., -g or -pg)
-AC_MSG_RESULT($LD_MODEL)
+AC_MSG_RESULT([${LD_MODEL:-(none)}])
 
 case "$DFT_LWR_MODEL" in
 (shared)
@@ -579,10 +562,10 @@ AC_SUBST(EXTRA_PKG_LDFLAGS)
 CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
 
 ###    use option --with-extra-suffix to append suffix to headers and libraries
-AC_MSG_CHECKING(if you wish to append extra suffix to header/library paths)
+AC_MSG_CHECKING(for extra suffix to append to header/library paths)
 EXTRA_SUFFIX=
 AC_ARG_WITH(extra-suffix,
-       [  --with-extra-suffix=X   append extra suffix to header/library paths],
+       [[  --with-extra-suffix[=X] append extra suffix X to header/library paths]],
        [case x$withval in
        (xno)
                ;;
@@ -594,7 +577,7 @@ AC_ARG_WITH(extra-suffix,
                ;;
        esac
        ])
-AC_MSG_RESULT($EXTRA_SUFFIX)
+AC_MSG_RESULT([${EXTRA_SUFFIX:-(none)}])
 AC_SUBST(EXTRA_SUFFIX)
 
 ###    use option --disable-overwrite to leave out the link to -lcurses
@@ -642,12 +625,12 @@ else
 fi
 AC_SUBST(NCURSES_USE_DATABASE)
 
-AC_MSG_CHECKING(for list of fallback descriptions)
+AC_MSG_CHECKING(for list of fallback terminal descriptions)
 AC_ARG_WITH(fallbacks,
        [  --with-fallbacks=XXX    specify list of fallback terminal descriptions],
        [with_fallback=$withval],
        [with_fallback=])
-AC_MSG_RESULT($with_fallback)
+AC_MSG_RESULT([${with_fallback:-(none)}])
 
 case ".$with_fallback" in
 (.|.no)
@@ -711,9 +694,9 @@ esac
 
 AC_MSG_CHECKING(if xterm backspace sends BS or DEL)
 AC_ARG_WITH(xterm-kbs,
-       [  --with-xterm-kbs=XXX    specify if xterm backspace sends BS or DEL],
+       [[  --with-xterm-kbs[=XXX]  specify if xterm backspace sends BS or DEL]],
        [with_xterm_kbs=$withval],
-       [with_xterm_kbs=BS])
+       [with_xterm_kbs=auto])
 case x$with_xterm_kbs in
 (xyes|xno|xBS|xbs|x8)
        with_xterm_kbs=BS
@@ -721,6 +704,9 @@ case x$with_xterm_kbs in
 (xDEL|xdel|x127)
        with_xterm_kbs=DEL
        ;;
+(xauto)
+       with_xterm_kbs=$want_xterm_kbs
+       ;;
 (*)
        with_xterm_kbs=$withval
        ;;
@@ -731,7 +717,7 @@ AC_SUBST(XTERM_KBS)
 
 if test "x$with_xterm_kbs" != "x$want_xterm_kbs"
 then
-       AC_MSG_WARN(expected --with-xterm-kbs=$want_xterm_kbs for $host_os)
+       AC_MSG_WARN([expected --with-xterm-kbs=$want_xterm_kbs for $host_os, have $with_xterm_kbs])
 fi
 
 MAKE_TERMINFO=
@@ -779,7 +765,7 @@ AC_ARG_ENABLE(big-core,
        [AC_TRY_RUN([
 #include <stdlib.h>
 #include <string.h>
-int main() {
+int main(void) {
        unsigned long n = 6000000L;
        char *s = malloc(n);
        if (s != 0)
@@ -872,16 +858,24 @@ AC_ARG_ENABLE(root-environ,
        [with_root_environ=$enableval],
        [with_root_environ=yes])
 AC_MSG_RESULT($with_root_environ)
-test "x$with_root_environ" = xyes && AC_DEFINE(USE_ROOT_ENVIRON,1,[Define to 1 if root is allowed to use ncurses environment])
+test "x$with_root_environ" = xyes && AC_DEFINE(USE_ROOT_ENVIRON,1,[Define to 1 if root/setuid application is allowed to use ncurses environment])
 
 AC_MSG_CHECKING(if you want to permit setuid programs to access all files)
-AC_ARG_ENABLE(root-environ,
+AC_ARG_ENABLE(root-access,
        [  --disable-root-access   restrict file-access when running setuid],
        [with_root_access=$enableval],
        [with_root_access=yes])
 AC_MSG_RESULT($with_root_access)
 test "x$with_root_access" = xyes && AC_DEFINE(USE_ROOT_ACCESS,1,[Define to 1 if setuid is allowed all file-access])
 
+AC_MSG_CHECKING(if you want to permit setuid use of ncurses environment variables)
+AC_ARG_ENABLE(setuid-environ,
+       [  --disable-setuid-environ restrict setuid use of ncurses environment variables],
+       [with_setuid_environ=$enableval],
+       [with_setuid_environ=$with_root_environ])
+AC_MSG_RESULT($with_setuid_environ)
+test "x$with_setuid_environ" = xyes && AC_DEFINE(USE_SETUID_ENVIRON,1,[Define to 1 if setuid/setgid application is allowed to use ncurses environment])
+
 ###   Use option --enable-symlinks to make tic use symlinks, not hard links
 ###   to reduce storage requirements for the terminfo database.
 CF_LINK_FUNCS
@@ -953,9 +947,9 @@ NCURSES_OK_WINT_T=
 
 AC_MSG_CHECKING(if you want wide-character code)
 AC_ARG_ENABLE(widec,
-       [  --enable-widec          compile with wide-char/UTF-8 code],
+       [  --disable-widec         compile without wide character and UTF-8 support],
        [with_widec=$enableval],
-       [with_widec=no])
+       [with_widec=$cf_dft_widec])
 AC_MSG_RESULT($with_widec)
 
 NCURSES_WCWIDTH_GRAPHICS=1
@@ -965,8 +959,8 @@ if test "x$with_widec" = xyes ; then
        if test "x$disable_lib_suffixes" = xno ; then
                LIB_SUFFIX="w${LIB_SUFFIX}"
        fi
-       AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to compile with wide-char/UTF-8 code])
-       AC_DEFINE(NCURSES_WIDECHAR,1,[Define to 1 to compile with wide-char/UTF-8 code])
+       AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to compile with wide character and UTF-8 support])
+       AC_DEFINE(NCURSES_WIDECHAR,1,[Define to 1 to compile with wide character and UTF-8 support])
        case "$CPPFLAGS" in
        (*_XOPEN_SOURCE=*)
                ;;
@@ -1067,13 +1061,10 @@ AC_SUBST(NCURSES_WATTR_MACROS)
 CF_WITH_X11_RGB
 
 ###   use option --with-bool to override bool's type
-AC_MSG_CHECKING(for type of bool)
-AC_ARG_WITH(bool,
-       [  --with-bool=TYPE        override fallback type of bool variable],
-       [NCURSES_BOOL="$withval"],
-       [NCURSES_BOOL=auto])
-AC_MSG_RESULT($NCURSES_BOOL)
-AC_SUBST(NCURSES_BOOL)
+CF_WITH_TYPE(bool,
+       [  --with-bool=TYPE        fall back to TYPE for curses 'bool' typedef],
+       NCURSES_BOOL,
+       auto)
 
 AC_MSG_CHECKING(for alternate terminal capabilities file)
 AC_ARG_WITH(caps,
@@ -1089,29 +1080,22 @@ AC_MSG_RESULT($TERMINFO_CAPS)
 AC_SUBST(TERMINFO_CAPS)
 
 ###   use option --with-chtype to override chtype's type
-AC_MSG_CHECKING(for type of chtype)
-AC_ARG_WITH(chtype,
+CF_WITH_TYPE(chtype,
        [  --with-chtype=TYPE      override type of chtype],
-       [NCURSES_CHTYPE="$withval"],
-       [NCURSES_CHTYPE=$cf_dft_chtype])
-AC_MSG_RESULT($NCURSES_CHTYPE)
+       NCURSES_CHTYPE,
+       $cf_dft_chtype)
 
 ###   use option --with-ospeed to override ospeed's type
-AC_MSG_CHECKING(for type of ospeed)
-AC_ARG_WITH(ospeed,
+CF_WITH_TYPE(ospeed,
        [  --with-ospeed=TYPE      override type of ospeed variable],
-       [NCURSES_OSPEED="$withval"],
-       [NCURSES_OSPEED=short])
-AC_MSG_RESULT($NCURSES_OSPEED)
-AC_SUBST(NCURSES_OSPEED)
+       NCURSES_OSPEED,
+       short)
 
 ###   use option --with-mmask-t to override mmask_t's type
-AC_MSG_CHECKING(for type of mmask_t)
-AC_ARG_WITH(mmask-t,
+CF_WITH_TYPE(mmask-t,
        [  --with-mmask-t=TYPE     override type of mmask_t],
-       [NCURSES_MMASK_T="$withval"],
-       [NCURSES_MMASK_T=$cf_dft_mmask_t])
-AC_MSG_RESULT($NCURSES_MMASK_T)
+       NCURSES_MMASK_T,
+       $cf_dft_mmask_t)
 
 ###   use option --with-ccharw-max to override CCHARW_MAX size
 AC_MSG_CHECKING(for size CCHARW_MAX)
@@ -1128,9 +1112,9 @@ if test "$ac_cv_sizeof_signed_char" = 1 ; then
 else
        NCURSES_SBOOL="char"
 fi
-AC_MSG_CHECKING(if you want to use signed Boolean array in term.h)
+AC_MSG_CHECKING(whether to use signed chars for Boolean array in term.h)
 AC_ARG_ENABLE(signed-char,
-       [  --enable-signed-char    compile using signed Boolean's in term.h],
+       [  --enable-signed-char    use signed chars for Boolean array in term.h],
        [with_signed_char=$enableval],
        [with_signed_char=$cf_dft_signed_char])
 AC_MSG_RESULT($with_signed_char)
@@ -1138,13 +1122,10 @@ test "x$with_signed_char" != xyes && NCURSES_SBOOL="char"
 AC_SUBST(NCURSES_SBOOL)
 
 ###   use option --with-tparm-arg to override tparm's argument type
-AC_MSG_CHECKING(for type of tparm args)
-AC_ARG_WITH(tparm-arg,
+CF_WITH_TYPE(tparm-arg,
        [  --with-tparm-arg=TYPE   override parameter type of tparm],
-       [NCURSES_TPARM_ARG="$withval"],
-       [NCURSES_TPARM_ARG=$cf_dft_tparm_arg])
-AC_MSG_RESULT($NCURSES_TPARM_ARG)
-AC_SUBST(NCURSES_TPARM_ARG)
+       NCURSES_TPARM_ARG,
+       $cf_dft_tparm_arg)
 
 ### Enable compiling-in rcs id's
 AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
@@ -1178,7 +1159,6 @@ if test "x$with_ext_funcs" = xyes ; then
        AC_DEFINE(HAVE_RESIZE_TERM,1,[Define to 1 to enable resize_term() function in test-programs])
        AC_DEFINE(HAVE_TERM_ENTRY_H,1,[Define to 1 to enable term_entry() function in test-programs])
        AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 to enable use_default_colors() function in test-programs])
-       AC_DEFINE(HAVE_USE_EXTENDED_NAMES,1,[Define to 1 to enable use_extended_names() function in test-programs])
        AC_DEFINE(HAVE_USE_SCREEN,1,[Define to 1 to enable use_screen() function in test-programs])
        AC_DEFINE(HAVE_USE_WINDOW,1,[Define to 1 to enable use_window() function in test-programs])
        AC_DEFINE(HAVE_WRESIZE,1,[Define to 1 to enable wresize() function in test-programs])
@@ -1272,17 +1252,13 @@ if test "x$with_ext_mouse" = xyes ; then
        CF_NCURSES_ABI_6
 fi
 
-case $cf_cv_abi_default in
-(5)
+if test $cf_cv_abi_default -le 5 ; then
        NCURSES_MOUSE_VERSION=1
-       ;;
-(6)
+elif test $cf_cv_abi_default -le 6 ; then
        NCURSES_MOUSE_VERSION=2
-       ;;
-([[789]])
+else
        NCURSES_MOUSE_VERSION=3
-       ;;
-esac
+fi
 
 AC_SUBST(NCURSES_MOUSE_VERSION)
 
@@ -1312,7 +1288,14 @@ AC_ARG_ENABLE(sigwinch,
        [with_sigwinch=$enableval],
        [with_sigwinch=$with_ext_funcs])
 AC_MSG_RESULT($with_sigwinch)
-test "x$with_sigwinch" = xyes && AC_DEFINE(USE_SIGWINCH,1,[Define to 1 to compile with SIGWINCH handler])
+if test "x$with_sigwinch" = xyes
+then
+       AC_DEFINE(USE_SIGWINCH,1,[Define to 1 to compile with SIGWINCH handler])
+       cf_cv_enable_sigwinch=1
+else
+       cf_cv_enable_sigwinch=0
+fi
+AC_SUBST(cf_cv_enable_sigwinch)
 
 ###   use option --enable-tcap-names to allow user to define new capabilities
 AC_MSG_CHECKING(if you want user-definable terminal capabilities like termcap)
@@ -1322,7 +1305,10 @@ AC_ARG_ENABLE(tcap-names,
        [with_tcap_names=$with_ext_funcs])
 AC_MSG_RESULT($with_tcap_names)
 NCURSES_XNAMES=0
-test "x$with_tcap_names" = xyes && NCURSES_XNAMES=1
+if test "x$with_tcap_names" = xyes; then
+       NCURSES_XNAMES=1
+       AC_DEFINE(NCURSES_XNAMES,1,[Define to 1 to compile with user-definable terminal capabilities])
+fi
 AC_SUBST(NCURSES_XNAMES)
 
 ##############################################################################
@@ -1419,10 +1405,10 @@ AC_SUBST(cf_cv_enable_opaque)
 
 AC_SUBST(NCURSES_SIZE_T)
 
-AC_MSG_CHECKING(if you want opaque curses-library structures)
-CF_ARG_ENABLE(opaque-curses,
-       [  --enable-opaque-curses  make curses WINDOW, etc., "opaque"],
-       [enable_opaque_curses=yes],[
+AC_MSG_CHECKING(whether curses library structures should be opaque)
+CF_ARG_DISABLE(opaque-curses,
+       [  --disable-opaque-curses do not make WINDOW, etc., structures opaque],
+       [enable_opaque_curses=no],[
         test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes
         test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=$cf_dft_opaque_curses
        ])
@@ -1432,22 +1418,22 @@ test "$cf_cv_enable_reentrant" = 1 && \
 test "$enable_opaque_curses" = no && \
 AC_MSG_ERROR(reentrant configuration requires opaque library)
 
-AC_MSG_CHECKING(if you want opaque form-library structures)
-AC_ARG_ENABLE(opaque-form,
-       [  --enable-opaque-form    make form-library structures "opaque"],
-       [enable_opaque_form=yes],[enable_opaque_form=no])
+AC_MSG_CHECKING(whether form library structures should be opaque)
+CF_ARG_DISABLE(opaque-form,
+       [  --disable-opaque-form   do not make form library structures opaque],
+       [enable_opaque_form=no],[enable_opaque_form=$cf_dft_opaque_curses])
 AC_MSG_RESULT($enable_opaque_form)
 
-AC_MSG_CHECKING(if you want opaque menu-library structures)
-AC_ARG_ENABLE(opaque-menu,
-       [  --enable-opaque-menu    make menu-library structures "opaque"],
-       [enable_opaque_menu=yes],[enable_opaque_menu=no])
+AC_MSG_CHECKING(whether menu library structures should be opaque)
+CF_ARG_DISABLE(opaque-menu,
+       [  --disable-opaque-menu   do not make menu library structures opaque],
+       [enable_opaque_menu=no],[enable_opaque_menu=$cf_dft_opaque_curses])
 AC_MSG_RESULT($enable_opaque_menu)
 
-AC_MSG_CHECKING(if you want opaque panel-library structures)
-AC_ARG_ENABLE(opaque-panel,
-       [  --enable-opaque-panel   make panel-library structures "opaque"],
-       [enable_opaque_panel=yes],[enable_opaque_panel=no])
+AC_MSG_CHECKING(whether panel library structures should be opaque)
+CF_ARG_DISABLE(opaque-panel,
+       [  --disable-opaque-panel  do not make panel library structures opaque],
+       [enable_opaque_panel=no],[enable_opaque_panel=$cf_dft_opaque_curses])
 AC_MSG_RESULT($enable_opaque_panel)
 
 NCURSES_OPAQUE=0;              test "$enable_opaque_curses" = yes && NCURSES_OPAQUE=1
@@ -1484,6 +1470,14 @@ AC_ARG_WITH(develop,
        [with_develop=no])
 AC_MSG_RESULT($with_develop)
 
+###   use option --enable-check-size to detect screensize with CPR
+AC_MSG_CHECKING(if you want to check screensize of serial terminals)
+AC_ARG_ENABLE(check-size,
+       [  --enable-check-size     compile-in code to detect screensize of serial terminals],,
+       [enable_check_size=$with_develop])
+AC_MSG_RESULT($enable_check_size)
+test "x$enable_check_size" = xyes && AC_DEFINE(USE_CHECK_SIZE,1,[Define to 1 to compile-in code to detect screensize])
+
 ###   use option --enable-hard-tabs to turn on use of hard-tabs optimize
 AC_MSG_CHECKING(if you want hard-tabs code)
 AC_ARG_ENABLE(hard-tabs,
@@ -1750,12 +1744,6 @@ case "$cf_cv_system_name" in
        CF_CHECK_LIBSSP
        ;;
 (*)
-AC_CHECK_FUNC(gettimeofday,
-       AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[
-
-AC_CHECK_LIB(bsd, gettimeofday,
-       AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function])
-       CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday
        ;;
 esac
 
@@ -1774,6 +1762,7 @@ limits.h \
 locale.h \
 math.h \
 poll.h \
+sys/auxv.h \
 sys/ioctl.h \
 sys/param.h \
 sys/poll.h \
@@ -1829,21 +1818,22 @@ CF_ERRNO
 CF_LINK_DATAONLY
 
 ###    Checks for library functions.
+CF_FUNC_GETTIME
 AC_CHECK_FUNCS( \
 fpathconf \
 getcwd \
+getauxval \
 getegid \
 geteuid \
 getopt \
+getuid \
 issetugid \
 localeconv \
 poll \
-putenv \
 remove \
 select \
 setbuf \
 setbuffer \
-setenv \
 setfsuid \
 setvbuf \
 sigaction \
@@ -1901,6 +1891,7 @@ CF_TYPE_SIGACTION
 CF_SIZECHANGE
 CF_FUNC_MEMMOVE
 CF_FUNC_POLL
+CF_MB_LEN_MAX
 CF_VA_COPY
 AC_FUNC_VFORK
 CF_FOPEN_BIN_R
@@ -2349,14 +2340,11 @@ AC_SUBST(TICS_LIST)
 AC_SUBST(TINFO_LIST)
 AC_SUBST(SHLIB_LIST)
 
-# used to separate tack out of the tree
-NCURSES_TREE=
-AC_SUBST(NCURSES_TREE)
-
 ### predefined stuff for the test programs
 AC_DEFINE(HAVE_SLK_COLOR,1,[Define to 1 if we have slk_color for test-programs])
 
 # pkgsrc uses these
+CF_HELP_MESSAGE(Library basenames for pkgsrc:)
 CF_WITH_LIB_BASENAME(FORM_NAME,form)
 CF_WITH_LIB_BASENAME(MENU_NAME,menu)
 CF_WITH_LIB_BASENAME(PANEL_NAME,panel)
@@ -2438,7 +2426,7 @@ esac
 
 # Help to automatically enable the extended curses features when using either
 # the *-config or the ".pc" files by adding defines.
-AC_MSG_CHECKING(for defines to add to ncurses${USE_CFG_SUFFIX}-config script)
+AC_MSG_CHECKING(for defines to add to ncurses${USE_CFG_SUFFIX}${cf_config_suffix}-config script)
 PKG_CFLAGS=
 for cf_loop1 in $CPPFLAGS_after_XOPEN
 do
@@ -2544,8 +2532,6 @@ AC_SUBST(PRIVATE_LIBS)
 # This is used for the *-config script and *.pc data files.
 CF_LD_SEARCHPATH
 
-AC_DEFINE(HAVE_CURSES_DATA_BOOLNAMES,1,[definition needed for in-tree build of tack])
-
 AC_OUTPUT( \
        include/MKterm.h.awk \
        include/curses.head:include/curses.h.in \
diff --git a/dist.mk b/dist.mk
index 4fc53abfb7ef39cfe8ebda0b89684f917e657bfb..78d06b88ae6f1ceea1d2df3b7680cc09518bfdaa 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright 2018-2022,2023 Thomas E. Dickey                                  #
+# Copyright 2018-2023,2024 Thomas E. Dickey                                  #
 # Copyright 1998-2017,2018 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -26,7 +26,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: dist.mk,v 1.1522 2023/01/14 12:04:16 tom Exp $
+# $Id: dist.mk,v 1.1611 2024/05/04 10:21:09 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
@@ -37,8 +37,8 @@ SHELL = /bin/sh
 
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 6
-NCURSES_MINOR = 4
-NCURSES_PATCH = 20230114
+NCURSES_MINOR = 5
+NCURSES_PATCH = 20240504
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
@@ -63,7 +63,7 @@ GNATHTML= gnathtml
 # would remove some text.  The man program on Redhat 6.1 appears to work with
 # man2html if we set the top/bottom margins to 6 (the default is 7).  Newer
 # versions of 'man' leave no margin (and make it harder to sync with pages).
-MAN2HTML= man2html -botm=0 -topm=0 -cgiurl '$$title.$$section$$subsection.html' -index
+MAN2HTML= man2html -botm=0 -topm=0 -cgiurl '$$title.$$section$$subsection.html' -index -mixsecs
 
 ALL    = ANNOUNCE doc/html/announce.html doc/ncurses-intro.doc doc/hackguide.doc manhtml adahtml
 
@@ -124,8 +124,9 @@ manhtml:
        @echo 's/<I>/<EM>/g'         >> subst.tmp
        @echo 's/<\/I>/<\/EM>/g'     >> subst.tmp
        @misc/csort < subst.tmp | uniq > subst.sed
-       @echo '/<\/TITLE>/a\' >> subst.sed
-       @echo '<link rel="author" href="mailto:bug-ncurses@gnu.org">\' >> subst.sed
+       @echo 's%[_-]*_-[_-]*%_%g'   >> subst.sed
+       @echo '/<\/TITLE>/a\\'       >> subst.sed
+       @echo '<link rel="author" href="mailto:bug-ncurses@gnu.org">\\' >> subst.sed
        @rm -f subst.tmp
        @for f in man/*.[0-9]* ; do \
           m=`basename $$f` ;\
@@ -134,8 +135,9 @@ manhtml:
           if [ -f doc/html/$$g ]; then chmod +w doc/html/$$g; fi;\
           echo "Converting $$m to HTML" ;\
           echo '<!--' > doc/html/man/$$g ;\
-          $${EGREP-grep -E} '^.\\"[^#]' $$f | \
-               sed     -e 's/\$$/@/g' \
+               sed     -e '/^\.[a-zA-Z]/,99999d' $$f | \
+               $${EGREP-grep -E} '^.\\"[^#]' | \
+               sed     -e 's/\$$/@/g' \
                        -e 's/^.../  */' \
                        -e 's/</\&lt;/g' \
                        -e 's/>/\&gt;/g' \
index 2296cdabfec9802a252874a57484adf57c5414b1..9a3f078d2f1c697f9c68cb37fa12d1d766775d15 100644 (file)
@@ -2937,7 +2937,7 @@ void print_menu(WINDOW *menu_win, int highlight)
 #include &lt;curses.h&gt;
 
 #define WIDTH 30
-#define HEIGHT 10 
+#define HEIGHT 10
 
 int startx = 0;
 int starty = 0;
@@ -2968,7 +2968,7 @@ int main()
         /* Try to put the window in the middle of screen */
         startx = (80 - WIDTH) / 2;
         starty = (24 - HEIGHT) / 2;
-        
+
         attron(A_REVERSE);
         mvprintw(23, 1, "Click on Exit to quit (Works best in a virtual console)");
         refresh();
@@ -2976,10 +2976,11 @@ int main()
 
         /* Print the menu for the first time */
         menu_win = newwin(HEIGHT, WIDTH, starty, startx);
+        keypad(menu_win, TRUE);
         print_menu(menu_win, 1);
         /* Get all the mouse events */
         mousemask(ALL_MOUSE_EVENTS, NULL);
-        
+
         while(1)
         {       c = wgetch(menu_win);
                 switch(c)
@@ -2991,13 +2992,13 @@ int main()
                                         if(choice == -1) //Exit chosen
                                                 goto end;
                                         mvprintw(22, 1, "Choice made is : %d String Chosen is \"%10s\"", choice, choices[choice - 1]);
-                                        refresh(); 
+                                        refresh();
                                 }
                         }
                         print_menu(menu_win, choice);
                         break;
                 }
-        }               
+        }
 end:
         endwin();
         return 0;
@@ -3005,14 +3006,14 @@ end:
 
 void print_menu(WINDOW *menu_win, int highlight)
 {
-        int x, y, i;    
+        int x, y, i;
 
         x = 2;
         y = 2;
         box(menu_win, 0, 0);
         for(i = 0; i &lt; n_choices; ++i)
         {       if(highlight == i + 1)
-                {       wattron(menu_win, A_REVERSE); 
+                {       wattron(menu_win, A_REVERSE);
                         mvwprintw(menu_win, y, x, "%s", choices[i]);
                         wattroff(menu_win, A_REVERSE);
                 }
@@ -3029,13 +3030,13 @@ void report_choice(int mouse_x, int mouse_y, int *p_choice)
 
         i = startx + 2;
         j = starty + 3;
-        
+
         for(choice = 0; choice &lt; n_choices; ++choice)
                 if(mouse_y == j + choice &amp;&amp; mouse_x &gt;= i &amp;&amp; mouse_x &lt;= i + strlen(choices[choice]))
                 {       if(choice == n_choices - 1)
-                                *p_choice = -1;         
+                                *p_choice = -1;
                         else
-                                *p_choice = choice + 1; 
+                                *p_choice = choice + 1;
                         break;
                 }
 }</span></pre>
@@ -4515,7 +4516,7 @@ int main()
         for(i = 0; i &lt; n_choices; ++i)
                 my_items[i] = new_item(choices[i], choices[i]);
 
-        /* Crate menu */
+        /* Create menu */
         my_menu = new_menu((ITEM **)my_items);
 
         /* Create the window to be associated with the menu */
@@ -4661,7 +4662,7 @@ int main()
         for(i = 0; i &lt; n_choices; ++i)
                 my_items[i] = new_item(choices[i], choices[i]);
 
-        /* Crate menu */
+        /* Create menu */
         my_menu = new_menu((ITEM **)my_items);
 
         /* Create the window to be associated with the menu */
@@ -4815,7 +4816,7 @@ int main()
         for(i = 0; i &lt; n_choices; ++i)
                 my_items[i] = new_item(choices[i], choices[i]);
 
-        /* Crate menu */
+        /* Create menu */
         my_menu = new_menu((ITEM **)my_items);
 
         /* Set menu option not to show the description */
@@ -5123,7 +5124,7 @@ int main()
 
         /* Post the menu */
         mvprintw(LINES - 3, 0, "Press &lt;ENTER&gt; to see the option selected");
-        mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
+        mvprintw(LINES - 2, 0, "Up and Down arrow keys to navigate (F1 to Exit)");
         post_menu(my_menu);
         refresh();
 
@@ -5224,7 +5225,7 @@ int main()
 
         /* Post the menu */
         mvprintw(LINES - 3, 0, "Press &lt;ENTER&gt; to see the option selected");
-        mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
+        mvprintw(LINES - 2, 0, "Up and Down arrow keys to navigate (F1 to Exit)");
         post_menu(my_menu);
         refresh();
 
index acedebee23d0204f4b2520a5418704f09627a1e9..2534502a5360d7aafc2f70bda4b50628f1a009e5 100644 (file)
@@ -20,8 +20,8 @@
 <li><a href="../terminal_interface-curses-termcap__adb.htm#ref_90_16" target="main">tgetnum</a>
 <li><a href="../terminal_interface-curses-termcap__adb.htm#ref_109_16" target="main">tgetstr -  terminal_interface-curses-termcap.adb:109</a>
 <li><a href="../terminal_interface-curses-termcap__adb.htm#ref_130_16" target="main">tgetstr -  terminal_interface-curses-termcap.adb:130</a>
-<li><a href="../terminal_interface-curses-termcap__adb.htm#ref_152_16" target="main">tgoto</a>
 <li><a href="../terminal_interface-curses-termcap__ads.htm#ref_54_13" target="main">TGoto</a>
+<li><a href="../terminal_interface-curses-termcap__adb.htm#ref_152_16" target="main">tgoto</a>
 <li><a href="../terminal_interface-curses-terminfo__adb.htm#ref_70_16" target="main">tigetflag</a>
 <li><a href="../terminal_interface-curses-terminfo__adb.htm#ref_88_16" target="main">tigetstr -  terminal_interface-curses-terminfo.adb:88</a>
 <li><a href="../terminal_interface-curses-terminfo__adb.htm#ref_109_16" target="main">tigetstr -  terminal_interface-curses-terminfo.adb:109</a>
index 53636619a0785e077746585b289aca26d5b34107..1f5e7c3ed45e5195e33441977bf8a4c6d1670978 100644 (file)
@@ -24,7 +24,7 @@
 <span class="comment"><em>--                                 B O D Y                                  --</em></span>
 <span class="comment"><em>--                                                                          --</em></span>
 <span class="comment"><em>------------------------------------------------------------------------------</em></span>
-<span class="comment"><em>-- Copyright 2018,2020 Thomas E. Dickey                                     --</em></span>
+<span class="comment"><em>-- Copyright 2018-2020,2024 Thomas E. Dickey                                --</em></span>
 <span class="comment"><em>-- Copyright 2007-2011,2014 Free Software Foundation, Inc.                  --</em></span>
 <span class="comment"><em>--                                                                          --</em></span>
 <span class="comment"><em>-- Permission is hereby granted, free of charge, to any person obtaining a  --</em></span>
@@ -53,8 +53,8 @@
 <span class="comment"><em>------------------------------------------------------------------------------</em></span>
 <span class="comment"><em>--  Author: Juergen Pfeifer, 1996</em></span>
 <span class="comment"><em>--  Version Control:</em></span>
-<span class="comment"><em>--  @Revision: 1.16 @</em></span>
-<span class="comment"><em>--  @Date: 2020/02/02 23:34:34 @</em></span>
+<span class="comment"><em>--  @Revision: 1.17 @</em></span>
+<span class="comment"><em>--  @Date: 2024/03/30 13:24:07 @</em></span>
 <span class="comment"><em>--  Binding Version 01.00</em></span>
 <span class="comment"><em>------------------------------------------------------------------------------</em></span>
 <b>with</b> System;
       <span class="symbol"><a name="ref_562_7">L</a></span> : <b>constant</b> <a href="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</a>  := <a href="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</a> (Natural (<a href="terminal_interface-curses__ads.htm#ref_111_4">Key_F0</a>) +
         Natural (<a href="terminal_interface-curses__ads.htm#ref_949_12">Function_Key_Number</a>'Last));
    <b>begin</b>
-      <b>if</b> (<a href="terminal_interface-curses__ads.htm#ref_945_30">Key</a> &gt;= <a href="terminal_interface-curses__ads.htm#ref_111_4">Key_F0</a>) <b>and</b> <b>then</b> (<a href="terminal_interface-curses__ads.htm#ref_945_30">Key</a> &lt;= <a href="terminal_interface-curses__adb.htm#ref_562_7">L</a>) <b>then</b>
+      <b>if</b> <a href="terminal_interface-curses__ads.htm#ref_945_30">Key</a> &gt;= <a href="terminal_interface-curses__ads.htm#ref_111_4">Key_F0</a> <b>and</b> <b>then</b> <a href="terminal_interface-curses__ads.htm#ref_945_30">Key</a> &lt;= <a href="terminal_interface-curses__adb.htm#ref_562_7">L</a> <b>then</b>
          <b>return</b> True;
       <b>else</b>
          <b>return</b> False;
index c39b2f41da7d7e91c851fc427fff4b2a8e419448..c506fdd5ddfe0f67e5f83ecd63e6974ed6f26ff4 100644 (file)
@@ -24,7 +24,7 @@
 <span class="comment"><em>--                                 S P E C                                  --</em></span>
 <span class="comment"><em>--                                                                          --</em></span>
 <span class="comment"><em>------------------------------------------------------------------------------</em></span>
-<span class="comment"><em>-- Copyright 2020 Thomas E. Dickey                                          --</em></span>
+<span class="comment"><em>-- Copyright 2020,2024 Thomas E. Dickey                                     --</em></span>
 <span class="comment"><em>-- Copyright 1998-2011,2014 Free Software Foundation, Inc.                  --</em></span>
 <span class="comment"><em>--                                                                          --</em></span>
 <span class="comment"><em>-- Permission is hereby granted, free of charge, to any person obtaining a  --</em></span>
@@ -53,8 +53,8 @@
 <span class="comment"><em>------------------------------------------------------------------------------</em></span>
 <span class="comment"><em>--  Author:  Juergen Pfeifer, 1996</em></span>
 <span class="comment"><em>--  Version Control:</em></span>
-<span class="comment"><em>--  @Revision: 1.48 @</em></span>
-<span class="comment"><em>--  @Date: 2020/02/02 23:34:34 @</em></span>
+<span class="comment"><em>--  @Revision: 1.49 @</em></span>
+<span class="comment"><em>--  @Date: 2024/01/19 16:51:30 @</em></span>
 <span class="comment"><em>--  Binding Version 01.00</em></span>
 <span class="comment"><em>------------------------------------------------------------------------------</em></span>
 <b>with</b> System.Storage_Elements;
index 8be0214c90eaafa372c3a9d888d2fd0824bfc99a..5a10ea48fef956367f1d4268c84e809bbc961c5c 100644 (file)
@@ -23,7 +23,7 @@
 <b>package</b> <a href="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</a>.<span class="symbol"><a name="ref_6_28">Curses_Constants</a></span> <b>is</b>
    <b>pragma</b> Pure;
 
-   <span class="symbol"><a name="ref_9_4">DFT_ARG_SUFFIX</a></span> : <b>constant</b> String := "";
+   <span class="symbol"><a name="ref_9_4">DFT_ARG_SUFFIX</a></span> : <b>constant</b> String := "w";
    <span class="symbol"><a name="ref_10_4">Bit_Order</a></span> : <b>constant</b> System.Bit_Order := System.Low_Order_First;
    <span class="symbol"><a name="ref_11_4">Sizeof_Bool</a></span>                  : <b>constant</b> := 8;
    <span class="symbol"><a name="ref_12_4">OK</a></span>                           : <b>constant</b> := 0;
@@ -36,8 +36,8 @@
    <span class="comment"><em>--  Version of the ncurses library from extensions(3NCURSES)</em></span>
 
    <span class="symbol"><a name="ref_21_4">NCURSES_VERSION_MAJOR</a></span>        : <b>constant</b> := 6;
-   <span class="symbol"><a name="ref_22_4">NCURSES_VERSION_MINOR</a></span>        : <b>constant</b> := 4;
-   <span class="symbol"><a name="ref_23_4">Version</a></span> : <b>constant</b> String := "6.4";
+   <span class="symbol"><a name="ref_22_4">NCURSES_VERSION_MINOR</a></span>        : <b>constant</b> := 5;
+   <span class="symbol"><a name="ref_23_4">Version</a></span> : <b>constant</b> String := "6.5";
 
    <span class="comment"><em>--  Character non-color attributes from attr(3NCURSES)</em></span>
 
index 51433167009c0f15554f6c81a02ded012ae2b074..2aa03cfab1312d391346f562014769722e522703 100644 (file)
@@ -1,7 +1,7 @@
 <!--
-  $Id: announce.html,v 1.68 2022/12/31 20:38:46 tom Exp $
+  $Id: announce.html,v 1.70 2024/04/27 18:38:45 tom Exp $
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -33,7 +33,7 @@
 <head>
   <meta name="generator" content=
   "HTML Tidy for HTML5 for Linux version 5.6.0">
-  <title>Announcing ncurses 6.4</title>
+  <title>Announcing ncurses 6.5</title>
   <link rel="author" href="mailto:bug-ncurses@gnu.org">
   <meta http-equiv="Content-Type" content=
   "text/html; charset=us-ascii">
@@ -56,7 +56,7 @@
   </style>
 </head>
 <body>
-  <h1 class="no-header">Announcing ncurses 6.4</h1>
+  <h1 class="no-header">Announcing ncurses 6.5</h1>
 
   <h2><a name="h2-overview" id="h2-overview">Overview</a></h2>
 
   Notes</a></h2>
 
   <p>These notes are for <span class="main-name">ncurses</span>
-  6.4, released <strong>December 31, 2022</strong>.</p>
+  6.5, released <strong>April 27, 2024</strong>.</p>
 
   <p>This release is designed to be source-compatible with
-  <span class="main-name">ncurses</span> 5.0 through 6.3; providing
+  <span class="main-name">ncurses</span> 5.0 through 6.4; providing
   extensions to the application binary interface (ABI). Although
   the source can still be configured to support the <span class=
   "main-name">ncurses</span> 5 ABI, the reason for the release is
   bug-fixes/improvements</a> dealt with robustness issues. The
   release notes also mention some other bug-fixes, but are focused
   on new features and improvements to existing features since
-  <span class="main-name">ncurses</span> 6.3 release.</p>
+  <span class="main-name">ncurses</span> 6.4 release.</p>
 
   <h3><a name="h3-library" id="h3-library">Library improvements</a></h3>
 
   <h4><a name="h4-new-library" id="h4-new-library">New features</a></h4>
 
-  <p>There are no new features in this release.</p>
+  <p>These are new features:</p>
+
+  <ul>
+    <li>
+      <p>The low-level terminfo and termcap interfaces are used
+      both by the higher-level curses library, as well as by many
+      applications.</p>
+
+      <p>The functions which convert parameterized terminal
+      capability strings for output to the terminal
+      (<code>tiparm</code> and <code>tparm</code>) analyze the
+      capability string to determine which parameters are strings
+      (i.e., addresses), versus numbers (not addresses).</p>
+
+      <p>The library's analysis of a capability string may differ
+      from the calling application's design if environment
+      variables are used to point to an invalid terminal database.
+      This is a longstanding problem with <em>all</em>
+      implementations of terminfo, dating from the early 1980s.</p>
+
+      <p>Two new functions address this problem: by providing a
+      function which allows the calling application to tell ncurses
+      how many string-parameters to expect:</p>
+
+      <ul>
+        <li><code>tiscan_s</code> helps applications check
+        formatting capabilities that would be passed to
+        <code>tiparm_s</code>.</li>
+
+        <li><code>tiparm_s</code> provides applications a way to
+        tell ncurses what the expected parameters are for a
+        capability.</li>
+      </ul>
+    </li>
+
+    <li>
+      <p>The ncurses library supports a compile-time feature
+      (enabled with the configure <code>--enable-check-size</code>
+      option) which simplifies initialization with terminals which
+      do not negotiate window (screen) size. This is done in
+      <code>setupterm</code>, by providing for using ANSI
+      cursor-position report (in user6/user7 terminfo capabilities)
+      to obtain the screen size if neither environment variables or
+      ioctl is used.</p>
+
+      <p>The ncurses test-program with options
+      &ldquo;<code>-E&nbsp;-T</code>&rdquo; demonstrates this
+      feature.</p>
+    </li>
+
+    <li>add functions to query tty-flags in
+    <code>SCREEN</code></li>
+  </ul>
+
+  <p>This release drops compatibility with obsolete versions of
+  <a href="https://invisible-island.net/ncurses/tack/">tack</a>, e.g., pre-1.08</p>
 
   <h4><a name="h4-fixes-library" id="h4-fixes-library">Other
   improvements</a></h4>
 
   <ul>
     <li>
-      <p>modify <tt>delscreen</tt> to more effectively delete all
-      windows on the given screen.</p>
+      <p>In addition to the new, safer function
+      <code>tiparm_s</code>, ncurses adds checks to make the older
+      <code>tiparm</code>, <code>tparm</code> and
+      <code>tgoto</code> functions safer:</p>
+
+      <ul>
+        <li>
+          <p>the terminfo functions <code>tiparm</code> and
+          <code>tparm</code> ensure that the capability string
+          comes from the terminal description which ncurses loads,
+          rather than from random data which the application
+          happens to have.</p>
+        </li>
+
+        <li>
+          <p>the <code>tgoto</code> function disallows capabilities
+          which its analysis shows will attempt to use string
+          parameters.</p>
+        </li>
+
+        <li>
+          <p>ncurses uses internal functions which correspond to
+          <code>tiparm</code>, and <code>tgoto</code> which ensure
+          that the capability strings which are passed to these
+          functions come from the loaded terminal description.</p>
+        </li>
+      </ul>
+    </li>
+
+    <li>
+      <p>improve check in <code>lib_tparm.c</code>, ensuring that a
+      char* fits into a <code>TPARM_ARG</code></p>
+    </li>
+
+    <li>
+      <p>modify <code>_nc_syserr_abort</code> to use
+      <code>_nc_env_access</code>, rather than only checking root
+      uid</p>
+    </li>
+
+    <li>
+      <p>improve thread lock in <code>lib_trace.c</code></p>
+    </li>
+
+    <li>
+      <p>modify <code>flushinp</code> to use file descriptors in
+      <code>SCREEN</code>, rather than from <code>TERMINAL</code>,
+      and check if they are for a terminal, like SVr4</p>
+    </li>
+
+    <li>
+      <p>modify <code>mcprint</code> to use file descriptor in
+      <code>SCREEN</code>, for consistency</p>
+    </li>
+
+    <li>
+      <p>modify internal function <code>_nc_read_file_entry</code>
+      to show relevant filename in warnings</p>
     </li>
 
     <li>
-      <p>modify <tt>wnoutrefresh</tt> to call <tt>pnoutrefresh</tt>
-      if its parameter is a pad, rather than treating it as an
-      error, and modify new_panel to permit its window-parameter to
-      be a pad</p>
+      <p>improve checks in internal function
+      <code>convert_string</code> for corrupt terminfo entry</p>
     </li>
 
     <li>
-      <p>modify curses_trace() to show the trace-mask as symbols,
-      e.g., <tt>TRACE_ORDINARY</tt>, <tt>DEBUG_LEVEL(3)</tt>.</p>
+      <p>review/improve handling of out-of-memory conditions</p>
     </li>
 
     <li>
-      <p>improve checks for valid mouse events when an intermediate
-      mouse state is not part of the mousemask specified by the
-      caller</p>
+      <p>limit delays to 30 seconds, i.e., padding delays in
+      terminfo, as well as <code>napms</code> and
+      <code>delay_output</code> functions</p>
     </li>
 
     <li>
-      <p>allow extended-color number in <em>opts</em> parameter of
-      <tt>wattr_on</tt>.</p>
+      <p>fix reallocation loop for <code>vsnprintf</code> in
+      <code>_nc_sprintf_string</code> by copying the va_list
+      variable</p>
     </li>
 
     <li>
-      <p>improve <tt>_tracecchar_t2</tt> formatting of
-      base+combining character.</p>
+      <p>modify <code>delscreen</code> to limit the windows which
+      it creates to just those associated with the screen</p>
     </li>
 
     <li>
-      <p>trim out some unwanted linker options from ncurses*config
-      and .pc files seen in Fedora 36+.</p>
+      <p>modify <code>endwin</code> to return an error if it is
+      called again without an intervening screen update</p>
     </li>
 
     <li>
-      <p>improve shell-scripts with <em>shellcheck</em></p>
+      <p>modify <code>wenclose</code> to handle pads</p>
     </li>
 
     <li>
-      <p>improve use of "trap" in shell scripts, using a
-      script.</p>
+      <p>eliminate use of <code>PATH_MAX</code> in
+      <code>lib_trace.c</code></p>
     </li>
 
     <li>
-      <p>modify <tt>make-tar.sh</tt> scripts to make timestamps
-      more predictable.</p>
+      <p>provide for any <code>CCHARW_MAX</code> greater than 1</p>
     </li>
   </ul>
 
 
   <ul>
     <li>
-      <p>modify <tt>misc/gen-pkgconfig.in</tt> to allow for the
-      case where the library directory does not yet exist, since
-      this is processed before doing an install</p>
+      <p>correct loop termination condition in
+      <code>waddnstr</code> and <code>waddnwstr</code></p>
+    </li>
+
+    <li>
+      <p>improve parsing in internal function
+      <code>_nc_msec_cost</code>, allowing a single decimal
+      point</p>
     </li>
 
     <li>
-      <p>set trailing null on string passed from <tt>winsnstr</tt>
-      to <tt>wins_nwstr</tt>.</p>
+      <p>amend parameter check for entire string versus specific
+      length in <code>winsnstr</code> and <code>wins_nwstr</code>
+      to match Solaris; make similar correction to
+      <code>wins_nwstr</code></p>
     </li>
 
     <li>
-      <p>modify <tt>waddch_literal</tt> to allow for double-width
-      base character when merging a combining character</p>
+      <p>correct internal function <code>wadd_wch_literal</code>
+      when adding a non-spacing character to a double-width
+      character</p>
+    </li>
+
+    <li>
+      <p>correct definition of <code>Charable</code> macro for
+      non-wide ncurses library .</p>
     </li>
   </ul>
 
   improvements</a></h3>
 
   <p id="h4-utilities">Several improvements were made to the
-  utility programs:</p>
+  utility programs. Some were done to make the <code>infocmp</code>
+  option &ldquo;<tt>-u</tt>&rdquo; option help refactor the
+  terminal database.</p>
 
   <dl>
     <dt><span class="part-name"><a href=
 
     <dd>
       <ul>
-        <li>rewrite <tt>canonical_name</tt> function of
-        <tt>infocmp</tt> to ensure buffer size</li>
+        <li>
+          <p>add limit checks for processing extended capabilities
+          with the &ldquo;<code>-u</code>&rdquo; option</p>
+        </li>
 
-        <li>improve readability of long parameterized expressions
-        with the infocmp &ldquo;<tt>-f</tt>&rdquo; option by
-        allowing split before a &ldquo;<tt>%p</tt>&rdquo;
-        marker.</li>
+        <li>
+          <p>correct initial alignment of extended capabilities, so
+          that the &ldquo;<code>-u</code>&rdquo; option can be used
+          for more than two terminal types</p>
+        </li>
 
-        <li>modify verbose-option of <tt>infocmp</tt>,
-        <tt>tic</tt>, <tt>toe</tt> to enable debug-tracing if that
-        is configured.</li>
+        <li>
+          <p>modify &ldquo;<code>-u</code>&rdquo; option to not
+          report cancels for strings which were already cancelled
+          in a use'd chunk.</p>
+        </li>
+
+        <li>
+          <p>correct an assignment &ldquo;<code>-u</code>&rdquo;
+          for detecting if a boolean is unset in a base entry and
+          set in a use'd chunk, i.e., if it was cancelled.</p>
+        </li>
       </ul>
     </dd>
 
     <dt><span class="part-name"><a href=
-    "https://invisible-island.net/ncurses/man/tabs.1.html">tabs</a></span>
+    "https://invisible-island.net/ncurses/man/tic.1m.html">tic</a></span>
     </dt>
 
-    <dd>limit tab-stop values to max-columns</dd>
+    <dd>
+      <ul>
+        <li>
+          <p>correct limit-check when dumping tc/use clause via
+          &ldquo;<code>-I</code>&rdquo;</p>
+        </li>
 
-    <dt><span class="part-name"><a href=
-    "https://invisible-island.net/ncurses/man/tic.1m.html">tic</a></span>
-    </dt>
+        <li>
+          <p>check return value of <code>_nc_save_str</code>, in
+          special case where extended capabilities are processed
+          but the terminal description was not initialized</p>
+        </li>
 
-    <dd>add consistency check in tic for u6/u7/u8/u9 and NQ
-    capabilities.</dd>
+        <li>
+          <p>modify check for multiply defined aliases to report
+          problems within the current runtime rather than for
+          conflicts with pre-existing terminal descriptions.</p>
+        </li>
+
+        <li>
+          <p>disallow using <code>$TERMINFO</code> or
+          <code>$HOME/.terminfo</code> when
+          &ldquo;<code>-o</code>&rdquo; option is used</p>
+        </li>
+      </ul>
+    </dd>
 
     <dt><span class="part-name"><a href=
-    "https://invisible-island.net/ncurses/man/tput.1.html">tput</a></span>
-    </dt>
+    "https://invisible-island.net/ncurses/man/tput.1.html">tput</a></span> and <span class=
+    "part-name"><a href=
+    "https://invisible-island.net/ncurses/man/tset.1.html">tset</a></span></dt>
+
+    <dd>
+      <ul>
+        <li>
+          <p>add &ldquo;<code>-v</code>&rdquo; option to tput, to
+          show warnings</p>
+        </li>
 
-    <dd>corrected use of original tty-modes in <em>init/reset</em>
-    subcommands</dd>
+        <li>
+          <p>modify <em>reset</em> command to avoid altering clocal
+          if the terminal uses a modem</p>
+        </li>
+
+        <li>
+          <p>modify <em>reset</em> feature to avoid 1-second sleep
+          if running in a pseudo-terminal</p>
+        </li>
+      </ul>
+    </dd>
   </dl>
 
   <h4><a name="h4-examples" id="h4-examples">Examples</a></h4>
 
   <p>Along with the library and utilities, improvements were made
   to the <a href=
-  "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>. Most of
-  this activity aimed at improving the test-packages:</p>
+  "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>:</p>
 
   <ul>
     <li>
-      <p>add minimal <tt>-h</tt> (usage) and <tt>-V</tt> (version)
-      getopt logic to all ncurses-examples programs.</p>
-    </li>
-
-    <li>
-      <p>fix an error in "@" command in <tt>test/ncurses.c</tt>
-      F-menu</p>
-    </li>
-
-    <li>
-      <p>add curses_trace to ifdef's for <tt>START_TRACE</tt> in
-      <tt>test/test.priv.h</tt></p>
-    </li>
-
-    <li>
-      <p>improve pthread-configuration for test/worm.c</p>
-    </li>
-
-    <li>
-      <p>add <tt>setlocale</tt> call to several test-programs.</p>
+      <p>modify <code>test_tparm</code> to account for extended
+      capabilities</p>
     </li>
 
     <li>
-      <p>workaround in <tt>test/picsmap.c</tt> for use of floating
-      point for rgb values by ImageMagick 6.9.11, which appears to
-      use the wrong upper limit.</p>
+      <p>corrected mouse mask in <code>test/testcurs.c</code></p>
     </li>
 
     <li>
-      <p>use static libraries for AdaCurses test-package for
-      Mageia, since no gprbuild package is available.</p>
+      <p>modify <code>test/clip_printw.c</code> to optionally test
+      non-wrapped updates</p>
     </li>
 
     <li>
-      <p>install Ada95 sample programs in libexecdir, adding a
-      wrapper script to invoke those.</p>
+      <p>modify <code>test/test_mouse.c</code> to use curses api
+      for raw/noraw</p>
     </li>
 
     <li>
-      <p>install ncurses-examples programs in libexecdir, adding a
-      wrapper script to invoke those.</p>
+      <p>modify <code>test/clip_printw.c</code> to optionally test
+      non-wrapped updates</p>
     </li>
   </ul>
 
-  <p>There are other new demo/test programs and reusable
-  examples:</p>
+  <p>There is one new demo/test programs:</p>
 
   <dl>
-    <dt><span class="part-name"><em>test/combine</em></span>
+    <dt><span class="part-name"><em>test/test_endwin.c</em></span>
     </dt>
 
-    <dd>demonstrate combining characters</dd>
-
-    <dt><span class="part-name"><em>test/test_delwin</em></span>
-    </dt>
-
-    <dd>demonstrate deleting a window</dd>
-
-    <dt><span class="part-name"><em>test/test_mouse</em></span>
-    </dt>
-
-    <dd>observe mouse events in the raw terminal or parsed ncurses
-    modes</dd>
-
-    <dt><span class="part-name"><em>test/test_unget_wch</em></span>
-    </dt>
-
-    <dd>demonstrate the unget_wch and unget functions</dd>
+    <dd>
+      <p>This program shows the return-status from
+      <code>endwin</code> with different combinations of
+      <code>endwin</code> (repeated), <code>initscr</code>,
+      <code>newterm</code>.</p>
+    </dd>
   </dl>
 
   <h3><a name="h3-database" id="h3-database">Terminal database</a></h3>
   <p>There are several new terminal descriptions:</p>
 
   <ul>
-    <li><tt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-mosh">mosh</a></tt>
+    <li>
+      <p><a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-ansi_apparrows"><tt>ansi+apparrows</tt></a></p>
     </li>
 
-    <li><tt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-mosh-256color">mosh-256color</a></tt>
+    <li>
+      <p><a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-contour"><tt>contour</tt></a></p>
     </li>
 
-    <li><tt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-teken-16color">teken-16color</a></tt>
+    <li>
+      <p><a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-linux_kbs"><tt>linux+kbs</tt></a>
+      for terminals which imitate xterm's behavior with Linux</p>
     </li>
 
-    <li><tt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-teken-sc">teken-sc</a></tt>
+    <li>
+      <p><a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-rio"><tt>rio</tt></a>,
+      <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-rio-direct"><tt>rio-direct</tt></a></p>
     </li>
 
-    <li><tt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-teken-vt">teken-vt</a></tt>
+    <li>
+      <p><a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-mostlike"><tt>mostlike</tt></a></p>
     </li>
 
-    <li><tt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-xgterm">xgterm</a></tt>
+    <li>
+      <p><a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-ms-vt100-16color"><tt>ms-vt100-16color</tt></a>,
+      <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-winconsole"><tt>winconsole</tt></a></p>
     </li>
-  </ul>
 
-  <p>There are many changes to existing terminal descriptions. Some
-  were updates to several descriptions:</p>
-
-  <ul>
     <li>
-      <p>make description-fields distinct</p>
+      <p><a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt100_noapp"><tt>vt100+noapp</tt></a>,
+      <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt100_noapp_pc"><tt>vt100+noapp+pc</tt></a>,
+      <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_app_pc"><tt>xterm+app+pc</tt></a>,
+      <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_decedit"><tt>xterm+decedit</tt></a>
+      from <a href="https://invisible-island.net/xterm/xterm.log.html#xterm_389">xterm
+      #389</a></p>
     </li>
 
     <li>
-      <p>fix errata in description fields</p>
+      <p><a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-putty_cursor"><tt>putty+cursor</tt></a>
+      to reflect amending of modified cursor-keys in 2021</p>
     </li>
 
     <li>
-      <p>add/use several building-blocks:</p>
-
-      <ul>
-        <li><a href=
-        "https://invisible-island.net/ncurses/terminfo.src.html#tic-aixterm_sl"><tt>aixterm+sl</tt></a></li>
-
-        <li><a href=
-        "https://invisible-island.net/ncurses/terminfo.src.html#tic-ansi_cpr"><tt>ansi+cpr</tt></a></li>
-
-        <li><a href=
-        "https://invisible-island.net/ncurses/terminfo.src.html#tic-apollo_vt132"><tt>apollo+vt132</tt></a></li>
-
-        <li><a href=
-        "https://invisible-island.net/ncurses/terminfo.src.html#tic-decid_cpr"><tt>decid+cpr</tt></a></li>
-
-        <li><a href=
-        "https://invisible-island.net/ncurses/terminfo.src.html#tic-ncr260vp_sl"><tt>ncr260vp+sl</tt></a></li>
-
-        <li><a href=
-        "https://invisible-island.net/ncurses/terminfo.src.html#tic-wyse_sl"><tt>wyse+sl</tt></a></li>
-
-        <li><a href=
-        "https://invisible-island.net/ncurses/terminfo.src.html#tic-x10term_sl"><tt>x10term+sl</tt></a></li>
-
-        <li><a href=
-        "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_acs"><tt>xterm+acs</tt></a></li>
-
-        <li><a href=
-        "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_alt47"><tt>xterm+alt47</tt></a></li>
-      </ul>
+      <p><a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-wezterm"><tt>wezterm</tt></a></p>
     </li>
   </ul>
 
-  <p>while others affected specific descriptions. These were
-  retested, to take into account changes by their developers:</p>
+  <p>There are many changes to existing terminal descriptions. Some
+  were updates to several descriptions, using the
+  <code>infocmp</code> &ldquo;<code>-u</code>&rdquo; option in a
+  script to determine which <em>building-block</em> entries could
+  be used to replace multiple capability settings (and trim
+  redundant information).</p>
+
+  <p>Other changes include:</p>
 
   <ul>
     <li>
-      <p><tt><a href=
-      "https://invisible-island.net/ncurses/terminfo.src.html#tic-kitty">kitty</a></tt>
-      </p>
+      <p><a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M__Extensions_">document</a>
+      XF, kxIN and kxOUT</p>
     </li>
 
     <li>
-      <p><tt><a href=
-      "https://invisible-island.net/ncurses/terminfo.src.html#tic-teken">teken</a></tt>
-      </p>
+      <p>add note on <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-sun"><tt>sun</tt></a>
+      regarding wscons/cmdtool/shelltool</p>
     </li>
-  </ul>
 
-  <p>while these are specific fixes based on reviewing
-  documentation, user reports, or warnings from <span class=
-  "part-name">tic</span>:</p>
-
-  <dl>
-    <dt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-att610_cvis0">att610+cvis0</a>
-    </dt>
-
-    <dd>amended note as per documentation for att610, att620,
-    att730</dd>
-
-    <dt><a href="https://invisible-island.net/ncurses/terminfo.src.html#tic-kon">kon</a>,
-    kon2, jfbterm</dt>
-
-    <dd>revise to undo "linux2.6" change to smacs/rmacs/enacs</dd>
-
-    <dt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-st-0_6">st-0.6</a>
-    </dt>
-
-    <dd>add dim, ecma+strikeout</dd>
-
-    <dt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-foot_base">foot+base</a>
-    </dt>
-
-    <dd>add xterm+sl-alt</dd>
-
-    <dt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-dec_sl">dec+sl</a>
-    </dt>
-
-    <dd>correct dsl in dec+sl</dd>
-
-    <dt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-mintty">mintty</a> and
-    tmux</dt>
-
-    <dd>correct setal in mintty/tmux entries, add to vte-2018</dd>
-
-    <dt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-nsterm">nsterm</a>
-    </dt>
+    <li>
+      <p>remove DECCOLM+DECSCLM from <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-foot"><tt>foot</tt></a></p>
+    </li>
 
-    <dd>modify nsterm to use xterm+alt1049</dd>
+    <li>
+      <p>add xterm+focus to <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-foot_base"><tt>foot+base</tt></a></p>
+    </li>
 
-    <dt><a href="https://invisible-island.net/ncurses/terminfo.src.html#tic-putty">putty</a>
-    </dt>
+    <li>
+      <p>add ecma+strikeout to <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-putty"><tt>putty</tt></a></p>
+    </li>
 
-    <dd>modify putty to use xterm+alt1049</dd>
+    <li>
+      <p>use CSI 3J in <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-vte-2017"><tt>vte-2017</tt></a></p>
+    </li>
 
-    <dt><a href=
-    "https://invisible-island.net/ncurses/terminfo.src.html#tic-vte-2018">vte-2018</a>
-    </dt>
+    <li>
+      <p>use oldxterm+sm+1006 in <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-vte-2014"><tt>vte-2014</tt></a></p>
+    </li>
 
-    <dd>add blink and setal</dd>
-  </dl>
+    <li>
+      <p>modify <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-xgterm"><tt>xgterm</tt></a>
+      to work around line-drawing bug</p>
+    </li>
 
-  <p>A few entries use extensions (user-defined terminal
-  capabilities):</p>
+    <li>
+      <p>add xterm focus mode 1004 to <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a>
+      as fe/fd capabilities, like vim.</p>
+    </li>
 
-  <ul>
     <li>
-      <p>use <tt>ansi+enq</tt> and <tt>decid+cpr</tt> in cases
-      where the terminal probably supported the u6-u9 extension</p>
+      <p>add xterm+focus to <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-alacritty_common"><tt>alacritty+common</tt></a></p>
     </li>
 
     <li>
-      <p>remove u6-u9 from teken-2018</p>
+      <p>add XR/xr, to work with vim, and use RV/rv to denote DA2
+      and its response</p>
     </li>
 
     <li>
-      <p>use <tt>NQ</tt> to flag entries where the terminal does
-      not support query and response</p>
+      <p>add XF flag to <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a>
+      so that termcap applications can be aware of terminals which
+      may support focus in/out</p>
     </li>
 
     <li>
-      <p>add/use <a href=
-      "https://invisible-island.net/ncurses/terminfo.src.html#tic-bracketed_paste"><tt>bracketed+paste</tt></a>
-      to help identify terminals supporting this xterm feature</p>
+      <p>use xterm+focus in <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-p370"><tt>xterm-p370</tt></a>
+      and <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p>
     </li>
 
     <li>
-      <p>modify samples for xterm mouse 1002/1003 modes to use 1006
-      mode, and also provide for focus in/out responses</p>
+      <p>remove xterm+sm+1006 from <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p>
     </li>
 
     <li>
-      <p>xterm patch #371 supports DEC-compatible status-line. add
-      <tt>dec+sl</tt> to xterm-new, per xterm #371, add <a href=
-      "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-p371"><tt>xterm-p371</tt></a>,
-      add <a href=
-      "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-p370"><tt>xterm-p370</tt></a>,
-      for use in older terminals, and set &ldquo;xterm-new&rdquo;
-      to &ldquo;xterm-p370&rdquo; (to ease adoption).</p>
+      <p>NetBSD-related fixes for <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-x68k"><tt>x68k</tt></a> and
+      <a href=
+      "https://invisible-island.net/ncurses/terminfo.src.html#tic-wsvt25"><tt>wsvt25</tt></a></p>
     </li>
   </ul>
 
 
       <ul>
         <li>
-          <p>remove a stray '/' from description of <tt>%g</tt> in
-          <a href=
-          "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Parameterized-Strings">
-          terminfo(5)</a>.</p>
+          <p>add assignment in <code>CF_MAN_PAGES</code> to fill in
+          value for <code>TERMINFO_DIRS</code> in ncurses, terminfo
+          and tic manpages.</p>
         </li>
 
         <li>
-          <p>correct/improve font-formatting in <a href=
-          "https://invisible-island.net/ncurses/man/curs_getch.3x.html">curs_getch.3x</a>, as
-          well as other manual pages.</p>
+          <p>clarify interaction of <code>-R</code> option versus
+          <code>-C</code>, <code>-I</code> and <code>-r</code> in
+          <code>infocmp</code> manpage.</p>
         </li>
-      </ul>
-    </li>
-
-    <li>
-      <p>New/improved history and portability sections:</p>
 
-      <ul>
         <li>
-          <p>add portability notes for <a href=
-          "https://invisible-island.net/ncurses/man/curs_initscr.3x.html#h2-PORTABILITY">delscreen</a>
-          and <a href=
-          "https://invisible-island.net/ncurses/man/curs_window.3x.html#h2-PORTABILITY">delwin</a>
-          in manual.</p>
+          <p>correct manpage description of panel_hidden.</p>
         </li>
 
         <li>
-          <p>improve <a href=
-          "https://invisible-island.net/ncurses/man/curs_slk.3x.html#h2-EXTENSIONS">curs_slk.3x</a>
-          discussion of extensions and portability</p>
+          <p>improve manpage description for addch versus unctrl
+          format used for non-printable characters.</p>
         </li>
-      </ul>
-    </li>
 
-    <li>
-      <p>Other improvements:</p>
-
-      <ul>
         <li>
-          <p>improve <a href=
-          "https://invisible-island.net/ncurses/man/curs_bkgd.3x.html">curs_bkgd.3x</a>,
-          explaining that <tt>bkgdset</tt> can affect results for
-          <tt>bkgd</tt></p>
+          <p>improve manpages discussing file descriptors in
+          low-level functions.</p>
         </li>
 
         <li>
-          <p>add note on portable memory-leak checking in <a href=
-          "https://invisible-island.net/ncurses/man/curs_memleaks.3x.html#h2-PORTABILITY">curs_memleaks.3x</a></p>
+          <p>improve description of search rules for terminal
+          descriptions in terminfo manpage.</p>
         </li>
 
         <li>
-          <p>expanded description in <a href=
-          "https://invisible-island.net/ncurses/man/resizeterm.3x.html">resizeterm.3x</a></p>
+          <p>modify dist.mk to avoid passing developer's comments
+          in manpages into the generated html documentation.</p>
         </li>
 
         <li>
-          <p>add section on releasing memory to <a href=
-          "https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h3-Releasing-Memory">
-          curs_termcap.3x</a> and <a href=
-          "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Releasing-Memory">
-          curs_terminfo.3x</a> manpages.</p>
+          <p>modify test-package "ncurses6-doc" to use
+          manpage-aliases, which in turn required a change to the
+          configure script to factor in the extra-suffix option
+          when deriving alias names.</p>
         </li>
+      </ul>
+    </li>
 
+    <li>
+      <p>New/improved history and portability sections:</p>
+
+      <ul>
         <li>
-          <p>add clarification of the scope of dynamic variables in
-          <a href=
-          "https://invisible-island.net/ncurses/man/terminfo.5.html">terminfo(5)</a>.</p>
+          <p>add information about "ttycap", termcap's forerunner,
+          to tset.1</p>
         </li>
 
         <li>
-          <p>improve formatting of <a href=
-          "https://invisible-island.net/ncurses/ncurses-intro.html">ncurses-intro.html</a>
-          and <a href=
-          "https://invisible-island.net/ncurses/hackguide.html">hackguide.html</a></p>
+          <p>document limitations of tparm, and error-returns in
+          curs_terminfo.3x</p>
         </li>
 
         <li>
-          <p>improve <a href=
-          "https://invisible-island.net/ncurses/man/curs_clear.3x.html">curs_clear.3x</a>
-          links to other pages</p>
+          <p>document limitations of tgoto, and error-returns in
+          curs_termcap.3x</p>
         </li>
+      </ul>
+    </li>
+
+    <li>
+      <p>Other improvements:</p>
 
+      <ul>
         <li>
-          <p>update <a href=
-          "https://invisible-island.net/ncurses/howto/NCURSES-Programming-HOWTO.html">ncurses-howto</a>,
-          making documentation fixes along with corrections to
-          example programs.</p>
+          <p>This release has many changes to improve the
+          formatting and style of the manpages.</p>
         </li>
 
         <li>
-          <p>use newer version 1.36 of gnathtml for generating Ada
-          html files.</p>
+          <p>Manpages now use consistent section-naming, page
+          headers and footers (including the modification date for
+          each page).</p>
         </li>
 
         <li>
-          <p>update external links in <a href=
-          "https://invisible-island.net/ncurses/Ada95.html">Ada95.html</a></p>
+          <p>Table layout has been revised.</p>
         </li>
       </ul>
     </li>
   <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting
   bug-fixes</a></h3>
 
-  <p>While there were many bugs fixed during development of ncurses
-  6.4, only a few (the reason for this release) were both important
-  and interesting. Most of the bug-fixes were for local issues
-  which did not affect compatibility across releases. Since those
-  are detailed in the <a href=
-  "https://invisible-island.net/ncurses/NEWS.html#t20221231">NEWS</a> file no elaboration is
-  needed here.</p>
+  <p>The changes to <tt>tparm</tt>, <tt>tgoto</tt> which improve
+  the design of the low-level interfaces are <em>interesting</em>,
+  but are not bug-fixes <em>per se</em>.</p>
+
+  <h3><a name="h3-config-config" id=
+  "h3-config-config">Configuration changes</a></h3>
+
+  <h4><a name="h4-config-major" id="h4-config-major">Major
+  changes</a></h4>
 
-  <p>The interesting bugs were those dealing with memory leaks and
-  buffer overflows. Although the utilities are designed for
-  <em>text</em> files (which they do properly), some choose to test
-  them with <strong>non-</strong><em>text</em> files.</p>
+  <p>These are the major changes (aside from introducing <a href=
+  "#h4-new-library"><tt>tiparm_s</tt></a>):</p>
 
   <ul>
     <li>
-      <p>Text files contain no embedded nulls. Also, they end with
-      a newline. Feeding <strong>tic</strong> non-text files
-      exposed a few cases where the program did not check for those
-      issues. As a result, further processing of the input found
-      limit-checks whose assumptions were invalid.</p>
+      <p>use wide-character (ncursesw) by default</p>
     </li>
 
     <li>
-      <p>Fixing the limit-checks (first) found a problem with
-      <strong>tic</strong> managing the list of strings in a
-      terminal description. In merging two terminal descriptions
-      (i.e., the &ldquo;use=&rdquo; feature), <strong>tic</strong>
-      was not allocating a complete copy. A quick repair for that
-      introduced a memory leak.</p>
+      <p>use opaque typedefs by default</p>
     </li>
+  </ul>
 
+  <p>However, most of the work on configure scripts was done to
+  reduce warnings within the configure script:</p>
+
+  <ul>
     <li>
-      <p>The checks for non-text files are improved (i.e., embedded
-      nulls in the input file will cause <strong>tic</strong> to
-      reject it rather than attempting to process it).</p>
+      <p>intrusive warnings from GNU grep regarding fgrep and
+      egrep</p>
     </li>
 
     <li>
-      <p>The string allocations in <strong>tic</strong> are
-      likewise improved.</p>
+      <p>fatal errors in compile-checks, arising from recent
+      &ldquo;Modern&nbsp;C&rdquo; efforts by some developers which
+      caused longstanding configure checks to fail.</p>
+
+      <p>After repairing the configure script, none of that
+      activity affected ncurses because stricter warnings are used
+      routinely in development.</p>
     </li>
   </ul>
 
-  <h3><a name="h3-config-config" id=
-  "h3-config-config">Configuration changes</a></h3>
+  <p>Other improvements made to configure checks include</p>
 
-  <h4><a name="h4-config-major" id="h4-config-major">Major
-  changes</a></h4>
+  <ul>
+    <li>
+      <p>use <a href=
+      "https://invisible-island.net/ncurses/INSTALL.html#option:enable-string-hacks">string-hacks</a>
+      in alloc_entry.c, alloc_type.c and hardscroll.c, overlooked
+      due to compiler changes in recent OpenBSD releases</p>
+    </li>
+
+    <li>
+      <p>revise progs.priv.h to provide for NC_ISATTY reuse</p>
+    </li>
+
+    <li>
+      <p>configure check for MB_LEN_MAX provides warning as
+      needed</p>
+    </li>
+
+    <li>
+      <p>trim a space after some "-R" options, fixing builds for
+      applications built using clang and ncurses on Solaris</p>
+    </li>
 
-  <p>There are no major changes. No new options were added. Several
-  improvements were made to configure checks.</p>
+    <li>
+      <p>work around misconfiguration of MacPorts gcc13, which
+      exposes invalid definition of <tt>MB_LEN_MAX</tt> in gcc's
+      fallback copy of <tt>limits.h</tt></p>
+    </li>
+
+    <li>
+      <p>modified experimental Windows driver works with xterm
+      mouse protocol</p>
+    </li>
+  </ul>
 
   <h4><a name="h4-config-options" id=
   "h4-config-options">Configuration options</a></h4>
 
-  <p>There are a few new/modified configure options:</p>
+  <p>There are a few new configure options:</p>
 
   <dl>
-    <dt><tt>--with-abi-version</tt>
+    <dt><a href=
+    "https://invisible-island.net/ncurses/INSTALL.html#option:disable-setuid-environ"><tt>--disable-setuid-environ</tt></a>
     </dt>
 
     <dd>
-      <p>add ABI 7 defaults to configure script.</p>
+      <p>Compile with environment restriction, so certain
+      environment variables are not available when running via a
+      setuid/setgid application. These are (for example
+      <tt>$TERMINFO</tt>) those that allow the search path for the
+      terminfo or termcap entry to be customized.</p>
+
+      <p>A setuid/setgid application inherits its environment
+      variables from the current user, in contrast to sudo which
+      may limit the environment variables that ncurses uses.</p>
     </dd>
 
-    <dt><tt>--with-caps</tt>
+    <dt><a href=
+    "https://invisible-island.net/ncurses/INSTALL.html#option:enable-check-size"><tt>--enable-check-size</tt></a>
     </dt>
 
     <dd>
-      <p>add warning in configure script if file specified for
-      &ldquo;<tt>--with-caps</tt>&rdquo; does not exist.</p>
+      <p>Compile-in feature to detect screensize for terminals
+      which do not advertise their screensize, e.g., serial
+      terminals.</p>
     </dd>
 
-    <dt><tt>--with-manpage-format</tt>
+    <dt><a href=
+    "https://invisible-island.net/ncurses/INSTALL.html#option:with-abi-altered"><tt>--with-abi-altered=<em>NUM</em></tt></a>
     </dt>
 
     <dd>
-      <p>bzip2 and xz compression are now supported</p>
+      <p>Override the displayed (rather than compiled-in) ABI. Only
+      packagers who have created configurations where the ABI
+      differs from ncurses should be interested in this option.</p>
     </dd>
 
-    <dt><tt>--with-xterm-kbs</tt>
+    <dt><a href=
+    "https://invisible-island.net/ncurses/INSTALL.html#option:with-strip-program"><tt>--with-strip-program=<em>XXX</em></tt></a>
     </dt>
 
     <dd>
-      <p>add check/warning in configure script if option
-      &ldquo;<tt>--with-xterm-kbs</tt>&rdquo; is missing or
-      inconsistent</p>
+      <p>When stripping executables during install, use the
+      specified program rather than &ldquo;strip&rdquo; overriding
+      program chosen by the install program for stripping
+      executables.</p>
+    </dd>
+  </dl>
+
+  <p>These configure options are modified:</p>
+
+  <dl>
+    <dt><a href=
+    "https://invisible-island.net/ncurses/INSTALL.html#option:with-pkg-config-libdir"><tt>--with-pkg-config-libdir[=<em>DIR</em>]</tt></a>
+    </dt>
+
+    <dd>
+      <p>The optional <em>DIR</em> parameter can now be
+      &ldquo;auto&rdquo; to automatically use pkg-config's library
+      directory.</p>
+
+      <p>The default is <tt>$(libdir)</tt>.</p>
+    </dd>
+
+    <dt><a href=
+    "https://invisible-island.net/ncurses/INSTALL.html#option:with-xterm-kbs"><tt>--with-xterm-kbs[=<em>XXX</em>]</tt></a>
+    </dt>
+
+    <dd>
+      <p>The default is &ldquo;auto&rdquo; which tells the
+      configure script to choose BS or DEL according to platform
+      defaults.</p>
     </dd>
   </dl>
 
 
   <ul>
     <li>
-      <p>amend configure option's auto-search to account for
-      systems where none of the directories known to
-      <em>pkg-config</em> exist</p>
+      <p>add/use configure check for <code>clock_gettime</code>, to
+      supersede <code>gettimeofday</code>.</p>
     </li>
 
     <li>
-      <p>corrected regex needed for older <em>pkg-config</em> used
-      in Solaris 10</p>
+      <p>modify configure script check for pkg-config library
+      directory to take into account an older version 0.15.0 which
+      used PKG_CONFIG_PATH but not PKG_CONFIG_LIBDIR</p>
     </li>
 
     <li>
-      <p>improve handling of <tt>--with-pkg-config-libdir</tt>
-      option, allowing for the case where either
-      <tt>$PKG_CONFIG_LIBDIR</tt> or the option value has a
-      colon-separated list of directories</p>
+      <p>allow for MinGW32-/64-bit configurations to use
+      _DEFAULT_SOURCE</p>
     </li>
 
     <li>
-      <p>if the <tt>--with-pkg-config-libdir</tt> option is not
-      given, use <tt>${libdir}/pkgconfig</tt> as a default</p>
+      <p>modify CF_XOPEN_SOURCE macro's amend default case to avoid
+      undefining _XOPEN_SOURCE if _POSIX_C_SOURCE is defined</p>
     </li>
 
     <li>
-      <p>improve search-path check for <em>pkg-config</em>, e.g.,
-      for Debian testing which installs <em>pkg-config</em> with
-      architecture-prefixes.</p>
+      <p>updated configure script macro CF_XOPEN_SOURCE, for
+      uClibc-ng</p>
     </li>
 
     <li>
-      <p>build-fix for cross-compiling to MingW, conditionally add
-      <tt>-lssp</tt></p>
+      <p>modify version-check for gcc/g++, now works for msys2</p>
     </li>
 
     <li>
-      <p>improve configure check for <tt>getttynam</tt></p>
+      <p>build-fixes related to configure-options and/or
+      platform:</p>
+
+      <ul>
+        <li>fix for <tt>--enable-fvisibility</tt></li>
+
+        <li>fix for unusual values of
+        <tt>--with-rel-version</tt></li>
+
+        <li>fix for unusual values of
+        <tt>--with-abi-version</tt></li>
+
+        <li>fix for <tt>--disable-tcap-names</tt></li>
+
+        <li>fix for termcap in <tt>nc_access.h</tt></li>
+      </ul>
     </li>
 
     <li>
-      <p>fixes to build with <em>dietlibc</em>:</p>
+      <p>other configure-script improvements:</p>
 
       <ul>
-        <li>add configure check for <tt>fpathconf</tt></li>
+        <li>recent msys2 headers work with
+        <tt>_DEFAULT_SOURCE</tt>; amend check</li>
 
-        <li>add configure check for math sine/cosine, needed in
-        test/tclock, and eliminate <tt>pow()</tt> from
-        test/hanoi</li>
+        <li>use <tt>$ac_includes_default</tt> in most cases where
+        stdlib.h should work</li>
 
-        <li>use <tt>wcsnlen</tt> as an alternative to
-        <tt>wmemchr</tt> if it is not found</li>
+        <li>use <tt>#error</tt> consistently vs "make an
+        error"</li>
+
+        <li>add configure macro for <tt>gettimeofday</tt> vs inline
+        check</li>
       </ul>
     </li>
+  </ul>
 
+  <p>Here are some of the other portability fixes:</p>
+
+  <ul>
     <li>
-      <p>modify configure macro <tt>CF_BUILD_CC</tt> to check if
-      the build-compiler works, rather than that it is different
-      from the cross-compiler, e.g., to accommodate a compiler
-      which can be used for either purpose with different flags</p>
+      <p>modify configure scripts/makefiles to omit
+      <tt>KEY_RESIZE</tt> if the corresponding <tt>SIGWINCH</tt>
+      feature is disabled</p>
     </li>
 
     <li>
-      <p>modify configure/scripts to work around interference by
-      GNU grep 3.8</p>
+      <p>increase <tt>MB_CUR_MAX</tt> to 16, matching glibc's
+      <tt>MB_LEN_MAX</tt></p>
     </li>
-  </ul>
 
-  <p>Here are some of the other portability fixes:</p>
+    <li>
+      <p>add BSD <tt>erase2</tt> to characters handled by
+      tset/reset</p>
+    </li>
 
-  <ul>
     <li>
-      <p>change <tt>man_db.renames</tt> to template, to handle
-      <em>ncurses*-config</em> script with the
-      <tt>--extra-suffix</tt> configure option.</p>
+      <p>use <tt>getauxval</tt> when available, to improve
+      <tt>setuid</tt>/<tt>setgid</tt> checks</p>
     </li>
 
     <li>
-      <p>update <tt>CF_XOPEN_SOURCE</tt> macro, adding variants
-      &ldquo;gnueabi" and &ldquo;gnueabihf" to get
-      <tt>_DEFAULT_SOURCE</tt> special case, as well as adding GNU
-      libc suffixes for &ldquo;abi64&rdquo;, &ldquo;abin32&rdquo;,
-      &ldquo;x32&rdquo; to distinguish it from other libc
-      flavors.</p>
+      <p>set <tt>dwShareMode</tt> in calls to
+      <tt>CreateConsoleScreenBuffer</tt></p>
     </li>
 
     <li>
-      <p>work around <em>musl</em>'s nonstandard use of feature
-      test macros by adding a definition for
-      <tt>NCURSES_WIDECHAR</tt> to the generated &ldquo;.pc&rdquo;
-      and <em><tt>*-config</tt></em> files.</p>
+      <p>use <tt>CreateFile</tt> with "<tt>CONIN$</tt>",
+      "<tt>CONOUT$</tt>" rather than <tt>GetStdHandle</tt> to
+      obtain a handle on the actual console, avoiding redirection
+      in the MinGW/Win32 configurations</p>
     </li>
 
     <li>
-      <p>use &ldquo;<tt>command -v</tt>&rdquo; rather than
-      &ldquo;<tt>type</tt>&rdquo; in <tt>Ada95/gen/Makefile.in</tt>
-      to fix a portability issue.</p>
+      <p>modify MinGW driver to return <tt>KEY_BACKSPACE</tt> when
+      an unmodified <tt>VK_BACK</tt> virtual key is entered</p>
+    </li>
+
+    <li>
+      <p>modify MinGW configuration to provide for running in
+      MSYS/MSYS2 shells, assuming ConPTY support</p>
     </li>
   </ul>
 
     </li>
 
     <li>
-      <p><span class="main-name">ncurses</span> supports all of the
-      for SVr4 curses features including keyboard mapping, color,
-      forms-drawing with ACS characters, and automatic recognition
+      <p><span class="main-name">ncurses</span> supports the
+      features of SVr4 curses including keyboard mapping, color,
+      form drawing with ACS characters, and automatic recognition
       of keypad and function keys.</p>
     </li>
 
     <li>
-      <p><span class="main-name">ncurses</span> provides these SVr4
-      add-on libraries (not part of X/Open Curses):</p>
+      <p><span class="main-name">ncurses</span> provides work-alike
+      replacements of SVr4 supplemental libraries based on curses,
+      but which were not specified by X/Open Curses:</p>
 
       <ul>
         <li>
-          <p>the panels library, supporting a stack of windows with
-          backing store.</p>
+          <p>the panel library, supporting a stack of windows with
+          backing store</p>
         </li>
 
         <li>
-          <p>the menus library, supporting a uniform but flexible
-          interface for menu programming.</p>
+          <p>the menu library, supporting a uniform but flexible
+          interface for menu programming</p>
         </li>
 
         <li>
           <p>the form library, supporting data collection through
-          on-screen forms.</p>
+          on-screen forms</p>
         </li>
       </ul>
     </li>
       <ul>
         <li>
           <p><span class="main-name">ncurses</span> supports
-          user-defined capabilities which it can see, but which are
+          user-defined capabilities that it can see, but which are
           hidden from SVr4 curses applications using the
           <em>same</em> terminal database.</p>
         </li>
   <ul>
     <li>
       <p>The API is 8-bit clean and base-level conformant with the
-      X/OPEN curses specification, XSI curses (that is, it
-      implements all <em>BASE</em> level features, and most
+      X/Open Curses specification, XSI curses (that is, it
+      implements all <em>BASE</em> level features, and almost all
       <em>EXTENDED</em> features). It includes many function calls
       not supported under SVr4 curses (but portability of all calls
       is documented so you can use the SVr4 subset only).</p>
     </li>
 
     <li>
-      <p>The library meets the XSI requirement that every macro
-      entry point has a corresponding function which may be linked
-      (and will be prototype-checked) if the macro definition is
-      disabled with <code>#undef</code>.</p>
+      <p>X/Open Curses permits most functions it specifies to be
+      made available as macros as well. ncurses does this</p>
+
+      <ul>
+        <li>to improve performance, e.g., for operations composed
+        of simpler functions such as cursor movement following by
+        adding text to the screen,</li>
+
+        <li>to simplify the implementation by reusing functions
+        which use common parameters, e.g., the standard screen
+        <code>stdscr</code>, and</li>
+
+        <li>to provide functions that return values via their
+        parameters</li>
+      </ul>
+
+      <p>Except for the last case, ncurses provides a non-macro
+      implementation of the function. If the macro definition is
+      disabled with <code>#undef</code>, or by defining
+      <code>NCURSES_NOMACROS</code> the function may be linked (and
+      its calls will be checked against the prototype).</p>
     </li>
 
     <li>
         <p>New vi uses ncurses.</p>
 
         <p><a href=
-        "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br>
+        "https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page">
+        https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page</a><br>
 
         </p>
       </dd>
         <p>terminal emulator for serial modem connections</p>
 
         <p><a href=
-        "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p>
+        "https://salsa.debian.org/minicom-team/minicom">https://salsa.debian.org/minicom-team/minicom</a></p>
       </dd>
 
       <dt><span class="part-name">mosh</span>
 
   <blockquote>
     <p><a href=
-    "https://invisible-island.net/archives/ncurses/6.3/">https://invisible-island.net/archives/ncurses/6.3/</a>
+    "https://invisible-island.net/archives/ncurses/6.4/">https://invisible-island.net/archives/ncurses/6.4/</a>
     and<br>
     <a href=
-    "https://invisible-mirror.net/archives/ncurses/6.3/">https://invisible-mirror.net/archives/ncurses/6.3/</a>&nbsp;.</p>
+    "https://invisible-mirror.net/archives/ncurses/6.4/">https://invisible-mirror.net/archives/ncurses/6.4/</a>&nbsp;.</p>
   </blockquote>
 
   <p>There is an archive of the mailing list here:</p>
 
   <blockquote>
     <p><a href=
-    "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
-    (also <a href=
-    "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
+    "https://lists.gnu.org/archive/html/bug-ncurses">https://lists.gnu.org/archive/html/bug-ncurses</a>&nbsp;.</p>
   </blockquote>
 
   <h2><a name="h2-this-stuff" id="h2-this-stuff">Related
   <a href="http://www.catb.org/~esr/terminfo/">Eric
   Raymond</a>&nbsp;. Unlike the older version, the termcap and
   terminfo data are provided in the same file, which also provides
-  several user-definable extensions beyond the X/Open
+  several user-definable extensions beyond the X/Open Curses
   specification.</p>
 
   <p>You can find lots of information on terminal-related topics
-  not covered in the terminfo file at <a href=
-  "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">
-  Richard Shuford's archive</a>&nbsp;. The collection of computer
-  manuals at <a href=
+  not covered in the terminfo file in <a href=
+  "https://shuford.invisible-island.net/">Richard Shuford's
+  archive</a> (<a href=
+  "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">original</a>).
+  The collection of computer manuals at <a href=
   "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been
   useful.</p>
 
diff --git a/doc/html/man/adacurses6-config.1.html b/doc/html/man/adacurses6-config.1.html
deleted file mode 100644 (file)
index 90587e4..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-<!--
-  ****************************************************************************
-  * Copyright 2019-2020,2021 Thomas E. Dickey                                *
-  * Copyright 2010-2014,2016 Free Software Foundation, Inc.                  *
-  *                                                                          *
-  * Permission is hereby granted, free of charge, to any person obtaining a  *
-  * copy of this software and associated documentation files (the            *
-  * "Software"), to deal in the Software without restriction, including      *
-  * without limitation the rights to use, copy, modify, merge, publish,      *
-  * distribute, distribute with modifications, sublicense, and/or sell       *
-  * copies of the Software, and to permit persons to whom the Software is    *
-  * furnished to do so, subject to the following conditions:                 *
-  *                                                                          *
-  * The above copyright notice and this permission notice shall be included  *
-  * in all copies or substantial portions of the Software.                   *
-  *                                                                          *
-  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
-  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
-  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
-  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
-  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
-  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
-  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
-  *                                                                          *
-  * Except as contained in this notice, the name(s) of the above copyright   *
-  * holders shall not be used in advertising or otherwise to promote the     *
-  * sale, use or other dealings in this Software without prior written       *
-  * authorization.                                                           *
-  ****************************************************************************
-  * @Id: MKada_config.in,v 1.14 2021/12/25 17:39:16 tom Exp @
--->
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
-<HTML>
-<HEAD>
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
-<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>ADACURSES 1   User Commands</TITLE>
-<link rel="author" href="mailto:bug-ncurses@gnu.org">
-
-</HEAD>
-<BODY>
-<H1 class="no-header">ADACURSES 1   User Commands</H1>
-<PRE>
-<STRONG>ADACURSES(1)</STRONG>                     User Commands                    <STRONG>ADACURSES(1)</STRONG>
-
-
-
-
-</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       adacurses6-config - helper script for AdaCurses libraries
-
-
-</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>adacurses6-config</STRONG> [<EM>options</EM>]
-
-
-</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This  is  a shell script which simplifies configuring an application to
-       use the AdaCurses library binding to ncurses.
-
-
-</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
-       <STRONG>--cflags</STRONG>
-              echos the gnat (Ada  compiler)  flags  needed  to  compile  with
-              AdaCurses.
-
-       <STRONG>--libs</STRONG> echos the gnat libraries needed to link with AdaCurses.
-
-       <STRONG>--version</STRONG>
-              echos  the  release+patchdate  version  of the ncurses libraries
-              used to configure and build AdaCurses.
-
-       <STRONG>--help</STRONG> prints a list of the <STRONG>adacurses6-config</STRONG> script's options.
-
-       If no options are given, <STRONG>adacurses6-config</STRONG> prints  the  combination  of
-       <STRONG>--cflags</STRONG> and <STRONG>--libs</STRONG> that <STRONG>gnatmake</STRONG> expects (see example).
-
-
-</PRE><H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE>
-       For  example,  supposing  that  you  want to compile the "Hello World!"
-       program for AdaCurses.  Make a file named "hello.adb":
-              with Terminal_Interface.Curses; use Terminal_Interface.Curses;
-
-              procedure Hello is
-
-                 Visibility : Cursor_Visibility := Invisible;
-                 done : Boolean := False;
-                 c : Key_Code;
-
-              begin
-
-                 Init_Screen;
-                 Set_Echo_Mode (False);
-
-                 Set_Cursor_Visibility (Visibility);
-                 Set_Timeout_Mode (Standard_Window, Non_Blocking, 0);
-
-                 Move_Cursor (Line =&gt; Lines / 2, Column =&gt; (Columns - 12) / 2);
-                 Add (Str =&gt; "Hello World!");
-
-                 while not done loop
-
-                    c := Get_Keystroke (Standard_Window);
-                    case c is
-                    when Character'Pos ('q') =&gt; done := True;
-                    when others =&gt; null;
-                    end case;
-
-                    Nap_Milli_Seconds (50);
-                 end loop;
-
-                 End_Windows;
-
-              end Hello;
-
-       Then, using
-              gnatmake `adacurses-config --cflags`  hello  -largs  `adacurses-
-              config --libs`
-
-       or (simpler):
-              gnatmake hello `adacurses-config`
-
-       you will compile and link the program.
-
-
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
-
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
-
-
-
-                                                                  <STRONG>ADACURSES(1)</STRONG>
-</PRE>
-<div class="nav">
-<ul>
-<li><a href="#h2-NAME">NAME</a></li>
-<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
-<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-OPTIONS">OPTIONS</a></li>
-<li><a href="#h2-EXAMPLE">EXAMPLE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-</ul>
-</div>
-</BODY>
-</HTML>
diff --git a/doc/html/man/adacursesw6-config.1.html b/doc/html/man/adacursesw6-config.1.html
new file mode 100644 (file)
index 0000000..3ded34a
--- /dev/null
@@ -0,0 +1,144 @@
+<!--
+  ****************************************************************************
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
+  * Copyright 2010-2014,2016 Free Software Foundation, Inc.                  *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: MKada_config.in,v 1.35 2024/04/20 21:13:27 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>adacursesw6\-config 1 2024-04-20 ncurses 6.5 User commands</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+
+</HEAD>
+<BODY>
+<H1 class="no-header">adacursesw6\-config 1 2024-04-20 ncurses 6.5 User commands</H1>
+<PRE>
+<STRONG><A HREF="adacursesw6-config.1.html">adacursesw6-config(1)</A></STRONG>            User commands           <STRONG><A HREF="adacursesw6-config.1.html">adacursesw6-config(1)</A></STRONG>
+
+
+
+
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>adacursesw6-config</STRONG> - configuration helper for <EM>AdaCurses</EM> libraries
+
+
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>adacursesw6-config</STRONG> [<STRONG>--cflags</STRONG>] [<STRONG>--libs</STRONG>]
+
+       <STRONG>adacursesw6-config</STRONG> <STRONG>--version</STRONG>
+
+       <STRONG>adacursesw6-config</STRONG> <STRONG>--help</STRONG>
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       This  program  development  aid  simplifies  the process of configuring
+       applications to use the <EM>AdaCurses</EM> library binding to <EM>ncurses</EM>.
+
+
+</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
+       <STRONG>--cflags</STRONG>   reports the GNAT (Ada compiler) flags needed to compile with
+                  <EM>AdaCurses</EM>.
+
+       <STRONG>--libs</STRONG>     reports the GNAT libraries needed to link with <EM>AdaCurses</EM>.
+
+       <STRONG>--version</STRONG>  reports  the  release  and  patch  date  information  of the
+                  <EM>ncurses</EM> libraries used to configure and build <EM>AdaCurses</EM>  and
+                  exits successfully.
+
+       <STRONG>--help</STRONG>     issues a usage message and exits successfully.
+
+       Omitting options implies "<STRONG>--cflags</STRONG> <STRONG>--libs</STRONG>".
+
+
+</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
+       Consider a program using <EM>AdaCurses</EM> to write the message "Hello, world!"
+       in the center of the screen and wait for the user to press the "q"  key
+       before exiting.  Populate a file <EM>hello.adb</EM> with the following.
+
+           with Terminal_Interface.Curses; use Terminal_Interface.Curses;
+
+           procedure Hello is
+              Visibility : Cursor_Visibility := Invisible;
+              Message : constant String := "Hello, World!";
+              done : Boolean := False;
+              c : Key_Code;
+           begin
+              Init_Screen;
+              Set_Echo_Mode (False);
+              Set_Cursor_Visibility (Visibility);
+              Set_Timeout_Mode (Standard_Window, Non_Blocking, 0);
+
+              Move_Cursor (Line =&gt; Lines / 2,
+                           Column =&gt; (Columns - Message'Length) / 2);
+              Add (Str =&gt; Message);
+
+              while not done loop
+                 c := Get_Keystroke (Standard_Window);
+
+                 case c is
+                     when Character'Pos ('q') =&gt; done := True;
+                     when others =&gt; null;
+                 end case;
+
+                 Nap_Milli_Seconds (50);
+              end loop;
+
+              End_Windows;
+
+           end Hello;
+
+       Then, using
+           gnatmake `adacursesw6-config --cflags` hello \
+               -largs `adacursesw6-config --libs`
+       or, more simply,
+           gnatmake hello `adacursesw6-config`
+       you can compile and link the program.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
+
+
+
+ncurses 6.5                       2024-04-20             <STRONG><A HREF="adacursesw6-config.1.html">adacursesw6-config(1)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a></li>
+<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
index ab99a7cff6a9ab8160ce615275466271c79fff62..92f9905e2a884d6e6ab835947074b583432a40e8 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: captoinfo.1m,v 1.33 2022/02/12 20:07:29 tom Exp @
+  * @Id: captoinfo.1m,v 1.63 2024/03/23 20:37:25 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>captoinfo 1m</TITLE>
+<TITLE>captoinfo 1m 2024-03-23 ncurses 6.5 User commands</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">captoinfo 1m</H1>
+<H1 class="no-header">captoinfo 1m 2024-03-23 ncurses 6.5 User commands</H1>
 <PRE>
-<STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>                                                    <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>
+<STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>                    User commands                   <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>
 
 
 
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>captoinfo</STRONG> [<STRONG>-v</STRONG><EM>n</EM> <EM>width</EM>]  [<STRONG>-V</STRONG>] [<STRONG>-1</STRONG>] [<STRONG>-w</STRONG> <EM>width</EM>] <EM>file</EM> ...
+       <STRONG>captoinfo</STRONG> [<EM>tic-option</EM>] [<EM>file</EM> ...]
 
+       <STRONG>captoinfo</STRONG> <STRONG>-V</STRONG>
 
-</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       <STRONG>captoinfo</STRONG>  looks in each given text <EM>file</EM> for <STRONG>termcap</STRONG> descriptions.  For
-       each one found,  an  equivalent  <STRONG>terminfo</STRONG>  description  is  written  to
-       standard  output.   Termcap  <STRONG>tc</STRONG> capabilities are translated directly to
-       terminfo <STRONG>use</STRONG> capabilities.
-
-       If no <EM>file</EM> is given, then the environment variable <STRONG>TERMCAP</STRONG> is used  for
-       the  filename  or entry.  If <STRONG>TERMCAP</STRONG> is a full pathname to a file, only
-       the terminal whose name is specified in the environment  variable  <STRONG>TERM</STRONG>
-       is  extracted  from  that file.  If the environment variable <STRONG>TERMCAP</STRONG> is
-       not set, then the file <STRONG>/usr/share/terminfo</STRONG> is read.
-
-       <STRONG>-v</STRONG>   print out tracing information on standard  error  as  the  program
-            runs.
-
-       <STRONG>-V</STRONG>   print  out the version of the program in use on standard error and
-            exit.
 
-       <STRONG>-1</STRONG>   cause the fields to print out  one  to  a  line.   Otherwise,  the
-            fields  will be printed several to a line to a maximum width of 60
-            characters.
-
-       <STRONG>-w</STRONG>   change the output to <EM>width</EM> characters.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       <STRONG>captoinfo</STRONG>  translates  terminal  descriptions.   It looks in each given
+       text <EM>file</EM> for <EM>termcap</EM> entries  and,  for  each  one  found,  writes  an
+       equivalent <EM>terminfo</EM> description to the standard output stream.  <EM>termcap</EM>
+       <STRONG>tc</STRONG> capabilities translate to <EM>terminfo</EM> "<STRONG>use</STRONG>" capabilities.
+
+       If no <EM>file</EM>s are specified, <STRONG>captoinfo</STRONG>  interprets  the  content  of  the
+       environment  variable  <EM>TERMCAP</EM>  as  a  file name, and extracts only the
+       entry for the terminal named in the environment variable <EM>TERM</EM> from  it.
+       If  the  environment  variable  <EM>TERMCAP</EM>  is  not  set,  <STRONG>captoinfo</STRONG> reads
+       <EM>/etc/termcap</EM>.
+
+       This utility is implemented as a link to <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, with the latter's  <STRONG>-I</STRONG>
+       option  implied.  You can use other <STRONG>tic</STRONG> options such as <STRONG>-1</STRONG>, <STRONG>-f</STRONG>, <STRONG>-v</STRONG>, <STRONG>-w</STRONG>,
+       and <STRONG>-x</STRONG>.  The <STRONG>-V</STRONG> option reports the version of <EM>ncurses</EM>  associated  with
+       this program and exits with a successful status.
+
+
+</PRE><H3><a name="h3-Translations-from-Nonstandard-Capabilities">Translations from Nonstandard Capabilities</a></H3><PRE>
+       <STRONG>captoinfo</STRONG>  translates  some  obsolete,  nonstandard  capabilities  into
+       standard  (SVr4/XSI  Curses)  <EM>terminfo</EM>  capabilities.   It   issues   a
+       diagnostic  to the standard error stream for each, inviting the user to
+       check that it has not mistakenly  translated  an  unknown  or  mistyped
+       capability name.
+
+                     <STRONG>Name</STRONG>
+              <STRONG>Obsolete</STRONG>   <STRONG>Standard</STRONG>    <STRONG>Origin</STRONG>      <STRONG><EM>terminfo</EM></STRONG> <STRONG>capability</STRONG>
+              ---------------------------------------------------------
+                 <STRONG>BO</STRONG>         <STRONG>mr</STRONG>        AT&amp;T      <STRONG>enter_reverse_mode</STRONG>
+                 <STRONG>CI</STRONG>         <STRONG>vi</STRONG>        AT&amp;T      <STRONG>cursor_invisible</STRONG>
+                 <STRONG>CV</STRONG>         <STRONG>ve</STRONG>        AT&amp;T      <STRONG>cursor_normal</STRONG>
+                 <STRONG>DS</STRONG>         <STRONG>mh</STRONG>        AT&amp;T      <STRONG>enter_dim_mode</STRONG>
+                 <STRONG>EE</STRONG>         <STRONG>me</STRONG>        AT&amp;T      <STRONG>exit_attribute_mode</STRONG>
+                 <STRONG>FE</STRONG>         <STRONG>LF</STRONG>        AT&amp;T      <STRONG>label_on</STRONG>
+                 <STRONG>FL</STRONG>         <STRONG>LO</STRONG>        AT&amp;T      <STRONG>label_off</STRONG>
+                 <STRONG>XS</STRONG>         <STRONG>mk</STRONG>        AT&amp;T      <STRONG>enter_secure_mode</STRONG>
+                 <STRONG>EN</STRONG>         <STRONG>@7</STRONG>        XENIX     <STRONG>key_end</STRONG>
+                 <STRONG>GE</STRONG>         <STRONG>ae</STRONG>        XENIX     <STRONG>exit_alt_charset_mode</STRONG>
+                 <STRONG>GS</STRONG>         <STRONG>as</STRONG>        XENIX     <STRONG>enter_alt_charset_mode</STRONG>
+                 <STRONG>HM</STRONG>         <STRONG>kh</STRONG>        XENIX     <STRONG>key_home</STRONG>
+                 <STRONG>LD</STRONG>         <STRONG>kL</STRONG>        XENIX     <STRONG>key_dl</STRONG>
+                 <STRONG>PD</STRONG>         <STRONG>kN</STRONG>        XENIX     <STRONG>key_npage</STRONG>
+                 <STRONG>PN</STRONG>         <STRONG>po</STRONG>        XENIX     <STRONG>prtr_off</STRONG>
+                 <STRONG>PS</STRONG>         <STRONG>pf</STRONG>        XENIX     <STRONG>prtr_on</STRONG>
+                 <STRONG>PU</STRONG>         <STRONG>kP</STRONG>        XENIX     <STRONG>key_ppage</STRONG>
+                 <STRONG>RT</STRONG>         <STRONG>@8</STRONG>        XENIX     <STRONG>kent</STRONG>
+                 <STRONG>UP</STRONG>         <STRONG>ku</STRONG>        XENIX     <STRONG>kcuu1</STRONG>
+                 <STRONG>KA</STRONG>         <STRONG>k;</STRONG>      Tektronix   <STRONG>key_f10</STRONG>
+                 <STRONG>KB</STRONG>         <STRONG>F1</STRONG>      Tektronix   <STRONG>key_f11</STRONG>
+                 <STRONG>KC</STRONG>         <STRONG>F2</STRONG>      Tektronix   <STRONG>key_f12</STRONG>
+                 <STRONG>KD</STRONG>         <STRONG>F3</STRONG>      Tektronix   <STRONG>key_f13</STRONG>
+                 <STRONG>KE</STRONG>         <STRONG>F4</STRONG>      Tektronix   <STRONG>key_f14</STRONG>
+                 <STRONG>KF</STRONG>         <STRONG>F5</STRONG>      Tektronix   <STRONG>key_f15</STRONG>
+                 <STRONG>BC</STRONG>         <STRONG>Sb</STRONG>      Tektronix   <STRONG>set_background</STRONG>
+
+                 <STRONG>FC</STRONG>         <STRONG>Sf</STRONG>      Tektronix   <STRONG>set_foreground</STRONG>
+                 <STRONG>HS</STRONG>         <STRONG>mh</STRONG>        IRIX      <STRONG>enter_dim_mode</STRONG>
+
+       XENIX <EM>termcap</EM> had a set of extension capabilities, corresponding to box
+       drawing characters of CCSID ("code page") 437, as follows.
+
+                      <STRONG><EM>termcap</EM></STRONG> <STRONG>Name</STRONG>            <STRONG>Graphic</STRONG>
+                      -----------------------------------------
+                           <STRONG>G2</STRONG>        upper left corner
+                           <STRONG>G3</STRONG>        lower left corner
+                           <STRONG>G1</STRONG>        upper right corner
+                           <STRONG>G4</STRONG>        lower right corner
+                           <STRONG>GR</STRONG>        tee pointing right
+                           <STRONG>GL</STRONG>        tee pointing left
+                           <STRONG>GU</STRONG>        tee pointing up
+                           <STRONG>GD</STRONG>        tee pointing down
+                           <STRONG>GH</STRONG>        horizontal line
+                           <STRONG>GV</STRONG>        vertical line
+                           <STRONG>GC</STRONG>        intersection
+                           <STRONG>G6</STRONG>        double upper left corner
+                           <STRONG>G7</STRONG>        double lower left corner
+                           <STRONG>G5</STRONG>        double upper right corner
+                           <STRONG>G8</STRONG>        double lower right corner
+                           <STRONG>Gr</STRONG>        double tee pointing right
+                           <STRONG>Gr</STRONG>        double tee pointing left
+                           <STRONG>Gu</STRONG>        double tee pointing up
+                           <STRONG>Gd</STRONG>        double tee pointing down
+                           <STRONG>Gh</STRONG>        double horizontal line
+                           <STRONG>Gv</STRONG>        double vertical line
+                           <STRONG>Gc</STRONG>        double intersection
+                           <STRONG>GG</STRONG>        ACS magic cookie count
+
+       <STRONG>captoinfo</STRONG> composes single-line capabilities into an  <STRONG>acsc</STRONG>  string,  and
+       discards <STRONG>GG</STRONG> and double-line capabilities with a warning diagnostic.
+
+       IBM's  AIX  has  a  <EM>terminfo</EM> facility descended from SVr1 <EM>terminfo</EM>, but
+       which is incompatible with the SVr4 format.  <STRONG>captoinfo</STRONG>  translates  the
+       following AIX extensions.
+
+                                     <STRONG>IBM</STRONG>    <STRONG>XSI</STRONG>
+                                    -------------
+                                    ksel    kslt
+                                    kbtab   kcbt
+                                    font0   s0ds
+                                    font1   s1ds
+                                    font2   s2ds
+                                    font3   s3ds
+
+       Additionally,  this  program  translates  the AIX <STRONG>box1</STRONG> capability to an
+       <STRONG>acsc</STRONG> string.
+
+       The  HP-UX  <EM>terminfo</EM>  library   supports   two   nonstandard   <EM>terminfo</EM>
+       capabilities,  <STRONG>meml</STRONG>  (memory lock) and <STRONG>memu</STRONG> (memory unlock).  <STRONG>captoinfo</STRONG>
+       discards these with a warning message.
 
 
 </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       /usr/share/terminfo Compiled terminal description database.
-
-
-</PRE><H2><a name="h2-TRANSLATIONS-FROM-NONSTANDARD-CAPABILITIES">TRANSLATIONS FROM NONSTANDARD CAPABILITIES</a></H2><PRE>
-       Some obsolete nonstandard capabilities will automatically be translated
-       into  standard  (SVr4/XSI  Curses)  terminfo capabilities by <STRONG>captoinfo</STRONG>.
-       Whenever one of these automatic translations is done, the program  will
-       issue an notification to stderr, inviting the user to check that it has
-       not mistakenly translated a completely unknown  and  random  capability
-       and/or syntax error.
-
-       Nonstd   Std    From           Terminfo
-        name    name                 capability
-       -----------------------------------------------
-       BO       mr     AT&amp;T    enter_reverse_mode
-       CI       vi     AT&amp;T    cursor_invisible
-       CV       ve     AT&amp;T    cursor_normal
-       DS       mh     AT&amp;T    enter_dim_mode
-       EE       me     AT&amp;T    exit_attribute_mode
-       FE       LF     AT&amp;T    label_on
-       FL       LO     AT&amp;T    label_off
-       XS       mk     AT&amp;T    enter_secure_mode
-       EN       @7     XENIX   key_end
-       GE       ae     XENIX   exit_alt_charset_mode
-       GS       as     XENIX   enter_alt_charset_mode
-       HM       kh     XENIX   key_home
-       LD       kL     XENIX   key_dl
-       PD       kN     XENIX   key_npage
-       PN       po     XENIX   prtr_off
-       PS       pf     XENIX   prtr_on
-       PU       kP     XENIX   key_ppage
-
-       RT       @8     XENIX   kent
-       UP       ku     XENIX   kcuu1
-       KA       k;     Tek     key_f10
-       KB       F1     Tek     key_f11
-       KC       F2     Tek     key_f12
-       KD       F3     Tek     key_f13
-       KE       F4     Tek     key_f14
-       KF       F5     Tek     key_f15
-       BC       Sb     Tek     set_background
-       FC       Sf     Tek     set_foreground
-       HS       mh     Iris    enter_dim_mode
-
-       XENIX  termcap  also  used  to have a set of extension capabilities for
-       forms drawing, designed to take  advantage  of  the  IBM  PC  high-half
-       graphics.  They were as follows:
-
-       Cap          Graphic
-       -----------------------------
-       G2    upper left
-       G3    lower left
-       G1    upper right
-       G4    lower right
-       GR    pointing right
-       GL    pointing left
-       GU    pointing up
-       GD    pointing down
-       GH    horizontal line
-       GV    vertical line
-       GC    intersection
-       G6    upper left
-       G7    lower left
-       G5    upper right
-       G8    lower right
-       Gr    tee pointing right
-       Gr    tee pointing left
-       Gu    tee pointing up
-       Gd    tee pointing down
-       Gh    horizontal line
-       Gv    vertical line
-       Gc    intersection
-       GG    acs magic cookie count
-
-       If   the   single-line  capabilities  occur  in  an  entry,  they  will
-       automatically  be  composed  into  an  <STRONG>acsc</STRONG>  string.   The  double-line
-       capabilities and <STRONG>GG</STRONG> are discarded with a warning message.
-
-       IBM's  AIX  has  a  terminfo  facility descended from SVr1 terminfo but
-       incompatible with the SVr4 format.  The following  AIX  extensions  are
-       automatically translated:
-
-        IBM    XSI
-       -------------
-       ksel    kslt
-       kbtab   kcbt
-       font0   s0ds
-       font1   s1ds
-       font2   s2ds
-       font3   s3ds
-
-       Additionally,  the AIX <EM>box1</EM> capability will be automatically translated
-       to an <STRONG>acsc</STRONG> string.
-
-       Hewlett-Packard's terminfo library supports  two  nonstandard  terminfo
-       capabilities  <STRONG>meml</STRONG>  (memory lock) and <STRONG>memu</STRONG> (memory unlock).  These will
-       be discarded with a warning message.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       This utility is actually a link to <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, running in  <EM>-I</EM>  mode.   You
-       can use other <STRONG>tic</STRONG> options such as <STRONG>-f</STRONG> and  <STRONG>-x</STRONG>.
-
-       The  verbose option is not identical to SVr4's.  Under SVr4, instead of
-       following the <STRONG>-v</STRONG> with a trace level n, you repeat it n times.
+       <EM>/etc/termcap</EM>
+              default <EM>termcap</EM> terminal capability database
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        X/Open Curses, Issue 7 (2009) describes <STRONG>tic</STRONG>  briefly,  but  omits  this
-       program.  SVr4 systems provide <STRONG>captoinfo</STRONG> as a separate application from
-       <STRONG>tic</STRONG>.
-
-       NetBSD does not provide this application.
+       program.
 
+       SVr4 systems provide <STRONG>captoinfo</STRONG> as a separate application from <STRONG>tic</STRONG>.  Its
+       <STRONG>-v</STRONG> option does not accept a trace level argument <EM>n</EM>; repeat <STRONG>-v</STRONG>  <EM>n</EM>  times
+       instead.
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
-
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
+       NetBSD does not provide this application.
 
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
        Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>
+ncurses 6.5                       2024-03-23                     <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
-<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Translations-from-Nonstandard-Capabilities">Translations from Nonstandard Capabilities</a></li>
+</ul>
+</li>
 <li><a href="#h2-FILES">FILES</a></li>
-<li><a href="#h2-TRANSLATIONS-FROM-NONSTANDARD-CAPABILITIES">TRANSLATIONS FROM NONSTANDARD CAPABILITIES</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index 74f5198bde393c3dbfdee047e3cb98ed1351e43f..e7da4da4f41d59be982dcb9197aab14b96aec09a 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: clear.1,v 1.27 2022/02/12 20:07:29 tom Exp @
-  * these would be fallbacks for DS/DE,
-  * but groff changed the meaning of the macros.
+  * @Id: clear.1,v 1.48 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>clear 1</TITLE>
+<TITLE>clear 1 2024-03-16 ncurses 6.5 User commands</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">clear 1</H1>
+<H1 class="no-header">clear 1 2024-03-16 ncurses 6.5 User commands</H1>
 <PRE>
-<STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>                    General Commands Manual                   <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>
+<STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>                         User commands                        <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>
 
 
 
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>clear</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] [<STRONG>-V</STRONG>] [<STRONG>-x</STRONG>]
+       <STRONG>clear</STRONG> [<STRONG>-x</STRONG>] [<STRONG>-T</STRONG> <EM>terminal-type</EM>]
+
+       <STRONG>clear</STRONG> <STRONG>-V</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       <STRONG>clear</STRONG>  clears your terminal's screen if this is possible, including the
-       terminal's scrollback  buffer  (if  the  extended  "E3"  capability  is
-       defined).   <STRONG>clear</STRONG>  looks in the environment for the terminal type given
-       by the environment variable <STRONG>TERM</STRONG>, and then in the <STRONG>terminfo</STRONG> database  to
-       determine how to clear the screen.
+       <STRONG>clear</STRONG>  clears your terminal's screen and its scrollback buffer, if any.
+       <STRONG>clear</STRONG> retrieves the terminal type from the environment  variable  <EM>TERM</EM>,
+       then  consults the <EM>terminfo</EM> terminal capability database entry for that
+       type to determine how to perform these actions.
 
-       <STRONG>clear</STRONG>  writes  to  the  standard output.  You can redirect the standard
-       output to a file (which  prevents  <STRONG>clear</STRONG>  from  actually  clearing  the
-       screen),  and  later  <STRONG>cat</STRONG>  the  file to the screen, clearing it at that
-       point.
+       The capabilities to clear the screen and scrollback  buffer  are  named
+       "clear"   and   "E3",  respectively.   The  latter  is  a  <EM>user-defined</EM>
+       <EM>capability</EM>, applying an extension mechanism introduced in  <EM>ncurses</EM>  5.0
+       (1999).
 
 
 </PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
-       <STRONG>-T</STRONG> <EM>type</EM>
-            indicates  the  <EM>type</EM>  of  terminal.   Normally  this   option   is
-            unnecessary,  because  the  default  is taken from the environment
-            variable <STRONG>TERM</STRONG>.  If <STRONG>-T</STRONG> is specified, then the shell variables <STRONG>LINES</STRONG>
-            and <STRONG>COLUMNS</STRONG> will also be ignored.
+       <STRONG>clear</STRONG> recognizes the following options.
+
+       <STRONG>-T</STRONG> <EM>type</EM>  produces   instructions   suitable   for  the  terminal  <EM>type</EM>.
+                Normally, this option is  unnecessary,  because  the  terminal
+                type  is inferred from the environment variable <EM>TERM</EM>.  If this
+                option is specified, <STRONG>clear</STRONG> ignores the  environment  variables
+                <EM>LINES</EM> and <EM>COLUMNS</EM> as well.
+
+       <STRONG>-V</STRONG>       reports  the  version  of <EM>ncurses</EM> associated with this program
+                and exits with a successful status.
 
-       <STRONG>-V</STRONG>   reports the version of ncurses which was used in this program, and
-            exits.  The options are as follows:
+       <STRONG>-x</STRONG>       prevents <STRONG>clear</STRONG> from attempting to clear the scrollback buffer.
 
-       <STRONG>-x</STRONG>   do not attempt to clear the terminal's scrollback buffer using the
-            extended "E3" capability.
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       Neither IEEE Std 1003.1/The Open  Group  Base  Specifications  Issue  7
+       (POSIX.1-2008) nor X/Open Curses Issue 7 documents <STRONG>clear</STRONG>.
+
+       The  latter documents <STRONG>tput</STRONG>, which could be used to replace this utility
+       either via a shell script or by an alias (such as a symbolic  link)  to
+       run <STRONG>tput</STRONG> as <STRONG>clear</STRONG>.
 
 
 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       A  <STRONG>clear</STRONG>  command  appeared  in 2.79BSD dated February 24, 1979.  Later
-       that was provided in Unix 8th edition (1985).
+       A <STRONG>clear</STRONG> command using the <EM>termcap</EM> database and library appeared in 2BSD
+       (1979).  Eighth Edition Unix (1985) later included it.
 
-       AT&amp;T adapted a different BSD program  (<STRONG>tset</STRONG>)  to  make  a  new  command
-       (<STRONG>tput</STRONG>),  and used this to replace the <STRONG>clear</STRONG> command with a shell script
-       which calls <STRONG>tput</STRONG> <STRONG>clear</STRONG>, e.g.,
+       The commercial Unix arm of AT&amp;T adapted a different BSD program  (<STRONG>tset</STRONG>)
+       to  make  a  new  command,  <STRONG>tput</STRONG>, and replaced the <STRONG>clear</STRONG> program with a
+       shell script that called "<STRONG>tput</STRONG> <STRONG>clear</STRONG>".
 
            /usr/bin/tput ${1:+-T$1} clear 2&gt; /dev/null
            exit
 
        In 1989, when Keith Bostic revised the BSD  <STRONG>tput</STRONG>  command  to  make  it
-       similar  to  the  AT&amp;T  <STRONG>tput</STRONG>,  he  added  a  shell script for the <STRONG>clear</STRONG>
-       command:
+       similar to AT&amp;T's <STRONG>tput</STRONG>, he added a <STRONG>clear</STRONG> shell script as well.
 
            exec tput clear
 
        The remainder of the script in each case is a copyright notice.
 
-       The ncurses <STRONG>clear</STRONG> command began in 1995 by adapting  the  original  BSD
-       <STRONG>clear</STRONG> command (with terminfo, of course).
-
-       The <STRONG>E3</STRONG> extension came later:
+       In 1995, <EM>ncurses</EM>'s <STRONG>clear</STRONG> began by adapting BSD's original <STRONG>clear</STRONG> command
+       to use <EM>terminfo</EM>.  The <STRONG>E3</STRONG> extension came later.
 
-       <STRONG>o</STRONG>   In  June  1999, <STRONG>xterm</STRONG> provided an extension to the standard control
-           sequence for clearing the screen.  Rather than  clearing  just  the
+       <STRONG>o</STRONG>   In June 1999, <EM>xterm</EM> provided an extension to the  standard  control
+           sequence  for  clearing  the screen.  Rather than clearing just the
            visible part of the screen using
 
                printf '\033[2J'
 
-           one could clear the <EM>scrollback</EM> using
+           one could clear the scrollback buffer as well by using
 
                printf '\033[<STRONG>3</STRONG>J'
 
-           This  is  documented  in  <EM>XTerm</EM>  <EM>Control</EM>  <EM>Sequences</EM>  as  a  feature
-           originating with <STRONG>xterm</STRONG>.
+           instead.  "XTerm  Control  Sequences"  documents  this  feature  as
+           originating with <EM>xterm</EM>.
 
-       <STRONG>o</STRONG>   A few other terminal developers adopted the feature, e.g., PuTTY in
-           2006.
+       <STRONG>o</STRONG>   A few other terminal emulators adopted it, such as PuTTY in 2006.
 
        <STRONG>o</STRONG>   In  April  2011, a Red Hat developer submitted a patch to the Linux
-           kernel, modifying its console driver to do  the  same  thing.   The
-           Linux  change,  part  of  the  3.0  release, did not mention <STRONG>xterm</STRONG>,
-           although it was cited in the Red Hat bug report (#683733) which led
-           to the change.
+           kernel,  modifying  its  console  driver  to  do  the  same  thing.
+           Documentation  of  this  change,  appearing  in  Linux 3.0, did not
+           mention <EM>xterm</EM>, although that program was cited in the Red  Hat  bug
+           report (#683733) motivating the feature.
 
-       <STRONG>o</STRONG>   Again,  a  few  other terminal developers adopted the feature.  But
-           the next relevant step was a change to the <STRONG>clear</STRONG> program in 2013 to
-           incorporate this extension.
+       <STRONG>o</STRONG>   Subsequently,  more  terminal  developers adopted the feature.  The
+           next relevant step was to change the <EM>ncurses</EM> <STRONG>clear</STRONG> program in  2013
+           to incorporate this extension.
 
-       <STRONG>o</STRONG>   In  2013,  the <STRONG>E3</STRONG> extension was overlooked in <STRONG>tput</STRONG> with the "clear"
-           parameter.  That was addressed in  2016  by  reorganizing  <STRONG>tput</STRONG>  to
-           share its logic with <STRONG>clear</STRONG> and <STRONG>tset</STRONG>.
-
-
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       Neither IEEE Std 1003.1/The Open  Group  Base  Specifications  Issue  7
-       (POSIX.1-2008) nor X/Open Curses Issue 7 documents tset or reset.
-
-       The latter documents <STRONG>tput</STRONG>, which could be used to replace this  utility
-       either  via  a shell script or by an alias (such as a symbolic link) to
-       run <STRONG>tput</STRONG> as <STRONG>clear</STRONG>.
+       <STRONG>o</STRONG>   In 2013, the <STRONG>E3</STRONG> capability was not exercised by "<STRONG>tput</STRONG> <STRONG>clear</STRONG>".  That
+           oversight was addressed in 2016 by reorganizing <STRONG>tput</STRONG> to  share  its
+           logic with <STRONG>clear</STRONG> and <STRONG>tset</STRONG>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG>xterm(1)</STRONG>.
-
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
+       <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG>xterm(1)</STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
-                                                                      <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>
+ncurses 6.5                       2024-03-16                          <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-OPTIONS">OPTIONS</a></li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 7a4ad423d7a12af1d78d7954fffa61759d14ef06..64c645d5ad022464fe8ca6b46cd448f04d758849 100644 (file)
@@ -1,6 +1,7 @@
 <!--
+  * t
   ****************************************************************************
-  * Copyright 2019-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2001-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_add_wch.3x,v 1.31 2021/12/25 21:37:49 tom Exp @
+  * @Id: curs_add_wch.3x,v 1.62 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_add_wch 3x</TITLE>
+<TITLE>curs_add_wch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_add_wch 3x</H1>
+<H1 class="no-header">curs_add_wch 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>                                              <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
+<STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>, <STRONG>echo_wchar</STRONG>, <STRONG>wecho_wchar</STRONG> - add
-       a complex character and rendition to a <STRONG>curses</STRONG> window, then advance  the
-       cursor
+       a <EM>curses</EM> complex character to a window and advance the cursor
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>add_wch(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wadd_wch(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvadd_wch(</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwadd_wch(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>add_wch(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wadd_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvadd_wch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwadd_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>echo_wchar(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wecho_wchar(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>echo_wchar(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wecho_wchar(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
 </PRE><H3><a name="h3-add_wch">add_wch</a></H3><PRE>
-       The  <STRONG>add_wch</STRONG>,  <STRONG>wadd_wch</STRONG>,  <STRONG>mvadd_wch</STRONG>,  and  <STRONG>mvwadd_wch</STRONG> functions put the
-       complex character <EM>wch</EM> into the given window at  its  current  position,
-       which  is then advanced.  These functions perform wrapping and special-
+       The <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>,  and  <STRONG>mvwadd_wch</STRONG>  functions  put  the
+       complex  character  <EM>wch</EM>  into the given window at its current position,
+       which is then advanced.  These functions perform wrapping and  special-
        character processing as follows:
 
-       <STRONG>o</STRONG>   If <EM>wch</EM> refers to a spacing character, then any  previous  character
-           at  that  location is removed.  A new character specified by <EM>wch</EM> is
-           placed at that location  with  rendition  specified  by  <EM>wch</EM>.   The
-           cursor then advances to the next spacing character on the screen.
+       <STRONG>o</STRONG>   If  <EM>wch</EM>  refers to a spacing character, then any previous character
+           at that location is removed.  A new character specified by  <EM>wch</EM>  is
+           placed  at  that  location  with  rendition  specified by <EM>wch</EM>.  The
+           cursor then advances after this spacing character, to  prepare  for
+           writing the next character on the screen.
 
-       <STRONG>o</STRONG>   If  <EM>wch</EM>  refers to a non-spacing character, all previous characters
-           at that location are preserved.  The non-spacing characters of  <EM>wch</EM>
-           are  added  to  the  spacing  complex  character, and the rendition
-           specified by <EM>wch</EM> is ignored.
+           The newly added spacing character is the base of the active complex
+           character.  Subsequent non-spacing characters can be combined  with
+           this base until another spacing character is written to the screen,
+           or the cursor is moved, e.g., using <STRONG>wmove</STRONG>.
+
+       <STRONG>o</STRONG>   If <EM>wch</EM> refers to a non-spacing character, it  is  appended  to  the
+           active complex character, retaining the previous characters at that
+           location.  The rendition specified by <EM>wch</EM> is ignored.
+
+           The cursor is not advanced after adding  a  non-spacing  character.
+           Subsequent calls to add non-spacing characters will update the same
+           position.
 
        <STRONG>o</STRONG>   If the character part of <EM>wch</EM> is a tab, newline, backspace or  other
            control character, the window is updated and the cursor moves as if
        lines  and  other  frequently  used  special characters.  These symbols
        correspond to the same VT100 line-drawing set as <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>.
 
-       <STRONG>ACS</STRONG>               <STRONG>Unicode</STRONG>    <STRONG>ASCII</STRONG>     <STRONG>acsc</STRONG>    <STRONG>Glyph</STRONG>
-       <STRONG>Name</STRONG>              <STRONG>Default</STRONG>    <STRONG>Default</STRONG>   <STRONG>char</STRONG>    <STRONG>Name</STRONG>
+                       <STRONG>Unicode</STRONG>   <STRONG>ASCII</STRONG>     <STRONG>acsc</STRONG>
+
+
+       <STRONG>ACS</STRONG> <STRONG>Name</STRONG>        <STRONG>Default</STRONG>   <STRONG>Default</STRONG>   <STRONG>Char</STRONG>   <STRONG>Glyph</STRONG> <STRONG>Name</STRONG>
        ------------------------------------------------------------------------
-       WACS_BLOCK        0x25ae     #         0       solid square block
-       WACS_BOARD        0x2592     #         h       board of squares
-       WACS_BTEE         0x2534     +         v       bottom tee
-       WACS_BULLET       0x00b7     o         ~       bullet
-       WACS_CKBOARD      0x2592     :         a       checker board (stipple)
-       WACS_DARROW       0x2193     v         .       arrow pointing down
-       WACS_DEGREE       0x00b0     '         f       degree symbol
-
-       WACS_DIAMOND      0x25c6     +         `       diamond
-       WACS_GEQUAL       0x2265     &gt;         &gt;       greater-than-or-equal-to
-       WACS_HLINE        0x2500     -         q       horizontal line
-       WACS_LANTERN      0x2603     #         i       lantern symbol
-       WACS_LARROW       0x2190     &lt;         ,       arrow pointing left
-       WACS_LEQUAL       0x2264     &lt;         y       less-than-or-equal-to
-       WACS_LLCORNER     0x2514     +         m       lower left-hand corner
-       WACS_LRCORNER     0x2518     +         j       lower right-hand corner
-       WACS_LTEE         0x2524     +         t       left tee
-       WACS_NEQUAL       0x2260     !         |       not-equal
-       WACS_PI           0x03c0     *         {       greek pi
-       WACS_PLMINUS      0x00b1     #         g       plus/minus
-       WACS_PLUS         0x253c     +         n       plus
-       WACS_RARROW       0x2192     &gt;         +       arrow pointing right
-       WACS_RTEE         0x251c     +         u       right tee
-       WACS_S1           0x23ba     -         o       scan line 1
-       WACS_S3           0x23bb     -         p       scan line 3
-       WACS_S7           0x23bc     -         r       scan line 7
-       WACS_S9           0x23bd     _         s       scan line 9
-       WACS_STERLING     0x00a3     f         }       pound-sterling symbol
-       WACS_TTEE         0x252c     +         w       top tee
-       WACS_UARROW       0x2191     ^         -       arrow pointing up
-       WACS_ULCORNER     0x250c     +         l       upper left-hand corner
-       WACS_URCORNER     0x2510     +         k       upper right-hand corner
-       WACS_VLINE        0x2502     |         x       vertical line
-
-       The wide-character configuration of ncurses also  defines  symbols  for
+       <STRONG>WACS_BLOCK</STRONG>      0x25ae    #         0      solid square block
+       <STRONG>WACS_BOARD</STRONG>      0x2592    #         h      board of squares
+       <STRONG>WACS_BTEE</STRONG>       0x2534    +         v      bottom tee
+       <STRONG>WACS_BULLET</STRONG>     0x00b7    o         ~      bullet
+       <STRONG>WACS_CKBOARD</STRONG>    0x2592    :         a      checker board (stipple)
+       <STRONG>WACS_DARROW</STRONG>     0x2193    v         .      arrow pointing down
+       <STRONG>WACS_DEGREE</STRONG>     0x00b0    '         f      degree symbol
+       <STRONG>WACS_DIAMOND</STRONG>    0x25c6    +         `      diamond
+       <STRONG>WACS_GEQUAL</STRONG>     0x2265    &gt;         &gt;      greater-than-or-equal-to
+       <STRONG>WACS_HLINE</STRONG>      0x2500    -         q      horizontal line
+       <STRONG>WACS_LANTERN</STRONG>    0x2603    #         i      lantern symbol
+       <STRONG>WACS_LARROW</STRONG>     0x2190    &lt;         ,      arrow pointing left
+       <STRONG>WACS_LEQUAL</STRONG>     0x2264    &lt;         y      less-than-or-equal-to
+       <STRONG>WACS_LLCORNER</STRONG>   0x2514    +         m      lower left-hand corner
+       <STRONG>WACS_LRCORNER</STRONG>   0x2518    +         j      lower right-hand corner
+       <STRONG>WACS_LTEE</STRONG>       0x2524    +         t      left tee
+       <STRONG>WACS_NEQUAL</STRONG>     0x2260    !         |      not-equal
+       <STRONG>WACS_PI</STRONG>         0x03c0    *         {      greek pi
+       <STRONG>WACS_PLMINUS</STRONG>    0x00b1    #         g      plus/minus
+       <STRONG>WACS_PLUS</STRONG>       0x253c    +         n      plus
+       <STRONG>WACS_RARROW</STRONG>     0x2192    &gt;         +      arrow pointing right
+       <STRONG>WACS_RTEE</STRONG>       0x251c    +         u      right tee
+       <STRONG>WACS_S1</STRONG>         0x23ba    -         o      scan line 1
+       <STRONG>WACS_S3</STRONG>         0x23bb    -         p      scan line 3
+       <STRONG>WACS_S7</STRONG>         0x23bc    -         r      scan line 7
+       <STRONG>WACS_S9</STRONG>         0x23bd    _         s      scan line 9
+       <STRONG>WACS_STERLING</STRONG>   0x00a3    f         }      pound-sterling symbol
+       <STRONG>WACS_TTEE</STRONG>       0x252c    +         w      top tee
+       <STRONG>WACS_UARROW</STRONG>     0x2191    ^         -      arrow pointing up
+       <STRONG>WACS_ULCORNER</STRONG>   0x250c    +         l      upper left-hand corner
+       <STRONG>WACS_URCORNER</STRONG>   0x2510    +         k      upper right-hand corner
+       <STRONG>WACS_VLINE</STRONG>      0x2502    |         x      vertical line
+
+       The wide-character configuration of <EM>ncurses</EM> also  defines  symbols  for
        thick lines (<STRONG>acsc</STRONG> "J" to "V"):
 
-       <STRONG>ACS</STRONG>               <STRONG>Unicode</STRONG>   <STRONG>ASCII</STRONG>     <STRONG>acsc</STRONG>    <STRONG>Glyph</STRONG>
-       <STRONG>Name</STRONG>              <STRONG>Default</STRONG>   <STRONG>Default</STRONG>   <STRONG>char</STRONG>    <STRONG>Name</STRONG>
-       -----------------------------------------------------------------------
-       WACS_T_BTEE       0x253b    +         V       thick tee pointing up
-       WACS_T_HLINE      0x2501    -         Q       thick horizontal line
-       WACS_T_LLCORNER   0x2517    +         M       thick lower left corner
-       WACS_T_LRCORNER   0x251b    +         J       thick lower right corner
-       WACS_T_LTEE       0x252b    +         T       thick tee pointing right
-       WACS_T_PLUS       0x254b    +         N       thick large plus
-       WACS_T_RTEE       0x2523    +         U       thick tee pointing left
-       WACS_T_TTEE       0x2533    +         W       thick tee pointing down
-       WACS_T_ULCORNER   0x250f    +         L       thick upper left corner
-       WACS_T_URCORNER   0x2513    +         K       thick upper right corner
-       WACS_T_VLINE      0x2503    |         X       thick vertical line
+                         <STRONG>Unicode</STRONG>   <STRONG>ASCII</STRONG>     <STRONG>acsc</STRONG>
+       <STRONG>ACS</STRONG> <STRONG>Name</STRONG>          <STRONG>Default</STRONG>   <STRONG>Default</STRONG>   <STRONG>Char</STRONG>   <STRONG>Glyph</STRONG> <STRONG>Name</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>WACS_T_BTEE</STRONG>       0x253b    +         V      thick tee pointing up
+       <STRONG>WACS_T_HLINE</STRONG>      0x2501    -         Q      thick horizontal line
+       <STRONG>WACS_T_LLCORNER</STRONG>   0x2517    +         M      thick lower left corner
+       <STRONG>WACS_T_LRCORNER</STRONG>   0x251b    +         J      thick lower right corner
+       <STRONG>WACS_T_LTEE</STRONG>       0x252b    +         T      thick tee pointing right
+       <STRONG>WACS_T_PLUS</STRONG>       0x254b    +         N      thick large plus
+       <STRONG>WACS_T_RTEE</STRONG>       0x2523    +         U      thick tee pointing left
+       <STRONG>WACS_T_TTEE</STRONG>       0x2533    +         W      thick tee pointing down
+       <STRONG>WACS_T_ULCORNER</STRONG>   0x250f    +         L      thick upper left corner
+       <STRONG>WACS_T_URCORNER</STRONG>   0x2513    +         K      thick upper right corner
+       <STRONG>WACS_T_VLINE</STRONG>      0x2503    |         X      thick vertical line
 
        and for double-lines (<STRONG>acsc</STRONG> "A" to "I"):
 
-       <STRONG>ACS</STRONG>               <STRONG>Unicode</STRONG>   <STRONG>ASCII</STRONG>     <STRONG>acsc</STRONG>    <STRONG>Glyph</STRONG>
-       <STRONG>Name</STRONG>              <STRONG>Default</STRONG>   <STRONG>Default</STRONG>   <STRONG>char</STRONG>    <STRONG>Name</STRONG>
+                         <STRONG>Unicode</STRONG>   <STRONG>ASCII</STRONG>     <STRONG>acsc</STRONG>
+       <STRONG>ACS</STRONG> <STRONG>Name</STRONG>          <STRONG>Default</STRONG>   <STRONG>Default</STRONG>   <STRONG>Char</STRONG>   <STRONG>Glyph</STRONG> <STRONG>Name</STRONG>
        ------------------------------------------------------------------------
-       WACS_D_BTEE       0x2569    +         H       double tee pointing up
-       WACS_D_HLINE      0x2550    -         R       double horizontal line
-       WACS_D_LLCORNER   0x255a    +         D       double lower left corner
-       WACS_D_LRCORNER   0x255d    +         A       double lower right corner
-       WACS_D_LTEE       0x2560    +         F       double tee pointing right
-       WACS_D_PLUS       0x256c    +         E       double large plus
-       WACS_D_RTEE       0x2563    +         G       double tee pointing left
-       WACS_D_TTEE       0x2566    +         I       double tee pointing down
-       WACS_D_ULCORNER   0x2554    +         C       double upper left corner
-       WACS_D_URCORNER   0x2557    +         B       double upper right corner
-       WACS_D_VLINE      0x2551    |         Y       double vertical line
+       <STRONG>WACS_D_BTEE</STRONG>       0x2569    +         H      double tee pointing up
+       <STRONG>WACS_D_HLINE</STRONG>      0x2550    -         R      double horizontal line
+       <STRONG>WACS_D_LLCORNER</STRONG>   0x255a    +         D      double lower left corner
+       <STRONG>WACS_D_LRCORNER</STRONG>   0x255d    +         A      double lower right corner
+       <STRONG>WACS_D_LTEE</STRONG>       0x2560    +         F      double tee pointing right
+       <STRONG>WACS_D_PLUS</STRONG>       0x256c    +         E      double large plus
+       <STRONG>WACS_D_RTEE</STRONG>       0x2563    +         G      double tee pointing left
+
+       <STRONG>WACS_D_TTEE</STRONG>       0x2566    +         I      double tee pointing down
+       <STRONG>WACS_D_ULCORNER</STRONG>   0x2554    +         C      double upper left corner
+       <STRONG>WACS_D_URCORNER</STRONG>   0x2557    +         B      double upper right corner
+       <STRONG>WACS_D_VLINE</STRONG>      0x2551    |         Y      double vertical line
 
        Unicode's  descriptions  for  these  characters  differs  slightly from
-       ncurses, by introducing the term "light"  (along  with  less  important
+       <EM>ncurses</EM>, by introducing the term "light"  (along  with  less  important
        details).   Here are its descriptions for the normal, thick, and double
        horizontal lines:
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
 
-       X/Open does not  define  any  error  conditions.   This  implementation
-       returns an error
+       X/Open  Curses  does  not   specify   any   error   conditions.    This
+       implementation returns an error
 
        <STRONG>o</STRONG>   if the window pointer is null or
 
 
        The latter may be due to different causes:
 
-       <STRONG>o</STRONG>   If  <STRONG>scrollok</STRONG> is not enabled, writing a character at the lower right
-           margin succeeds.  However, an error is returned because it  is  not
-           possible to wrap to a new line
+       <STRONG>o</STRONG>   If  <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG>  is  not enabled, writing a character at the lower
+           right margin succeeds.  However, an error is returned because it is
+           not possible to wrap to a new line.
 
        <STRONG>o</STRONG>   If  an error is detected when converting a multibyte character to a
            sequence of bytes, or if it is not  possible  to  add  all  of  the
            resulting bytes in the window, an error is returned.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       All  of these functions are described in the XSI Curses standard, Issue
-       4.  The defaults specified for line-drawing  characters  apply  in  the
-       POSIX locale.
+       These functions are described in X/Open Curses, Issue 4.  The  defaults
+       specified for line-drawing characters apply in the POSIX locale.
 
+
+</PRE><H3><a name="h3-WACS-Symbols">WACS Symbols</a></H3><PRE>
        X/Open  Curses  makes it clear that the WACS_ symbols should be defined
        as a pointer to <STRONG>cchar_t</STRONG> data, e.g., in the discussion of <STRONG>border_set</STRONG>.  A
        few implementations are problematic:
 
        <STRONG>o</STRONG>   NetBSD curses defines the symbols as a <STRONG>wchar_t</STRONG> within a <STRONG>cchar_t</STRONG>.
 
-       <STRONG>o</STRONG>   HPUX curses equates some of the <STRONG>ACS_</STRONG> symbols to the analogous <STRONG>WACS_</STRONG>
-           symbols  as  if  the  <STRONG>ACS_</STRONG>  symbols  were  wide  characters.    The
+       <STRONG>o</STRONG>   HP-UX  curses  equates  some  of  the <STRONG>ACS_</STRONG> symbols to the analogous
+           <STRONG>WACS_</STRONG> symbols as if the <STRONG>ACS_</STRONG> symbols  were  wide  characters.   The
            misdefined  symbols  are the arrows and other symbols which are not
            used for line-drawing.
 
-       X/Open Curses does not define symbols for thick- or double-lines.  SVr4
-       curses  implementations  defined their line-drawing symbols in terms of
-       intermediate  symbols.   This  implementation  extends  those  symbols,
+       X/Open Curses does not specify  symbols  for  thick-  or  double-lines.
+       SVr4 curses implementations defined their line-drawing symbols in terms
+       of intermediate symbols.  This implementation  extends  those  symbols,
        providing new definitions which are not in the SVr4 implementations.
 
        Not  all  Unicode-capable  terminals  provide  support  for VT100-style
        alternate character  sets  (i.e.,  the  <STRONG>acsc</STRONG>  capability),  with  their
        corresponding  line-drawing  characters.  X/Open Curses did not address
        the  aspect  of  integrating  Unicode  with  line-drawing   characters.
-       Existing  implementations  of Unix curses (AIX, HPUX, Solaris) use only
+       Existing  implementations of Unix curses (AIX, HP-UX, Solaris) use only
        the <STRONG>acsc</STRONG> character-mapping to provide this feature.  As a result, those
        implementations  can  only  use  single-byte  line-drawing  characters.
-       Ncurses 5.3 (2002) provided a table of Unicode values  to  solve  these
+       <EM>ncurses</EM> 5.3 (2002) provided a table of Unicode values  to  solve  these
        problems.  NetBSD curses incorporated that table in 2010.
 
        In  this  implementation,  the  Unicode  values are used instead of the
        terminal description's <STRONG>acsc</STRONG> mapping as discussed in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> for the
-       environment  variable  <STRONG>NCURSES_NO_UTF8_ACS</STRONG>.   In contrast, for the same
-       cases, the line-drawing characters described in <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> will use
-       only the ASCII default values.
+       environment  variable  <EM>NCURSES</EM><STRONG>_</STRONG><EM>NO</EM><STRONG>_</STRONG><EM>UTF8</EM><STRONG>_</STRONG><EM>ACS</EM>.   In contrast, for the same
+       cases, the line-drawing characters described in <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG> will use only
+       the ASCII default values.
 
        Having  Unicode available does not solve all of the problems with line-
        drawing for curses:
            and horizontal), and  U+2612 (ballot box with x).
 
 
+</PRE><H3><a name="h3-Complex-Characters">Complex Characters</a></H3><PRE>
+       The complex character  type  <STRONG>cchar_t</STRONG>  can  store  more  than  one  wide
+       character  (<STRONG>wchar_t</STRONG>).   The  X/Open Curses description does not mention
+       this possibility, describing only the cases  where  <EM>wch</EM>  is  a  spacing
+       character or a non-spacing character.
+
+       This implementation assumes that <EM>wch</EM> is constructed using <STRONG><A HREF="curs_getcchar.3x.html">setcchar(3x)</A></STRONG>,
+       and in turn that the result
+
+       <STRONG>o</STRONG>   contains at most one spacing character in the beginning of its list
+           of wide characters, and zero or more non-spacing characters or
+
+       <STRONG>o</STRONG>   may hold one non-spacing character.
+
+       In  the  latter  case,  <EM>ncurses</EM>  adds  the non-spacing character to the
+       active (base) spacing character.
+
+
+</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
+       The <STRONG>TABSIZE</STRONG> variable is implemented  in  SVr4  and  other  versions  of
+       <EM>curses</EM>, but is not specified by X/Open Curses (see <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>).
+
+
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG>putwc(3)</STRONG>
+       <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM> library in
+       its non-wide-character configuration.
 
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>,   <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>,   <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>,  <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>putwc(3)</STRONG>
 
 
-                                                              <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
+
+ncurses 6.5                       2024-04-20                  <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
-<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-WACS-Symbols">WACS Symbols</a></li>
+<li><a href="#h3-Complex-Characters">Complex Characters</a></li>
+<li><a href="#h3-TABSIZE">TABSIZE</a></li>
+</ul>
+</li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 5e93f68ffaa84ad7a68562d555416061851a0e25..f554061d849d037fe0e17e49cef2682f0da1e0a2 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_add_wchstr.3x,v 1.19 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_add_wchstr.3x,v 1.39 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_add_wchstr 3x</TITLE>
+<TITLE>curs_add_wchstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_add_wchstr 3x</H1>
+<H1 class="no-header">curs_add_wchstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>                                        <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>              Library calls             <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>add_wchstr</STRONG>, <STRONG>add_wchnstr</STRONG>, <STRONG>wadd_wchstr</STRONG>, <STRONG>wadd_wchnstr</STRONG>, <STRONG>mvadd_wchstr</STRONG>,
-       <STRONG>mvadd_wchnstr</STRONG>, <STRONG>mvwadd_wchstr</STRONG>, <STRONG>mvwadd_wchnstr</STRONG> - add an array of complex
-       characters (and attributes) to a curses window
+       <STRONG>add_wchstr</STRONG>,   <STRONG>add_wchnstr</STRONG>,   <STRONG>wadd_wchstr</STRONG>,  <STRONG>wadd_wchnstr</STRONG>,  <STRONG>mvadd_wchstr</STRONG>,
+       <STRONG>mvadd_wchnstr</STRONG>, <STRONG>mvwadd_wchstr</STRONG>, <STRONG>mvwadd_wchnstr</STRONG> -  add  a  <EM>curses</EM>  complex
+       character string to a window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>add_wchstr(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>add_wchnstr(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wadd_wchstr(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wadd_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-
        <STRONG>int</STRONG> <STRONG>mvadd_wchstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvadd_wchnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwadd_wchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
+
+       <STRONG>int</STRONG> <STRONG>add_wchnstr(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wadd_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvadd_wchnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwadd_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These  functions copy the (null-terminated) array of complex characters
        <EM>wchstr</EM> into the window image structure starting at the  current  cursor
-       position.   The four functions with <EM>n</EM> as the last argument copy at most
-       <EM>n</EM> elements, but no more than will fit on the line.  If  <STRONG>n</STRONG>=<STRONG>-1</STRONG>  then  the
-       whole  array  is  copied, to the maximum number of characters that will
-       fit on the line.
+       position.
+
+       The four functions with <EM>n</EM> as the last argument copy at most <EM>n</EM> elements,
+       but no more than will fit on the line.  If <STRONG>n</STRONG>=<STRONG>-1</STRONG> then the whole array is
+       copied, to the maximum number of characters that will fit on the line.
 
-       The window cursor is <EM>not</EM> advanced.  These functions  work  faster  than
+       The  window  cursor  is  <EM>not</EM> advanced.  These functions are faster than
        <STRONG>waddnstr</STRONG>.  On the other hand:
 
-       <STRONG>o</STRONG>   they  do  not perform checking (such as for the newline, backspace,
+       <STRONG>o</STRONG>   they do not perform checking (such as for the  newline,  backspace,
            or carriage return characters),
 
        <STRONG>o</STRONG>   they do not advance the current cursor position,
 
        <STRONG>o</STRONG>   they do not expand other control characters to ^-escapes, and
 
-       <STRONG>o</STRONG>   they truncate the string if it crosses  the  right  margin,  rather
+       <STRONG>o</STRONG>   they  truncate  the  string  if it crosses the right margin, rather
            than wrapping it around to the new line.
 
-       These  functions  end  successfully  on encountering a null <STRONG>cchar_t</STRONG>, or
-       when they have filled the current line.  If a complex character  cannot
-       completely  fit  at  the end of the current line, the remaining columns
+       These functions end successfully on encountering  a  null  <STRONG>cchar_t</STRONG>,  or
+       when  they have filled the current line.  If a complex character cannot
+       completely fit at the end of the current line,  the  remaining  columns
        are filled with the background character and rendition.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
 
-       X/Open does not define any error conditions.  This  implementation  re-
-       turns an error if the window pointer is null.
+       X/Open   Curses   does   not   specify   any  error  conditions.   This
+       implementation returns an error
+
+       <STRONG>o</STRONG>   if the <EM>win</EM> parameter is null or
+
+       <STRONG>o</STRONG>   if the <EM>wchstr</EM> parameter is null.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These entry points are described in the XSI Curses standard, Issue 4.
+       These functions are described in X/Open Curses, Issue 4.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM> library
+       in its non-wide-character configuration.
 
-       Comparable  functions in the narrow-character (ncurses) library are de-
-       scribed in <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
 
 
 
-                                                           <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20               <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 92f2c757f4c91d808c1b3826279b6ebaddf9cfa2..0a0622e39af3697f505e199c916f7cbcd56b3c7b 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_addch.3x,v 1.59 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_addch.3x,v 1.85 2024/04/20 19:03:47 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_addch 3x</TITLE>
+<TITLE>curs_addch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_addch 3x</H1>
+<H1 class="no-header">curs_addch 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
+<STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>addch</STRONG>, <STRONG>waddch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, <STRONG>echochar</STRONG>, <STRONG>wechochar</STRONG> - add a character
-       (with attributes) to a <STRONG>curses</STRONG> window, then advance the cursor
+       <STRONG>addch</STRONG>,  <STRONG>waddch</STRONG>,  <STRONG>mvaddch</STRONG>,  <STRONG>mvwaddch</STRONG>, <STRONG>echochar</STRONG>, <STRONG>wechochar</STRONG> - add a <EM>curses</EM>
+       character to a window and advance the cursor
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
-</PRE><H3><a name="h3-Adding-characters">Adding characters</a></H3><PRE>
-       The <STRONG>addch</STRONG>, <STRONG>waddch</STRONG>, <STRONG>mvaddch</STRONG> and <STRONG>mvwaddch</STRONG> routines put the  character  <EM>ch</EM>
-       into  the  given  window  at its current window position, which is then
-       advanced.  They are  analogous  to  <STRONG>putchar(3)</STRONG>  in  <STRONG>stdio(3)</STRONG>.   If  the
-       advance is at the right margin:
+</PRE><H3><a name="h3-Adding-Characters">Adding Characters</a></H3><PRE>
+       <STRONG>waddch</STRONG> puts the character <EM>ch</EM> at the cursor position of window <EM>win</EM>, then
+       advances  the  cursor position, analogously to the standard C library's
+       <STRONG>putchar(3)</STRONG>.  <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> describes the variants of this function.
 
-       <STRONG>o</STRONG>   The cursor automatically wraps to the beginning of the next line.
+       If advancement occurs at the right margin,
 
-       <STRONG>o</STRONG>   At  the  bottom of the current scrolling region, and if <STRONG>scrollok</STRONG> is
-           enabled, the scrolling region is scrolled up one line.
+       <STRONG>o</STRONG>   the cursor automatically wraps to the beginning of the  next  line;
+           and
 
-       <STRONG>o</STRONG>   If <STRONG>scrollok</STRONG> is not enabled, writing a character at the lower  right
-           margin  succeeds.   However, an error is returned because it is not
-           possible to wrap to a new line
+       <STRONG>o</STRONG>   at  the bottom of the current scrolling region, and if <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG>
+           is enabled for <EM>win</EM>, the scrolling region scrolls up one line.
 
-       If <EM>ch</EM> is a tab, newline, carriage return or backspace,  the  cursor  is
-       moved appropriately within the window:
+       If <EM>ch</EM> is a backspace, carriage return, line feed, or  tab,  the  cursor
+       moves appropriately within the window.
 
-       <STRONG>o</STRONG>   Backspace  moves the cursor one character left; at the left edge of
-           a window it does nothing.
+       <STRONG>o</STRONG>   Backspace  moves  the cursor one character left; at the left margin
+           of a window, it does nothing.
 
-       <STRONG>o</STRONG>   Carriage return moves the cursor to the window left margin  on  the
-           current line.
+       <STRONG>o</STRONG>   Carriage return moves the cursor to the left margin on the  current
+           line of the window.
 
-       <STRONG>o</STRONG>   Newline  does  a <STRONG>clrtoeol</STRONG>, then moves the cursor to the window left
-           margin on the next line, scrolling the window if on the last line.
+       <STRONG>o</STRONG>   Line  feed  does  a <STRONG><A HREF="curs_clear.3x.html">clrtoeol(3x)</A></STRONG>, then moves the cursor to the left
+           margin on the next line of  the  window,  and  if  <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG>  is
+           enabled  for  <EM>win</EM>,  scrolls the window if the cursor was already on
+           the last line.
 
-       <STRONG>o</STRONG>   Tabs are considered to be at every eighth column.  The tab interval
-           may be altered by setting the <STRONG>TABSIZE</STRONG> variable.
+       <STRONG>o</STRONG>   Tab advances the cursor to the next tab stop (possibly on the  next
+           line);  these  are placed at every eighth column by default.  Alter
+           the   tab   interval    with    the    <STRONG>TABSIZE</STRONG>    extension;    see
+           <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
 
        If  <EM>ch</EM>  is  any  other nonprintable character, it is drawn in printable
-       form, i.e., the <STRONG>^</STRONG><EM>X</EM> notation used by <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>.   Calling  <STRONG>winch</STRONG>  after
-       adding  a  nonprintable character does not return the character itself,
-       but instead returns the printable representation of the character.
-
-       Video attributes can be combined with a character  argument  passed  to
-       <STRONG>addch</STRONG>  or  related  functions by logical-ORing them into the character.
-       (Thus, text, including attributes, can be  copied  from  one  place  to
-       another  using  <STRONG><A HREF="curs_inch.3x.html">inch(3x)</A></STRONG>  and  <STRONG>addch</STRONG>.)   See the <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> page for
-       values of predefined video attribute constants  that  can  be  usefully
-       OR'ed into characters.
-
-
-</PRE><H3><a name="h3-Echoing-characters">Echoing characters</a></H3><PRE>
-       The  <STRONG>echochar</STRONG>  and <STRONG>wechochar</STRONG> routines are equivalent to a call to <STRONG>addch</STRONG>
-       followed by a call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>, or a call to <STRONG>waddch</STRONG>  followed  by  a
-       call  to <STRONG>wrefresh</STRONG>.  The knowledge that only a single character is being
-       output  is  used  and,  for  non-control  characters,  a   considerable
-       performance  gain  may be seen by using these routines instead of their
-       equivalents.
-
-
-</PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE>
-       The following variables may be used to add line drawing  characters  to
-       the  screen  with  routines of the <STRONG>addch</STRONG> family.  The default character
-       listed below is used if the <STRONG>acsc</STRONG> capability does not define a terminal-
-       specific   replacement   for   it,   or  if  the  terminal  and  locale
-       configuration requires  Unicode  but  the  library  is  unable  to  use
-       Unicode.
-
-       The names are taken from VT100 nomenclature.
-
-       <STRONG>ACS</STRONG>            <STRONG>ACS</STRONG>       <STRONG>acsc</STRONG>   <STRONG>Glyph</STRONG>
-       <STRONG>Name</STRONG>           <STRONG>Default</STRONG>   <STRONG>char</STRONG>   <STRONG>Name</STRONG>
-       ---------------------------------------------------------
-       ACS_BLOCK      #         0      solid square block
-       ACS_BOARD      #         h      board of squares
-       ACS_BTEE       +         v      bottom tee
-       ACS_BULLET     o         ~      bullet
-       ACS_CKBOARD    :         a      checker board (stipple)
-       ACS_DARROW     v         .      arrow pointing down
-       ACS_DEGREE     '         f      degree symbol
-       ACS_DIAMOND    +         `      diamond
-       ACS_GEQUAL     &gt;         &gt;      greater-than-or-equal-to
-       ACS_HLINE      -         q      horizontal line
-       ACS_LANTERN    #         i      lantern symbol
-       ACS_LARROW     &lt;         ,      arrow pointing left
-       ACS_LEQUAL     &lt;         y      less-than-or-equal-to
-       ACS_LLCORNER   +         m      lower left-hand corner
-       ACS_LRCORNER   +         j      lower right-hand corner
-       ACS_LTEE       +         t      left tee
-       ACS_NEQUAL     !         |      not-equal
-       ACS_PI         *         {      greek pi
-       ACS_PLMINUS    #         g      plus/minus
-       ACS_PLUS       +         n      plus
-       ACS_RARROW     &gt;         +      arrow pointing right
-       ACS_RTEE       +         u      right tee
-       ACS_S1         -         o      scan line 1
-       ACS_S3         -         p      scan line 3
-       ACS_S7         -         r      scan line 7
-       ACS_S9         _         s      scan line 9
-       ACS_STERLING   f         }      pound-sterling symbol
-       ACS_TTEE       +         w      top tee
-       ACS_UARROW     ^         -      arrow pointing up
-       ACS_ULCORNER   +         l      upper left-hand corner
-       ACS_URCORNER   +         k      upper right-hand corner
-       ACS_VLINE      |         x      vertical line
+       form, using the same convention as <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>.
+
+       Calling <STRONG><A HREF="curs_inch.3x.html">winch(3x)</A></STRONG> on the location of a nonprintable character does  not
+       return the character itself, but its <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG> representation.
+
+       <EM>ch</EM>  may  contain  rendering  and/or color attributes, and others can be
+       combined with the parameter by logically "or"ing with it.  (A character
+       with  its  attributes can be copied from place to place using <STRONG><A HREF="curs_inch.3x.html">winch(3x)</A></STRONG>
+       and  <STRONG>waddch</STRONG>.)   See  <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>  for  values  of  predefined   video
+       attribute constants that can be usefully "or"ed with characters.
+
+
+</PRE><H3><a name="h3-Echoing-Characters">Echoing Characters</a></H3><PRE>
+       <STRONG>echochar</STRONG>  and  <STRONG>wechochar</STRONG> are equivalent to calling (<STRONG>w</STRONG>)<STRONG>addch</STRONG> followed by
+       (<STRONG>w</STRONG>)<STRONG>refresh</STRONG>.  <EM>curses</EM> interprets these functions as a hint  that  only  a
+       single  character  is  being  output;  for  non-control  characters,  a
+       considerable performance gain may be enjoyed by employing them.
+
+
+</PRE><H3><a name="h3-Forms-Drawing-Characters">Forms-Drawing Characters</a></H3><PRE>
+       <EM>curses</EM> defines macros starting with <STRONG>ACS_</STRONG> that can be used  with  <STRONG>waddch</STRONG>
+       to  write  line-drawing  and  other  special  characters to the screen.
+       <EM>ncurses</EM> terms these <EM>forms-drawing</EM> <EM>characters.</EM>  The ACS  default  listed
+       below  is  used  if  the  <STRONG>acs_chars</STRONG> (<STRONG>acsc</STRONG>) <EM>terminfo</EM> capability does not
+       define a terminal-specific replacement for it, or if the  terminal  and
+       locale  configuration  requires  Unicode to access these characters but
+       the  library  is  unable  to  use  Unicode.   The  "acsc  char"  column
+       corresponds to how the characters are specified in the <STRONG>acs_chars</STRONG> string
+       capability, and the characters in it may appear on the  screen  if  the
+       terminal's database entry incorrectly advertises ACS support.  The name
+       "ACS" originates in the Alternate Character  Set  feature  of  the  DEC
+       VT100 terminal.
+
+                      <STRONG>ACS</STRONG>       <STRONG>acsc</STRONG>
+       <STRONG>Symbol</STRONG>         <STRONG>Default</STRONG>   <STRONG>char</STRONG>   <STRONG>Glyph</STRONG> <STRONG>Name</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>ACS_BLOCK</STRONG>      #         0      solid square block
+       <STRONG>ACS_BOARD</STRONG>      #         h      board of squares
+       <STRONG>ACS_BTEE</STRONG>       +         v      bottom tee
+       <STRONG>ACS_BULLET</STRONG>     o         ~      bullet
+       <STRONG>ACS_CKBOARD</STRONG>    :         a      checker board (stipple)
+       <STRONG>ACS_DARROW</STRONG>     v         .      arrow pointing down
+       <STRONG>ACS_DEGREE</STRONG>     '         f      degree symbol
+       <STRONG>ACS_DIAMOND</STRONG>    +         `      diamond
+       <STRONG>ACS_GEQUAL</STRONG>     &gt;         &gt;      greater-than-or-equal-to
+       <STRONG>ACS_HLINE</STRONG>      -         q      horizontal line
+       <STRONG>ACS_LANTERN</STRONG>    #         i      lantern symbol
+       <STRONG>ACS_LARROW</STRONG>     &lt;         ,      arrow pointing left
+       <STRONG>ACS_LEQUAL</STRONG>     &lt;         y      less-than-or-equal-to
+       <STRONG>ACS_LLCORNER</STRONG>   +         m      lower left-hand corner
+       <STRONG>ACS_LRCORNER</STRONG>   +         j      lower right-hand corner
+       <STRONG>ACS_LTEE</STRONG>       +         t      left tee
+       <STRONG>ACS_NEQUAL</STRONG>     !         |      not-equal
+       <STRONG>ACS_PI</STRONG>         *         {      greek pi
+       <STRONG>ACS_PLMINUS</STRONG>    #         g      plus/minus
+       <STRONG>ACS_PLUS</STRONG>       +         n      plus
+       <STRONG>ACS_RARROW</STRONG>     &gt;         +      arrow pointing right
+       <STRONG>ACS_RTEE</STRONG>       +         u      right tee
+       <STRONG>ACS_S1</STRONG>         -         o      scan line 1
+       <STRONG>ACS_S3</STRONG>         -         p      scan line 3
+       <STRONG>ACS_S7</STRONG>         -         r      scan line 7
+       <STRONG>ACS_S9</STRONG>         _         s      scan line 9
+       <STRONG>ACS_STERLING</STRONG>   f         }      pound-sterling symbol
+       <STRONG>ACS_TTEE</STRONG>       +         w      top tee
+       <STRONG>ACS_UARROW</STRONG>     ^         -      arrow pointing up
+       <STRONG>ACS_ULCORNER</STRONG>   +         l      upper left-hand corner
+       <STRONG>ACS_URCORNER</STRONG>   +         k      upper right-hand corner
+       <STRONG>ACS_VLINE</STRONG>      |         x      vertical line
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success (the
-       SVr4 manuals specify only "an  integer  value  other  than  <STRONG>ERR</STRONG>")  upon
-       successful  completion, unless otherwise noted in the preceding routine
-       descriptions.
-
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       These functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure.
 
-       If it is not  possible  to  add  a  complete  character,  an  error  is
-       returned:
+       In  <EM>ncurses</EM>, <STRONG>waddch</STRONG> returns <STRONG>ERR</STRONG> if it is not possible to add a complete
+       character at the cursor position, as when  conversion  of  a  multibyte
+       character  to  a  byte sequence fails, or at least one of the resulting
+       bytes cannot be added to the window.  See section  "PORTABILITY"  below
+       regarding the use of <STRONG>waddch</STRONG> with multibyte characters.
 
-       <STRONG>o</STRONG>   If  <STRONG>scrollok</STRONG> is not enabled, writing a character at the lower right
-           margin succeeds.  However, an error is returned because it  is  not
-           possible to wrap to a new line
+       <STRONG>waddch</STRONG>  can successfully write a character at the bottom right location
+       of the window.  However, <EM>ncurses</EM> returns <STRONG>ERR</STRONG>  if  <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG>  is  not
+       enabled  in  that  event,  because  it is not possible to wrap to a new
+       line.
 
-       <STRONG>o</STRONG>   If  an error is detected when converting a multibyte character to a
-           sequence of bytes, or if it is not  possible  to  add  all  of  the
-           resulting bytes in the window, an error is returned.
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>addch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, and <STRONG>echochar</STRONG> may be macros.
+       <STRONG>addch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, and <STRONG>echochar</STRONG> may be implemented as macros.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       All  these functions are described in the XSI Curses standard, Issue 4.
-       The defaults specified for forms-drawing characters apply in the  POSIX
+       X/Open  Curses,  Issue  4  describes  these functions.  It specifies no
+       error conditions for them.
+
+       SVr4 <EM>curses</EM> describes a successful return value  only  as  "an  integer
+       value other than <STRONG>ERR</STRONG>".
+
+       The  defaults specified for forms-drawing characters apply in the POSIX
        locale.
 
 
 </PRE><H3><a name="h3-ACS-Symbols">ACS Symbols</a></H3><PRE>
-       X/Open Curses states that the <STRONG>ACS_</STRONG> definitions are <STRONG>char</STRONG> constants.  For
-       the  wide-character  implementation  (see  <STRONG>curs_add_wch</STRONG>),   there   are
-       analogous   <STRONG>WACS_</STRONG>   definitions  which  are  <STRONG>cchar_t</STRONG>  constants.   Some
-       implementations are problematic:
+       X/Open Curses states that the <STRONG>ACS_</STRONG> definitions are <EM>char</EM> constants.
 
-       <STRONG>o</STRONG>   Some implementations define the ACS symbols to a constant (such  as
-           Solaris), while others define those to entries in an array.
+       Some implementations are problematic.
 
-           This  implementation uses an array <STRONG>acs_map</STRONG>, as done in SVr4 curses.
+       <STRONG>o</STRONG>   Solaris <EM>curses</EM>, for example, define the ACS symbols  as  constants;
+           others define them as elements of an array.
+
+           This  implementation  uses  an  array, <STRONG>acs_map</STRONG>, as did SVr4 <EM>curses</EM>.
            NetBSD also uses an array, actually named <STRONG>_acs_char</STRONG>, with a <STRONG>#define</STRONG>
            for compatibility.
 
-       <STRONG>o</STRONG>   HPUX curses equates some of the <STRONG>ACS_</STRONG> symbols to the analogous <STRONG>WACS_</STRONG>
-           symbols  as  if  the  <STRONG>ACS_</STRONG>  symbols  were  wide  characters.    The
-           misdefined  symbols  are the arrows and other symbols which are not
-           used for line-drawing.
+       <STRONG>o</STRONG>   HP-UX  <EM>curses</EM>  equates  some  of  the <STRONG>ACS_</STRONG> symbols to the analogous
+           <STRONG>WACS_</STRONG> symbols as if the <STRONG>ACS_</STRONG>  symbols  were  wide  characters  (see
+           <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>).   The  misdefined  symbols  are  the  arrows and
+           others that are not used for line drawing.
 
-       <STRONG>o</STRONG>   X/Open Curses (issues 2 through 7) has a  typographical  error  for
-           the  ACS_LANTERN  symbol,  equating  its  "VT100+  Character"  to <STRONG>I</STRONG>
-           (capital I), while the header files for SVr4 curses and the various
-           implementations use <STRONG>i</STRONG> (lowercase).
+       <STRONG>o</STRONG>   X/Open Curses (Issues 2 through 7) has a  typographical  error  for
+           the  <STRONG>ACS_LANTERN</STRONG>  symbol,  equating  its  "VT100+ Character" to "I"
+           (capital I), while the header  files  for  SVr4  <EM>curses</EM>  and  other
+           implementations use "i" (small i).
 
-           None  of the terminal descriptions on Unix platforms use uppercase-
-           I,  except  for  Solaris  (i.e.,  <STRONG>screen</STRONG>'s  terminal   description,
+           None  of  the terminal descriptions on Unix platforms use uppercase
+           I, except  for  Solaris  (in  its  <EM>terminfo</EM>  entry  for  <STRONG>screen(1)</STRONG>,
            apparently  based on the X/Open documentation around 1995).  On the
-           other hand, the terminal description <EM>gs6300</EM> (AT&amp;T PC6300 with EMOTS
-           Terminal Emulator) uses lowercase-i.
+           other hand, its <STRONG>gs6300</STRONG> (AT&amp;T PC6300 with EMOTS  Terminal  Emulator)
+           description uses lowercase i.
 
-       Some  ACS  symbols  (ACS_S3,  ACS_S7,  ACS_LEQUAL,  ACS_GEQUAL, ACS_PI,
-       ACS_NEQUAL, ACS_STERLING) were not documented in any publicly  released
-       System  V.   However,  many  publicly  available terminfos include <STRONG>acsc</STRONG>
-       strings in which their key characters (pryz{|})  are  embedded,  and  a
-       second-hand  list  of  their  character descriptions has come to light.
-       The ACS-prefixed names for them were invented for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
+       Some  ACS  symbols  (<STRONG>ACS_S3</STRONG>,  <STRONG>ACS_S7</STRONG>,  <STRONG>ACS_LEQUAL</STRONG>,  <STRONG>ACS_GEQUAL</STRONG>, <STRONG>ACS_PI</STRONG>,
+       <STRONG>ACS_NEQUAL</STRONG>, and <STRONG>ACS_STERLING</STRONG>)  were  not  documented  in  any  publicly
+       released  System V.   However, many publicly available <EM>terminfo</EM> entries
+       include <STRONG>acsc</STRONG> strings  in  which  their  key  characters  <STRONG>(</STRONG>pryz{|}<STRONG>)</STRONG>  are
+       embedded,  and  a  second-hand list of their character descriptions has
+       come to light.  The <EM>ncurses</EM> developers invented ACS-prefixed names  for
+       them.
 
-       The <EM>displayed</EM> values for the <STRONG>ACS_</STRONG> and <STRONG>WACS_</STRONG> constants depend on
+       The <EM>displayed</EM> values of <STRONG>ACS_</STRONG> constants depend on
 
-       <STRONG>o</STRONG>   the library configuration, i.e., <STRONG>ncurses</STRONG> versus <STRONG>ncursesw</STRONG>, where the
-           latter  is  capable  of displaying Unicode while the former is not,
-           and
+       <STRONG>o</STRONG>   the  <EM>ncurses</EM>  ABI--for  example,  wide-character  versus  non-wide-
+           character configurations  (the  former  is  capable  of  displaying
+           Unicode while the latter is not), and
 
-       <STRONG>o</STRONG>   whether the <EM>locale</EM> uses UTF-8 encoding.
+       <STRONG>o</STRONG>   whether the locale uses UTF-8 encoding.
 
-       In certain cases,  the  terminal  is  unable  to  display  line-drawing
-       characters   except   by   using   UTF-8   (see   the   discussion   of
-       <STRONG>NCURSES_NO_UTF8_ACS</STRONG> in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>).
+       In  certain  cases,  the  terminal  is  unable to display forms-drawing
+       characters  <EM>except</EM>  by  using  UTF-8;  see  the   discussion   of   the
+       <EM>NCURSES</EM><STRONG>_</STRONG><EM>NO</EM><STRONG>_</STRONG><EM>UTF8</EM><STRONG>_</STRONG><EM>ACS</EM> environment variable in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>).
 
 
 </PRE><H3><a name="h3-Character-Set">Character Set</a></H3><PRE>
-       X/Open Curses assumes that the parameter passed to  <STRONG>waddch</STRONG>  contains  a
-       single  character.   As  discussed in <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, that character may
-       have been more than eight bits in an SVr3 or SVr4  implementation,  but
-       in  the  X/Open Curses model, the details are not given.  The important
-       distinction between SVr4 curses and X/Open  Curses  is  that  the  non-
-       character  information  (attributes  and  color) was separated from the
-       character information which is packed in a <STRONG>chtype</STRONG> to pass to <STRONG>waddch</STRONG>.
-
-       In this implementation,  <STRONG>chtype</STRONG>  holds  an  eight-bit  character.   But
-       ncurses  allows  multibyte  characters  to be passed in a succession of
-       calls to <STRONG>waddch</STRONG>.  The other implementations do not do this; a  call  to
-       <STRONG>waddch</STRONG>  passes  exactly  one  character which may be rendered as one or
-       more cells on the screen depending on whether it is printable.
-
-       Depending on the locale settings, ncurses will inspect the byte  passed
-       in  each  call  to <STRONG>waddch</STRONG>, and check if the latest call will continue a
-       multibyte sequence.  When a character is <EM>complete</EM>, ncurses displays the
-       character and moves to the next position in the screen.
+       X/Open  Curses  assumes  that the parameter passed to <STRONG>waddch</STRONG> contains a
+       single character.  As discussed in <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,  that  character  may
+       have  been more than eight bits wide in an SVr3 or SVr4 implementation,
+       but in the X/Open  Curses  model,  the  details  are  not  given.   The
+       important distinction between SVr4 <EM>curses</EM> and X/Open Curses is that the
+       latter separates non-character information (attributes and color)  from
+       the  character  code,  which  SVr4  packs  into a <EM>chtype</EM> for passage to
+       <STRONG>waddch</STRONG>.
+
+       In <EM>ncurses</EM>, <EM>chtype</EM> holds  an  eight-bit  character.   But  the  library
+       allows  a  multibyte character to be passed in a succession of calls to
+       <STRONG>waddch</STRONG>.  Other implementations do not; a <STRONG>waddch</STRONG> call transmits  exactly
+       one  character,  which  may be rendered in one or more screen locations
+       depending on whether it is printable.
+
+       Depending on the locale settings, <EM>ncurses</EM> inspects the byte  passed  in
+       each  <STRONG>waddch</STRONG>  call,  and  checks  whether  the  latest call continues a
+       multibyte sequence.  When a character is <EM>complete</EM>, <EM>ncurses</EM> displays the
+       character and advances the cursor.
 
        If  the  calling  application  interrupts  the succession of bytes in a
-       multibyte character by moving the current location (e.g., using <STRONG>wmove</STRONG>),
-       ncurses discards the partially built character, starting over again.
+       multibyte character sequence  by  changing  the  current  location--for
+       example, with <STRONG><A HREF="curs_move.3x.html">wmove(3x)</A></STRONG>--<EM>ncurses</EM> discards the incomplete character.
 
        For  portability  to  other  implementations,  do  not  rely  upon this
-       behavior:
+       behavior.  Check whether a character can be  represented  as  a  single
+       byte in the current locale.
 
-       <STRONG>o</STRONG>   check if a character can be represented as a  single  byte  in  the
-           current locale before attempting call <STRONG>waddch</STRONG>, and
+       <STRONG>o</STRONG>   If it can, call either <STRONG>waddch</STRONG> or <STRONG><A HREF="curs_add_wch.3x.html">wadd_wch(3x)</A></STRONG>.
 
-       <STRONG>o</STRONG>   call <STRONG>wadd_wch</STRONG> for characters which cannot be handled by <STRONG>waddch</STRONG>.
+       <STRONG>o</STRONG>   If it cannot, use only <STRONG><A HREF="curs_add_wch.3x.html">wadd_wch(3x)</A></STRONG>.
 
 
 </PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
-       The  <STRONG>TABSIZE</STRONG>  variable  is  implemented  in  SVr4 and other versions of
-       curses, but is not part of X/Open curses  (see  <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>  for
-       more details).
-
-       If <EM>ch</EM> is a carriage return, the cursor is moved to the beginning of the
-       current row of the window.  This is true of other implementations,  but
-       is not documented.
+       SVr4  and  other versions of <EM>curses</EM> implement the <STRONG>TABSIZE</STRONG> variable, but
+       X/Open Curses does not specify it (see <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>).
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,      <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,      <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>,     <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>.
+       <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM>  library
+       in its wide-character configuration (<EM>ncursesw</EM>).
 
-       Comparable functions  in  the  wide-character  (ncursesw)  library  are
-       described in <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,    <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>,    <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>,    <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>,  <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>,   <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>,   <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>putchar(3)</STRONG>
 
 
 
-                                                                <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-Adding-characters">Adding characters</a></li>
-<li><a href="#h3-Echoing-characters">Echoing characters</a></li>
-<li><a href="#h3-Line-Graphics">Line Graphics</a></li>
+<li><a href="#h3-Adding-Characters">Adding Characters</a></li>
+<li><a href="#h3-Echoing-Characters">Echoing Characters</a></li>
+<li><a href="#h3-Forms-Drawing-Characters">Forms-Drawing Characters</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
index 60798eae99293eabaa3881f9ed1d33d7a0b29bf5..a3441e6c9a1d1184905077499b33cbd37c6003c4 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2012,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_addchstr.3x,v 1.25 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_addchstr.3x,v 1.45 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_addchstr 3x</TITLE>
+<TITLE>curs_addchstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_addchstr 3x</H1>
+<H1 class="no-header">curs_addchstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>                                            <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>addchstr</STRONG>, <STRONG>addchnstr</STRONG>, <STRONG>waddchstr</STRONG>, <STRONG>waddchnstr</STRONG>, <STRONG>mvaddchstr</STRONG>, <STRONG>mvaddchnstr</STRONG>,
-       <STRONG>mvwaddchstr</STRONG>, <STRONG>mvwaddchnstr</STRONG> - add a string of characters (and attributes)
-       to a <STRONG>curses</STRONG> window
+       <STRONG>addchstr</STRONG>,  <STRONG>addchnstr</STRONG>,  <STRONG>waddchstr</STRONG>,  <STRONG>waddchnstr</STRONG>, <STRONG>mvaddchstr</STRONG>, <STRONG>mvaddchnstr</STRONG>,
+       <STRONG>mvwaddchstr</STRONG>, <STRONG>mvwaddchnstr</STRONG> - add a <EM>curses</EM> character string to a window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>addchstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>addchnstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>waddchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>waddchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-
        <STRONG>int</STRONG> <STRONG>mvaddchstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvaddchnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwaddchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG>
+
+       <STRONG>int</STRONG> <STRONG>addchnstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>waddchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvaddchnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwaddchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These  functions copy the (null-terminated) <EM>chstr</EM> array into the window
-       image structure starting at the  current  cursor  position.   The  four
-       functions  with  <EM>n</EM> as the last argument copy at most <EM>n</EM> elements, but no
-       more than will fit on the line.   If  <STRONG>n</STRONG>=<STRONG>-1</STRONG>  then  the  whole  array  is
+       These functions copy the (null-terminated) <EM>chstr</EM> array into the  window
+       image structure starting at the current cursor position.
+
+       The four functions with <EM>n</EM> as the last argument copy at most <EM>n</EM> elements,
+       but no more than will fit on the line.  If <STRONG>n</STRONG>=<STRONG>-1</STRONG> then the whole array is
        copied, to the maximum number of characters that will fit on the line.
 
-       The  window  cursor  is <EM>not</EM> advanced.  These functions work faster than
+       The  window  cursor  is  <EM>not</EM> advanced.  These functions are faster than
        <STRONG>waddnstr</STRONG>.  On the other hand:
 
        <STRONG>o</STRONG>   they do not perform checking (such as for the  newline,  backspace,
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
 
-       X/Open does not define any error conditions.  This  implementation  re-
-       turns an error if the window pointer is null.
+       X/Open  Curses  does  not   specify   any   error   conditions.    This
+       implementation returns an error
+
+       <STRONG>o</STRONG>   if the <EM>win</EM> parameter is null or
+
+       <STRONG>o</STRONG>   if the <EM>wchstr</EM> parameter is null.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These entry points are described in the XSI Curses standard, Issue 4.
+       These functions are described in X/Open Curses, Issue 4.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>  describes  comparable  functions  of  the  <EM>ncurses</EM>
+       library in its wide-character configuration (<EM>ncursesw</EM>).
 
-       Comparable  functions  in the wide-character (ncursesw) library are de-
-       scribed in <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
 
 
 
-                                                             <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                 <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 050c7a11743904bf5f55c9cdd61b62cff154b2d3..b7f1c689b9949f2f2e8c1eb248c5e38961db8bd1 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2012,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_addstr.3x,v 1.26 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_addstr.3x,v 1.45 2024/04/20 19:18:18 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_addstr 3x</TITLE>
+<TITLE>curs_addstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_addstr 3x</H1>
+<H1 class="no-header">curs_addstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>                                                <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>addstr</STRONG>, <STRONG>addnstr</STRONG>, <STRONG>waddstr</STRONG>, <STRONG>waddnstr</STRONG>, <STRONG>mvaddstr</STRONG>, <STRONG>mvaddnstr</STRONG>, <STRONG>mvwaddstr</STRONG>,
-       <STRONG>mvwaddnstr</STRONG> - add a string of characters to a <STRONG>curses</STRONG> window and advance
-       cursor
+       <STRONG>addstr</STRONG>,  <STRONG>addnstr</STRONG>,  <STRONG>waddstr</STRONG>,  <STRONG>waddnstr</STRONG>,  <STRONG>mvaddstr</STRONG>, <STRONG>mvaddnstr</STRONG>, <STRONG>mvwaddstr</STRONG>,
+       <STRONG>mvwaddnstr</STRONG> - add a string to a <EM>curses</EM> window and advance the cursor
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>addstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>addnstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvaddstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwaddstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>waddstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>waddnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>mvaddstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>addnstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvaddnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwaddstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwaddnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str,</EM> <EM>int</EM> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwaddnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>waddnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These functions write the (null-terminated) character string <EM>str</EM> on the
-       given window.  It is similar to calling <STRONG>waddch</STRONG> once for  each  byte  in
-       the string.
+       <STRONG>waddstr</STRONG> writes the characters of the (null-terminated)  string  <EM>str</EM>  to
+       the  window <EM>win</EM>.  Its process is similar to calling <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG> for each
+       <EM>char</EM> in <EM>str</EM>.  Control characters are processed as in <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG>.
 
-       The <EM>mv</EM> functions perform cursor movement once, before writing any char-
-       acters.  Thereafter, the cursor is advanced as a side-effect of writing
-       to the window.
+       <STRONG>waddnstr</STRONG> writes at most <EM>n</EM>  characters,  or  until  a  terminating  null
+       character  occurs  in  <EM>str</EM>.   If  <EM>n</EM>  is  -1, <STRONG>waddnstr</STRONG> writes the entire
+       string.
 
-       The  four  functions with <EM>n</EM> as the last argument write at most <EM>n</EM> bytes,
-       or until a terminating null is reached.  If <EM>n</EM> is -1,  then  the  entire
-       string will be added.
+       <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> describes the variants of these functions.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
+       These functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure.
 
-       X/Open  does  not define any error conditions.  This implementation re-
-       turns an error
+       X/Open Curses does not specify any error conditions.   <EM>ncurses</EM>  returns
+       an error
 
-       <STRONG>o</STRONG>   if the window pointer is null or
+       <STRONG>o</STRONG>   if the window pointer is <STRONG>NULL</STRONG>,
 
-       <STRONG>o</STRONG>   if the string pointer is null or
+       <STRONG>o</STRONG>   if the string pointer is <STRONG>NULL</STRONG>, or
 
-       <STRONG>o</STRONG>   if the corresponding calls to <STRONG>waddch</STRONG> return an error.
+       <STRONG>o</STRONG>   if an internal <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG> call returns an error.
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.  If an error is returned by the  <STRONG>wmove</STRONG>,  no
-       characters are added to the window.
-
-       If  an  error  is  returned  by <STRONG>waddch</STRONG> (e.g., because the window is not
-       large enough, or an illegal byte sequence was detected)  only  part  of
-       the  string  may be added.  Aside from that, there is a special case in
-       <STRONG>waddch</STRONG> where an error may be  returned  after  successfully  writing  a
-       character  to  the lower-right corner of a window when <STRONG>scrollok</STRONG> is dis-
-       abled.
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.
+       X/Open Curses, Issue 4 describes these functions.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM>  library
+       in its wide-character configuration (<EM>ncursesw</EM>).
+
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index ce6d21b06cd0821c9fcca5178fde4a837ac2a843..ce3229acc228baf0e6a9b45c05938d4ecb6ee5f4 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_addwstr.3x,v 1.18 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_addwstr.3x,v 1.37 2024/04/20 19:18:18 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_addwstr 3x</TITLE>
+<TITLE>curs_addwstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_addwstr 3x</H1>
+<H1 class="no-header">curs_addwstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>                                              <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>addwstr</STRONG>, <STRONG>addnwstr</STRONG>, <STRONG>waddwstr</STRONG>, <STRONG>waddnwstr</STRONG>, <STRONG>mvaddwstr</STRONG>, <STRONG>mvaddnwstr</STRONG>,
-       <STRONG>mvwaddwstr</STRONG>, <STRONG>mvwaddnwstr</STRONG> - add a string of wide characters to a <STRONG>curses</STRONG>
-       window and advance cursor
+       <STRONG>addwstr</STRONG>,   <STRONG>addnwstr</STRONG>,   <STRONG>waddwstr</STRONG>,   <STRONG>waddnwstr</STRONG>,   <STRONG>mvaddwstr</STRONG>,  <STRONG>mvaddnwstr</STRONG>,
+       <STRONG>mvwaddwstr</STRONG>, <STRONG>mvwaddnwstr</STRONG> - add  a  wide-character  string  to  a  <EM>curses</EM>
+       window and advance the cursor
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>addwstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>addnwstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvaddwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwaddwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>waddwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>waddnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>mvaddwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>addnwstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvaddnwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwaddwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwaddnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>waddnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These  functions  write the characters of the (null-terminated) <STRONG>wchar_t</STRONG>
-       character string <EM>wstr</EM> on the given window.  It is similar to construct-
-       ing a <STRONG>cchar_t</STRONG> for each wchar_t in the string, then calling <STRONG>wadd_wch</STRONG> for
-       the resulting <STRONG>cchar_t</STRONG>.
+       <STRONG>waddwstr</STRONG>  writes  the  characters  of  the (wide-null-terminated) wide-
+       character string <EM>wstr</EM> to the window <EM>win</EM>.  Its  process  is  similar  to
+       constructing   a  <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>  for  each  <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM>  in  <EM>wstr</EM>,  then  calling
+       <STRONG><A HREF="curs_add_wch.3x.html">wadd_wch(3x)</A></STRONG> with the resulting <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>.
+
+       <STRONG>o</STRONG>   Spacing and non-spacing characters in the string are processed  one
+           at a time, and
 
-       The <EM>mv</EM> functions perform cursor movement once, before writing any char-
-       acters.  Thereafter, the cursor is advanced as a side-effect of writing
-       to the window.
+       <STRONG>o</STRONG>   control characters are processed as in <STRONG><A HREF="curs_add_wch.3x.html">wadd_wch(3x)</A></STRONG>.
 
-       The four functions with <EM>n</EM> as the last argument write at most <EM>n</EM>  <STRONG>wchar_t</STRONG>
-       characters,  or  until a terminating null is reached.  If <EM>n</EM> is -1, then
-       the entire string will be added.
+       <STRONG>waddnwstr</STRONG> writes at most <EM>n</EM> wide characters, or until a terminating wide
+       null character occurs in <EM>wstr</EM>.  If <EM>n</EM> is -1, <STRONG>waddnwstr</STRONG> writes the entire
+       wide string.
+
+       <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> describes the variants of these functions.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
+       These functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure.
 
-       X/Open does not define any error conditions.  This  implementation  re-
-       turns an error
+       X/Open  Curses  does not specify any error conditions.  <EM>ncurses</EM> returns
+       an error
 
-       <STRONG>o</STRONG>   if the window pointer is null or
+       <STRONG>o</STRONG>   if the window pointer is <STRONG>NULL</STRONG>,
 
-       <STRONG>o</STRONG>   if the string pointer is null or
+       <STRONG>o</STRONG>   if the string pointer is <STRONG>NULL</STRONG>, or
 
-       <STRONG>o</STRONG>   if the corresponding calls to <STRONG>wadd_wch</STRONG> return an error.
+       <STRONG>o</STRONG>   if an internal <STRONG><A HREF="curs_add_wch.3x.html">wadd_wch(3x)</A></STRONG> call returns an error.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       All of these functions except <STRONG>waddnwstr</STRONG> may be macros.
+       All of these functions except <STRONG>waddnwstr</STRONG> may be implemented as macros.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.
+       X/Open Curses, Issue 4 describes these functions.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
+       <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>  describes  comparable functions of the <EM>ncurses</EM> library
+       in its non-wide-character configuration.
+
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
 
 
 
-                                                              <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                  <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 70dc7455b36b96514d76736638973c2894c80d7e..bc1fd859d06aca7119b5cc6e60657de460f3ee47 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_attr.3x,v 1.72 2022/04/16 19:18:32 tom Exp @
-  * ---------------------------------------------------------------------------
-  * attr_get
-  * .br
-  * .br
-  * .br
-  * .br
-  * .br
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
-  * ---------------------------------------------------------------------------
+  * @Id: curs_attr.3x,v 1.105 2024/04/27 17:54:42 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_attr 3x</TITLE>
+<TITLE>curs_attr 3x 2024-04-27 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_attr 3x</H1>
+<H1 class="no-header">curs_attr 3x 2024-04-27 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>                                                    <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+<STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
 
 
 
@@ -71,9 +50,9 @@
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>attr_get</STRONG>, <STRONG>wattr_get</STRONG>, <STRONG>attr_set</STRONG>, <STRONG>wattr_set</STRONG>, <STRONG>attr_off</STRONG>, <STRONG>wattr_off</STRONG>, <STRONG>attr_on</STRONG>,
        <STRONG>wattr_on</STRONG>, <STRONG>attroff</STRONG>, <STRONG>wattroff</STRONG>, <STRONG>attron</STRONG>, <STRONG>wattron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>wattrset</STRONG>, <STRONG>chgat</STRONG>,
-       <STRONG>wchgat</STRONG>, <STRONG>mvchgat</STRONG>, <STRONG>mvwchgat</STRONG>, <STRONG>color_set</STRONG>, <STRONG>wcolor_set</STRONG>, <STRONG>standend</STRONG>, <STRONG>wstandend</STRONG>,
-       <STRONG>standout</STRONG>, <STRONG>wstandout</STRONG> - <STRONG>curses</STRONG> character and window attribute control
-       routines
+       <STRONG>wchgat</STRONG>,  <STRONG>mvchgat</STRONG>, <STRONG>mvwchgat</STRONG>, <STRONG>color_set</STRONG>, <STRONG>wcolor_set</STRONG>, <STRONG>standend</STRONG>, <STRONG>wstandend</STRONG>,
+       <STRONG>standout</STRONG>, <STRONG>wstandout</STRONG> -  manipulate  attributes  of  character  cells  in
+       <EM>curses</EM> windows
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -89,7 +68,7 @@
        <STRONG>int</STRONG> <STRONG>attr_on(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wattr_on(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <EM>attrs);</EM>
+       <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wattroff(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>attron(int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wattron(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
              <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvchgat(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG>
              <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>int</EM> <EM>y,</EM> <EM>int</EM> <EM>x</EM><STRONG>,</STRONG>
-             <STRONG>int</STRONG> <EM>n,</EM> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>color_set(short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts);</EM>
+       <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>standend(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>wstandend(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
        These  routines  manipulate the current attributes of the named window,
        which then apply to all characters that are  written  into  the  window
        with  <STRONG>waddch</STRONG>,  <STRONG>waddstr</STRONG>  and  <STRONG>wprintw</STRONG>.  Attributes are a property of the
-       character, and move with the character through any  scrolling  and  in-
-       sert/delete  line/character  operations.   To the extent possible, they
+       character, and move  with  the  character  through  any  scrolling  and
+       insert/delete  line/character operations.  To the extent possible, they
        are displayed as appropriate modifications to the graphic rendition  of
        characters put on the screen.
 
        These  routines do not affect the attributes used when erasing portions
-       of the window.  See <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> for functions which  modify  the  at-
-       tributes used for erasing and clearing.
-
-       Routines  which  do  not have a <STRONG>WINDOW*</STRONG> parameter apply to <STRONG>stdscr</STRONG>.  For
-       example, <STRONG>attr_set</STRONG> is the <STRONG>stdscr</STRONG> variant of <STRONG>wattr_set</STRONG>.
+       of the window.   See  <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>  for  functions  which  modify  the
+       attributes used for erasing and clearing.
 
 
-</PRE><H3><a name="h3-Window-attributes">Window attributes</a></H3><PRE>
+</PRE><H3><a name="h3-Window-Attributes">Window Attributes</a></H3><PRE>
        There are two sets of functions:
 
-       <STRONG>o</STRONG>   functions for manipulating the window attributes  and  color:  <STRONG>wat-</STRONG>
-           <STRONG>tr_set</STRONG> and <STRONG>wattr_get</STRONG>.
+       <STRONG>o</STRONG>   functions   for  manipulating  the  window  attributes  and  color:
+           <STRONG>wattr_set</STRONG> and <STRONG>wattr_get</STRONG>.
 
-       <STRONG>o</STRONG>   functions  for manipulating only the window attributes (not color):
+       <STRONG>o</STRONG>   functions for manipulating only the window attributes (not  color):
            <STRONG>wattr_on</STRONG> and <STRONG>wattr_off</STRONG>.
 
-       The <STRONG>wattr_set</STRONG> function sets the current attributes of the given  window
+       The  <STRONG>wattr_set</STRONG> function sets the current attributes of the given window
        to <EM>attrs</EM>, with color specified by <EM>pair</EM>.
 
        Use <STRONG>wattr_get</STRONG> to retrieve attributes for the given window.
 
-       Use  <STRONG>attr_on</STRONG>  and  <STRONG>wattr_on</STRONG>  to turn on window attributes, i.e., values
-       OR'd together in <EM>attr</EM>, without affecting  other  attributes.   Use  <STRONG>at-</STRONG>
-       <STRONG>tr_off</STRONG>  and  <STRONG>wattr_off</STRONG> to turn off window attributes, again values OR'd
+       Use <STRONG>attr_on</STRONG> and <STRONG>wattr_on</STRONG> to turn on  window  attributes,  i.e.,  values
+       OR'd  together  in  <EM>attr</EM>,  without  affecting  other  attributes.   Use
+       <STRONG>attr_off</STRONG> and <STRONG>wattr_off</STRONG> to turn off window attributes, again values OR'd
        together in <EM>attr</EM>, without affecting other attributes.
 
 
-</PRE><H3><a name="h3-Legacy-window-attributes">Legacy window attributes</a></H3><PRE>
-       The X/Open window attribute routines which <EM>set</EM> or <EM>get</EM>, turn <EM>on</EM>  or  <EM>off</EM>
+</PRE><H3><a name="h3-Legacy-Window-Attributes">Legacy Window Attributes</a></H3><PRE>
+       The  X/Open  window attribute routines which <EM>set</EM> or <EM>get</EM>, turn <EM>on</EM> or <EM>off</EM>
        are extensions of older routines which assume that color pairs are OR'd
-       into the attribute parameter.  These newer routines use similar  names,
+       into  the attribute parameter.  These newer routines use similar names,
        because X/Open simply added an underscore (<STRONG>_</STRONG>) for the newer names.
 
        The <STRONG>int</STRONG> datatype used in the legacy routines is treated as if it is the
-       same size as <STRONG>chtype</STRONG> (used by <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>).  It holds the common video at-
-       tributes  (such  as  bold,  reverse),  as well as a few bits for color.
-       Those bits correspond to the <STRONG>A_COLOR</STRONG> symbol.  The <STRONG>COLOR_PAIR</STRONG> macro pro-
-       vides  a value which can be OR'd into the attribute parameter.  For ex-
-       ample, as long as that value fits into the  <STRONG>A_COLOR</STRONG>  mask,  then  these
+       same  size  as  <STRONG>chtype</STRONG>  (used by <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>).  It holds the common video
+       attributes (such as bold, reverse), as well as a few  bits  for  color.
+       Those  bits  correspond  to  the  <STRONG>A_COLOR</STRONG> symbol.  The <STRONG>COLOR_PAIR</STRONG> macro
+       provides a value which can be OR'd into the attribute  parameter.   For
+       example,  as  long as that value fits into the <STRONG>A_COLOR</STRONG> mask, then these
        calls produce similar results:
 
            attrset(A_BOLD | COLOR_PAIR(<EM>pair</EM>));
            attr_set(A_BOLD, <EM>pair</EM>, NULL);
 
        However, if the value does not fit, then the <STRONG>COLOR_PAIR</STRONG> macro uses only
-       the bits that fit.  For example, because in ncurses <STRONG>A_COLOR</STRONG>  has  eight
+       the  bits  that fit.  For example, because in <EM>ncurses</EM> <STRONG>A_COLOR</STRONG> has eight
        (8) bits, then <STRONG>COLOR_PAIR(</STRONG><EM>259</EM><STRONG>)</STRONG> is 4 (i.e., 259 is 4 more than the limit
        255).
 
-       The <STRONG>PAIR_NUMBER</STRONG> macro extracts a pair number from an <STRONG>int</STRONG>  (or  <STRONG>chtype</STRONG>).
-       For  example,  the <EM>input</EM> and <EM>output</EM> values in these statements would be
+       The  <STRONG>PAIR_NUMBER</STRONG>  macro extracts a pair number from an <STRONG>int</STRONG> (or <STRONG>chtype</STRONG>).
+       For example, the <EM>input</EM> and <EM>output</EM> values in these statements  would  be
        the same:
 
            int value = A_BOLD | COLOR_PAIR(<EM>input</EM>);
            int <EM>output</EM> = PAIR_NUMBER(value);
 
-       The <STRONG>attrset</STRONG> routine is a legacy feature predating SVr4 curses but  kept
-       in X/Open Curses for the same reason that SVr4 curses kept it: compati-
-       bility.
+       The  <STRONG>attrset</STRONG> routine is a legacy feature predating SVr4 curses but kept
+       in X/Open Curses  for  the  same  reason  that  SVr4  curses  kept  it:
+       compatibility.
 
-       The remaining <STRONG>attr</STRONG>* functions operate exactly  like  the  corresponding
-       <STRONG>attr_</STRONG>*  functions,  except  that they take arguments of type <STRONG>int</STRONG> rather
+       The  remaining  <STRONG>attr</STRONG>*  functions operate exactly like the corresponding
+       <STRONG>attr_</STRONG>* functions, except that they take arguments of  type  <STRONG>int</STRONG>  rather
        than <STRONG>attr_t</STRONG>.
 
-       There is no corresponding <STRONG>attrget</STRONG> function as such  in  X/Open  Curses,
-       although ncurses provides <STRONG>getattrs</STRONG> (see <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>).
+       There  is  no  corresponding <STRONG>attrget</STRONG> function as such in X/Open Curses,
+       although <EM>ncurses</EM> provides <STRONG>getattrs</STRONG> (see <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>).
 
 
-</PRE><H3><a name="h3-Change-character-rendition">Change character rendition</a></H3><PRE>
-       The  routine  <STRONG>chgat</STRONG> changes the attributes of a given number of charac-
-       ters starting at the current cursor location of <STRONG>stdscr</STRONG>.   It  does  not
-       update  the cursor and does not perform wrapping.  A character count of
-       -1 or greater than the remaining  window  width  means  to  change  at-
-       tributes  all the way to the end of the current line.  The <STRONG>wchgat</STRONG> func-
-       tion generalizes this to any window; the <STRONG>mvwchgat</STRONG> function does a  cur-
-       sor move before acting.
+</PRE><H3><a name="h3-Change-Character-Rendition">Change Character Rendition</a></H3><PRE>
+       The  routine  <STRONG>chgat</STRONG>  changes  the  attributes  of  a  given  number  of
+       characters  starting at the current cursor location of <STRONG>stdscr</STRONG>.  It does
+       not update the cursor and does not perform wrapping.  A character count
+       of  -1  or  greater  than  the  remaining  window width means to change
+       attributes all the way to the end of  the  current  line.   The  <STRONG>wchgat</STRONG>
+       function  generalizes  this to any window; the <STRONG>mvwchgat</STRONG> function does a
+       cursor move before acting.
 
-       In  these  functions, the color <EM>pair</EM> argument is a color-pair index (as
+       In these functions, the color <EM>pair</EM> argument is a color pair  index  (as
        in the first argument of <STRONG>init_pair</STRONG>, see <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>).
 
 
-</PRE><H3><a name="h3-Change-window-color">Change window color</a></H3><PRE>
+</PRE><H3><a name="h3-Change-Window-Color">Change Window Color</a></H3><PRE>
        The routine <STRONG>color_set</STRONG> sets the current color of the given window to the
-       foreground/background  combination  described by the color <EM>pair</EM> parame-
-       ter.
+       foreground/background  combination  described   by   the   color   <EM>pair</EM>
+       parameter.
 
 
 </PRE><H3><a name="h3-Standout">Standout</a></H3><PRE>
-       The routine <STRONG>standout</STRONG> is the same as  <STRONG>attron(A_STANDOUT)</STRONG>.   The  routine
-       <STRONG>standend</STRONG>  is  the  same as <STRONG>attrset(A_NORMAL)</STRONG> or <STRONG>attrset(0)</STRONG>, that is, it
+       The  routine  <STRONG>standout</STRONG>  is the same as <STRONG>attron(A_STANDOUT)</STRONG>.  The routine
+       <STRONG>standend</STRONG> is the same as <STRONG>attrset(A_NORMAL)</STRONG> or <STRONG>attrset(0)</STRONG>,  that  is,  it
        turns off all attributes.
 
-       X/Open does not mark these "restricted", because
+       X/Open Curses does not mark these "restricted", because
 
        <STRONG>o</STRONG>   they have well established legacy use, and
 
-       <STRONG>o</STRONG>   there is no ambiguity about the way the attributes  might  be  com-
-           bined with a color pair.
+       <STRONG>o</STRONG>   there  is  no  ambiguity  about  the  way  the  attributes might be
+           combined with a color pair.
 
 
-</PRE><H2><a name="h2-VIDEO-ATTRIBUTES">VIDEO ATTRIBUTES</a></H2><PRE>
+</PRE><H3><a name="h3-Video-Attributes">Video Attributes</a></H3><PRE>
        The following video attributes, defined in <STRONG>&lt;curses.h&gt;</STRONG>, can be passed to
-       the routines <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, and <STRONG>attrset</STRONG>, or OR'd with the  characters
+       the  routines <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, and <STRONG>attrset</STRONG>, or OR'd with the characters
        passed to <STRONG>addch</STRONG> (see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>).
 
               <STRONG>Name</STRONG>           <STRONG>Description</STRONG>
               -----------------------------------------------------------------
               <STRONG>A_NORMAL</STRONG>       Normal display (no highlight)
-              <STRONG>A_STANDOUT</STRONG>     Best highlighting mode of the terminal.
+              <STRONG>A_STANDOUT</STRONG>     Best highlighting mode of the terminal
               <STRONG>A_UNDERLINE</STRONG>    Underlining
               <STRONG>A_REVERSE</STRONG>      Reverse video
               <STRONG>A_BLINK</STRONG>        Blinking
               <STRONG>A_CHARTEXT</STRONG>     Bit-mask to extract a character
               <STRONG>A_COLOR</STRONG>        Bit-mask to extract a color (legacy routines)
 
-       These  video  attributes are supported by <STRONG>attr_on</STRONG> and related functions
+       These video attributes are supported by <STRONG>attr_on</STRONG> and  related  functions
        (which also support the attributes recognized by <STRONG>attron</STRONG>, etc.):
 
               <STRONG>Name</STRONG>            <STRONG>Description</STRONG>
-              -----------------------------------------
+              -----------------------------------------------------------------
               <STRONG>WA_HORIZONTAL</STRONG>   Horizontal highlight
               <STRONG>WA_LEFT</STRONG>         Left highlight
               <STRONG>WA_LOW</STRONG>          Low highlight
               <STRONG>WA_TOP</STRONG>          Top highlight
               <STRONG>WA_VERTICAL</STRONG>     Vertical highlight
 
-       The return values of many of these routines are  not  meaningful  (they
-       are  implemented  as macro-expanded assignments and simply return their
-       argument).  The SVr4 manual page claims (falsely) that  these  routines
+       The  return  values  of many of these routines are not meaningful (they
+       are implemented as macro-expanded assignments and simply  return  their
+       argument).   The  SVr4 manual page claims (falsely) that these routines
        always return <STRONG>1</STRONG>.
 
 
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All routines return the integer <STRONG>OK</STRONG> on success, or <STRONG>ERR</STRONG> on failure.
+
+       X/Open Curses does not specify any error conditions.
+
+       This implementation
+
+       <STRONG>o</STRONG>   returns an error if the window pointer is null.
+
+       <STRONG>o</STRONG>   returns an error if the color  pair  parameter  for  <STRONG>wcolor_set</STRONG>  is
+           outside the range 0..COLOR_PAIRS-1.
+
+       <STRONG>o</STRONG>   does  not  return an error if either of the parameters of <STRONG>wattr_get</STRONG>
+           used for retrieving attribute or color pair values is <STRONG>NULL</STRONG>.
+
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        These functions may be macros:
 
 
        Color pair values can only be OR'd with attributes if the  pair  number
        is less than 256.  The alternate functions such as <STRONG>color_set</STRONG> can pass a
-       color pair value directly.  However, ncurses ABI 4 and 5 simply OR this
-       value  within  the  alternate functions.  You must use ncurses ABI 6 to
+       color pair value directly.  However, <EM>ncurses</EM> ABI 4 and 5 simply OR this
+       value  within  the  alternate functions.  You must use <EM>ncurses</EM> ABI 6 to
        support more than 256 color pairs.
 
 
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       This implementation provides the <STRONG>A_ITALIC</STRONG> attribute for terminals which
+       have   the   <STRONG>enter_italics_mode</STRONG>  (<STRONG>sitm</STRONG>)  and  <STRONG>exit_italics_mode</STRONG>  (<STRONG>ritm</STRONG>)
+       capabilities.  Italics are not mentioned in X/Open Curses.  Unlike  the
+       other  video  attributes,  <STRONG>A_ITALIC</STRONG>  is unrelated to the <STRONG>set_attributes</STRONG>
+       capabilities.   This   implementation   makes   the   assumption   that
+       <STRONG>exit_attribute_mode</STRONG> may also reset italics.
+
+       Each  of  the functions added by XSI Curses has a parameter <EM>opts</EM>, which
+       X/Open Curses  still  (after  more  than  twenty  years)  documents  as
+       reserved  for  future  use,  saying  that  it  should  be  <STRONG>NULL</STRONG>.   This
+       implementation uses that parameter in ABI 6  for  the  functions  which
+       have a color pair parameter to support <EM>extended</EM> <EM>color</EM> <EM>pairs</EM>:
+
+       <STRONG>o</STRONG>   For functions which modify the color, e.g., <STRONG>wattr_set</STRONG> and <STRONG>wattr_on</STRONG>,
+           if <EM>opts</EM> is set it is treated as a pointer to <STRONG>int</STRONG>, and used  to  set
+           the color pair instead of the <STRONG>short</STRONG> <EM>pair</EM> parameter.
+
+       <STRONG>o</STRONG>   For functions which retrieve the color, e.g., <STRONG>wattr_get</STRONG>, if <EM>opts</EM> is
+           set it is treated as a pointer to <STRONG>int</STRONG>, and  used  to  retrieve  the
+           color  pair  as  an <STRONG>int</STRONG> value, in addition to retrieving it via the
+           standard pointer to <STRONG>short</STRONG> parameter.
+
+       <STRONG>o</STRONG>   For functions which turn attributes off, e.g., <STRONG>wattr_off</STRONG>, the  <EM>opts</EM>
+           parameter is ignored except except to check that it is <STRONG>NULL</STRONG>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  functions are described in X/Open Curses, Issue 4.  The standard
+       defined the dedicated  type  for  highlights,  <STRONG>attr_t</STRONG>,  which  was  not
+       defined in SVr4 curses.  The functions taking <STRONG>attr_t</STRONG> arguments were not
+       supported under SVr4.
+
+       Very old versions of this library did not force an update of the screen
+       when  changing  the  attributes.   Use  <STRONG>touchwin</STRONG> to force the screen to
+       match the updated attributes.
+
+       X/Open  Curses  states   that   whether   the   traditional   functions
+       <STRONG>attron</STRONG>/<STRONG>attroff</STRONG>/<STRONG>attrset</STRONG>  can  manipulate  attributes other than <STRONG>A_BLINK</STRONG>,
+       <STRONG>A_BOLD</STRONG>, <STRONG>A_DIM</STRONG>, <STRONG>A_REVERSE</STRONG>, <STRONG>A_STANDOUT</STRONG>, or <STRONG>A_UNDERLINE</STRONG> is  "unspecified".
+       Under  this  implementation  as  well  as  SVr4 curses, these functions
+       correctly manipulate all other highlights (specifically,  <STRONG>A_ALTCHARSET</STRONG>,
+       <STRONG>A_PROTECT</STRONG>, and <STRONG>A_INVIS</STRONG>).
+
+       X/Open Curses added these entry points:
+
+              <STRONG>attr_get</STRONG>,  <STRONG>attr_on</STRONG>,  <STRONG>attr_off</STRONG>,  <STRONG>attr_set</STRONG>,  <STRONG>wattr_on</STRONG>,  <STRONG>wattr_off</STRONG>,
+              <STRONG>wattr_get</STRONG>, <STRONG>wattr_set</STRONG>
+
+       The new functions are intended to work with a new series  of  highlight
+       macros prefixed with <STRONG>WA_</STRONG>.  The older macros have direct counterparts in
+       the newer set of names:
+
+              <STRONG>Name</STRONG>            <STRONG>Description</STRONG>
+              -----------------------------------------------------------------
+              <STRONG>WA_NORMAL</STRONG>       Normal display (no highlight)
+              <STRONG>WA_STANDOUT</STRONG>     Best highlighting mode of the terminal
+              <STRONG>WA_UNDERLINE</STRONG>    Underlining
+              <STRONG>WA_REVERSE</STRONG>      Reverse video
+              <STRONG>WA_BLINK</STRONG>        Blinking
+              <STRONG>WA_DIM</STRONG>          Half bright
+              <STRONG>WA_BOLD</STRONG>         Extra bright or bold
+
+              <STRONG>WA_ALTCHARSET</STRONG>   Alternate character set
+
+       X/Open Curses does not assign values to  these  symbols,  nor  does  it
+       state  whether or not they are related to the similarly-named A_NORMAL,
+       etc.:
+
+       <STRONG>o</STRONG>   X/Open Curses specifies that each  pair  of  corresponding  <STRONG>A_</STRONG>  and
+           <STRONG>WA_</STRONG>-using   functions   operates   on  the  same  current-highlight
+           information.
+
+       <STRONG>o</STRONG>   However, in some  implementations,  those  symbols  have  unrelated
+           values.
+
+           For example, the Solaris <EM>xpg4</EM> (X/Open) curses declares <STRONG>attr_t</STRONG> to be
+           an unsigned short integer (16-bits), while  <STRONG>chtype</STRONG>  is  a  unsigned
+           integer (32-bits).  The <STRONG>WA_</STRONG> symbols in this case are different from
+           the <STRONG>A_</STRONG> symbols because they are used for a smaller  datatype  which
+           does not represent <STRONG>A_CHARTEXT</STRONG> or <STRONG>A_COLOR</STRONG>.
+
+           In this implementation (as in many others), the values happen to be
+           the same because it simplifies copying information  between  <STRONG>chtype</STRONG>
+           and <STRONG>cchar_t</STRONG> variables.
+
+       <STRONG>o</STRONG>   Because  <EM>ncurses</EM>'s  <STRONG>attr_t</STRONG>  can  hold  a color pair (in the <STRONG>A_COLOR</STRONG>
+           field), a call to <STRONG>wattr_on</STRONG>, <STRONG>wattr_off</STRONG>, or <STRONG>wattr_set</STRONG> may  alter  the
+           window's  color.   If  the  color pair information in the attribute
+           parameter is zero, no change is made to the window's color.
+
+           This is consistent with SVr4 curses; X/Open Curses does not specify
+           this.
+
+       The  X/Open  Curses  extended  conformance  level  adds  new highlights
+       <STRONG>A_HORIZONTAL</STRONG>,  <STRONG>A_LEFT</STRONG>,   <STRONG>A_LOW</STRONG>,   <STRONG>A_RIGHT</STRONG>,   <STRONG>A_TOP</STRONG>,   <STRONG>A_VERTICAL</STRONG>   (and
+       corresponding  <STRONG>WA_</STRONG>  macros  for  each).   As  of  August 2013, no known
+       terminal provides these highlights (i.e., via the <STRONG>sgr1</STRONG> capability).
+
+
 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
        X/Open Curses is largely based  on  SVr4  curses,  adding  support  for
-       "wide-characters"  (not  specific to Unicode).  Some of the X/Open dif-
-       ferences from SVr4 curses address the way video attributes can  be  ap-
-       plied  to  wide-characters.   But aside from that, <STRONG>attrset</STRONG> and <STRONG>attr_set</STRONG>
+       "wide-characters"  (not  specific  to  Unicode).   Some  of  the X/Open
+       differences from SVr4 curses address the way video  attributes  can  be
+       applied  to wide-characters.  But aside from that, <STRONG>attrset</STRONG> and <STRONG>attr_set</STRONG>
        are similar.  SVr4 curses provided the basic features for  manipulating
        video  attributes.  However, earlier versions of curses provided a part
        of these features.
        <STRONG>standout</STRONG>  and  <STRONG>standend</STRONG> which were carried along into X/Open Curses due
        to their pervasive use in legacy applications.
 
-       Some terminals in the 1980s  could  support  a  variety  of  video  at-
-       tributes,  although the BSD curses library could do nothing with those.
-       System V (1983) provided an improved curses library.  It defined the <STRONG>A_</STRONG>
-       symbols  for  use  by  applications to manipulate the other attributes.
-       There are few useful references for the chronology.
+       Some  terminals  in  the  1980s  could  support  a  variety  of   video
+       attributes,  although  the  BSD  curses  library  could do nothing with
+       those.  System V  (1983)  provided  an  improved  curses  library.   It
+       defined  the <STRONG>A_</STRONG> symbols for use by applications to manipulate the other
+       attributes.  There are few useful references for the chronology.
 
        Goodheart's book <EM>UNIX</EM> <EM>Curses</EM> <EM>Explained</EM> (1991)  describes  SVr3  (1987),
        commenting on several functions:
        This  table  showing  the number of bits for <STRONG>A_COLOR</STRONG> and <STRONG>A_CHARTEXT</STRONG> was
        gleaned from the curses header files for various operating systems  and
        architectures.   The inferred architecture and notes reflect the format
-       and size of the defined constants as well as clues such as  the  alter-
-       nate  character  set implementation.  A 32-bit library can be used on a
-       64-bit system, but not necessarily the reverse.
-
-              <STRONG>Year</STRONG>   <STRONG>System</STRONG>        <STRONG>Arch</STRONG>    <STRONG>Color</STRONG>   <STRONG>Char</STRONG>   <STRONG>Notes</STRONG>
-              ----------------------------------------------------------------
-              1992   Solaris 5.2   32      6       17     SVr4 curses
-              1992   HPUX 9        32      no      8      SVr2 curses
-              1992   AIX 3.2       32      no      23     SVr2 curses
-              1994   OSF/1 r3      32      no      23     SVr2 curses
-              1995   HP-UX 10.00   32      6       16     SVr3 "curses_colr"
-              1995   HP-UX 10.00   32      6       8      SVr4, X/Open curses
-              1995   Solaris 5.4   32/64   7       16     X/Open curses
-              1996   AIX 4.2       32      7       16     X/Open curses
-              1996   OSF/1 r4      32      6       16     X/Open curses
-
-              1997   HP-UX 11.00   32      6       8      X/Open curses
-              2000   U/Win         32/64   7/31    16     uses <STRONG>chtype</STRONG>
+       and size of the  defined  constants  as  well  as  clues  such  as  the
+       alternate  character  set implementation.  A 32-bit library can be used
+       on a 64-bit system, but not necessarily the reverse.
+
+                                     <STRONG>Bits</STRONG>
+       <STRONG>Year</STRONG>  <STRONG>System</STRONG>        <STRONG>Arch</STRONG>   <STRONG>Color</STRONG>  <STRONG>Char</STRONG>  <STRONG>Notes</STRONG>
+       ------------------------------------------------------------------------
+       1992  Solaris 5.2   32     6      17    SVr4 <EM>curses</EM>
+       1992  HP-UX 9       32     no     8     SVr2 <EM>curses</EM>
+       1992  AIX 3.2       32     no     23    SVr2 <EM>curses</EM>
+       1994  OSF/1 r3      32     no     23    SVr2 <EM>curses</EM>
+       1995  HP-UX 10.00   32     6      16    SVr3 <EM>curses</EM><STRONG>_</STRONG><EM>colr</EM>
+       1995  HP-UX 10.00   32     6      8     SVr4, X/Open <EM>curses</EM>
+       1995  Solaris 5.4   32/64  7      16    X/Open <EM>curses</EM>
+       1996  AIX 4.2       32     7      16    X/Open <EM>curses</EM>
+       1996  OSF/1 r4      32     6      16    X/Open <EM>curses</EM>
+       1997  HP-UX 11.00   32     6      8     X/Open <EM>curses</EM>
+       2000  U/Win         32/64  7/31   16    uses <EM>chtype</EM>
 
        Notes:
 
 
           Regarding OSF/1 (and Tru64),
 
-          <STRONG>o</STRONG>   These used 64-bit hardware.  Like ncurses, the OSF/1 curses  in-
-              terface is not customized for 32-bit and 64-bit versions.
+          <STRONG>o</STRONG>   These used 64-bit hardware.   Like  <EM>ncurses</EM>,  the  OSF/1  curses
+              interface is not customized for 32-bit and 64-bit versions.
 
-          <STRONG>o</STRONG>   Unlike other systems which evolved from AT&amp;T code, OSF/1 provid-
-              ed a new implementation for X/Open curses.
+          <STRONG>o</STRONG>   Unlike  other  systems  which  evolved  from  AT&amp;T  code,  OSF/1
+              provided a new implementation for X/Open curses.
 
           Regarding Solaris,
 
               Sun's copyright began in 1996.
 
           <STRONG>o</STRONG>   Sun updated the X/Open curses interface after 64-bit support was
-              introduced in 1997, but did not modify the  SVr4  curses  inter-
-              face.
+              introduced  in  1997,  but  did  not  modify  the  SVr4   curses
+              interface.
 
           Regarding U/Win,
 
            modification to make the library 8-bit clean for <STRONG>nvi(1)</STRONG>.  He  moved
            <EM>standout</EM> attribute to a structure member.
 
-           The  resulting  4.4BSD curses was replaced by ncurses over the next
+           The  resulting  4.4BSD curses was replaced by <EM>ncurses</EM> over the next
            ten years.
 
        <STRONG>o</STRONG>   U/Win is rarely used now.
 
 
-</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
-       This implementation provides the <STRONG>A_ITALIC</STRONG> attribute for terminals which
-       have  the  <STRONG>enter_italics_mode</STRONG> (<STRONG>sitm</STRONG>) and <STRONG>exit_italics_mode</STRONG> (<STRONG>ritm</STRONG>) capa-
-       bilities.  Italics are not mentioned in X/Open Curses.  Unlike the oth-
-       er  video attributes, <STRONG>A_ITALIC</STRONG> is unrelated to the <STRONG>set_attributes</STRONG> capa-
-       bilities.  This implementation makes the  assumption  that  <STRONG>exit_attri-</STRONG>
-       <STRONG>bute_mode</STRONG> may also reset italics.
-
-       Each  of  the functions added by XSI Curses has a parameter <EM>opts</EM>, which
-       X/Open Curses still (after more than twenty  years)  documents  as  re-
-       served for future use, saying that it should be <STRONG>NULL</STRONG>.  This implementa-
-       tion uses that parameter in ABI 6 for the functions which have a color-
-       pair parameter to support <EM>extended</EM> <EM>color</EM> <EM>pairs</EM>:
-
-       <STRONG>o</STRONG>   For functions which modify the color, e.g., <STRONG>wattr_set</STRONG> and <STRONG>wattr_on</STRONG>,
-           if <EM>opts</EM> is set it is treated as a pointer to <STRONG>int</STRONG>, and used  to  set
-           the color pair instead of the <STRONG>short</STRONG> <EM>pair</EM> parameter.
-
-       <STRONG>o</STRONG>   For functions which retrieve the color, e.g., <STRONG>wattr_get</STRONG>, if <EM>opts</EM> is
-           set it is treated as a pointer to <STRONG>int</STRONG>, and  used  to  retrieve  the
-           color  pair  as  an <STRONG>int</STRONG> value, in addition to retrieving it via the
-           standard pointer to <STRONG>short</STRONG> parameter.
-
-       <STRONG>o</STRONG>   For functions which turn attributes off, e.g., <STRONG>wattr_off</STRONG>, the  <EM>opts</EM>
-           parameter is ignored except except to check that it is <STRONG>NULL</STRONG>.
-
-
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are supported in the XSI Curses standard, Issue 4.  The
-       standard defined the dedicated type for highlights, <STRONG>attr_t</STRONG>,  which  was
-       not defined in SVr4 curses.  The functions taking <STRONG>attr_t</STRONG> arguments were
-       not supported under SVr4.
-
-       Very old versions of this library did not force an update of the screen
-       when  changing  the  attributes.   Use  <STRONG>touchwin</STRONG> to force the screen to
-       match the updated attributes.
-
-       The XSI Curses standard states that whether the  traditional  functions
-       <STRONG>attron</STRONG>/<STRONG>attroff</STRONG>/<STRONG>attrset</STRONG>  can  manipulate  attributes other than <STRONG>A_BLINK</STRONG>,
-       <STRONG>A_BOLD</STRONG>, <STRONG>A_DIM</STRONG>, <STRONG>A_REVERSE</STRONG>, <STRONG>A_STANDOUT</STRONG>, or <STRONG>A_UNDERLINE</STRONG> is  "unspecified".
-       Under  this implementation as well as SVr4 curses, these functions cor-
-       rectly manipulate all  other  highlights  (specifically,  <STRONG>A_ALTCHARSET</STRONG>,
-       <STRONG>A_PROTECT</STRONG>, and <STRONG>A_INVIS</STRONG>).
-
-       XSI Curses added these entry points:
-
-              <STRONG>attr_get</STRONG>, <STRONG>attr_on</STRONG>, <STRONG>attr_off</STRONG>, <STRONG>attr_set</STRONG>, <STRONG>wattr_on</STRONG>, <STRONG>wattr_off</STRONG>, <STRONG>wat-</STRONG>
-              <STRONG>tr_get</STRONG>, <STRONG>wattr_set</STRONG>
-
-       The new functions are intended to work with a new series  of  highlight
-       macros prefixed with <STRONG>WA_</STRONG>.  The older macros have direct counterparts in
-       the newer set of names:
-
-              <STRONG>Name</STRONG>            <STRONG>Description</STRONG>
-              ------------------------------------------------------------
-              <STRONG>WA_NORMAL</STRONG>       Normal display (no highlight)
-              <STRONG>WA_STANDOUT</STRONG>     Best highlighting mode of the terminal.
-              <STRONG>WA_UNDERLINE</STRONG>    Underlining
-              <STRONG>WA_REVERSE</STRONG>      Reverse video
-              <STRONG>WA_BLINK</STRONG>        Blinking
-              <STRONG>WA_DIM</STRONG>          Half bright
-              <STRONG>WA_BOLD</STRONG>         Extra bright or bold
-              <STRONG>WA_ALTCHARSET</STRONG>   Alternate character set
-
-       XSI curses does not assign values to these symbols, nor does  it  state
-       whether or not they are related to the similarly-named A_NORMAL, etc.:
-
-       <STRONG>o</STRONG>   The  XSI  curses standard specifies that each pair of corresponding
-           <STRONG>A_</STRONG> and <STRONG>WA_</STRONG>-using functions operates on the  same  current-highlight
-           information.
-
-       <STRONG>o</STRONG>   However, in some implementations, those symbols have unrelated val-
-           ues.
-
-           For example, the Solaris <EM>xpg4</EM> (X/Open) curses declares <STRONG>attr_t</STRONG> to be
-           an unsigned short integer (16-bits), while <STRONG>chtype</STRONG> is a unsigned in-
-           teger (32-bits).  The <STRONG>WA_</STRONG> symbols in this case are  different  from
-           the  <STRONG>A_</STRONG>  symbols because they are used for a smaller datatype which
-           does not represent <STRONG>A_CHARTEXT</STRONG> or <STRONG>A_COLOR</STRONG>.
-
-           In this implementation (as in many others), the values happen to be
-           the  same  because it simplifies copying information between <STRONG>chtype</STRONG>
-           and <STRONG>cchar_t</STRONG> variables.
-
-       <STRONG>o</STRONG>   Because ncurses's <STRONG>attr_t</STRONG> can hold a  color  pair  (in  the  <STRONG>A_COLOR</STRONG>
-           field),  a  call to <STRONG>wattr_on</STRONG>, <STRONG>wattr_off</STRONG>, or <STRONG>wattr_set</STRONG> may alter the
-           window's color.  If the color pair information in the attribute pa-
-           rameter is zero, no change is made to the window's color.
-
-           This is consistent with SVr4 curses; X/Open Curses does not specify
-           this.
-
-       The XSI standard extended conformance level adds new highlights <STRONG>A_HORI-</STRONG>
-       <STRONG>ZONTAL</STRONG>,  <STRONG>A_LEFT</STRONG>,  <STRONG>A_LOW</STRONG>,  <STRONG>A_RIGHT</STRONG>, <STRONG>A_TOP</STRONG>, <STRONG>A_VERTICAL</STRONG> (and corresponding
-       <STRONG>WA_</STRONG> macros for each).  As of August 2013, no  known  terminal  provides
-       these highlights (i.e., via the <STRONG>sgr1</STRONG> capability).
-
-
-</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All routines return the integer <STRONG>OK</STRONG> on success, or <STRONG>ERR</STRONG> on failure.
-
-       X/Open does not define any error conditions.
-
-       This implementation
-
-       <STRONG>o</STRONG>   returns an error if the window pointer is null.
-
-       <STRONG>o</STRONG>   returns an error if the color pair parameter for <STRONG>wcolor_set</STRONG> is out-
-           side the range 0..COLOR_PAIRS-1.
-
-       <STRONG>o</STRONG>   does not return an error if either of the parameters  of  <STRONG>wattr_get</STRONG>
-           used for retrieving attribute or color-pair values is <STRONG>NULL</STRONG>.
-
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
-
-
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>, <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>,
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,     <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>,     <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>,     <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>,
        <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                                 <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-27                     <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-Window-attributes">Window attributes</a></li>
-<li><a href="#h3-Legacy-window-attributes">Legacy window attributes</a></li>
-<li><a href="#h3-Change-character-rendition">Change character rendition</a></li>
-<li><a href="#h3-Change-window-color">Change window color</a></li>
+<li><a href="#h3-Window-Attributes">Window Attributes</a></li>
+<li><a href="#h3-Legacy-Window-Attributes">Legacy Window Attributes</a></li>
+<li><a href="#h3-Change-Character-Rendition">Change Character Rendition</a></li>
+<li><a href="#h3-Change-Window-Color">Change Window Color</a></li>
 <li><a href="#h3-Standout">Standout</a></li>
+<li><a href="#h3-Video-Attributes">Video Attributes</a></li>
 </ul>
 </li>
-<li><a href="#h2-VIDEO-ATTRIBUTES">VIDEO ATTRIBUTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
-<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 0db95efa2d6b5e7d5ac465b7c3e1b5d89809a962..e3d6c81786dbbcb05b035622edbc7723852052fb 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2005,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_beep.3x,v 1.16 2021/12/25 21:41:58 tom Exp @
+  * @Id: curs_beep.3x,v 1.29 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_beep 3x</TITLE>
+<TITLE>curs_beep 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_beep 3x</H1>
+<H1 class="no-header">curs_beep 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>                                                    <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
+<STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>beep</STRONG>, <STRONG>flash</STRONG> - <STRONG>curses</STRONG> bell and screen flash routines
+       <STRONG>beep</STRONG>, <STRONG>flash</STRONG> - ring the (visual) bell of the terminal with <EM>curses</EM>
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -77,8 +77,8 @@
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the  XSI  Curses  standard,  Issue  4.
-       Like SVr4, it specifies that they always return <STRONG>OK</STRONG>.
+       These functions are described in X/Open Curses, Issue 4.  Like SVr4, it
+       specifies that they always return <STRONG>OK</STRONG>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
@@ -86,7 +86,7 @@
 
 
 
-                                                                 <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                     <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index d4a6a1d4c4bbde12219f1a931c8f3f9b3b5cb52b..47d2e13b829fb69e130c89ce4c578f0747acca86 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_bkgd.3x,v 1.35 2022/06/25 21:55:45 tom Exp @
+  * @Id: curs_bkgd.3x,v 1.61 2024/04/20 18:54:36 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_bkgd 3x</TITLE>
+<TITLE>curs_bkgd 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_bkgd 3x</H1>
+<H1 class="no-header">curs_bkgd 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>                                                    <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
+<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>bkgdset</STRONG>,  <STRONG>wbkgdset</STRONG>,  <STRONG>bkgd</STRONG>,  <STRONG>wbkgd</STRONG>,  <STRONG>getbkgd</STRONG>  - <STRONG>curses</STRONG> window background
-       manipulation routines
+       <STRONG>bkgdset</STRONG>,  <STRONG>wbkgdset</STRONG>,  <STRONG>bkgd</STRONG>,  <STRONG>wbkgd</STRONG>, <STRONG>getbkgd</STRONG> - manipulate background of a
+       <EM>curses</EM> window of characters
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>void</STRONG> <STRONG>bkgdset(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
-       <STRONG>void</STRONG> <STRONG>wbkgdset(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>chtype</EM> <EM>ch</EM><STRONG>);</STRONG>
-
        <STRONG>int</STRONG> <STRONG>bkgd(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wbkgd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
 
+       <STRONG>void</STRONG> <STRONG>bkgdset(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>wbkgdset(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+
        <STRONG>chtype</STRONG> <STRONG>getbkgd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       The  <EM>background</EM>  of  a  <EM>curses</EM>  window  (in  the  library's  non-"wide"
+       configuration)   is  a  <EM>chtype</EM>  combining  a  set  of  attributes  (see
+       <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>) with a character called the <EM>blank</EM> <EM>character.</EM>
 
-</PRE><H3><a name="h3-bkgdset">bkgdset</a></H3><PRE>
-       The <STRONG>bkgdset</STRONG> and <STRONG>wbkgdset</STRONG> routines set the <EM>background</EM> for a  window.   A
-       window's  background  is  a  <STRONG>chtype</STRONG>  consisting  of  any combination of
-       attributes (i.e., rendition) and a character:
-
-       <STRONG>o</STRONG>   The attribute part of the background is combined (OR'ed)  with  all
-           non-blank characters that are written into the window with <STRONG>waddch</STRONG>.
-
-       <STRONG>o</STRONG>   Both  the  character  and  attribute  parts  of  the background are
-           combined with blank characters that are written into the window.
-
-       The background becomes a property of each character and moves with  the
-       character   through  any  scrolling  and  insert/delete  line/character
-       operations.
-
-       To the extent possible on a particular terminal, the attribute part  of
-       the  background  is displayed as the graphic rendition of the character
-       put on the screen.
-
+       The blank character is a spacing character that  populates  a  window's
+       character  cells  when  their  contents are erased without replacement.
+       The background's attributes are combined with all non-blank  characters
+       written  to  the window, as with the <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG> and <STRONG><A HREF="curs_insch.3x.html">winsch(3x)</A></STRONG> families
+       of functions.
 
-</PRE><H3><a name="h3-bkgd">bkgd</a></H3><PRE>
-       The <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> functions set the background property of the current
-       or  specified  window  and  then  apply this setting to every character
-       position in that window.  According to  X/Open  Curses,  it  should  do
-       this:
+       The blank character and  attributes  of  the  background  combine  with
+       characters  written  to  the window as described below.  The background
+       becomes a property of the character  and  moves  with  it  through  any
+       scrolling and insert/delete line/character operations.
 
-       <STRONG>o</STRONG>   The  rendition  of  every character on the screen is changed to the
-           new background rendition.
+       To  the  extent possible on a given terminal, the attribute part of the
+       background is displayed as the graphic rendition of the  character  put
+       on the screen.
 
-       <STRONG>o</STRONG>   Wherever the former background character appears, it is changed  to
-           the new background character.
 
-       Neither  X/Open Curses nor the SVr4 manual pages give details about the
-       way the rendition of characters on the screen is updated when  <STRONG>bkgd</STRONG>  or
-       <STRONG>wbkgd</STRONG> is used to change the background character.
+</PRE><H3><a name="h3-bkgd_wbkgd">bkgd, wbkgd</a></H3><PRE>
+       <STRONG>bkgd</STRONG>  and  <STRONG>wbkgd</STRONG> set the background property of <STRONG>stdscr</STRONG> or the specified
+       window and then apply this setting to  every  character  cell  in  that
+       window.
 
-       This  implementation,  like  SVr4 curses, does not store the background
-       and window attribute contributions to each cell separately.  It updates
-       the  rendition  by  comparing  the  character, non-color attributes and
-       colors contained in the background.   For  each  cell  in  the  window,
-       whether or not it is blank:
+       <STRONG>o</STRONG>   The  rendition  of every character in the window changes to the new
+           background rendition.
 
-       <STRONG>o</STRONG>   The  library  first  compares  the <EM>character</EM>, and if it matches the
-           current character part of the background, it replaces that with the
+       <STRONG>o</STRONG>   Wherever the former background character appears, it changes to the
            new background character.
 
-           When <STRONG>bkgdset</STRONG> is used to set the background character, that does not
-           update each cell in the window.  A subsequent  call  to  <STRONG>bkgd</STRONG>  will
-           only  modify  the  <EM>character</EM>  in  cells  which  match  the  current
-           background character.
+       <EM>ncurses</EM>  updates  the rendition of each character cell by comparing the
+       character, non-color attributes, and colors.  The  library  applies  to
+       following  procedure  to  each cell in the window, whether or not it is
+       blank.
 
-       <STRONG>o</STRONG>   The library then checks if the cell uses  color,  i.e.,  its  color
-           pair  value  is nonzero.  If not, it simply replaces the attributes
-           and color pair in the cell  with  those  from  the  new  background
+       <STRONG>o</STRONG>   <EM>ncurses</EM> first compares  the  cell's  character  to  the  previously
+           specified  blank  character;  if they match, <EM>ncurses</EM> writes the new
+           blank character to the cell.
+
+       <STRONG>o</STRONG>   <EM>ncurses</EM> then checks if the cell uses color, that is, its color pair
+           value  is  nonzero.   If not, it simply replaces the attributes and
+           color  pair  in  the  cell  with  those  from  the  new  background
            character.
 
-       <STRONG>o</STRONG>   If  the  cell uses color, and that matches the color in the current
-           background, the library removes attributes which may have come from
-           the current background and adds attributes from the new background.
-           It finishes by setting the cell to  use  the  color  from  the  new
-           background.
+       <STRONG>o</STRONG>   If  the  cell  uses color, and its background color matches that of
+           the current window background, <EM>ncurses</EM> removes attributes that  may
+           have  come  from the current background and adds those from the new
+           background.  It finishes by setting the cell's  background  to  use
+           the new window background color.
 
-       <STRONG>o</STRONG>   If  the  cell  uses color, and that does not match the color in the
-           current  background,  the  library  updates  only   the   non-color
-           attributes,  first  removing  those  which  may  have come from the
-           current  background,  and  then  adding  attributes  from  the  new
+       <STRONG>o</STRONG>   If  the  cell  uses  color, and its background color does not match
+           that of the current window background,  <EM>ncurses</EM>  updates  only  the
+           non-color  attributes, first removing those that may have come from
+           the current background, and then adding  attributes  from  the  new
            background.
 
-       If the background's character value is zero (0), a space is assumed.
+       <EM>ncurses</EM>  treats  a  background  character  value of zero (0) as a blank
+       character.
+
+       If the terminal does not support  color,  or  if  color  has  not  been
+       initialized  with  <STRONG><A HREF="curs_color.3x.html">start_color(3x)</A></STRONG>,  <EM>ncurses</EM> ignores the new background
+       character's color attribute.
+
 
-       If  the  terminal  does  not  support  color,  or if color has not been
-       started  with  <STRONG>start_color</STRONG>,  the  new  background   character's   color
-       attribute will be ignored.
+</PRE><H3><a name="h3-bkgdset_wbkgdset">bkgdset, wbkgdset</a></H3><PRE>
+       <STRONG>bkgdset</STRONG> and  <STRONG>wbkgdset</STRONG>  manipulate  the  background  of  the  applicable
+       window, without updating the character cells as <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> do; only
+       future writes reflect the updated background.
 
 
 </PRE><H3><a name="h3-getbkgd">getbkgd</a></H3><PRE>
-       The  <STRONG>getbkgd</STRONG>  function  returns  the  given window's current background
-       character/attribute pair.
+       <STRONG>getbkgd</STRONG> obtains the given window's background character  and  attribute
+       combination.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.   It
-       specifies  that  <STRONG>bkgd</STRONG>  and  <STRONG>wbkgd</STRONG>  return  <STRONG>ERR</STRONG> on failure, but gives no
-       failure conditions.
+       Functions  returning  an <EM>int</EM> return <STRONG>OK</STRONG> on success.  <STRONG>bkgd</STRONG> returns <STRONG>ERR</STRONG> if
+       the library has not been initialized.  <STRONG>wbkgd</STRONG> and <STRONG>getbkgd</STRONG> return <STRONG>ERR</STRONG>  if
+       a <EM>WINDOW</EM> pointer argument is null.
 
-       The routines <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> return the integer <STRONG>OK</STRONG>, unless  the  library
-       has not been initialized.
+       <STRONG>bkgdset</STRONG> and <STRONG>wbkgdset</STRONG> do not return a value.
 
-       In  contrast, the SVr4.0 manual says <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> may return <STRONG>OK</STRONG> "or a
-       non-negative integer if <STRONG>immedok</STRONG> is set", which  refers  to  the  return
-       value  from <STRONG>wrefresh</STRONG> (used to implement the immediate repainting).  The
-       SVr4 curses <STRONG>wrefresh</STRONG> returns the number of characters  written  to  the
-       screen during the refresh.  This implementation does not do that.
+       <STRONG>getbkgd</STRONG>   returns   a   window's  background  character  and  attribute
+       combination.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>bkgdset</STRONG> and <STRONG>bkgd</STRONG> may be macros.
+       Unusually, there is no <STRONG>wgetbkgd</STRONG> function; <STRONG>getbkgd</STRONG> behaves as one  would
+       expect <STRONG>wgetbkgd</STRONG> to, accepting a <EM>WINDOW</EM> pointer argument.
+
+       <STRONG>bkgd</STRONG> and <STRONG>bkgdset</STRONG> may be implemented as macros.
 
        X/Open  Curses  mentions that the character part of the background must
-       be a single-byte value.  This  implementation,  like  SVr4,  checks  to
-       ensure  that,  and will reuse the old background character if the check
-       fails.
+       be a single-byte value.  <EM>ncurses</EM>, like SVr4 <EM>curses</EM>,  checks  to  ensure
+       that, and will reuse the old background character if the check fails.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in  the  XSI  Curses  standard,  Issue  4
-       (X/Open Curses).
+       X/Open  Curses,  Issue  4 describes these functions.  It specifies that
+       <STRONG>bkgd</STRONG>, <STRONG>wbkgd</STRONG>, and <STRONG>getbkgd</STRONG> return <STRONG>ERR</STRONG> on failure  (in  the  case  of  the
+       last,  this  value  is  cast  to  <EM>chtype</EM>),  but  describes  no  failure
+       conditions.
+
+       The SVr4.0 manual says that <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> may return  <STRONG>OK</STRONG>  "or  a  non-
+       negative  integer  if <STRONG>immedok</STRONG> is set", which refers to the return value
+       from <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG>, used to implement the  immediate  repainting.   SVr4
+       <EM>curses</EM>'s  <STRONG>wrefresh</STRONG>  returns  the  number  of  characters written to the
+       screen during the refresh.  <EM>ncurses</EM> does not do that.
+
+       Neither X/Open  Curses  nor  the  SVr4  manual  pages  detail  how  the
+       rendition  of  characters  on  the  screen  updates  when <STRONG>bkgd</STRONG> or <STRONG>wbkgd</STRONG>
+       changes the background character.  <EM>ncurses</EM>, like SVr4 <EM>curses</EM>, does  not
+       (in  its  non-"wide"  configuration)  store  the  background and window
+       attribute contributions to each character cell separately.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
+       <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> describes the corresponding  functions  in  the  "wide"
+       configuration of <EM>ncurses</EM>.
+
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
 
 
 
-                                                                 <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                     <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-bkgdset">bkgdset</a></li>
-<li><a href="#h3-bkgd">bkgd</a></li>
+<li><a href="#h3-bkgd_wbkgd">bkgd, wbkgd</a></li>
+<li><a href="#h3-bkgdset_wbkgdset">bkgdset, wbkgdset</a></li>
 <li><a href="#h3-getbkgd">getbkgd</a></li>
 </ul>
 </li>
index 87b126cbbaeff29184419f2b77a804547a964b90..a11a68c57a7bf34c675eda55a466cb0273eb9bbf 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_bkgrnd.3x,v 1.16 2022/06/25 21:57:59 tom Exp @
+  * @Id: curs_bkgrnd.3x,v 1.42 2024/04/20 18:54:36 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_bkgrnd 3x</TITLE>
+<TITLE>curs_bkgrnd 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_bkgrnd 3x</H1>
+<H1 class="no-header">curs_bkgrnd 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>                                                <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
+<STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>bkgrnd</STRONG>,  <STRONG>wbkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, <STRONG>wbkgrndset</STRONG>, <STRONG>getbkgrnd</STRONG>, <STRONG>wgetbkgrnd</STRONG> - <STRONG>curses</STRONG>
-       window complex background manipulation routines
+       <STRONG>bkgrnd</STRONG>,   <STRONG>wbkgrnd</STRONG>,   <STRONG>bkgrndset</STRONG>,  <STRONG>wbkgrndset</STRONG>,  <STRONG>getbkgrnd</STRONG>,  <STRONG>wgetbkgrnd</STRONG>  -
+       manipulate background of a <EM>curses</EM> window of wide characters
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>bkgrnd(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wbkgrnd(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>bkgrnd(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wbkgrnd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
-       <STRONG>void</STRONG> <STRONG>bkgrndset(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>bkgrndset(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
        <STRONG>void</STRONG> <STRONG>wbkgrndset(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>getbkgrnd(cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       The  <EM>background</EM>  of  a  <EM>curses</EM>  window   (in   the   library's   "wide"
+       configuration)  is  a  <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>  combining  a  set  of  attributes  (see
+       <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>) with a complex character called the <EM>blank</EM> <EM>character.</EM>
 
-</PRE><H3><a name="h3-bkgrndset">bkgrndset</a></H3><PRE>
-       The <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> routines manipulate the background of  the
-       named  window.   The  window  background is a <STRONG>cchar_t</STRONG> consisting of any
-       combination of attributes (i.e., rendition) and a complex character.
+       The blank character is a spacing character that  populates  a  window's
+       character  cells  when  their  contents are erased without replacement.
+       The background's attributes are combined with all non-blank  characters
+       written  to  the  window,  as  with  the  <STRONG><A HREF="curs_add_wch.3x.html">wadd_wch(3x)</A></STRONG> and <STRONG><A HREF="curs_ins_wch.3x.html">wins_wch(3x)</A></STRONG>
+       families of functions.
 
-       <STRONG>o</STRONG>   The attribute part of the background is combined (OR'ed)  with  all
-           non-blank characters that are written into the window with <STRONG>waddch</STRONG>.
+       The blank character and  attributes  of  the  background  combine  with
+       characters  written  to  the window as described below.  The background
+       becomes a property of the character  and  moves  with  it  through  any
+       scrolling and insert/delete line/character operations.
 
-       <STRONG>o</STRONG>   Both  the  character  and  attribute  parts  of  the background are
-           combined with the blank characters.
+       To  the  extent possible on a given terminal, the attribute part of the
+       background is displayed as the graphic rendition of the  character  put
+       on the screen.
 
-       The background becomes a property of the character and moves  with  the
-       character   through  any  scrolling  and  insert/delete  line/character
-       operations.
 
-       To the extent possible on a particular terminal, the attribute part  of
-       the  background  is displayed as the graphic rendition of the character
-       put on the screen.
+</PRE><H3><a name="h3-bkgrnd_wbkgrnd">bkgrnd, wbkgrnd</a></H3><PRE>
+       <STRONG>bkgrnd</STRONG>  and  <STRONG>wbkgrnd</STRONG>  set  the  background  property  of  <STRONG>stdscr</STRONG> or the
+       specified window and then apply this setting to every character cell in
+       that window.
 
+       <STRONG>o</STRONG>   The  rendition  of every character in the window changes to the new
+           background rendition.
 
-</PRE><H3><a name="h3-bkgrnd">bkgrnd</a></H3><PRE>
-       The <STRONG>bkgrnd</STRONG> and <STRONG>wbkgrnd</STRONG> functions set the  background  property  of  the
-       current  or  specified  window  and  then  apply  this setting to every
-       character position in that window:
+       <STRONG>o</STRONG>   Wherever the former background character appears, it changes to the
+           new background character.
 
-       <STRONG>o</STRONG>   The rendition of every character on the screen is  changed  to  the
-           new background rendition.
+       <EM>ncurses</EM>  updates  the rendition of each character cell by comparing the
+       character, non-color attributes, and colors.  The  library  applies  to
+       following  procedure  to  each cell in the window, whether or not it is
+       blank.
 
-       <STRONG>o</STRONG>   Wherever  the former background character appears, it is changed to
-           the new background character.
+       <STRONG>o</STRONG>   <EM>ncurses</EM> first compares  the  cell's  character  to  the  previously
+           specified  blank  character;  if they match, <EM>ncurses</EM> writes the new
+           blank character to the cell.
 
+       <STRONG>o</STRONG>   <EM>ncurses</EM> then checks if the cell uses color, that is, its color pair
+           value  is  nonzero.   If not, it simply replaces the attributes and
+           color  pair  in  the  cell  with  those  from  the  new  background
+           character.
 
-</PRE><H3><a name="h3-getbkgrnd">getbkgrnd</a></H3><PRE>
-       The <STRONG>getbkgrnd</STRONG> function returns the given  window's  current  background
-       character/attribute  pair  via  the  <STRONG>wch</STRONG>  pointer.  If the given window
-       pointer is null, the character is not updated (but no error returned).
+       <STRONG>o</STRONG>   If  the  cell  uses color, and its background color matches that of
+           the current window background, <EM>ncurses</EM> removes attributes that  may
+           have  come  from the current background and adds those from the new
+           background.  It finishes by setting the cell's  background  to  use
+           the new window background color.
 
+       <STRONG>o</STRONG>   If  the  cell  uses  color, and its background color does not match
+           that of the current window background,  <EM>ncurses</EM>  updates  only  the
+           non-color  attributes, first removing those that may have come from
+           the current background, and then adding  attributes  from  the  new
+           background.
 
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>bkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, and <STRONG>getbkgrnd</STRONG> may be macros.
+       <EM>ncurses</EM>  treats  a  background  character  value of zero (0) as a blank
+       character.
+
+       If the terminal does not support  color,  or  if  color  has  not  been
+       initialized  with  <STRONG><A HREF="curs_color.3x.html">start_color(3x)</A></STRONG>,  <EM>ncurses</EM> ignores the new background
+       character's color attribute.
+
+
+</PRE><H3><a name="h3-bkgrndset_wbkgrndset">bkgrndset, wbkgrndset</a></H3><PRE>
+       <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> manipulate the background  of  the  applicable
+       window,  without updating the character cells as <STRONG>bkgrnd</STRONG> and <STRONG>wbkgrnd</STRONG> do;
+       only future writes reflect the updated background.
 
-       X/Open Curses does not provide details on how the rendition is changed.
-       This  implementation follows the approach used in SVr4 curses, which is
-       explained in the manual page for <STRONG>wbkgd</STRONG>.
+
+</PRE><H3><a name="h3-getbkgrnd_wgetbkgrnd">getbkgrnd, wgetbkgrnd</a></H3><PRE>
+       The <STRONG>getbkgrnd</STRONG> and <STRONG>wgetbkgrnd</STRONG> functions obtain the background  character
+       and  attribute  pair of <STRONG>stdscr</STRONG> or the specified window and store it via
+       the <EM>wch</EM> pointer.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       The <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> routines do not return a value.
+       <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> do not return a value.
+
+       The other functions return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>  upon  success.   In
+       <EM>ncurses</EM>, failure occurs if
 
-       Upon successful completion, the other functions return <STRONG>OK</STRONG>.   Otherwise,
-       they return <STRONG>ERR</STRONG>:
+       <STRONG>o</STRONG>   a <EM>WINDOW</EM> pointer <EM>win</EM> is null, or
 
-       <STRONG>o</STRONG>   A null window pointer is treated as an error.
+       <STRONG>o</STRONG>   a <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> pointer <EM>wch</EM> is null.
 
-       <STRONG>o</STRONG>   A null character pointer is treated as an error.
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       <STRONG>bkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, and <STRONG>getbkgrnd</STRONG> may be implemented as macros.
+
+       Unlike  their  counterparts in the non-"wide" configuration of <EM>ncurses</EM>,
+       <STRONG>getbkgrnd</STRONG> and <STRONG>wgetbkgrnd</STRONG> supply the background character and  attribute
+       in a modifiable <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM> parameter, not as the return value.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  functions  are  described  in  the  XSI Curses standard, Issue 4
-       (X/Open Curses).
+       X/Open  Curses,  Issue  4  describes  these functions.  It specifies no
+       error conditions for them.
+
+       X/Open Curses does not provide details of how the rendition is updated.
+       This implementation follows the approach used in SVr4 <EM>curses</EM>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
+       <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>  describes  the corresponding functions in the non-"wide"
+       configuration of <EM>ncurses</EM>.
 
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
 
 
-                                                               <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
+
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-bkgrndset">bkgrndset</a></li>
-<li><a href="#h3-bkgrnd">bkgrnd</a></li>
-<li><a href="#h3-getbkgrnd">getbkgrnd</a></li>
+<li><a href="#h3-bkgrnd_wbkgrnd">bkgrnd, wbkgrnd</a></li>
+<li><a href="#h3-bkgrndset_wbkgrndset">bkgrndset, wbkgrndset</a></li>
+<li><a href="#h3-getbkgrnd_wgetbkgrnd">getbkgrnd, wgetbkgrnd</a></li>
 </ul>
 </li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
index abb2a4e6329eb1327be16ac42099984f065f2bf3..d310dad798caf9230507c0596a777eb72a5f43ef 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2007,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_border.3x,v 1.30 2022/02/12 20:06:41 tom Exp @
+  * @Id: curs_border.3x,v 1.49 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_border 3x</TITLE>
+<TITLE>curs_border 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_border 3x</H1>
+<H1 class="no-header">curs_border 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>                                                <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+<STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>border</STRONG>, <STRONG>wborder</STRONG>, <STRONG>box</STRONG>, <STRONG>hline</STRONG>, <STRONG>whline</STRONG>, <STRONG>vline</STRONG>, <STRONG>wvline</STRONG>, <STRONG>mvhline</STRONG>, <STRONG>mvwhline</STRONG>,
-       <STRONG>mvvline</STRONG>, <STRONG>mvwvline</STRONG> - create <STRONG>curses</STRONG> borders, horizontal and vertical
-       lines
+       <STRONG>border</STRONG>,  <STRONG>wborder</STRONG>, <STRONG>box</STRONG>, <STRONG>hline</STRONG>, <STRONG>whline</STRONG>, <STRONG>vline</STRONG>, <STRONG>wvline</STRONG>, <STRONG>mvhline</STRONG>, <STRONG>mvwhline</STRONG>,
+       <STRONG>mvvline</STRONG>, <STRONG>mvwvline</STRONG> - draw borders  and  lines  in  a  <EM>curses</EM>  window  of
+       characters
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -76,8 +76,8 @@
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  <STRONG>border</STRONG>,  <STRONG>wborder</STRONG> and <STRONG>box</STRONG> routines draw a box around the edges of a
-       window.  Other than the window, each argument is a character  with  at-
-       tributes:
+       window.  Other than the window,  each  argument  is  a  character  with
+       attributes:
 
               <EM>ls</EM> - left side,
               <EM>rs</EM> - right side,
@@ -88,8 +88,8 @@
               <EM>bl</EM> - bottom left-hand corner, and
               <EM>br</EM> - bottom right-hand corner.
 
-       If  any of these arguments is zero, then the corresponding default val-
-       ues (defined in <STRONG>curses.h</STRONG>) are used instead:
+       If  any  of  these  arguments  is  zero, then the corresponding default
+       values (defined in <STRONG>curses.h</STRONG>) are used instead:
 
               <STRONG>ACS_VLINE</STRONG>,
               <STRONG>ACS_VLINE</STRONG>,
               <STRONG>ACS_LLCORNER</STRONG>,
               <STRONG>ACS_LRCORNER</STRONG>.
 
-       <STRONG>box(</STRONG><EM>win</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>)</STRONG> is a shorthand for  the  following  call:  <STRONG>wbor-</STRONG>
-       <STRONG>der(</STRONG><EM>win</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>,</STRONG> <STRONG>0,</STRONG> <STRONG>0,</STRONG> <STRONG>0,</STRONG> <STRONG>0)</STRONG>.
+       <STRONG>box(</STRONG><EM>win</EM><STRONG>,</STRONG>  <EM>verch</EM><STRONG>,</STRONG>  <EM>horch</EM><STRONG>)</STRONG>  is  a  shorthand  for  the  following   call:
+       <STRONG>wborder(</STRONG><EM>win</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>,</STRONG> <STRONG>0,</STRONG> <STRONG>0,</STRONG> <STRONG>0,</STRONG> <STRONG>0)</STRONG>.
 
        The  <STRONG>hline</STRONG>  and <STRONG>whline</STRONG> functions draw a horizontal (left to right) line
        using <EM>ch</EM> starting at the current cursor position in  the  window.   The
-       current  cursor position is not changed.  The line is at most <EM>n</EM> charac-
-       ters long, or as many as fit into the window.
+       current  cursor  position  is  not  changed.   The  line  is  at most <EM>n</EM>
+       characters long, or as many as fit into the window.
 
-       The <STRONG>vline</STRONG> and <STRONG>wvline</STRONG> functions draw a vertical (top to bottom) line us-
-       ing <EM>ch</EM> starting at the current cursor position in the window.  The cur-
-       rent cursor position is not changed.  The line is at most <EM>n</EM>  characters
-       long, or as many as fit into the window.
+       The <STRONG>vline</STRONG> and <STRONG>wvline</STRONG> functions draw a vertical  (top  to  bottom)  line
+       using  <EM>ch</EM>  starting  at the current cursor position in the window.  The
+       current cursor position  is  not  changed.   The  line  is  at  most  <EM>n</EM>
+       characters long, or as many as fit into the window.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All  routines return the integer <STRONG>OK</STRONG>.  The SVr4.0 manual says "or a non-
        negative integer if <STRONG>immedok</STRONG> is set", but this appears to be an error.
 
-       X/Open does not define any error conditions.  This  implementation  re-
-       turns an error if the window pointer is null.
+       X/Open  Curses  does  not   specify   any   error   conditions.    This
+       implementation returns an error if the window pointer is null.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  borders  generated  by these functions are <EM>inside</EM> borders (this is
+       The borders generated by these functions are <EM>inside</EM>  borders  (this  is
        also true of SVr4 curses, though the fact is not documented).
 
        Note that <STRONG>border</STRONG> and <STRONG>box</STRONG> may be macros.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.  The
-       standard  specifies  that  they return <STRONG>ERR</STRONG> on failure, but specifies no
-       error conditions.
+       These functions are described in X/Open Curses, Issue 4.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 589342aef9e958f1cbc9d86c287268935e2b5be4..e687aa68a87ad33bf7516a69b1a8c343676a981a 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2011,2012 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_border_set.3x,v 1.16 2022/02/12 20:06:41 tom Exp @
+  * @Id: curs_border_set.3x,v 1.36 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_border_set 3x</TITLE>
+<TITLE>curs_border_set 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_border_set 3x</H1>
+<H1 class="no-header">curs_border_set 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>                                        <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+<STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>              Library calls             <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>border_set</STRONG>, <STRONG>wborder_set</STRONG>, <STRONG>box_set</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>whline_set</STRONG>, <STRONG>mvhline_set</STRONG>,
-       <STRONG>mvwhline_set</STRONG>, <STRONG>vline_set</STRONG>, <STRONG>wvline_set</STRONG>, <STRONG>mvvline_set</STRONG>, <STRONG>mvwvline_set</STRONG> - create
-       <STRONG>curses</STRONG> borders or lines using complex characters and renditions
+       <STRONG>border_set</STRONG>,  <STRONG>wborder_set</STRONG>,  <STRONG>box_set</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>whline_set</STRONG>, <STRONG>mvhline_set</STRONG>,
+       <STRONG>mvwhline_set</STRONG>, <STRONG>vline_set</STRONG>, <STRONG>wvline_set</STRONG>, <STRONG>mvvline_set</STRONG>, <STRONG>mvwvline_set</STRONG>  -  draw
+       borders and lines in a <EM>curses</EM> window of wide characters
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>border_set(</STRONG>
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ls</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>rs</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ts</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bs</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tl</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tr</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bl</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>br</EM> <STRONG>);</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ls</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>rs</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ts</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bs</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tl</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tr</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bl</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>br</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wborder_set(</STRONG>
-          <STRONG>WINDOW</STRONG> <STRONG>*win</STRONG>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ls</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>rs</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ts</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bs</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tl</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tr</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bl</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>br</EM><STRONG>);</STRONG>
+          <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ls</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>rs</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ts</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bs</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tl</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tr</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bl</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>br</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>box_set(</STRONG>
-          <STRONG>WINDOW</STRONG> <STRONG>*win</STRONG>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>verch</EM>,
+          <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>verch</EM><STRONG>,</STRONG>
           <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>horch</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>hline_set(</STRONG>
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>whline_set(</STRONG>
-          <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+          <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvhline_set(</STRONG>
-          <STRONG>int</STRONG> <EM>y</EM>, <STRONG>int</STRONG> <EM>x</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+          <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwhline_set(</STRONG>
-          <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM>,
-          <STRONG>int</STRONG> <EM>y</EM>, <STRONG>int</STRONG> <EM>x</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+          <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG>
+          <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>vline_set(</STRONG>
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wvline_set(</STRONG>
-          <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+          <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvvline_set(</STRONG>
-          <STRONG>int</STRONG> <EM>y</EM>, <STRONG>int</STRONG> <EM>x</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+          <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwvline_set(</STRONG>
-          <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM>,
-          <STRONG>int</STRONG> <EM>y</EM>, <STRONG>int</STRONG> <EM>x</EM>,
-          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+          <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG>
+          <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG>
+          <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        of the current or specified window.  These functions do not change  the
        cursor position, and do not wrap.
 
-       Other  than  the  window, each argument is a complex character with at-
-       tributes:
+       Other  than  the  window,  each  argument  is  a complex character with
+       attributes:
               <EM>ls</EM> - left side,
               <EM>rs</EM> - right side,
               <EM>ts</EM> - top side,
               <EM>bl</EM> - bottom left-hand corner, and
               <EM>br</EM> - bottom right-hand corner.
 
-       If any of these arguments is zero, then the corresponding default  val-
-       ues (defined in <STRONG>curses.h</STRONG>) are used instead:
+       If any of these arguments  is  zero,  then  the  corresponding  default
+       values (defined in <STRONG>curses.h</STRONG>) are used instead:
               <STRONG>WACS_VLINE</STRONG>,
               <STRONG>WACS_VLINE</STRONG>,
               <STRONG>WACS_HLINE</STRONG>,
        a line proceeding toward the last line of the window.
 
 
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note  that  <STRONG>border_set</STRONG>,  <STRONG>hline_set</STRONG>,  <STRONG>mvhline_set</STRONG>,  <STRONG>mvvline_set</STRONG>,   <STRONG>mvwh-</STRONG>
-       <STRONG>line_set</STRONG>, <STRONG>mvwvline_set</STRONG>, and <STRONG>vline_set</STRONG> may be macros.
-
-
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Upon successful completion, these functions return <STRONG>OK</STRONG>.  Otherwise, they
        return <STRONG>ERR</STRONG>.
 
        Functions using a window parameter return an error if it is null.
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       Note   that   <STRONG>border_set</STRONG>,    <STRONG>hline_set</STRONG>,    <STRONG>mvhline_set</STRONG>,    <STRONG>mvvline_set</STRONG>,
+       <STRONG>mvwhline_set</STRONG>, <STRONG>mvwvline_set</STRONG>, and <STRONG>vline_set</STRONG> may be macros.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These functions are described in X/Open Curses, Issue 4.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
 
 
 
-                                                           <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20               <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 5162d2784c67889fbc79e8190360dffedf340bad..058689bfc82731db682607008d1435be26b8cd6b 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_clear.3x,v 1.27 2022/11/26 16:23:47 tom Exp @
+  * @Id: curs_clear.3x,v 1.48 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_clear 3x</TITLE>
+<TITLE>curs_clear 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_clear 3x</H1>
+<H1 class="no-header">curs_clear 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
+<STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, <STRONG>wclrtobot</STRONG>, <STRONG>clrtoeol</STRONG>, <STRONG>wclrtoeol</STRONG>
-       - clear all or part of a <STRONG>curses</STRONG> window
+       <STRONG>erase</STRONG>,  <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, <STRONG>wclrtobot</STRONG>, <STRONG>clrtoeol</STRONG>, <STRONG>wclrtoeol</STRONG>
+       - clear all or part of a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
-</PRE><H3><a name="h3-erase_werase">erase/werase</a></H3><PRE>
-       The <STRONG>erase</STRONG> and <STRONG>werase</STRONG> routines copy blanks to every position in the win-
-       dow, clearing the screen.
+</PRE><H3><a name="h3-erase_werase">erasewerase</a></H3><PRE>
+       The <STRONG>erase</STRONG> and <STRONG>werase</STRONG> routines copy blanks  to  every  position  in  the
+       window, clearing the screen.
 
        Blanks created by erasure have the current background rendition (as set
        by <STRONG><A HREF="curs_bkgd.3x.html">wbkgdset(3x)</A></STRONG>) merged into them.
 
 
-</PRE><H3><a name="h3-clear_wclear">clear/wclear</a></H3><PRE>
+</PRE><H3><a name="h3-clear_wclear">clearwclear</a></H3><PRE>
        The <STRONG>clear</STRONG> and <STRONG>wclear</STRONG> routines are like <STRONG>erase</STRONG> and <STRONG>werase</STRONG>, but they  also
        call  <STRONG><A HREF="curs_outopts.3x.html">clearok(3x)</A></STRONG>, so that the screen is cleared completely on the next
        call to <STRONG>wrefresh</STRONG> for that window and repainted from scratch.
 
 
-</PRE><H3><a name="h3-clrtobot_wclrtobot">clrtobot/wclrtobot</a></H3><PRE>
+</PRE><H3><a name="h3-clrtobot_wclrtobot">clrtobotwclrtobot</a></H3><PRE>
        The <STRONG>clrtobot</STRONG> and <STRONG>wclrtobot</STRONG> routines erase from the cursor to the end of
        screen.   That is, they erase all lines below the cursor in the window.
        Also, the current line to  the  right  of  the  cursor,  inclusive,  is
        erased.
 
 
-</PRE><H3><a name="h3-clrtoeol_wclrtoeol">clrtoeol/wclrtoeol</a></H3><PRE>
+</PRE><H3><a name="h3-clrtoeol_wclrtoeol">clrtoeolwclrtoeol</a></H3><PRE>
        The <STRONG>clrtoeol</STRONG> and <STRONG>wclrtoeol</STRONG> routines erase the current line to the right
        of the cursor, inclusive, to the end of the current line.
 
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.  The
-       standard  specifies  that  they return <STRONG>ERR</STRONG> on failure, but specifies no
-       error conditions.
+       These functions are described in X/Open Curses, Issue 4.
 
-       The SVr4.0 manual says that these functions could return  "a  non-nega-
-       tive  integer  if <STRONG><A HREF="curs_outopts.3x.html">immedok(3x)</A></STRONG> is set", referring to the return-value of
+       The SVr4.0 manual says that these functions could  return  "or  a  non-
+       negative  integer  if <STRONG>immedok</STRONG> is set", referring to the return-value of
        <STRONG>wrefresh</STRONG>.  In that implementation, <STRONG>wrefresh</STRONG> would return a count of the
        number of characters written to the terminal.
 
        Some  historic  curses implementations had, as an undocumented feature,
-       the ability to do the equivalent of <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG>  by  saying  <STRONG>touch-</STRONG>
-       <STRONG>win(stdscr)</STRONG> or <STRONG>clear(stdscr)</STRONG>.  This will not work under ncurses.
+       the  ability  to  do  the  equivalent  of  <STRONG>clearok(...,</STRONG>  <STRONG>1)</STRONG>  by  saying
+       <STRONG>touchwin(stdscr)</STRONG> or <STRONG>clear(stdscr)</STRONG>.  This will not work under <EM>ncurses</EM>.
 
-       This implementation, and others such as Solaris, sets the current posi-
-       tion to 0,0 after erasing via <STRONG>werase</STRONG> and <STRONG>wclear</STRONG>.  That fact is not doc-
-       umented  in  other  implementations, and may not be true of implementa-
-       tions which were not derived from SVr4 source.
+       This  implementation,  and  others  such  as  Solaris, sets the current
+       position to 0,0 after erasing via <STRONG>werase</STRONG> and <STRONG>wclear</STRONG>.  That fact is  not
+       documented   in   other   implementations,  and  may  not  be  true  of
+       implementations which were not derived from SVr4 source.
 
        Not obvious from the description, most implementations clear the screen
        after  <STRONG>wclear</STRONG>  even  for  a subwindow or derived window.  If you do not
 
 
 
-                                                                <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-erase_werase">erase/werase</a></li>
-<li><a href="#h3-clear_wclear">clear/wclear</a></li>
-<li><a href="#h3-clrtobot_wclrtobot">clrtobot/wclrtobot</a></li>
-<li><a href="#h3-clrtoeol_wclrtoeol">clrtoeol/wclrtoeol</a></li>
+<li><a href="#h3-erase_werase">erasewerase</a></li>
+<li><a href="#h3-clear_wclear">clearwclear</a></li>
+<li><a href="#h3-clrtobot_wclrtobot">clrtobotwclrtobot</a></li>
+<li><a href="#h3-clrtoeol_wclrtoeol">clrtoeolwclrtoeol</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
index 15ad17409774e90cd34b6992ac13004c994e7570..d84a5732540abd87d3938fce4588c19cdf57b52f 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_color.3x,v 1.68 2022/02/12 20:06:41 tom Exp @
+  * @Id: curs_color.3x,v 1.100 2024/04/20 21:24:19 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_color 3x</TITLE>
+<TITLE>curs_color 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_color 3x</H1>
+<H1 class="no-header">curs_color 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
+<STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>start_color</STRONG>, <STRONG>has_colors</STRONG>, <STRONG>can_change_color</STRONG>, <STRONG>init_pair</STRONG>, <STRONG>init_color</STRONG>,
-       <STRONG>init_extended_pair</STRONG>, <STRONG>init_extended_color</STRONG>, <STRONG>color_content</STRONG>, <STRONG>pair_content</STRONG>,
-       <STRONG>extended_color_content</STRONG>, <STRONG>extended_pair_content</STRONG>, <STRONG>reset_color_pairs</STRONG>,
-       <STRONG>COLOR_PAIR</STRONG>, <STRONG>PAIR_NUMBER</STRONG> - <STRONG>curses</STRONG> color manipulation routines
+       <STRONG>start_color</STRONG>,   <STRONG>has_colors</STRONG>,   <STRONG>can_change_color</STRONG>,  <STRONG>init_pair</STRONG>,  <STRONG>init_color</STRONG>,
+       <STRONG>init_extended_pair</STRONG>, <STRONG>init_extended_color</STRONG>,  <STRONG>color_content</STRONG>,  <STRONG>pair_content</STRONG>,
+       <STRONG>extended_color_content</STRONG>,    <STRONG>extended_pair_content</STRONG>,    <STRONG>reset_color_pairs</STRONG>,
+       <STRONG>COLOR_PAIR</STRONG>, <STRONG>PAIR_NUMBER</STRONG>, <STRONG>COLORS</STRONG>, <STRONG>COLOR_PAIRS</STRONG>,  <STRONG>COLOR_BLACK</STRONG>,  <STRONG>COLOR_RED</STRONG>,
+       <STRONG>COLOR_GREEN</STRONG>,   <STRONG>COLOR_YELLOW</STRONG>,   <STRONG>COLOR_BLUE</STRONG>,  <STRONG>COLOR_MAGENTA</STRONG>,  <STRONG>COLOR_CYAN</STRONG>,
+       <STRONG>COLOR_WHITE</STRONG> - manipulate terminal colors with <EM>curses</EM>
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
+       <EM>/*</EM> <EM>variables</EM> <EM>*/</EM>
+       <STRONG>int</STRONG> <STRONG>COLOR_PAIRS;</STRONG>
+       <STRONG>int</STRONG> <STRONG>COLORS;</STRONG>
+
        <STRONG>int</STRONG> <STRONG>start_color(void);</STRONG>
 
        <STRONG>bool</STRONG> <STRONG>has_colors(void);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>init_pair(short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>f</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>b</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>init_color(short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>b</EM><STRONG>);</STRONG>
-       /* extensions */
+       <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM>
        <STRONG>int</STRONG> <STRONG>init_extended_pair(int</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>f</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>b</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>init_extended_color(int</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>b</EM><STRONG>);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>color_content(short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>r</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>g</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>b</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>pair_content(short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>f</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>b</EM><STRONG>);</STRONG>
-       /* extensions */
+       <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM>
        <STRONG>int</STRONG> <STRONG>extended_color_content(int</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>r</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>g</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>b</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>extended_pair_content(int</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>f</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>b</EM><STRONG>);</STRONG>
 
-       /* extensions */
+       <EM>/*</EM> <EM>extension</EM> <EM>*/</EM>
        <STRONG>void</STRONG> <STRONG>reset_color_pairs(void);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>COLOR_PAIR(int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-       <STRONG>PAIR_NUMBER(</STRONG><EM>attrs</EM><STRONG>);</STRONG>
+       <STRONG>PAIR_NUMBER(int</STRONG> <EM>attr</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
 </PRE><H3><a name="h3-Overview">Overview</a></H3><PRE>
-       <STRONG>curses</STRONG> supports color attributes on terminals with that capability.  To
-       use  these  routines  <STRONG>start_color</STRONG>  must  be called, usually right after
-       <STRONG>initscr</STRONG>.  Colors are always used in pairs (referred to as color-pairs).
-       A  color-pair  consists  of  a  foreground color (for characters) and a
-       background color (for the blank field on which the characters are  dis-
-       played).   A  programmer  initializes  a  color-pair  with  the routine
-       <STRONG>init_pair</STRONG>.  After it has been initialized, <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>) can be used to
-       convert the pair to a video attribute.
+       <EM>curses</EM> supports color attributes on  terminals  with  that  capability.
+       Call  <STRONG>start_color</STRONG>  (typically  right  after <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>) to enable this
+       feature.  Colors are always used in pairs.   A  <EM>color</EM>  <EM>pair</EM>  couples  a
+       foreground  color  for characters with a background color for the blank
+       field on which characters are rendered.  <STRONG>init_pair</STRONG> initializes a  color
+       pair.   The  macro  <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>)  can then convert the pair to a video
+       attribute.
 
-       If  a  terminal is capable of redefining colors, the programmer can use
-       the routine <STRONG>init_color</STRONG> to change the definition of a color.   The  rou-
-       tines  <STRONG>has_colors</STRONG>  and <STRONG>can_change_color</STRONG> return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, depending
-       on whether the terminal has color capabilities and whether the program-
-       mer can change the colors.  The routine <STRONG>color_content</STRONG> allows a program-
-       mer to extract the amounts of red, green, and  blue  components  in  an
-       initialized  color.   The  routine  <STRONG>pair_content</STRONG> allows a programmer to
-       find out how a given color-pair is currently defined.
+       If  a  terminal  has  the  relevant  capability,   <STRONG>init_color</STRONG>   permits
+       (re)definition of a color.  <STRONG>has_colors</STRONG> and <STRONG>can_change_color</STRONG> return <STRONG>TRUE</STRONG>
+       or <STRONG>FALSE</STRONG>, depending on whether the terminal has  color  capability  and
+       whether  the  programmer  can change the colors.  <STRONG>color_content</STRONG> permits
+       extraction of the red, green, and blue  components  of  an  initialized
+       color.   <STRONG>pair_content</STRONG>  permits  discovery  of  a  color  pair's current
+       definition.
 
 
-</PRE><H3><a name="h3-Color-Rendering">Color Rendering</a></H3><PRE>
-       The <STRONG>curses</STRONG> library combines these inputs to produce  the  actual  fore-
-       ground and background colors shown on the screen:
+</PRE><H3><a name="h3-Rendering">Rendering</a></H3><PRE>
+       <EM>curses</EM> combines the following data to render a character cell.  Any  of
+       them can include color information.
 
-       <STRONG>o</STRONG>   per-character video attributes (e.g., via <STRONG>waddch</STRONG>),
+       <STRONG>o</STRONG>   <EM>curses</EM> character attributes, as from <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG> or <STRONG><A HREF="curs_add_wch.3x.html">wadd_wch(3x)</A></STRONG>
 
-       <STRONG>o</STRONG>   the window attribute (e.g., by <STRONG>wattrset</STRONG>), and
+       <STRONG>o</STRONG>   window attributes, as from <STRONG><A HREF="curs_attr.3x.html">wattrset(3x)</A></STRONG> or <STRONG><A HREF="curs_attr.3x.html">wattr_set(3x)</A></STRONG>
 
-       <STRONG>o</STRONG>   the background character (e.g., <STRONG>wbkgdset</STRONG>).
+       <STRONG>o</STRONG>   window  background  character  attributes,  as from <STRONG><A HREF="curs_bkgd.3x.html">wbkgdset(3x)</A></STRONG> or
+           <STRONG><A HREF="curs_bkgrnd.3x.html">wbkgrndset(3x)</A></STRONG>
 
-       Per-character and window attributes are usually set by a parameter con-
-       taining video attributes including a color pair value.  Some  functions
-       such as <STRONG>wattr_set</STRONG> use a separate parameter which is the color pair num-
-       ber.
+       Per-character and window attributes are usually set through a  function
+       parameter  containing  attributes  including  a color pair value.  Some
+       functions,  such  as  <STRONG>wattr_set</STRONG>,  use  a  separate  color  pair  number
+       parameter.
 
-       The background character is a special case:  it  includes  a  character
-       value, just as if it were passed to <STRONG>waddch</STRONG>.
+       The  background  character  is  a special case: it includes a character
+       code, just as if it were passed to <STRONG>waddch</STRONG>.
 
-       The  <STRONG>curses</STRONG> library does the actual work of combining these color pairs
+       The <EM>curses</EM> library does the actual work of combining these color  pairs
        in an internal function called from <STRONG>waddch</STRONG>:
 
        <STRONG>o</STRONG>   If the parameter passed to <STRONG>waddch</STRONG> is <EM>blank</EM>, and it uses the special
            color pair 0,
 
-           <STRONG>o</STRONG>   <STRONG>curses</STRONG> next checks the window attribute.
+           <STRONG>o</STRONG>   <EM>curses</EM> next checks the window attribute.
 
-           <STRONG>o</STRONG>   If  the window attribute does not use color pair 0, <STRONG>curses</STRONG> uses
+           <STRONG>o</STRONG>   If the window attribute does not use color pair 0, <EM>curses</EM>  uses
                the color pair from the window attribute.
 
-           <STRONG>o</STRONG>   Otherwise, <STRONG>curses</STRONG> uses the background character.
+           <STRONG>o</STRONG>   Otherwise, <EM>curses</EM> uses the background character.
 
-       <STRONG>o</STRONG>   If the parameter passed to <STRONG>waddch</STRONG> is <EM>not</EM> <EM>blank</EM>, or it does not  use
-           the  special  color  pair 0, <STRONG>curses</STRONG> prefers the color pair from the
-           parameter, if it is nonzero.  Otherwise, it tries the window attri-
-           bute next, and finally the background character.
+       <STRONG>o</STRONG>   If  the parameter passed to <STRONG>waddch</STRONG> is <EM>not</EM> <EM>blank</EM>, or it does not use
+           the special color pair 0, <EM>curses</EM> prefers the color  pair  from  the
+           parameter,  if  it  is  nonzero.   Otherwise,  it  tries the window
+           attribute next, and finally the background character.
 
-       Some  <STRONG>curses</STRONG>  functions such as <STRONG>wprintw</STRONG> call <STRONG>waddch</STRONG>.  Those do not com-
-       bine its parameter with a color pair.  Consequently those calls use on-
-       ly the window attribute or the background character.
+       Some <EM>curses</EM> functions such  as  <STRONG>wprintw</STRONG>  call  <STRONG>waddch</STRONG>.   Those  do  not
+       combine  its parameter with a color pair.  Consequently those calls use
+       only the window attribute or the background character.
 
 
 </PRE><H2><a name="h2-CONSTANTS">CONSTANTS</a></H2><PRE>
        In <STRONG>&lt;curses.h&gt;</STRONG> the following macros are defined.  These are the standard
-       colors (ISO-6429).  <STRONG>curses</STRONG> also assumes that <STRONG>COLOR_BLACK</STRONG> is the default
+       colors (ISO-6429).  <EM>curses</EM> also assumes that <STRONG>COLOR_BLACK</STRONG> is the default
        background color for all terminals.
 
              <STRONG>COLOR_BLACK</STRONG>
              <STRONG>COLOR_CYAN</STRONG>
              <STRONG>COLOR_WHITE</STRONG>
 
-       Some  terminals  support  more than the eight (8) "ANSI" colors.  There
+       Some terminals support more than the eight (8)  "ANSI"  colors.   There
        are no standard names for those additional colors.
 
 
 </PRE><H2><a name="h2-VARIABLES">VARIABLES</a></H2><PRE>
 
 </PRE><H3><a name="h3-COLORS">COLORS</a></H3><PRE>
-       is initialized by <STRONG>start_color</STRONG> to the maximum number of colors the  ter-
-       minal can support.
+       is  initialized  by  <STRONG>start_color</STRONG>  to  the  maximum number of colors the
+       terminal can support.
 
 
 </PRE><H3><a name="h3-COLOR_PAIRS">COLOR_PAIRS</a></H3><PRE>
-       is  initialized by <STRONG>start_color</STRONG> to the maximum number of color pairs the
-       terminal can support.
+       is initialized by <STRONG>start_color</STRONG> to the maximum number of color pairs  the
+       terminal can support.  Often, its value is the product <STRONG>COLORS</STRONG> x <STRONG>COLORS</STRONG>,
+       but this is not always true.
+
+       <STRONG>o</STRONG>   A few terminals use the HLS color space  (see  <STRONG>start_color</STRONG>  below),
+           ignoring this rule; and
+
+       <STRONG>o</STRONG>   terminals  supporting  a  large number of colors are limited to the
+           number of color pairs that a <EM>signed</EM> <EM>short</EM> value can represent.
 
 
 </PRE><H2><a name="h2-FUNCTIONS">FUNCTIONS</a></H2><PRE>
 
 </PRE><H3><a name="h3-start_color">start_color</a></H3><PRE>
        The <STRONG>start_color</STRONG> routine requires no arguments.  It must  be  called  if
-       the  programmer wants to use colors, and before any other color manipu-
-       lation routine is called.  It is good practice  to  call  this  routine
-       right after <STRONG>initscr</STRONG>.  <STRONG>start_color</STRONG> does this:
+       the  programmer  wants  to  use  colors,  and  before  any  other color
+       manipulation routine is called.  It  is  good  practice  to  call  this
+       routine right after <STRONG>initscr</STRONG>.  <STRONG>start_color</STRONG> does this:
 
-       <STRONG>o</STRONG>   It  initializes  two  global variables, <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG> (re-
-           spectively defining the maximum number of  colors  and  color-pairs
+       <STRONG>o</STRONG>   It   initializes  two  global  variables,  <STRONG>COLORS</STRONG>  and  <STRONG>COLOR_PAIRS</STRONG>
+           (respectively defining the maximum number of colors and color pairs
            the terminal can support).
 
        <STRONG>o</STRONG>   It  initializes  the special color pair <STRONG>0</STRONG> to the default foreground
            initial eight colors.
 
            <STRONG>start_color</STRONG> does not attempt to set the terminal's color palette to
-           match its built-in table.  An application may use <STRONG>init_color</STRONG> to al-
-           ter the internal table along with the terminal's color.
+           match  its  built-in  table.   An application may use <STRONG>init_color</STRONG> to
+           alter the internal table along with the terminal's color.
 
        These limits apply to color values and  color  pairs.   Values  outside
-       these limits are not legal, and may result in a runtime error:
+       these limits are not valid, and may result in a runtime error:
 
-       <STRONG>o</STRONG>   <STRONG>COLORS</STRONG>  corresponds to the terminal database's <STRONG>max_colors</STRONG> capabili-
-           ty, (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>).
+       <STRONG>o</STRONG>   <STRONG>COLORS</STRONG>   corresponds   to   the   terminal   database's  <STRONG>max_colors</STRONG>
+           capability, (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>).
 
-       <STRONG>o</STRONG>   color values are expected to be in the range <STRONG>0</STRONG> to <STRONG>COLORS-1</STRONG>,  inclu-
-           sive (including <STRONG>0</STRONG> and <STRONG>COLORS-1</STRONG>).
+       <STRONG>o</STRONG>   color values are expected  to  be  in  the  range  <STRONG>0</STRONG>  to  <STRONG>COLORS-1</STRONG>,
+           inclusive (including <STRONG>0</STRONG> and <STRONG>COLORS-1</STRONG>).
 
        <STRONG>o</STRONG>   a  special  color value <STRONG>-1</STRONG> is used in certain extended functions to
            denote the <EM>default</EM> <EM>color</EM> (see <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>).
 
-       <STRONG>o</STRONG>   <STRONG>COLOR_PAIRS</STRONG> corresponds to the terminal database's <STRONG>max_pairs</STRONG>  capa-
-           bility, (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>).
+       <STRONG>o</STRONG>   <STRONG>COLOR_PAIRS</STRONG>  corresponds  to  the  terminal  database's   <STRONG>max_pairs</STRONG>
+           capability, (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>).
 
-       <STRONG>o</STRONG>   legal color pair values are in the range <STRONG>1</STRONG> to <STRONG>COLOR_PAIRS-1</STRONG>, inclu-
-           sive.
+       <STRONG>o</STRONG>   valid  color  pair  values  are  in  the  range <STRONG>1</STRONG> to <STRONG>COLOR_PAIRS-1</STRONG>,
+           inclusive.
 
        <STRONG>o</STRONG>   color pair <STRONG>0</STRONG> is special; it denotes "no color".
 
-           Color pair <STRONG>0</STRONG> is assumed to be white on black, but is actually what-
-           ever  the terminal implements before color is initialized.  It can-
-           not be modified by the application.
+           Color pair <STRONG>0</STRONG> is assumed to be  white  on  black,  but  is  actually
+           whatever  the  terminal implements before color is initialized.  It
+           cannot be modified by the application.
 
 
 </PRE><H3><a name="h3-has_colors">has_colors</a></H3><PRE>
        The <STRONG>has_colors</STRONG> routine requires no arguments.  It returns <STRONG>TRUE</STRONG>  if  the
-       terminal can manipulate colors; otherwise, it returns <STRONG>FALSE</STRONG>.  This rou-
-       tine facilitates writing terminal-independent programs.  For example, a
-       programmer  can  use  it  to  decide whether to use color or some other
-       video attribute.
+       terminal  can  manipulate  colors;  otherwise,  it returns <STRONG>FALSE</STRONG>.  This
+       routine  facilitates  writing   terminal-independent   programs.    For
+       example, a programmer can use it to decide whether to use color or some
+       other video attribute.
 
 
 </PRE><H3><a name="h3-can_change_color">can_change_color</a></H3><PRE>
        The <STRONG>can_change_color</STRONG> routine requires no arguments.  It returns <STRONG>TRUE</STRONG> if
        the  terminal  supports colors and can change their definitions; other,
-       it returns <STRONG>FALSE</STRONG>.  This routine facilitates  writing  terminal-indepen-
-       dent programs.
+       it  returns  <STRONG>FALSE</STRONG>.   This  routine   facilitates   writing   terminal-
+       independent programs.
 
 
 </PRE><H3><a name="h3-init_pair">init_pair</a></H3><PRE>
-       The <STRONG>init_pair</STRONG> routine changes the definition of a color-pair.  It takes
-       three arguments: the number of the color-pair to be changed, the  fore-
-       ground color number, and the background color number.  For portable ap-
-       plications:
+       The <STRONG>init_pair</STRONG> routine changes the definition of a color pair.  It takes
+       three arguments: the number of  the  color  pair  to  be  changed,  the
+       foreground color number, and the background color number.  For portable
+       applications:
 
-       <STRONG>o</STRONG>   The first argument must be a legal color pair  value.   If  default
-           colors are used (see <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>) the upper limit is ad-
-           justed to allow for extra pairs which use a default color in  fore-
-           ground and/or background.
+       <STRONG>o</STRONG>   The first argument must be a valid color pair  value.   If  default
+           colors  are  used  (see  <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>) the upper limit is
+           adjusted to allow for extra pairs which  use  a  default  color  in
+           foreground and/or background.
 
-       <STRONG>o</STRONG>   The second and third arguments must be legal color values.
+       <STRONG>o</STRONG>   The second and third arguments must be valid color values.
 
-       If  the  color-pair was previously initialized, the screen is refreshed
-       and all occurrences of that color-pair are changed to the  new  defini-
-       tion.
+       If  the  color pair was previously initialized, the screen is refreshed
+       and all  occurrences  of  that  color  pair  are  changed  to  the  new
+       definition.
 
-       As  an  extension,  ncurses  allows you to set color pair <STRONG>0</STRONG> via the <STRONG>as-</STRONG>
-       <STRONG><A HREF="assume_default_colors.3x.html">sume_default_colors(3x)</A></STRONG> routine, or to specify the use of default  col-
-       ors  (color  number  <STRONG>-1</STRONG>) if you first invoke the <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>
+       As  an  extension,  <EM>ncurses</EM>  allows  you  to  set  color pair <STRONG>0</STRONG> via the
+       <STRONG><A HREF="default_colors.3x.html">assume_default_colors(3x)</A></STRONG> routine, or to specify  the  use  of  default
+       colors (color number <STRONG>-1</STRONG>) if you first invoke the <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>
        routine.
 
 
 </PRE><H3><a name="h3-init_extended_pair">init_extended_pair</a></H3><PRE>
        Because <STRONG>init_pair</STRONG> uses signed <STRONG>short</STRONG>s for its  parameters,  that  limits
-       color-pairs  and  color-values to 32767 on modern hardware.  The exten-
-       sion <STRONG>init_extended_pair</STRONG> uses <STRONG>int</STRONG>s for the color-pair  and  color-value,
-       allowing a larger number of colors to be supported.
+       color  pairs  and  color-values  to  32767  on  modern  hardware.   The
+       extension <STRONG>init_extended_pair</STRONG> uses <STRONG>int</STRONG>s for the color  pair  and  color-
+       value, allowing a larger number of colors to be supported.
 
 
 </PRE><H3><a name="h3-init_color">init_color</a></H3><PRE>
        four arguments: the number of the color to be changed followed by three
        RGB values (for the amounts of red, green, and blue components).
 
-       <STRONG>o</STRONG>   The  first argument must be a legal color value; default colors are
+       <STRONG>o</STRONG>   The  first argument must be a valid color value; default colors are
            not allowed here.  (See the section <STRONG>Colors</STRONG> for  the  default  color
            index.)
 
 
 </PRE><H3><a name="h3-init_extended_color">init_extended_color</a></H3><PRE>
        Because  <STRONG>init_color</STRONG>  uses signed <STRONG>short</STRONG>s for its parameters, that limits
-       color-values and their red, green, and blue components to 32767 on mod-
-       ern hardware.  The extension <STRONG>init_extended_color</STRONG> uses <STRONG>int</STRONG>s for the col-
-       or value and for setting the red, green, and blue components,  allowing
-       a larger number of colors to be supported.
+       color-values and their red, green, and  blue  components  to  32767  on
+       modern  hardware.   The extension <STRONG>init_extended_color</STRONG> uses <STRONG>int</STRONG>s for the
+       color value and for  setting  the  red,  green,  and  blue  components,
+       allowing a larger number of colors to be supported.
 
 
 </PRE><H3><a name="h3-color_content">color_content</a></H3><PRE>
        The <STRONG>color_content</STRONG> routine gives programmers a way to find the intensity
        of the red, green, and blue (RGB) components in a color.   It  requires
        four  arguments:  the  color  number, and three addresses of <STRONG>short</STRONG>s for
-       storing the information about the amounts of red, green, and blue  com-
-       ponents in the given color.
+       storing the information about the  amounts  of  red,  green,  and  blue
+       components in the given color.
 
-       <STRONG>o</STRONG>   The  first  argument  must  be a legal color value, i.e., <STRONG>0</STRONG> through
+       <STRONG>o</STRONG>   The  first  argument  must  be a valid color value, i.e., <STRONG>0</STRONG> through
            <STRONG>COLORS-1</STRONG>, inclusive.
 
        <STRONG>o</STRONG>   The values that are stored at the addresses pointed to by the  last
 
 
 </PRE><H3><a name="h3-extended_color_content">extended_color_content</a></H3><PRE>
-       Because <STRONG>color_content</STRONG> uses signed <STRONG>short</STRONG>s for its parameters, that  lim-
-       its  color-values and their red, green, and blue components to 32767 on
-       modern hardware.  The extension <STRONG>extended_color_content</STRONG>  uses  <STRONG>int</STRONG>s  for
+       Because <STRONG>color_content</STRONG> uses  signed  <STRONG>short</STRONG>s  for  its  parameters,  that
+       limits  color-values and their red, green, and blue components to 32767
+       on modern hardware.  The extension <STRONG>extended_color_content</STRONG> uses <STRONG>int</STRONG>s for
        the  color value and for returning the red, green, and blue components,
        allowing a larger number of colors to be supported.
 
 
 </PRE><H3><a name="h3-pair_content">pair_content</a></H3><PRE>
        The <STRONG>pair_content</STRONG> routine allows programmers to find out what  colors  a
-       given  color-pair consists of.  It requires three arguments: the color-
+       given  color  pair consists of.  It requires three arguments: the color
        pair number, and two addresses of <STRONG>short</STRONG>s for storing the foreground and
        the background color numbers.
 
-       <STRONG>o</STRONG>   The  first argument must be a legal color value, i.e., in the range
+       <STRONG>o</STRONG>   The  first argument must be a valid color value, i.e., in the range
            <STRONG>1</STRONG> through <STRONG>COLOR_PAIRS-1</STRONG>, inclusive.
 
-       <STRONG>o</STRONG>   The values that are stored at the addresses pointed to by the  sec-
-           ond  and  third arguments are in the range <STRONG>0</STRONG> through <STRONG>COLORS</STRONG>, inclu-
-           sive.
+       <STRONG>o</STRONG>   The values that are stored at  the  addresses  pointed  to  by  the
+           second  and  third  arguments  are  in  the range <STRONG>0</STRONG> through <STRONG>COLORS</STRONG>,
+           inclusive.
 
 
 </PRE><H3><a name="h3-extended_pair_content">extended_pair_content</a></H3><PRE>
        Because <STRONG>pair_content</STRONG> uses signed <STRONG>short</STRONG>s for its parameters, that limits
-       color-pair and color-values to 32767 on modern hardware.  The extension
+       color pair and color-values to 32767 on modern hardware.  The extension
        <STRONG>extended_pair_content</STRONG> uses <STRONG>int</STRONG>s for the color pair  and  for  returning
-       the  foreground and background colors, allowing a larger number of col-
-       ors to be supported.
+       the  foreground  and  background  colors,  allowing  a larger number of
+       colors to be supported.
 
 
 </PRE><H3><a name="h3-reset_color_pairs">reset_color_pairs</a></H3><PRE>
-       The extension <STRONG>reset_color_pairs</STRONG> tells ncurses to  discard  all  of  the
-       color-pair  information  which was set with <STRONG>init_pair</STRONG>.  It also touches
+       The extension <STRONG>reset_color_pairs</STRONG> tells <EM>ncurses</EM> to  discard  all  of  the
+       color  pair  information which was set with <STRONG>init_pair</STRONG>.  It also touches
        the current- and standard-screens, allowing an  application  to  switch
        color palettes rapidly.
 
 
-</PRE><H3><a name="h3-PAIR_NUMBER">PAIR_NUMBER</a></H3><PRE>
-       <STRONG>PAIR_NUMBER(</STRONG><EM>attrs</EM>)  extracts  the  color value from its <EM>attrs</EM> parameter
-       and returns it as a color pair number.
+</PRE><H3><a name="h3-COLOR_PAIR">COLOR_PAIR</a></H3><PRE>
+       <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG> converts a color pair number to an attribute.  Attributes
+       can hold color pairs in the range 0 to 255.  If you need a  color  pair
+       larger  than  that, you must use functions such as <STRONG>attr_set</STRONG> (which pass
+       the color  pair  as  a  separate  parameter)  rather  than  the  legacy
+       functions such as <STRONG>attrset</STRONG>.
 
 
-</PRE><H3><a name="h3-COLOR_PAIR">COLOR_PAIR</a></H3><PRE>
-       Its inverse <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG> converts a color pair number to an attribute.
-       Attributes  can  hold color pairs in the range 0 to 255.  If you need a
-       color pair larger than that, you must use functions  such  as  <STRONG>attr_set</STRONG>
-       (which  pass  the  color  pair as a separate parameter) rather than the
-       legacy functions such as <STRONG>attrset</STRONG>.
+</PRE><H3><a name="h3-PAIR_NUMBER">PAIR_NUMBER</a></H3><PRE>
+       <STRONG>PAIR_NUMBER(</STRONG><EM>attr</EM>)   extracts   the  color  information  from  its  <EM>attr</EM>
+       parameter and returns it as a color pair  number;  it  is  the  inverse
+       operation of <STRONG>COLOR_PAIR</STRONG>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The routines <STRONG>can_change_color</STRONG> and <STRONG>has_colors</STRONG> return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
 
-       All other routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG>  (SVr4
-       specifies  only "an integer value other than <STRONG>ERR</STRONG>") upon successful com-
-       pletion.
+       All  other routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG> (SVr4
+       specifies only "an integer  value  other  than  <STRONG>ERR</STRONG>")  upon  successful
+       completion.
 
-       X/Open defines no error conditions.  SVr4 does document some error con-
-       ditions which apply in general:
+       X/Open  defines  no  error  conditions.   SVr4 does document some error
+       conditions which apply in general:
 
        <STRONG>o</STRONG>   This implementation will return <STRONG>ERR</STRONG> on attempts to use color values
-           outside the range <STRONG>0</STRONG> to <STRONG>COLORS</STRONG>-1 (except for the default colors  ex-
-           tension), or use color pairs outside the range <STRONG>0</STRONG> to <STRONG>COLOR_PAIRS-1</STRONG>.
+           outside  the  range  <STRONG>0</STRONG>  to  <STRONG>COLORS</STRONG>-1 (except for the default colors
+           extension),  or  use  color  pairs   outside   the   range   <STRONG>0</STRONG>   to
+           <STRONG>COLOR_PAIRS-1</STRONG>.
 
            Color values used in <STRONG>init_color</STRONG> must be in the range <STRONG>0</STRONG> to <STRONG>1000</STRONG>.
 
            An error is returned from secondary functions such as <STRONG>init_pair</STRONG>  if
            <STRONG>start_color</STRONG> was not called.
 
-       <STRONG>o</STRONG>   SVr4  does much the same, except that it returns <STRONG>ERR</STRONG> from <STRONG>pair_con-</STRONG>
-           <STRONG>tent</STRONG> if the pair was not initialized using <STRONG>init_pairs</STRONG>  and  it  re-
-           turns  <STRONG>ERR</STRONG>  from  <STRONG>color_content</STRONG>  if  the  terminal does not support
+       <STRONG>o</STRONG>   SVr4   does  much  the  same,  except  that  it  returns  <STRONG>ERR</STRONG>  from
+           <STRONG>pair_content</STRONG> if the pair was not initialized using  <STRONG>init_pairs</STRONG>  and
+           it  returns <STRONG>ERR</STRONG> from <STRONG>color_content</STRONG> if the terminal does not support
            changing colors.
 
            This implementation does not return <STRONG>ERR</STRONG> for either case.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       In the <STRONG>ncurses</STRONG> implementation, there is  a  separate  color  activation
-       flag,  color palette, color pairs table, and associated <STRONG>COLORS</STRONG> and <STRONG>COL-</STRONG>
-       <STRONG>OR_PAIRS</STRONG> counts for each screen; the <STRONG>start_color</STRONG> function only  affects
-       the current screen.  The SVr4/XSI interface is not really designed with
-       this in mind, and historical implementations may use  a  single  shared
-       color palette.
+       In the <EM>ncurses</EM> implementation, there is  a  separate  color  activation
+       flag,  color  palette,  color  pairs  table,  and associated <STRONG>COLORS</STRONG> and
+       <STRONG>COLOR_PAIRS</STRONG> counts for  each  screen;  the  <STRONG>start_color</STRONG>  function  only
+       affects  the  current  screen.   The  SVr4/XSI  interface is not really
+       designed with this in mind, and historical implementations  may  use  a
+       single shared color palette.
 
        Setting  an  implicit  background  color  via a color pair affects only
        character cells that a character write  operation  explicitly  touches.
        <STRONG>o</STRONG>   Color RGB values are not settable.
 
 
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       The functions marked as extensions were designed for  <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>,  and
+       are  not  found  in  SVr4  <EM>curses</EM>, 4.4BSD <EM>curses</EM>, or any other previous
+       curses implementation.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       Applications employing <EM>ncurses</EM> extensions should condition their use on
+       the visibility of the <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
+
+       This  implementation  satisfies  X/Open  Curses's  minimum maximums for
+       <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG>.
+
+       The  <STRONG>init_pair</STRONG>  routine  accepts  negative  values  of  foreground  and
+       background  color  to support the <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG> extension, but
+       only if that routine has been first invoked.
+
+       The assumption that <STRONG>COLOR_BLACK</STRONG> is the default background color for all
+       terminals   can   be   modified   using  the  <STRONG><A HREF="default_colors.3x.html">assume_default_colors(3x)</A></STRONG>
+       extension.
+
+       This implementation checks the pointers, e.g., for the values  returned
+       by  <STRONG>color_content</STRONG>  and  <STRONG>pair_content</STRONG>,  and will treat those as optional
+       parameters when null.
+
+       X/Open Curses does not specify a limit for the  number  of  colors  and
+       color pairs which a terminal can support.  However, in its use of <STRONG>short</STRONG>
+       for the parameters, it carries over SVr4's  implementation  detail  for
+       the compiled terminfo database, which uses signed 16-bit numbers.  This
+       implementation provides extended versions of those functions which  use
+       <STRONG>short</STRONG>  parameters, allowing applications to use larger color- and pair-
+       numbers.
+
+       The <STRONG>reset_color_pairs</STRONG> function is an extension of <EM>ncurses</EM>.
+
+
 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
        SVr3.2 introduced color support to curses in 1987.
 
        SVr4 made internal changes, e.g., moving  the  storage  for  the  color
-       state  from  <STRONG>SP</STRONG> (the <STRONG>SCREEN</STRONG> structure) to <STRONG>cur_term</STRONG> (the <STRONG>TERMINAL</STRONG> struc-
-       ture), but provided the same set of library functions.
+       state  from  <STRONG>SP</STRONG>  (the  <EM>SCREEN</EM>  structure)  to  <STRONG>cur_term</STRONG>  (the  <EM>TERMINAL</EM>
+       structure), but provided the same set of library functions.
 
        SVr4 curses limits the number of color pairs  to  64,  reserving  color
        pair  zero  (0)  as the terminal's initial uncolored state.  This limit
 
        <STRONG>o</STRONG>   PCCurses (1987-1990) provided for only eight (8) colors.
 
-       <STRONG>o</STRONG>   PDCurses  (1992-present)  inherited the 8-color limitation from PC-
-           Curses, but changed this to 256 in version 2.5 (2001),  along  with
+       <STRONG>o</STRONG>   PDCurses  (1992-present)  inherited  the  8-color  limitation  from
+           PCCurses, but changed this to 256 in version 2.5 (2001), along with
            changing <STRONG>chtype</STRONG> from 16-bits to 32-bits.
 
        <STRONG>o</STRONG>   X/Open Curses (1992-present) added a new structure <STRONG>cchar_t</STRONG> to store
-           the character, attributes and color-pair values, allowing increased
-           range  of  color-pairs.   Both  color-pairs and color-values used a
+           the character, attributes and color pair values, allowing increased
+           range  of  color  pairs.   Both color pairs and color-values used a
            signed <STRONG>short</STRONG>, limiting values to 15 bits.
 
-       <STRONG>o</STRONG>   ncurses (1992-present) uses eight bits for <STRONG>A_COLOR</STRONG> in  <STRONG>chtype</STRONG>  val-
-           ues.
+       <STRONG>o</STRONG>   <EM>ncurses</EM> (1992-present)  uses  eight  bits  for  <STRONG>A_COLOR</STRONG>  in  <STRONG>chtype</STRONG>
+           values.
 
            Version  5.3  provided  a wide-character interface (2002), but left
-           color-pairs as part of the attributes-field.
-
-           Since version 6 (2015), ncurses uses a separate <STRONG>int</STRONG> for color-pairs
-           in the <STRONG>cchar_t</STRONG> values.  When those color-pair values fit in 8 bits,
-           ncurses allows color-pairs to be manipulated via the functions  us-
-           ing <STRONG>chtype</STRONG> values.
+           color pairs as part of the attributes-field.
 
-       <STRONG>o</STRONG>   NetBSD  curses  used  6 bits from 2000 (when colors were first sup-
-           ported) until 2004.  At that point, NetBSD changed to use 10  bits.
-           As of 2021, that size is unchanged.  Like ncurses before version 6,
-           the NetBSD color-pair information is stored in the attributes field
-           of  <STRONG>cchar_t</STRONG>,  limiting the number of color-pairs by the size of the
-           bitfield.
+           Since version 6 (2015), ncurses uses a separate <STRONG>int</STRONG> for color pairs
+           in the <STRONG>cchar_t</STRONG> values.  When those color pair values fit in 8 bits,
+           ncurses allows color pairs to  be  manipulated  via  the  functions
+           using <STRONG>chtype</STRONG> values.
 
-
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       This implementation satisfies XSI Curses's minimum maximums for  <STRONG>COLORS</STRONG>
-       and <STRONG>COLOR_PAIRS</STRONG>.
-
-       The  <STRONG>init_pair</STRONG>  routine accepts negative values of foreground and back-
-       ground color to support the <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG> extension, but  only
-       if that routine has been first invoked.
-
-       The assumption that <STRONG>COLOR_BLACK</STRONG> is the default background color for all
-       terminals can be modified using  the  <STRONG><A HREF="default_colors.3x.html">assume_default_colors(3x)</A></STRONG>  exten-
-       sion.
-
-       This  implementation checks the pointers, e.g., for the values returned
-       by <STRONG>color_content</STRONG> and <STRONG>pair_content</STRONG>, and will treat those as optional pa-
-       rameters when null.
-
-       X/Open  Curses  does  not  specify a limit for the number of colors and
-       color pairs which a terminal can support.  However, in its use of <STRONG>short</STRONG>
-       for  the  parameters,  it carries over SVr4's implementation detail for
-       the compiled terminfo database, which uses signed 16-bit numbers.  This
-       implementation  provides extended versions of those functions which use
-       <STRONG>short</STRONG> parameters, allowing applications to use larger color- and  pair-
-       numbers.
-
-       The <STRONG>reset_color_pairs</STRONG> function is an extension of ncurses.
+       <STRONG>o</STRONG>   NetBSD  curses  used  6  bits  from  2000  (when  colors were first
+           supported) until 2004.  At that point, NetBSD  changed  to  use  10
+           bits.   As  of  2021,  that size is unchanged.  Like <EM>ncurses</EM> before
+           version 6, the NetBSD color  pair  information  is  stored  in  the
+           attributes  field of <STRONG>cchar_t</STRONG>, limiting the number of color pairs by
+           the size of the bitfield.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,  <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,  <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>de-</STRONG>
-       <STRONG><A HREF="default_colors.3x.html">fault_colors(3x)</A></STRONG>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,    <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
+       <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
 
 
 
-                                                                <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
 <li><a href="#h3-Overview">Overview</a></li>
-<li><a href="#h3-Color-Rendering">Color Rendering</a></li>
+<li><a href="#h3-Rendering">Rendering</a></li>
 </ul>
 </li>
 <li><a href="#h2-CONSTANTS">CONSTANTS</a></li>
 <li><a href="#h3-pair_content">pair_content</a></li>
 <li><a href="#h3-extended_pair_content">extended_pair_content</a></li>
 <li><a href="#h3-reset_color_pairs">reset_color_pairs</a></li>
-<li><a href="#h3-PAIR_NUMBER">PAIR_NUMBER</a></li>
 <li><a href="#h3-COLOR_PAIR">COLOR_PAIR</a></li>
+<li><a href="#h3-PAIR_NUMBER">PAIR_NUMBER</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index dacb4aa5744240e744206ec2623c7fd5f1493cee..ca638df7ce2ead323d574e90f5a6e4e91eaaf4e8 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_delch.3x,v 1.18 2022/02/12 20:06:41 tom Exp @
+  * @Id: curs_delch.3x,v 1.34 2024/04/20 19:24:14 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_delch 3x</TITLE>
+<TITLE>curs_delch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_delch 3x</H1>
+<H1 class="no-header">curs_delch 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
+<STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>delch</STRONG>, <STRONG>wdelch</STRONG>, <STRONG>mvdelch</STRONG>, <STRONG>mvwdelch</STRONG> - delete character under the cursor in
-       a <STRONG>curses</STRONG> window
+       <STRONG>delch</STRONG>,  <STRONG>wdelch</STRONG>,  <STRONG>mvdelch</STRONG>,  <STRONG>mvwdelch</STRONG>  - delete a character from a <EM>curses</EM>
+       window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These routines delete the character under the cursor; all characters to
-       the  right  of  the  cursor  on the same line are moved to the left one
-       position and the last character on the line is  filled  with  a  blank.
-       The  cursor  position  does  not  change  (after  moving  to  <EM>y</EM>,  <EM>x</EM>, if
-       specified).  (This does not imply use of the hardware delete  character
-       feature.)
+       <STRONG>wdelch</STRONG>  deletes  the  character  at  the  cursor   position   in   <EM>win</EM>.
+       <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> describes the variants of this function.
+
+       <STRONG>wdelch</STRONG> moves all characters to the right of the cursor on the same line
+       to the left one position and replaces the  contents  of  the  rightmost
+       position  on  the  line with the window's blank character; see <STRONG><A HREF="curs_bkgd.3x.html">bkgd(3x)</A></STRONG>
+       (wide-character API users may consult <STRONG><A HREF="curs_bkgrnd.3x.html">bkgrnd(3x)</A></STRONG> instead).  The  cursor
+       position does not change (after moving to (<EM>y</EM>, <EM>x</EM>), if specified).
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All  routines  return  the  integer  <STRONG>ERR</STRONG>  upon  failure and an <STRONG>OK</STRONG> (SVr4
-       specifies only "an integer  value  other  than  <STRONG>ERR</STRONG>")  upon  successful
-       completion.
+       These functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure.
+
+       Functions taking a <EM>WINDOW</EM> pointer argument fail if the pointer is <STRONG>NULL</STRONG>.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>delch</STRONG>, <STRONG>mvdelch</STRONG>, and <STRONG>mvwdelch</STRONG> may be macros.
+       <STRONG>delch</STRONG>, <STRONG>mvdelch</STRONG>, and <STRONG>mvwdelch</STRONG> may be implemented as macros.
+
+       A terminal's <STRONG>delete_character</STRONG>  (<STRONG>dch1</STRONG>)  capability  is  not  necessarily
+       employed.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.  The
-       standard specifies that they return <STRONG>ERR</STRONG> on failure,  but  specifies  no
-       error conditions.
+       X/Open Curses, Issue 4 describes these functions.
+
+       SVr4  <EM>curses</EM>  describes  a  successful return value only as "an integer
+       value other than <STRONG>ERR</STRONG>".
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
@@ -94,7 +99,7 @@
 
 
 
-                                                                <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index a0676f27d51d7b373dde564c66f130b1fd022391..c9c5001461821a4bf5bdec52146bd1aa61c63a00 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2007,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_deleteln.3x,v 1.20 2022/02/12 20:06:41 tom Exp @
+  * @Id: curs_deleteln.3x,v 1.38 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_deleteln 3x</TITLE>
+<TITLE>curs_deleteln 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_deleteln 3x</H1>
+<H1 class="no-header">curs_deleteln 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>                                            <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
+<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>deleteln</STRONG>,  <STRONG>wdeleteln</STRONG>, <STRONG>insdelln</STRONG>, <STRONG>winsdelln</STRONG>, <STRONG>insertln</STRONG>, <STRONG>winsertln</STRONG> - delete
-       and insert lines in a <STRONG>curses</STRONG> window
+       or insert lines in a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -81,7 +81,7 @@
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All routines return the integer  <STRONG>ERR</STRONG>  upon  failure  and  an  <STRONG>OK</STRONG>  (SVr4
+       These routines return the integer <STRONG>ERR</STRONG> upon  failure  and  an  <STRONG>OK</STRONG>  (SVr4
        specifies  only  "an  integer  value  other  than <STRONG>ERR</STRONG>") upon successful
        completion.
 
        window parameter is null, an error is returned.
 
 
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.  The
-       standard specifies that they return <STRONG>ERR</STRONG> on failure,  but  specifies  no
-       error conditions.
-
-
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that all but <STRONG>winsdelln</STRONG> may be macros.
 
        window.
 
 
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These functions are described in X/Open Curses, Issue 4.  The  standard
+       specifies  that  they  return  <STRONG>ERR</STRONG>  on  failure, but specifies no error
+       conditions.
+
+
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
 
 
 
-                                                             <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                 <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index f3d396ec3ca430cc16f52f026c241d6138a7e135..e8b3a4682f7357b6a8d0932c4969044da13c221c 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1999-2010,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1999-on
-  * @Id: curs_extend.3x,v 1.28 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_extend.3x,v 1.46 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_extend 3x</TITLE>
+<TITLE>curs_extend 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_extend 3x</H1>
+<H1 class="no-header">curs_extend 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>                                                <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>
+<STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>curses_version</STRONG>, <STRONG>use_extended_names</STRONG> - miscellaneous curses extensions
+       <STRONG>curses_version</STRONG>, <STRONG>use_extended_names</STRONG> - miscellaneous <EM>curses</EM> extensions
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        this and restore it.
 
 
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       These  functions  are <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> extensions, and are not found in SVr4
+       <EM>curses</EM>, 4.4BSD <EM>curses</EM>, or any other previous curses implementation.
+
+
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  are  specific  to ncurses.  They were not supported on
-       Version 7, BSD or System V implementations.  It is recommended that any
-       code depending on them be conditioned using NCURSES_VERSION.
+       Applications employing <EM>ncurses</EM> extensions should condition their use on
+       the visibility of the <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
+
+
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Thomas Dickey.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>,    <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>,    <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>,    <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>,
        <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>,    <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>,     <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>,     <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>,
-       <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Thomas Dickey.
+       <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                   <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index 903172b00effd4539f92cee670a50221c75560ad..291ef67f1c0a84a513b51b133da935374485363c 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_get_wch.3x,v 1.17 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_get_wch.3x,v 1.40 2024/04/20 19:23:03 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_get_wch 3x</TITLE>
+<TITLE>curs_get_wch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_get_wch 3x</H1>
+<H1 class="no-header">curs_get_wch 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>                                              <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
+<STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, <STRONG>mvwget_wch</STRONG>, <STRONG>unget_wch</STRONG> - get (or push
-       back) a wide character from curses terminal keyboard
+       <STRONG>get_wch</STRONG>,  <STRONG>wget_wch</STRONG>,  <STRONG>mvget_wch</STRONG>,  <STRONG>mvwget_wch</STRONG>,  <STRONG>unget_wch</STRONG>  - get (or push
+       back) a wide character from <EM>curses</EM> terminal keyboard
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>int</STRONG> <STRONG>mvget_wch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwget_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>unget_wch(const</STRONG> <STRONG>wchar_t</STRONG> <EM>wch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>unget_wch(const</STRONG> <STRONG>wchar_t</STRONG> <EM>wc</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
-</PRE><H3><a name="h3-wget_wch">wget_wch</a></H3><PRE>
-       The <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, and <STRONG>mvwget_wch</STRONG> functions read a char-
-       acter  from  the terminal associated with the current or specified win-
-       dow.  In no-delay mode, if no input is waiting, the value  <STRONG>ERR</STRONG>  is  re-
-       turned.   In delay mode, the program waits until the system passes text
-       through to the program.  Depending on the setting of  <STRONG>cbreak</STRONG>,  this  is
-       after one character (cbreak mode), or after the first newline (nocbreak
-       mode).  In half-delay mode, the program waits until the  user  types  a
-       character or the specified timeout interval has elapsed.
-
-       Unless  <STRONG>noecho</STRONG> has been set, these routines echo the character into the
-       designated window.
-
-       If the window is not a pad and has been moved  or  modified  since  the
-       last call to <STRONG>wrefresh</STRONG>, <STRONG>wrefresh</STRONG> will be called before another character
-       is read.
-
-       If <STRONG>keypad</STRONG> is enabled, these functions respond  to  the  pressing  of  a
-       function key by setting the object pointed to by <EM>wch</EM> to the keycode as-
-       signed to the function key, and returning <STRONG>KEY_CODE_YES</STRONG>.  If a character
-       (such  as  escape) that could be the beginning of a function key is re-
-       ceived, curses sets a timer.  If the remainder of the sequence does ar-
-       rive  within  the designated time, curses passes through the character;
-       otherwise, curses returns the function key  value.   For  this  reason,
-       many  terminals  experience a delay between the time a user presses the
-       escape key and the time the escape is returned to the program.
-
-       The keycodes returned by these functions are the same as those returned
-       by <STRONG>wgetch</STRONG>:
-
-       <STRONG>o</STRONG>   The  predefined  function  keys  are listed in <STRONG>&lt;curses.h&gt;</STRONG> as macros
-           with values outside the range of 8-bit characters.  Their names be-
-           gin with <STRONG>KEY_</STRONG>.
-
-       <STRONG>o</STRONG>   Other  (user-defined)  function keys which may be defined using <STRONG>de-</STRONG>
-           <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG> have no names, but also are expected  to  have  values
-           outside the range of 8-bit characters.
-
-
-</PRE><H3><a name="h3-unget_wch">unget_wch</a></H3><PRE>
-       The <STRONG>unget_wch</STRONG> function pushes the wide character <EM>wch</EM> back onto the head
-       of the input queue, so the wide character is returned by the next  call
-       to  <STRONG>get_wch</STRONG>.  The pushback of one character is guaranteed.  If the pro-
-       gram calls <STRONG>unget_wch</STRONG> too many times  without  an  intervening  call  to
-       <STRONG>get_wch</STRONG>, the operation may fail.
-
-       Unlike <STRONG>ungetch</STRONG> and <STRONG>wgetch</STRONG>, <STRONG>unget_wch</STRONG> cannot distinguish special charac-
-       ters returned by <STRONG>wget_wch</STRONG> from ordinary characters.  An application can
-       push  special  keys  which it may read via <STRONG>wget_wch</STRONG> by checking for the
-       <STRONG>KEY_CODE_YES</STRONG> result, and using <STRONG>ungetch</STRONG> for those special keys.
+</PRE><H3><a name="h3-Reading-Characters">Reading Characters</a></H3><PRE>
+       <STRONG>wget_wch</STRONG> gathers a key stroke <EM>wch</EM> from the terminal keyboard associated
+       with  a  <EM>curses</EM>  window  <EM>win</EM>, returning <STRONG>OK</STRONG> if a wide character is read,
+       <STRONG>KEY_CODE_YES</STRONG> if a function key is read, and <STRONG>ERR</STRONG>  if  no  key  event  is
+       available.  <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> describes the variants of this function.
 
+       When  input  is pending, <STRONG>wget_wch</STRONG> stores an integer identifying the key
+       stroke in <EM>wch</EM>;  for  alphanumeric  and  punctuation  keys,  this  value
+       corresponds to the character encoding used by the terminal.  Use of the
+       control key as a modifier  often  results  in  a  distinct  code.   The
+       behavior  of  other  keys depends on whether <EM>win</EM> is in keypad mode; see
+       subsections "Keypad Mode" and "Predefined Key Codes" in <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>.
 
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The header file  <STRONG>&lt;curses.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;stdio.h&gt;</STRONG>.
+       If no input is pending, then if the no-delay flag is set in the  window
+       (see  <STRONG><A HREF="nodelay.3x.html">nodelay(3x)</A></STRONG>),  the  function returns <STRONG>ERR</STRONG>; otherwise, <EM>curses</EM> waits
+       until the terminal has input.  If  <STRONG><A HREF="curs_inopts.3x.html">cbreak(3x)</A></STRONG>  has  been  called,  this
+       happens  after one character is read.  If <STRONG><A HREF="curs_inopts.3x.html">nocbreak(3x)</A></STRONG> has been called,
+       it occurs when the next newline is read.   If  <STRONG><A HREF="curs_inopts.3x.html">halfdelay(3x)</A></STRONG>  has  been
+       called,  <EM>curses</EM> waits until a character is typed or the specified delay
+       elapses.
+
+       If <STRONG><A HREF="curs_inopts.3x.html">echo(3x)</A></STRONG> has been called, and the window is not a pad, <EM>curses</EM> writes
+       <EM>wch</EM> to the window (at the cursor position) per the following rules.
+
+       <STRONG>o</STRONG>   If  <EM>wch</EM>  matches  the  terminal's erase character, the cursor moves
+           leftward one  position  and  the  new  position  is  erased  as  if
+           <STRONG><A HREF="curs_move.3x.html">wmove(3x)</A></STRONG>  and  then  <STRONG><A HREF="curs_delch.3x.html">wdelch(3x)</A></STRONG>  were  called.   When the window's
+           keypad mode is enabled (see below), <STRONG>KEY_LEFT</STRONG> and <STRONG>KEY_BACKSPACE</STRONG>  are
+           handled the same way.
 
-       Applications  should  not  define the escape key by itself as a single-
-       character function.
+       <STRONG>o</STRONG>   <EM>curses</EM> writes any other <EM>wch</EM> to the window, as with <STRONG><A HREF="curs_add_wch.3x.html">wecho_wchar(3x)</A></STRONG>.
 
-       When using <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>,  or  <STRONG>mvwget_wch</STRONG>,  applications
-       should not use <STRONG>nocbreak</STRONG> mode and <STRONG>echo</STRONG> mode at the same time.  Depending
-       on the state of the tty driver when each character is typed,  the  pro-
-       gram may produce undesirable results.
+       <STRONG>o</STRONG>   If  the  window  has  been moved or modified since the last call to
+           <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG>, <EM>curses</EM> calls <STRONG>wrefresh</STRONG>.
 
-       All functions except <STRONG>wget_wch</STRONG> and <STRONG>unget_wch</STRONG> may be macros.
+       If <EM>wch</EM> is a carriage return and <STRONG><A HREF="curs_inopts.3x.html">nl(3x)</A></STRONG> has been called,  <STRONG>wgetch</STRONG>  stores
+       the the character code for newline (line feed) in <EM>wch</EM> instead.
+
+
+</PRE><H3><a name="h3-Ungetting-Characters">Ungetting Characters</a></H3><PRE>
+       <STRONG>unget_wch</STRONG>  places  <EM>wch</EM>  into the input queue to be returned by the next
+       call to <STRONG>wget_wch</STRONG>.  A single input queue serves all windows.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       When <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, and <STRONG>mvwget_wch</STRONG> functions successful-
-       ly report the pressing of a function  key,  they  return  <STRONG>KEY_CODE_YES</STRONG>.
-       When they successfully report a wide character, they return <STRONG>OK</STRONG>.  Other-
-       wise, they return <STRONG>ERR</STRONG>.
+       <STRONG>wget_wch</STRONG> returns <STRONG>OK</STRONG> when it reads a  wide  character  and  <STRONG>KEY_CODE_YES</STRONG>
+       when it reads a function key code.  It returns <STRONG>ERR</STRONG> if
+
+       <STRONG>o</STRONG>   the <EM>WINDOW</EM> pointer is <STRONG>NULL</STRONG>, or
 
-       Upon successful completion, <STRONG>unget_wch</STRONG> returns <STRONG>OK</STRONG>.  Otherwise, the func-
-       tion returns <STRONG>ERR</STRONG>.
+       <STRONG>o</STRONG>   its timeout expires without any data arriving, or
+
+       <STRONG>o</STRONG>   execution  was  interrupted by a signal, in which case <STRONG>errno</STRONG> is set
+           to <STRONG>EINTR</STRONG>.
+
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+       <STRONG>unget_wch</STRONG> returns <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> if there is no more room in the
+       input queue.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       See the "NOTES" section of <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       All of these functions except <STRONG>wget_wch</STRONG> and <STRONG>unget_wch</STRONG> may be implemented
+       as macros.
+
+       Unlike  <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>,  <STRONG>wget_wch</STRONG>  and  its variants store the value of the
+       input character in an additional <EM>wch</EM> parameter instead  of  the  return
+       value.
+
+       Unlike   <STRONG>ungetch</STRONG>,  <STRONG>unget_wch</STRONG>  cannot  distinguish  function  key  codes
+       <STRONG>wget_wch</STRONG>  from  conventional  character  codes.   An  application   can
+       overcome this limitation by pushing function key codes with <STRONG>ungetch</STRONG> and
+       subsequently checking the return value of <STRONG>wget_wch</STRONG>  for  a  match  with
+       <STRONG>KEY_CODE_YES</STRONG>.
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       See the "EXTENSIONS" section of <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       Applications employing <EM>ncurses</EM> extensions should condition their use on
+       the visibility of the <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
+
+       X/Open Curses, Issue 4 describes  these  functions.   It  specifies  no
+       error conditions for them.
+
+       See  the  "PORTABILITY" section of <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> regarding the interaction
+       of <STRONG>wget_wch</STRONG> with signal handlers.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,    <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>,    <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>,    <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+       <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM> library in
+       its non-wide-character configuration.
+
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,     <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>,    <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,    <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
 
 
 
-                                                              <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                  <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-wget_wch">wget_wch</a></li>
-<li><a href="#h3-unget_wch">unget_wch</a></li>
+<li><a href="#h3-Reading-Characters">Reading Characters</a></li>
+<li><a href="#h3-Ungetting-Characters">Ungetting Characters</a></li>
 </ul>
 </li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 4623161f6a94f536d0392d61e592973d909644d3..9e18e64f3dae6a3e17b31353fd1db87872063150 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_get_wstr.3x,v 1.26 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_get_wstr.3x,v 1.48 2024/04/20 19:18:18 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_get_wstr 3x</TITLE>
+<TITLE>curs_get_wstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_get_wstr 3x</H1>
+<H1 class="no-header">curs_get_wstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>                                            <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>get_wstr</STRONG>, <STRONG>getn_wstr</STRONG>, <STRONG>wget_wstr</STRONG>, <STRONG>wgetn_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>,
-       <STRONG>mvwget_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG> - get an array of wide characters from a
-       curses terminal keyboard
+       <STRONG>get_wstr</STRONG>,  <STRONG>getn_wstr</STRONG>,  <STRONG>wget_wstr</STRONG>,  <STRONG>wgetn_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>,
+       <STRONG>mvwget_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG> - get a wide-character string from  a  <EM>curses</EM>
+       terminal keyboard
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The  effect  of  <STRONG>get_wstr</STRONG> is as though a series of calls to <STRONG><A HREF="curs_get_wch.3x.html">get_wch(3x)</A></STRONG>
-       were made, until a newline, other end-of-line, or end-of-file condition
-       is  processed.  An end-of-file condition is represented by <STRONG>WEOF</STRONG>, as de-
-       fined in <STRONG>&lt;wchar.h&gt;</STRONG>.  The newline and end-of-line conditions are  repre-
-       sented  by  the  <STRONG>\n</STRONG>  <STRONG>wchar_t</STRONG>  value.   In all instances, the end of the
-       string is terminated by a null <STRONG>wchar_t</STRONG>.  The routine  places  resulting
-       values in the area pointed to by <EM>wstr</EM>.
+       The  function  <STRONG>wgetn_wstr</STRONG>  is  equivalent  to  a  series  of  calls  to
+       <STRONG><A HREF="curs_get_wch.3x.html">wget_wch(3x)</A></STRONG> until a newline or carriage return terminates the series:
 
-       The  user's  erase and kill characters are interpreted.  If keypad mode
-       is on for the window, <STRONG>KEY_LEFT</STRONG> and <STRONG>KEY_BACKSPACE</STRONG>  are  both  considered
-       equivalent to the user's kill character.
+       <STRONG>o</STRONG>   The terminating character is not included in the returned string.
 
-       Characters  input  are  echoed  only  if <STRONG>echo</STRONG> is currently on.  In that
-       case, backspace is echoed as deletion of the previous character  (typi-
-       cally a left motion).
+       <STRONG>o</STRONG>   An end-of-file condition is represented  by  <STRONG>WEOF</STRONG>,  as  defined  in
+           <STRONG>&lt;wchar.h&gt;</STRONG>.
 
-       The effect of <STRONG>wget_wstr</STRONG> is as though a series of calls to <STRONG>wget_wch</STRONG> were
-       made.
+       <STRONG>o</STRONG>   In  all  instances,  the  end of the string is terminated by a null
+           <STRONG>wchar_t</STRONG>.
 
-       The effect of <STRONG>mvget_wstr</STRONG> is as though a call to <STRONG>move</STRONG> and then a  series
-       of calls to <STRONG>get_wch</STRONG> were made.
+       <STRONG>o</STRONG>   The function stores the result in the area pointed to by  the  <EM>wstr</EM>
+           parameter.
 
-       The  effect  of <STRONG>mvwget_wstr</STRONG> is as though a call to <STRONG>wmove</STRONG> and then a se-
-       ries of calls to <STRONG>wget_wch</STRONG> were made.
+       <STRONG>o</STRONG>   The function reads at most <EM>n</EM> characters, thus preventing a possible
+           overflow of the input buffer.
 
-       The <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, and <STRONG>wgetn_wstr</STRONG> functions  are
-       identical to the <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, and <STRONG>wget_wstr</STRONG> func-
-       tions, respectively, except that the <STRONG>*n_*</STRONG> versions read at most <EM>n</EM> char-
-       acters, letting the application prevent overflow of the input buffer.
+           Any attempt to enter more characters (other  than  the  terminating
+           newline or carriage return) causes a beep.
 
+           Function keys also cause a beep and are ignored.
 
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Using  <STRONG>get_wstr</STRONG>,  <STRONG>mvget_wstr</STRONG>,  <STRONG>mvwget_wstr</STRONG>, or <STRONG>wget_wstr</STRONG> to read a line
-       that overflows the array pointed to by <STRONG>wstr</STRONG> causes  undefined  results.
-       The use of <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, or <STRONG>wgetn_wstr</STRONG>, respec-
-       tively, is recommended.
+       The user's <EM>erase</EM> and <EM>kill</EM> characters are interpreted:
 
-       These functions cannot return <STRONG>KEY_</STRONG> values because there is  no  way  to
-       distinguish a <STRONG>KEY_</STRONG> value from a valid <STRONG>wchar_t</STRONG> value.
+       <STRONG>o</STRONG>   The  <EM>erase</EM>  character (e.g., <STRONG>^H</STRONG>) erases the character at the end of
+           the buffer, moving the cursor to the left.
+
+           If <EM>keypad</EM> mode is on for the window, <STRONG>KEY_LEFT</STRONG> and <STRONG>KEY_BACKSPACE</STRONG> are
+           both considered equivalent to the user's <EM>erase</EM> character.
+
+       <STRONG>o</STRONG>   The <EM>kill</EM> character (e.g., <STRONG>^U</STRONG>) erases the entire buffer, leaving the
+           cursor at the beginning of the buffer.
 
-       All of these routines except <STRONG>wgetn_wstr</STRONG> may be macros.
+       Characters input are echoed only if <STRONG>echo</STRONG>  is  currently  on.   In  that
+       case,  backspace  is  echoed  as  deletion  of  the  previous character
+       (typically a left motion).
+
+       The <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, and <STRONG>wgetn_wstr</STRONG> functions  are
+       identical  to  the  <STRONG>get_wstr</STRONG>,  <STRONG>mvget_wstr</STRONG>,  <STRONG>mvwget_wstr</STRONG>,  and <STRONG>wget_wstr</STRONG>
+       functions, respectively, except that the <STRONG>*n_*</STRONG> versions read at  most  <EM>n</EM>
+       characters,  letting  the  application  prevent  overflow  of the input
+       buffer.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All  of  these  functions return <STRONG>OK</STRONG> upon successful completion.  Other-
-       wise, they return <STRONG>ERR</STRONG>.
+       All  of  these  functions  return  the  integer  <STRONG>OK</STRONG>   upon   successful
+       completion.  If unsuccessful, they return <STRONG>ERR</STRONG>.
+
+       X/Open defines no error conditions.
+
+       In this implementation, these functions return an error
+
+       <STRONG>o</STRONG>   if the window pointer is null,
 
-       Functions using a window parameter return an error if it is null.
+       <STRONG>o</STRONG>   if its timeout expires without having any data, or
 
-              <STRONG>wgetn_wstr</STRONG>
-                   returns an error if the associated call to <STRONG>wget_wch</STRONG> failed.
+       <STRONG>o</STRONG>   if the associated call to <STRONG>wget_wch</STRONG> failed.
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       Any of these functions other than <STRONG>wgetn_wstr</STRONG> may be macros.
+
+       Using <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, or <STRONG>wget_wstr</STRONG> to  read  a  line
+       that  overflows  the array pointed to by <STRONG>wstr</STRONG> causes undefined results.
+       The  use  of  <STRONG>getn_wstr</STRONG>,  <STRONG>mvgetn_wstr</STRONG>,  <STRONG>mvwgetn_wstr</STRONG>,  or   <STRONG>wgetn_wstr</STRONG>,
+       respectively, is recommended.
+
+       These  functions  cannot  return <STRONG>KEY_</STRONG> values because there is no way to
+       distinguish a <STRONG>KEY_</STRONG> value from a valid <STRONG>wchar_t</STRONG> value.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These functions are described in The Single Unix Specification, Version
-       2.   No  error conditions are defined.  This implementation returns <STRONG>ERR</STRONG>
-       if the window pointer is null, or if the lower-level <STRONG>wget_wch</STRONG> call  re-
-       turns  an <STRONG>ERR</STRONG>.  In the latter case, an <STRONG>ERR</STRONG> return without other data is
-       treated as an end-of-file condition, and the returned array contains  a
-       <STRONG>WEOF</STRONG> followed by a null <STRONG>wchar_t</STRONG>.
+       2.  No error conditions are defined.
+
+       This  implementation  returns  <STRONG>ERR</STRONG> if the window pointer is null, or if
+       the lower-level <STRONG>wget_wch</STRONG> call returns an <STRONG>ERR</STRONG>.  In the latter  case,  an
+       <STRONG>ERR</STRONG>  return  without other data is treated as an end-of-file condition,
+       and the returned array contains a <STRONG>WEOF</STRONG> followed by a null <STRONG>wchar_t</STRONG>.
 
        X/Open curses documented these functions to pass an array of <STRONG>wchar_t</STRONG> in
        1997, but that was an error because of this part of the description:
 
               The effect of <STRONG>get_wstr</STRONG> is as though a series of calls to <STRONG>get_wch</STRONG>
-              were  made, until a newline character, end-of-line character, or
+              were made, until a newline character, end-of-line character,  or
               end-of-file character is processed.
 
-       The latter function <EM>get</EM><STRONG>_</STRONG><EM>wch</EM> can return a negative value, while  <STRONG>wchar_t</STRONG>
-       is  a  unsigned  type.  All of the vendors implement this using <STRONG>wint_t</STRONG>,
+       The  latter function <EM>get</EM><STRONG>_</STRONG><EM>wch</EM> can return a negative value, while <STRONG>wchar_t</STRONG>
+       is a unsigned type.  All of the vendors implement  this  using  <STRONG>wint_t</STRONG>,
        following the standard.
 
-       X/Open Curses, Issue 7 (2009) is unclear regarding whether  the  termi-
-       nating <EM>null</EM> <STRONG>wchar_t</STRONG> value is counted in the length parameter <EM>n</EM>.  X/Open
-       Curses, Issue 7 revised the corresponding description  of  <STRONG>wgetnstr</STRONG>  to
-       address this issue.  The unrevised description of <STRONG>wget_nwstr</STRONG> can be in-
-       terpreted either way.  This implementation counts the terminator in the
-       length.
+       X/Open  Curses,  Issue  7  (2009)  is  unclear  regarding  whether  the
+       terminating <EM>null</EM> <STRONG>wchar_t</STRONG> value is counted in the  length  parameter  <EM>n</EM>.
+       X/Open  Curses,  Issue  7  revised  the  corresponding  description  of
+       <STRONG>wgetnstr</STRONG>  to  address  this  issue.   The  unrevised   description   of
+       <STRONG>wget_nwstr</STRONG>  can  be interpreted either way.  This implementation counts
+       the terminator in the length.
 
-       X/Open  Curses  does  not specify what happens if the length <EM>n</EM> is nega-
-       tive.
+       X/Open Curses does  not  specify  what  happens  if  the  length  <EM>n</EM>  is
+       negative.
 
-       <STRONG>o</STRONG>   For analogy with <STRONG>wgetnstr</STRONG>, ncurses  6.2  uses  a  limit  (based  on
+       <STRONG>o</STRONG>   For  analogy  with  <STRONG>wgetnstr</STRONG>,  <EM>ncurses</EM>  6.2  uses a limit (based on
            <STRONG>LINE_MAX</STRONG>).
 
-       <STRONG>o</STRONG>   Some  other  implementations (such as Solaris xcurses) do the same,
+       <STRONG>o</STRONG>   Some other implementations (such as Solaris xcurses) do  the  same,
            while others (PDCurses) do not allow this.
 
-       <STRONG>o</STRONG>   NetBSD 7 curses imitates ncurses 6.1 in this regard, treating a  <STRONG>-1</STRONG>
+       <STRONG>o</STRONG>   NetBSD  7 curses imitates <EM>ncurses</EM> 6.1 in this regard, treating a <STRONG>-1</STRONG>
            as an indefinite number of characters.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       Functions: <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> describes comparable functions of the  <EM>ncurses</EM>  library
+       in its non-wide-character configuration.
+
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
 
 
 
-                                                             <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                 <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
index b3f0383b958b5070e66df83047d6df62d90d87ee..c1edf2841c3645d98ead7403a4fcf0aa6d4cf451 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2001-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_getcchar.3x,v 1.27 2021/12/25 20:35:03 tom Exp @
+  * @Id: curs_getcchar.3x,v 1.49 2024/04/20 18:55:09 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_getcchar 3x</TITLE>
+<TITLE>curs_getcchar 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_getcchar 3x</H1>
+<H1 class="no-header">curs_getcchar 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>                                            <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
+<STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>getcchar</STRONG>,  <STRONG>setcchar</STRONG>  - Get a wide character string and rendition from a
-       <STRONG>cchar_t</STRONG> or set a <STRONG>cchar_t</STRONG> from a wide-character string
+       <STRONG>getcchar</STRONG>,  <STRONG>setcchar</STRONG>  -  convert  between  a wide-character string and a
+       <EM>curses</EM> complex character
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>getcchar(</STRONG>
-               <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>,</STRONG>
-               <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG>
+               <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG>
+               <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wc</EM><STRONG>,</STRONG>
                <STRONG>attr_t</STRONG> <STRONG>*</STRONG><EM>attrs</EM><STRONG>,</STRONG>
                <STRONG>short</STRONG> <STRONG>*</STRONG><EM>color</EM><STRONG>_</STRONG><EM>pair</EM><STRONG>,</STRONG>
                <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM> <STRONG>);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>setcchar(</STRONG>
-               <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>,</STRONG>
-               <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG>
+               <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG>
+               <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wc</EM><STRONG>,</STRONG>
                <STRONG>const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG>
                <STRONG>short</STRONG> <EM>color</EM><STRONG>_</STRONG><EM>pair</EM><STRONG>,</STRONG>
                <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM> <STRONG>);</STRONG>
 
 </PRE><H3><a name="h3-getcchar">getcchar</a></H3><PRE>
        The <STRONG>getcchar</STRONG> function gets a wide-character string and rendition from a
-       <STRONG>cchar_t</STRONG>  argument.   When  <EM>wch</EM>  is  not  a  null  pointer, the <STRONG>getcchar</STRONG>
-       function does the following:
+       <STRONG>cchar_t</STRONG> argument.  When <EM>wc</EM> is not a null pointer, the <STRONG>getcchar</STRONG> function
+       does the following:
 
-       <STRONG>o</STRONG>   Extracts information from a <STRONG>cchar_t</STRONG> value <EM>wcval</EM>
+       <STRONG>o</STRONG>   Extracts information from a <STRONG>cchar_t</STRONG> value <EM>wch</EM>
 
        <STRONG>o</STRONG>   Stores the character attributes in the location pointed to by <EM>attrs</EM>
 
-       <STRONG>o</STRONG>   Stores the color-pair in the location pointed to by <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
+       <STRONG>o</STRONG>   Stores the color pair in the location pointed to by <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
 
-       <STRONG>o</STRONG>   Stores the wide-character string, characters referenced  by  <EM>wcval</EM>,
-           into the array pointed to by <EM>wch</EM>.
+       <STRONG>o</STRONG>   Stores the wide-character string,  characters  referenced  by  <EM>wch</EM>,
+           into the array pointed to by <EM>wc</EM>.
 
-       When <EM>wch</EM> is a null pointer, the <STRONG>getcchar</STRONG> function does the following:
+       When <EM>wc</EM> is a null pointer, the <STRONG>getcchar</STRONG> function does the following:
 
-       <STRONG>o</STRONG>   Obtains the number of wide characters pointed to by <EM>wcval</EM>
+       <STRONG>o</STRONG>   Obtains the number of wide characters pointed to by <EM>wch</EM>
 
        <STRONG>o</STRONG>   Does not change the data referenced by <EM>attrs</EM> or <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
 
 
 </PRE><H3><a name="h3-setcchar">setcchar</a></H3><PRE>
-       The  <STRONG>setcchar</STRONG>  function initializes the location pointed to by <EM>wcval</EM> by
+       The  <STRONG>setcchar</STRONG>  function  initializes  the location pointed to by <EM>wch</EM> by
        using:
 
        <STRONG>o</STRONG>   The character attributes in <EM>attrs</EM>
 
        <STRONG>o</STRONG>   The color pair in <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
 
-       <STRONG>o</STRONG>   The wide-character string pointed to by <EM>wch</EM>.  The  string  must  be
+       <STRONG>o</STRONG>   The wide-character string pointed to by <EM>wc</EM>.   The  string  must  be
            L'\0' terminated, contain at most one spacing character, which must
            be the first.
 
-           Up to <STRONG>CCHARW_MAX</STRONG>-1 nonspacing characters  may  follow.   Additional
-           nonspacing characters are ignored.
+           Up to <STRONG>CCHARW_MAX</STRONG>-1 non-spacing characters may  follow.   Additional
+           non-spacing characters are ignored.
 
            The string may contain a single control character instead.  In that
-           case, no nonspacing characters are allowed.
+           case, no non-spacing characters are allowed.
 
 
-</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
-       X/Open Curses documents the <EM>opts</EM> argument as reserved for  future  use,
-       saying  that  it must be null.  This implementation uses that parameter
-       in ABI 6 for the functions which have a color-pair parameter to support
-       extended color pairs:
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       When <EM>wc</EM> is  a  null  pointer,  <STRONG>getcchar</STRONG>  returns  the  number  of  wide
+       characters referenced by <EM>wch</EM>, including one for a trailing null.
 
-       <STRONG>o</STRONG>   For   functions  which modify the color, e.g., <STRONG>setcchar</STRONG>, if <EM>opts</EM> is
-           set it is treated as a pointer to <STRONG>int</STRONG>, and used to  set  the  color
-           pair instead of the <STRONG>short</STRONG> pair parameter.
+       When  <EM>wc</EM>  is  not  a  null pointer, <STRONG>getcchar</STRONG> returns <STRONG>OK</STRONG> upon successful
+       completion, and <STRONG>ERR</STRONG> otherwise.
 
-       <STRONG>o</STRONG>   For  functions which retrieve the color, e.g., <STRONG>getcchar</STRONG>, if <EM>opts</EM> is
-           set it is treated as a pointer to <STRONG>int</STRONG>, and  used  to  retrieve  the
-           color  pair  as  an  <STRONG>int</STRONG>  value,  in addition retrieving it via the
-           standard pointer to <STRONG>short</STRONG> parameter.
+       Upon successful completion, <STRONG>setcchar</STRONG> returns <STRONG>OK</STRONG>.  Otherwise, it returns
+       <STRONG>ERR</STRONG>.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The <EM>wcval</EM> argument may be a value generated by a call to <STRONG>setcchar</STRONG> or by
-       a function that has a <STRONG>cchar_t</STRONG> output argument.  If <EM>wcval</EM> is constructed
-       by any other means, the effect is unspecified.
+       The <EM>wch</EM> argument may be a value generated by a call to <STRONG>setcchar</STRONG> or by a
+       function that has a <STRONG>cchar_t</STRONG> output argument.  If <EM>wch</EM> is constructed  by
+       any other means, the effect is unspecified.
 
 
-</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       When <EM>wch</EM> is a  null  pointer,  <STRONG>getcchar</STRONG>  returns  the  number  of  wide
-       characters referenced by <EM>wcval</EM>, including one for a trailing null.
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       X/Open  Curses  documents the <EM>opts</EM> argument as reserved for future use,
+       saying that it must be null.  This implementation uses  that  parameter
+       in ABI 6 for the functions which have a color pair parameter to support
+       extended color pairs:
 
-       When  <EM>wch</EM>  is  not  a null pointer, <STRONG>getcchar</STRONG> returns <STRONG>OK</STRONG> upon successful
-       completion, and <STRONG>ERR</STRONG> otherwise.
+       <STRONG>o</STRONG>   For  functions  which modify the color, e.g., <STRONG>setcchar</STRONG>, if <EM>opts</EM>  is
+           set it is treated as a pointer to <STRONG>int</STRONG>, and used to  set  the  color
+           pair instead of the <STRONG>short</STRONG> pair parameter.
 
-       Upon successful completion, <STRONG>setcchar</STRONG> returns <STRONG>OK</STRONG>.  Otherwise, it returns
-       <STRONG>ERR</STRONG>.
+       <STRONG>o</STRONG>   For functions which retrieve the color, e.g., <STRONG>getcchar</STRONG>, if <EM>opts</EM>  is
+           set it is treated as a pointer to <STRONG>int</STRONG>, and  used  to  retrieve  the
+           color pair as an <STRONG>int</STRONG> value,  in  addition  retrieving  it  via  the
+           standard pointer to <STRONG>short</STRONG> parameter.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The  <STRONG>CCHARW_MAX</STRONG>  symbol is specific to ncurses.  X/Open Curses does not
+       The  <STRONG>CCHARW_MAX</STRONG>  symbol is specific to <EM>ncurses</EM>.  X/Open Curses does not
        provide details for the layout of the <STRONG>cchar_t</STRONG> structure.  It tells what
        data are stored in it:
 
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       Functions: <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>wcwidth(3)</STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG>wcwidth(3)</STRONG>
 
 
 
-                                                             <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                 <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h3-setcchar">setcchar</a></li>
 </ul>
 </li>
-<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
index 5a1afc5c3ccf745564869b5e96554fd5b0949d52..fd8a8909f3e7040f679472f1641d7999c5ccbee8 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_getch.3x,v 1.63 2022/02/12 20:07:45 tom Exp @
+  * @Id: curs_getch.3x,v 1.87 2024/04/20 19:18:18 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_getch 3x</TITLE>
+<TITLE>curs_getch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_getch 3x</H1>
+<H1 class="no-header">curs_getch 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+<STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, <STRONG>mvwgetch</STRONG>, <STRONG>ungetch</STRONG>, <STRONG>has_key</STRONG> - get (or push back)
-       characters from <STRONG>curses</STRONG> terminal keyboard
+       characters from <EM>curses</EM> terminal keyboard
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
        <STRONG>int</STRONG> <STRONG>getch(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>wgetch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
-
        <STRONG>int</STRONG> <STRONG>mvgetch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwgetch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>ungetch(int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>ungetch(int</STRONG> <EM>c</EM><STRONG>);</STRONG>
 
-       /* extension */
-       <STRONG>int</STRONG> <STRONG>has_key(int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <EM>/*</EM> <EM>extension</EM> <EM>*/</EM>
+       <STRONG>int</STRONG> <STRONG>has_key(int</STRONG> <EM>c</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
-</PRE><H3><a name="h3-Reading-characters">Reading characters</a></H3><PRE>
-       The <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG> and <STRONG>mvwgetch</STRONG>, routines read a character from
-       the window.  In no-delay mode, if no input is waiting, the value <STRONG>ERR</STRONG> is
-       returned.  In delay mode, the program waits  until  the  system  passes
-       text  through to the program.  Depending on the setting of <STRONG>cbreak</STRONG>, this
-       is after one character  (cbreak  mode),  or  after  the  first  newline
-       (nocbreak mode).  In half-delay mode, the program waits until a charac-
-       ter is typed or the specified timeout has been reached.
-
-       If <STRONG>echo</STRONG> is enabled, and the window is not a  pad,  then  the  character
-       will also be echoed into the designated window according to the follow-
-       ing rules:
-
-       <STRONG>o</STRONG>   If the character is the current erase  character,  left  arrow,  or
-           backspace,  the  cursor  is  moved  one  space to the left and that
-           screen position is erased as if <STRONG>delch</STRONG> had been called.
-
-       <STRONG>o</STRONG>   If the character value is any other <STRONG>KEY_</STRONG> define, the user is alert-
-           ed with a <STRONG>beep</STRONG> call.
-
-       <STRONG>o</STRONG>   If  the character is a carriage-return, and if <STRONG>nl</STRONG> is enabled, it is
-           translated to a line-feed after echoing.
-
-       <STRONG>o</STRONG>   Otherwise the character is simply output to the screen.
-
-       If the window is not a pad, and it has been moved or modified since the
-       last call to <STRONG>wrefresh</STRONG>, <STRONG>wrefresh</STRONG> will be called before another character
-       is read.
-
-
-</PRE><H3><a name="h3-Keypad-mode">Keypad mode</a></H3><PRE>
-       If <STRONG>keypad</STRONG> is <STRONG>TRUE</STRONG>, and a function key is pressed, the  token  for  that
-       function key is returned instead of the raw characters:
-
-       <STRONG>o</STRONG>   The  predefined  function  keys  are listed in <STRONG>&lt;curses.h&gt;</STRONG> as macros
-           with values outside the range of 8-bit characters.  Their names be-
-           gin with <STRONG>KEY_</STRONG>.
-
-       <STRONG>o</STRONG>   Other  (user-defined)  function keys which may be defined using <STRONG>de-</STRONG>
-           <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG> have no names, but also are expected  to  have  values
-           outside the range of 8-bit characters.
-
-       Thus,  a  variable  intended to hold the return value of a function key
-       must be of short size or larger.
-
-       When a character that could be the beginning of a function key  is  re-
-       ceived  (which, on modern terminals, means an escape character), <STRONG>curses</STRONG>
-       sets a timer.  If the remainder of the sequence does not come in within
-       the  designated  time,  the character is passed through; otherwise, the
-       function key value is returned.  For this reason, many terminals  expe-
-       rience  a  delay between the time a user presses the escape key and the
-       escape is returned to the program.
-
-       In <STRONG>ncurses</STRONG>, the timer normally expires after the value in <STRONG>ESCDELAY</STRONG> (see
-       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>).   If <STRONG>notimeout</STRONG> is <STRONG>TRUE</STRONG>, the timer does not expire;
-       it is an infinite (or very large) value.  Because function keys usually
-       begin  with an escape character, the terminal may appear to hang in no-
-       timeout mode after  pressing  the  escape  key  until  another  key  is
-       pressed.
-
-
-</PRE><H3><a name="h3-Ungetting-characters">Ungetting characters</a></H3><PRE>
-       The  <STRONG>ungetch</STRONG> routine places <EM>ch</EM> back onto the input queue to be returned
-       by the next call to <STRONG>wgetch</STRONG>.  There is just one input queue for all win-
-       dows.
-
-
-</PRE><H3><a name="h3-Predefined-key-codes">Predefined key-codes</a></H3><PRE>
-       The following special keys are defined in <STRONG>&lt;curses.h&gt;</STRONG>.
-
-       <STRONG>o</STRONG>   Except  for  the special case <STRONG>KEY_RESIZE</STRONG>, it is necessary to enable
-           <STRONG>keypad</STRONG> for <STRONG>getch</STRONG> to return these codes.
-
-       <STRONG>o</STRONG>   Not all of these are necessarily supported on any particular termi-
-           nal.
-
-       <STRONG>o</STRONG>   The  naming  convention  may  seem obscure, with some apparent mis-
-           spellings (such as "RSUME" for "resume").  The names correspond  to
-           the  long  terminfo capability names for the keys, and were defined
-           long ago, in the 1980s.
-
-                  <STRONG>Name</STRONG>            <STRONG>Key</STRONG> <STRONG>name</STRONG>
-                  -------------------------------------------------
-                  KEY_BREAK       Break key
-                  KEY_DOWN        The four arrow keys ...
-                  KEY_UP
-                  KEY_LEFT
-                  KEY_RIGHT
-                  KEY_HOME        Home key (upward+left arrow)
-                  KEY_BACKSPACE   Backspace
-                  KEY_F0          Function keys; space for 64 keys
-                                  is reserved.
-                  KEY_F(<EM>n</EM>)        For 0 &lt;= <EM>n</EM> &lt;= 63
-                  KEY_DL          Delete line
-                  KEY_IL          Insert line
-                  KEY_DC          Delete character
-                  KEY_IC          Insert char or enter insert mode
-                  KEY_EIC         Exit insert char mode
-                  KEY_CLEAR       Clear screen
-                  KEY_EOS         Clear to end of screen
-                  KEY_EOL         Clear to end of line
-                  KEY_SF          Scroll 1 line forward
-                  KEY_SR          Scroll 1 line backward (reverse)
-                  KEY_NPAGE       Next page
-                  KEY_PPAGE       Previous page
-                  KEY_STAB        Set tab
-                  KEY_CTAB        Clear tab
-                  KEY_CATAB       Clear all tabs
-                  KEY_ENTER       Enter or send
-                  KEY_SRESET      Soft (partial) reset
-                  KEY_RESET       Reset or hard reset
-
-                  KEY_PRINT       Print or copy
-                  KEY_LL          Home down or bottom (lower left)
-                  KEY_A1          Upper left of keypad
-                  KEY_A3          Upper right of keypad
-                  KEY_B2          Center of keypad
-                  KEY_C1          Lower left of keypad
-                  KEY_C3          Lower right of keypad
-                  KEY_BTAB        Back tab key
-                  KEY_BEG         Beg(inning) key
-                  KEY_CANCEL      Cancel key
-                  KEY_CLOSE       Close key
-                  KEY_COMMAND     Cmd (command) key
-                  KEY_COPY        Copy key
-                  KEY_CREATE      Create key
-                  KEY_END         End key
-                  KEY_EXIT        Exit key
-                  KEY_FIND        Find key
-                  KEY_HELP        Help key
-                  KEY_MARK        Mark key
-                  KEY_MESSAGE     Message key
-                  KEY_MOUSE       Mouse event occurred
-                  KEY_MOVE        Move key
-                  KEY_NEXT        Next object key
-                  KEY_OPEN        Open key
-                  KEY_OPTIONS     Options key
-                  KEY_PREVIOUS    Previous object key
-                  KEY_REDO        Redo key
-                  KEY_REFERENCE   Ref(erence) key
-                  KEY_REFRESH     Refresh key
-                  KEY_REPLACE     Replace key
-                  KEY_RESIZE      Screen resized
-                  KEY_RESTART     Restart key
-                  KEY_RESUME      Resume key
-                  KEY_SAVE        Save key
-                  KEY_SBEG        Shifted beginning key
-                  KEY_SCANCEL     Shifted cancel key
-                  KEY_SCOMMAND    Shifted command key
-                  KEY_SCOPY       Shifted copy key
-                  KEY_SCREATE     Shifted create key
-                  KEY_SDC         Shifted delete char key
-                  KEY_SDL         Shifted delete line key
-                  KEY_SELECT      Select key
-                  KEY_SEND        Shifted end key
-                  KEY_SEOL        Shifted clear line key
-                  KEY_SEXIT       Shifted exit key
-                  KEY_SFIND       Shifted find key
-                  KEY_SHELP       Shifted help key
-                  KEY_SHOME       Shifted home key
-                  KEY_SIC         Shifted insert key
-                  KEY_SLEFT       Shifted left arrow key
-                  KEY_SMESSAGE    Shifted message key
-                  KEY_SMOVE       Shifted move key
-                  KEY_SNEXT       Shifted next key
-                  KEY_SOPTIONS    Shifted options key
-                  KEY_SPREVIOUS   Shifted prev key
-                  KEY_SPRINT      Shifted print key
-                  KEY_SREDO       Shifted redo key
-                  KEY_SREPLACE    Shifted replace key
-                  KEY_SRIGHT      Shifted right arrow key
-                  KEY_SRSUME      Shifted resume key
-                  KEY_SSAVE       Shifted save key
-                  KEY_SSUSPEND    Shifted suspend key
-                  KEY_SUNDO       Shifted undo key
-                  KEY_SUSPEND     Suspend key
-                  KEY_UNDO        Undo key
-
-       Keypad is arranged like this:
-
-                                +-----+------+-------+
-                                | <STRONG>A1</STRONG>  |  <STRONG>up</STRONG>  |  <STRONG>A3</STRONG>   |
-                                +-----+------+-------+
-                                |<STRONG>left</STRONG> |  <STRONG>B2</STRONG>  | <STRONG>right</STRONG> |
-                                +-----+------+-------+
-                                | <STRONG>C1</STRONG>  | <STRONG>down</STRONG> |  <STRONG>C3</STRONG>   |
-                                +-----+------+-------+
-       A few of these predefined values do <EM>not</EM> correspond to a real key:
-
-       <STRONG>o</STRONG>   <STRONG>KEY_RESIZE</STRONG>  is  returned when the <STRONG>SIGWINCH</STRONG> signal has been detected
-           (see  <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>  and  <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>).   This  code  is  returned
-           whether or not <STRONG>keypad</STRONG> has been enabled.
-
-       <STRONG>o</STRONG>   <STRONG>KEY_MOUSE</STRONG>  is returned for mouse-events (see <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>).  This
-           code relies upon whether or not <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG> has  been  enabled,  be-
-           cause  (e.g., with <STRONG>xterm(1)</STRONG> mouse prototocol) ncurses must read es-
-           cape sequences, just like a function key.
-
-
-</PRE><H3><a name="h3-Testing-key-codes">Testing key-codes</a></H3><PRE>
-       The <STRONG>has_key</STRONG> routine takes a key-code value from the above list, and re-
-       turns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG> according to whether the current terminal type rec-
-       ognizes a key with that value.
-
-       The library also supports these extensions:
-
-          <STRONG>define_key</STRONG>
-               defines a key-code for a given string (see <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>).
-
-          <STRONG>key_defined</STRONG>
-               checks if there is a key-code defined for a given  string  (see
-               <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>).
+</PRE><H3><a name="h3-Reading-Characters">Reading Characters</a></H3><PRE>
+       <STRONG>wgetch</STRONG> gathers a key stroke from the terminal keyboard associated  with
+       a  <EM>curses</EM>  window  <EM>win</EM>.   <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>  describes  the  variants of this
+       function.
+
+       When input is pending, <STRONG>wgetch</STRONG> returns an integer  identifying  the  key
+       stroke;  for  alphanumeric and punctuation keys, this value corresponds
+       to the character encoding used by the terminal.  Use of the control key
+       as  a modifier often results in a distinct code.  The behavior of other
+       keys depends on whether <EM>win</EM> is in keypad mode; see  subsection  "Keypad
+       Mode" below.
+
+       If  no input is pending, then if the no-delay flag is set in the window
+       (see <STRONG><A HREF="nodelay.3x.html">nodelay(3x)</A></STRONG>), the function returns <STRONG>ERR</STRONG>;  otherwise,  <EM>curses</EM>  waits
+       until  the  terminal  has  input.   If <STRONG><A HREF="curs_inopts.3x.html">cbreak(3x)</A></STRONG> has been called, this
+       happens after one character is read.  If <STRONG><A HREF="curs_inopts.3x.html">nocbreak(3x)</A></STRONG> has been  called,
+       it  occurs  when  the  next newline is read.  If <STRONG><A HREF="curs_inopts.3x.html">halfdelay(3x)</A></STRONG> has been
+       called, <EM>curses</EM> waits until a character is typed or the specified  delay
+       elapses.
+
+       If <STRONG><A HREF="curs_inopts.3x.html">echo(3x)</A></STRONG> has been called, and the window is not a pad, <EM>curses</EM> writes
+       the returned character <EM>c</EM> to the window (at the cursor position) per the
+       following rules.
+
+       <STRONG>o</STRONG>   If  <EM>c</EM>  matches  the  terminal's  erase  character, the cursor moves
+           leftward one  position  and  the  new  position  is  erased  as  if
+           <STRONG><A HREF="curs_move.3x.html">wmove(3x)</A></STRONG>  and  then  <STRONG><A HREF="curs_delch.3x.html">wdelch(3x)</A></STRONG>  were  called.   When the window's
+           keypad mode is enabled (see below), <STRONG>KEY_LEFT</STRONG> and <STRONG>KEY_BACKSPACE</STRONG>  are
+           handled the same way.
+
+       <STRONG>o</STRONG>   <EM>curses</EM> writes any other <EM>c</EM> to the window, as with <STRONG><A HREF="curs_addch.3x.html">wechochar(3x)</A></STRONG>.
+
+       <STRONG>o</STRONG>   If  the  window  has  been moved or modified since the last call to
+           <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG>, <EM>curses</EM> calls <STRONG>wrefresh</STRONG>.
+
+       If <EM>c</EM> is a carriage return and <STRONG><A HREF="curs_inopts.3x.html">nl(3x)</A></STRONG> has been  called,  <STRONG>wgetch</STRONG>  returns
+       the character code for line feed instead.
+
+
+</PRE><H3><a name="h3-Keypad-Mode">Keypad Mode</a></H3><PRE>
+       To  <EM>curses</EM>, key strokes not from the alphabetic section of the keyboard
+       (those    corresponding    to    the    ECMA-6    character    set--see
+       <STRONG>ascii(7)</STRONG>--optionally  modified by either the control or shift keys) are
+       treated as <EM>function</EM> keys.  (In <EM>curses</EM>, the term "function key" includes
+       but  is  not  limited to keycaps engraved with "F1", "PF1", and so on.)
+       If the  window  is  in  keypad  mode,  these  produce  a  numeric  code
+       corresponding  to the <STRONG>KEY_</STRONG> symbols listed in subsection "Predefined Key
+       Codes" below; otherwise, they transmit a sequence  of  codes  typically
+       starting  with  the  escape character, and which must be collected with
+       multiple <STRONG>wgetch</STRONG> calls.
+
+       <STRONG>o</STRONG>   The <EM>curses.h</EM> header file declares  many  <EM>predefined</EM>  <EM>function</EM>  <EM>keys</EM>
+           whose  names  begin with <STRONG>KEY_</STRONG>; these object-like macros have values
+           outside the range of eight-bit character codes.
+
+       <STRONG>o</STRONG>   In  <EM>ncurses</EM>,  <EM>user-defined</EM>  <EM>function</EM>  <EM>keys</EM>  are   configured   with
+           <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>;  they  have no names, but are also expected to have
+           values outside the range of eight-bit codes.
+
+       A variable intended to hold a function key code must thus  be  of  type
+       <EM>short</EM> or larger.
+
+       Most  terminals  one  encounters follow the ECMA-48 standard insofar as
+       their function keys  produce  character  sequences  prefixed  with  the
+       escape  character  ESC.   This  fact  implies  that  <EM>curses</EM> cannot know
+       whether the terminal has sent an ESC key stroke or the beginning  of  a
+       function  key's  character  sequence without waiting to see if, and how
+       soon, further input arrives.   When  <EM>curses</EM>  reads  such  an  ambiguous
+       character,  it sets a timer.  If the remainder of the sequence does not
+       arrive within the designated time, <STRONG>wgetch</STRONG> returns the prefix character;
+       otherwise, it returns the function key code corresponding to the unique
+       sequence defined by the terminal.  Consequently, a  user  of  a  <EM>curses</EM>
+       application  may  experience  a  delay  after pressing ESC while <EM>curses</EM>
+       disambiguates the input; see section "EXTENSIONS" below.  If the window
+       is  in "no time-out" mode, the timer does not expire; it is an infinite
+       (or very  large)  value.   See  <STRONG><A HREF="notimeout.3x.html">notimeout(3x)</A></STRONG>.   Because  function  key
+       sequences  usually  begin  with  an  escape character, the terminal may
+       appear to hang in no time-out mode after  the  user  has  pressed  ESC.
+       Generally, further typing "awakens" <EM>curses</EM>.
+
+
+</PRE><H3><a name="h3-Ungetting-Characters">Ungetting Characters</a></H3><PRE>
+       <STRONG>ungetch</STRONG>  places  <EM>c</EM> into the input queue to be returned by the next call
+       to <STRONG>wgetch</STRONG>.  A single input queue serves all windows.
+
+
+</PRE><H3><a name="h3-Predefined-Key-Codes">Predefined Key Codes</a></H3><PRE>
+       The header file <EM>curses.h</EM> defines the following function key codes.
+
+       <STRONG>o</STRONG>   Except for the special case of <STRONG>KEY_RESIZE</STRONG>, a window's  keypad  mode
+           must be enabled for <STRONG>wgetch</STRONG> to read these codes from it.
+
+       <STRONG>o</STRONG>   Not  all  of  these  are  necessarily  supported  on any particular
+           terminal.
+
+       <STRONG>o</STRONG>   The  naming  convention  may  seem  obscure,  with  some   apparent
+           misspellings  (such  as "RSUME" for "resume"); the names correspond
+           to  the  <EM>terminfo</EM>  capability  names  for  the   keys,   and   were
+           standardized  before  the  IBM  PC/AT  keyboard  layout  achieved a
+           dominant position in industry.
+
+              <STRONG>Symbol</STRONG>          <STRONG>Key</STRONG> <STRONG>name</STRONG>
+              -----------------------------------------------------------------
+              <STRONG>KEY_BREAK</STRONG>       Break key
+              <STRONG>KEY_DOWN</STRONG>
+              <STRONG>KEY_UP</STRONG>          Arrow keys
+              <STRONG>KEY_LEFT</STRONG>
+              <STRONG>KEY_RIGHT</STRONG>
+              <STRONG>KEY_HOME</STRONG>        Home key (upward+left arrow)
+              <STRONG>KEY_BACKSPACE</STRONG>   Backspace
+              <STRONG>KEY_F0</STRONG>          Function keys; space for 64 keys is reserved
+              <STRONG>KEY_F(</STRONG><EM>n</EM><STRONG>)</STRONG>        Function key <EM>n</EM> where 0 &lt;= <EM>n</EM> &lt;= 63
+
+              <STRONG>KEY_DL</STRONG>          Delete line
+              <STRONG>KEY_IL</STRONG>          Insert line
+              <STRONG>KEY_DC</STRONG>          Delete character
+              <STRONG>KEY_IC</STRONG>          Insert character/Enter insert mode
+              <STRONG>KEY_EIC</STRONG>         Exit insert character mode
+              <STRONG>KEY_CLEAR</STRONG>       Clear screen
+              <STRONG>KEY_EOS</STRONG>         Clear to end of screen
+              <STRONG>KEY_EOL</STRONG>         Clear to end of line
+              <STRONG>KEY_SF</STRONG>          Scroll one line forward
+              <STRONG>KEY_SR</STRONG>          Scroll one line backward (reverse)
+              <STRONG>KEY_NPAGE</STRONG>       Next page/Page up
+              <STRONG>KEY_PPAGE</STRONG>       Previous page/Page down
+              <STRONG>KEY_STAB</STRONG>        Set tab
+              <STRONG>KEY_CTAB</STRONG>        Clear tab
+              <STRONG>KEY_CATAB</STRONG>       Clear all tabs
+              <STRONG>KEY_ENTER</STRONG>       Enter/Send
+              <STRONG>KEY_SRESET</STRONG>      Soft (partial) reset
+              <STRONG>KEY_RESET</STRONG>       (Hard) reset
+              <STRONG>KEY_PRINT</STRONG>       Print/Copy
+              <STRONG>KEY_LL</STRONG>          Home down/Bottom (lower left)
+              <STRONG>KEY_A1</STRONG>          Upper left of keypad
+              <STRONG>KEY_A3</STRONG>          Upper right of keypad
+              <STRONG>KEY_B2</STRONG>          Center of keypad
+              <STRONG>KEY_C1</STRONG>          Lower left of keypad
+              <STRONG>KEY_C3</STRONG>          Lower right of keypad
+              <STRONG>KEY_BTAB</STRONG>        Back tab key
+              <STRONG>KEY_BEG</STRONG>         Beg(inning) key
+              <STRONG>KEY_CANCEL</STRONG>      Cancel key
+              <STRONG>KEY_CLOSE</STRONG>       Close key
+              <STRONG>KEY_COMMAND</STRONG>     Cmd (command) key
+              <STRONG>KEY_COPY</STRONG>        Copy key
+              <STRONG>KEY_CREATE</STRONG>      Create key
+              <STRONG>KEY_END</STRONG>         End key
+              <STRONG>KEY_EXIT</STRONG>        Exit key
+              <STRONG>KEY_FIND</STRONG>        Find key
+              <STRONG>KEY_HELP</STRONG>        Help key
+              <STRONG>KEY_MARK</STRONG>        Mark key
+              <STRONG>KEY_MESSAGE</STRONG>     Message key
+              <STRONG>KEY_MOUSE</STRONG>       Mouse event occurred
+              <STRONG>KEY_MOVE</STRONG>        Move key
+              <STRONG>KEY_NEXT</STRONG>        Next object key
+              <STRONG>KEY_OPEN</STRONG>        Open key
+              <STRONG>KEY_OPTIONS</STRONG>     Options key
+              <STRONG>KEY_PREVIOUS</STRONG>    Previous object key
+              <STRONG>KEY_REDO</STRONG>        Redo key
+              <STRONG>KEY_REFERENCE</STRONG>   Ref(erence) key
+              <STRONG>KEY_REFRESH</STRONG>     Refresh key
+              <STRONG>KEY_REPLACE</STRONG>     Replace key
+              <STRONG>KEY_RESIZE</STRONG>      Screen resized
+              <STRONG>KEY_RESTART</STRONG>     Restart key
+              <STRONG>KEY_RESUME</STRONG>      Resume key
+              <STRONG>KEY_SAVE</STRONG>        Save key
+              <STRONG>KEY_SELECT</STRONG>      Select key
+              <STRONG>KEY_SUSPEND</STRONG>     Suspend key
+              <STRONG>KEY_UNDO</STRONG>        Undo key
+              -----------------------------------------------------------------
+              <STRONG>KEY_SBEG</STRONG>        Shifted beginning key
+              <STRONG>KEY_SCANCEL</STRONG>     Shifted cancel key
+              <STRONG>KEY_SCOMMAND</STRONG>    Shifted command key
+              <STRONG>KEY_SCOPY</STRONG>       Shifted copy key
+              <STRONG>KEY_SCREATE</STRONG>     Shifted create key
+              <STRONG>KEY_SDC</STRONG>         Shifted delete character key
+              <STRONG>KEY_SDL</STRONG>         Shifted delete line key
+              <STRONG>KEY_SEND</STRONG>        Shifted end key
+              <STRONG>KEY_SEOL</STRONG>        Shifted clear line key
+
+              <STRONG>KEY_SEXIT</STRONG>       Shifted exit key
+              <STRONG>KEY_SFIND</STRONG>       Shifted find key
+              <STRONG>KEY_SHELP</STRONG>       Shifted help key
+              <STRONG>KEY_SHOME</STRONG>       Shifted home key
+              <STRONG>KEY_SIC</STRONG>         Shifted insert key
+              <STRONG>KEY_SLEFT</STRONG>       Shifted left arrow key
+              <STRONG>KEY_SMESSAGE</STRONG>    Shifted message key
+              <STRONG>KEY_SMOVE</STRONG>       Shifted move key
+              <STRONG>KEY_SNEXT</STRONG>       Shifted next object key
+              <STRONG>KEY_SOPTIONS</STRONG>    Shifted options key
+              <STRONG>KEY_SPREVIOUS</STRONG>   Shifted previous object key
+              <STRONG>KEY_SPRINT</STRONG>      Shifted print key
+              <STRONG>KEY_SREDO</STRONG>       Shifted redo key
+              <STRONG>KEY_SREPLACE</STRONG>    Shifted replace key
+              <STRONG>KEY_SRIGHT</STRONG>      Shifted right arrow key
+              <STRONG>KEY_SRSUME</STRONG>      Shifted resume key
+              <STRONG>KEY_SSAVE</STRONG>       Shifted save key
+              <STRONG>KEY_SSUSPEND</STRONG>    Shifted suspend key
+              <STRONG>KEY_SUNDO</STRONG>       Shifted undo key
+
+       Many keyboards feature a nine-key directional pad.
+
+                                   +-----+------+-------+
+                                   | A1  |  up  |  A3   |
+                                   +-----+------+-------+
+                                   |left |  B2  | right |
+                                   +-----+------+-------+
+                                   | C1  | down |  C3   |
+                                   +-----+------+-------+
+       Two of the symbols in the list above do <EM>not</EM> correspond  to  a  physical
+       key.
+
+       <STRONG>o</STRONG>   <STRONG>wgetch</STRONG>  returns  <STRONG>KEY_RESIZE</STRONG>,  even  if  the window's keypad mode is
+           disabled, when <EM>ncurses</EM> handles a <STRONG>SIGWINCH</STRONG> signal;  see  <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>
+           and <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>.
+
+       <STRONG>o</STRONG>   <STRONG>wgetch</STRONG>  returns <STRONG>KEY_MOUSE</STRONG> to indicate that a mouse event is pending
+           collection; see <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>.  Receipt of this  code  requires  a
+           window's  keypad  mode  to  be  enabled, because to interpret mouse
+           input (as with with <STRONG>xterm(1)</STRONG>'s mouse prototocol), <EM>ncurses</EM> must read
+           an escape sequence, as with a function key.
+
+
+</PRE><H3><a name="h3-Testing-Key-Codes">Testing Key Codes</a></H3><PRE>
+       In  <EM>ncurses</EM>,  <STRONG>has_key</STRONG>  returns  a  Boolean value indicating whether the
+       terminal type recognizes its parameter as a key code value.   See  also
+       <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG> and <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All  routines  return the integer <STRONG>ERR</STRONG> upon failure and an integer value
-       other than <STRONG>ERR</STRONG> (<STRONG>OK</STRONG> in the case of <STRONG>ungetch</STRONG>) upon successful completion.
+       Except  for  <STRONG>has_key</STRONG>,  these  functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on
+       failure.
+
+       Functions taking a <EM>WINDOW</EM> pointer argument fail if the pointer is <STRONG>NULL</STRONG>.
+
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
-          <STRONG>ungetch</STRONG>
-               returns <STRONG>ERR</STRONG> if there is no more room in the FIFO.
+       <STRONG>wgetch</STRONG> also fails if
 
-          <STRONG>wgetch</STRONG>
-               returns <STRONG>ERR</STRONG> if the window pointer is null, or  if  its  timeout
-               expires without having any data, or if the execution was inter-
-               rupted by a signal (<STRONG>errno</STRONG> will be set to <STRONG>EINTR</STRONG>).
+       <STRONG>o</STRONG>   its timeout expires without any data arriving, or
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       <STRONG>o</STRONG>   execution  was  interrupted by a signal, in which case <STRONG>errno</STRONG> is set
+           to <STRONG>EINTR</STRONG>.
+
+       <STRONG>ungetch</STRONG> fails if there is no more room in the input queue.
+
+       <STRONG>has_key</STRONG> returns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Use of the escape key by a programmer for a single  character  function
-       is  discouraged, as it will cause a delay of up to one second while the
-       keypad code looks for a following function-key sequence.
+       <EM>curses</EM> discourages assignment of the ESC key to a discrete function  by
+       the programmer because the library requires a delay while it awaits the
+       potential remainder of a terminal escape sequence.
+
+       Some key strokes are indistinguishable  from  control  characters;  for
+       example,  <STRONG>KEY_ENTER</STRONG> may be the same as <STRONG>^M</STRONG>, and <STRONG>KEY_BACKSPACE</STRONG> may be the
+       same as <STRONG>^H</STRONG> or <STRONG>^?</STRONG>.  Consult the terminal's <EM>terminfo</EM> entry  to  determine
+       whether this is the case; see <STRONG><A HREF="infocmp.1m.html">infocmp(1)</A></STRONG>.  Some <EM>curses</EM> implementations,
+       including <EM>ncurses</EM>, honor the <EM>terminfo</EM>  key  definitions;  others  treat
+       such control characters specially.
 
-       Some keys may be the same as commonly used control keys, e.g.,  <STRONG>KEY_EN-</STRONG>
-       <STRONG>TER</STRONG>  versus control/M, <STRONG>KEY_BACKSPACE</STRONG> versus control/H.  Some curses im-
-       plementations may differ according to whether they treat these  control
-       keys  specially  (and ignore the terminfo), or use the terminfo defini-
-       tions.  <STRONG>Ncurses</STRONG> uses the terminfo definition.  If it says that  <STRONG>KEY_EN-</STRONG>
-       <STRONG>TER</STRONG> is control/M, <STRONG>getch</STRONG> will return <STRONG>KEY_ENTER</STRONG> when you press control/M.
+       <EM>curses</EM>  distinguishes  the  Enter  keys  in  the alphabetic and numeric
+       keypad sections of a keyboard because (most) terminals  do.   <STRONG>KEY_ENTER</STRONG>
+       refers  to the key on the numeric keypad and, like other function keys,
+       and is reliably recognized only if the window's keypad mode is enabled.
 
-       Generally,  <STRONG>KEY_ENTER</STRONG> denotes the character(s) sent by the <EM>Enter</EM> key on
-       the numeric keypad:
+       <STRONG>o</STRONG>   The <EM>terminfo</EM> <STRONG>key_enter</STRONG> (<STRONG>kent</STRONG>) capability  describes  the  character
+           (sequence)  sent  by  the  Enter  key  of  a terminal's numeric (or
+           similar) keypad.
 
-       <STRONG>o</STRONG>   the terminal description lists the most useful keys,
+       <STRONG>o</STRONG>   "Enter or send" is X/Open Curses's description of this key.
 
-       <STRONG>o</STRONG>   the <EM>Enter</EM> key on the regular keyboard is  already  handled  by  the
-           standard ASCII characters for carriage-return and line-feed,
+       <EM>curses</EM> treats the Enter or Return key in the <EM>alphabetic</EM> section of  the
+       keyboard differently.
 
-       <STRONG>o</STRONG>   depending on whether <STRONG>nl</STRONG> or <STRONG>nonl</STRONG> was called, pressing "Enter" on the
-           regular keyboard may return either a carriage-return or  line-feed,
-           and finally
+       <STRONG>o</STRONG>   It usually produces a control code for carriage return (<STRONG>^M</STRONG>) or line
+           feed (<STRONG>^J</STRONG>).
 
-       <STRONG>o</STRONG>   "Enter or send" is the standard description for this key.
+       <STRONG>o</STRONG>   Depending on the terminal mode  (raw,  cbreak,  or  "cooked"),  and
+           whether  <STRONG><A HREF="curs_inopts.3x.html">nl(3x)</A></STRONG>  or  <STRONG><A HREF="curs_inopts.3x.html">nonl(3x)</A></STRONG>  has  been  called, <STRONG>wgetch</STRONG> may return
+           either a carriage return or line feed upon an Enter or  Return  key
+           stroke.
 
-       When   using   <STRONG>getch</STRONG>,  <STRONG>wgetch</STRONG>,  <STRONG>mvgetch</STRONG>,  or  <STRONG>mvwgetch</STRONG>,  nocbreak  mode
-       (<STRONG>nocbreak</STRONG>) and echo mode (<STRONG>echo</STRONG>) should not be used at  the  same  time.
-       Depending  on the state of the tty driver when each character is typed,
-       the program may produce undesirable results.
+       Use  of  <STRONG>wgetch</STRONG> with <STRONG><A HREF="curs_inopts.3x.html">echo(3x)</A></STRONG> and neither <STRONG><A HREF="curs_inopts.3x.html">cbreak(3x)</A></STRONG> nor <STRONG><A HREF="curs_inopts.3x.html">raw(3x)</A></STRONG> is not
+       well-defined.
 
-       Note that <STRONG>getch</STRONG>, <STRONG>mvgetch</STRONG>, and <STRONG>mvwgetch</STRONG> may be macros.
+       Historically, the list of key code macros above was influenced  by  the
+       function-key-rich  keyboard  of  the AT&amp;T 7300 (also known variously as
+       the "3B1", "Safari  4",  and  "UNIX  PC"),  a  1985  machine.   Today's
+       computer  keyboards  are  based  that of the IBM PC/AT and tend to have
+       fewer.  A <EM>curses</EM> application can expect such a keyboard to transmit key
+       codes   <STRONG>KEY_UP</STRONG>,   <STRONG>KEY_DOWN</STRONG>,  <STRONG>KEY_LEFT</STRONG>,  <STRONG>KEY_RIGHT</STRONG>,  <STRONG>KEY_HOME</STRONG>,  <STRONG>KEY_END</STRONG>,
+       <STRONG>KEY_PPAGE</STRONG> (Page Up), <STRONG>KEY_NPAGE</STRONG> (Page  Down),  <STRONG>KEY_IC</STRONG>  (Insert),  <STRONG>KEY_DC</STRONG>
+       (Delete), and <STRONG>KEY_F(</STRONG><EM>n</EM><STRONG>)</STRONG> for 1 &lt;= <EM>n</EM> &lt;= 12.
 
-       Historically, the set of keypad macros was largely defined by  the  ex-
-       tremely  function-key-rich  keyboard of the AT&amp;T 7300, aka 3B1, aka Sa-
-       fari 4.  Modern personal computers usually have only a small subset  of
-       these.   IBM  PC-style  consoles  typically  support  little  more than
-       <STRONG>KEY_UP</STRONG>, <STRONG>KEY_DOWN</STRONG>, <STRONG>KEY_LEFT</STRONG>, <STRONG>KEY_RIGHT</STRONG>,  <STRONG>KEY_HOME</STRONG>,  <STRONG>KEY_END</STRONG>,  <STRONG>KEY_NPAGE</STRONG>,
-       <STRONG>KEY_PPAGE</STRONG>,  and  function  keys  1  through 12.  The Ins key is usually
-       mapped to <STRONG>KEY_IC</STRONG>.
+       <STRONG>getch</STRONG>, <STRONG>mvgetch</STRONG>, and <STRONG>mvwgetch</STRONG> may be implemented as macros.
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       In <EM>ncurses</EM>, when a window's "no time-out" mode is <EM>not</EM> set, the <STRONG>ESCDELAY</STRONG>
+       variable configures the duration of the timer used  to  disambiguate  a
+       function  key character sequence from a series of key strokes beginning
+       with ESC typed by the user; see <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+
+       <STRONG>has_key</STRONG> was designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and is not found in SVr4  <EM>curses</EM>,
+       4.4BSD <EM>curses</EM>, or any other previous curses implementation.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The *get* functions are described in the XSI Curses standard, Issue  4.
-       They  read  single-byte  characters  only.  The standard specifies that
-       they return <STRONG>ERR</STRONG> on failure, but specifies no error conditions.
+       Applications employing <EM>ncurses</EM> extensions should condition their use on
+       the visibility of the <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
 
-       The echo behavior of these functions on  input  of  <STRONG>KEY_</STRONG>  or  backspace
-       characters  was not specified in the SVr4 documentation.  This descrip-
-       tion is adopted from the XSI Curses standard.
+       X/Open Curses, Issue 4 describes <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, <STRONG>mvwgetch</STRONG>,  and
+       <STRONG>ungetch</STRONG>.  It specifies no error conditions for them.
 
-       The behavior of <STRONG>getch</STRONG> and friends in the presence of handled signals is
-       unspecified in the SVr4 and XSI Curses documentation.  Under historical
-       curses implementations, it varied depending on  whether  the  operating
-       system's  implementation of handled signal receipt interrupts a <STRONG>read(2)</STRONG>
-       call in progress or not, and also (in some  implementations)  depending
-       on whether an input timeout or non-blocking mode has been set.
+       <STRONG>wgetch</STRONG> reads only single-byte characters.
 
-       <STRONG>KEY_MOUSE</STRONG> is mentioned in XSI Curses, along with a few related terminfo
-       capabilities, but no higher-level functions use the feature.   The  im-
-       plementation in ncurses is an extension.
+       The  echo  behavior  of  these  functions on input of <STRONG>KEY_</STRONG> or backspace
+       characters  was  not  specified  in  the  SVr4   documentation.    This
+       description is adapted from X/Open Curses.
 
-       <STRONG>KEY_RESIZE</STRONG> is an extension first implemented for ncurses.  NetBSD curs-
-       es later added this extension.
+       The   behavior  of  <STRONG>wgetch</STRONG>  in  the  presence  of  signal  handlers  is
+       unspecified in the SVr4 documentation and X/Open Curses.  In historical
+       <EM>curses</EM>  implementations,  it  varied depending on whether the operating
+       system's dispatch of a signal to a handler interrupting a <STRONG>read(2)</STRONG>  call
+       in  progress,  and  also  (in  some  implementations)  whether an input
+       timeout or non-blocking mode has been set.  Programmers concerned about
+       portability  should  be  prepared  for  either of two cases: (a) signal
+       receipt does not interrupt <STRONG>wgetch</STRONG>; or  (b)  signal  receipt  interrupts
+       <STRONG>wgetch</STRONG> and causes it to return <STRONG>ERR</STRONG> with <STRONG>errno</STRONG> set to <STRONG>EINTR</STRONG>.
 
-       Programmers concerned about portability should be prepared  for  either
-       of  two  cases: (a) signal receipt does not interrupt <STRONG>getch</STRONG>; (b) signal
-       receipt interrupts <STRONG>getch</STRONG> and causes it to return <STRONG>ERR</STRONG> with <STRONG>errno</STRONG> set  to
-       <STRONG>EINTR</STRONG>.
+       <STRONG>KEY_MOUSE</STRONG> is mentioned in X/Open Curses, along with a few related <EM>term-</EM>
+       <EM>info</EM> capabilities, but no higher-level functions use the feature.   The
+       implementation in <EM>ncurses</EM> is an extension.
 
-       The  <STRONG>has_key</STRONG> function is unique to <STRONG>ncurses</STRONG>.  We recommend that any code
-       using it be conditionalized on the <STRONG>NCURSES_VERSION</STRONG> feature macro.
+       <STRONG>KEY_RESIZE</STRONG>  and  <STRONG>has_key</STRONG>  are extensions first implemented for <EM>ncurses</EM>.
+       By  2022,  <EM>PDCurses</EM>  and  NetBSD  <EM>curses</EM>  had  added  them  along  with
+       <STRONG>KEY_MOUSE</STRONG>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>, <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>,  <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>,  <STRONG>curs_out-</STRONG>
-       <STRONG><A HREF="curs_outopts.3x.html">opts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>  describes comparable functions of the <EM>ncurses</EM> library
+       in its wide-character configuration (<EM>ncursesw</EM>).
+
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,    <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>,     <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,     <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>,  <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
+       <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>, <STRONG>ascii(7)</STRONG>
+
+       ECMA-6 "7-bit  coded  Character  Set"  &lt;https://ecma-international.org/
+       publications-and-standards/standards/ecma-6/&gt;
 
-       Comparable  functions  in the wide-character (ncursesw) library are de-
-       scribed in <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>.
+       ECMA-48   "Control   Functions  for  Coded  Character  Sets"  &lt;https://
+       ecma-international.org/publications-and-standards/standards/ecma-48/&gt;
 
 
 
-                                                                <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-Reading-characters">Reading characters</a></li>
-<li><a href="#h3-Keypad-mode">Keypad mode</a></li>
-<li><a href="#h3-Ungetting-characters">Ungetting characters</a></li>
-<li><a href="#h3-Predefined-key-codes">Predefined key-codes</a></li>
-<li><a href="#h3-Testing-key-codes">Testing key-codes</a></li>
+<li><a href="#h3-Reading-Characters">Reading Characters</a></li>
+<li><a href="#h3-Keypad-Mode">Keypad Mode</a></li>
+<li><a href="#h3-Ungetting-Characters">Ungetting Characters</a></li>
+<li><a href="#h3-Predefined-Key-Codes">Predefined Key Codes</a></li>
+<li><a href="#h3-Testing-Key-Codes">Testing Key Codes</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
index 97089e22dea62c38b5befb869ac78610a8c095cf..0142df971c21880a1569f57059ab36a80b3186b5 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_getstr.3x,v 1.36 2022/02/12 20:07:29 tom Exp @
-  * X/Open says also until EOf
-  * X/Open says then an EOS is added to the result
-  * X/Open doesn't mention n&lt;0
+  * @Id: curs_getstr.3x,v 1.58 2024/04/20 19:18:18 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_getstr 3x</TITLE>
+<TITLE>curs_getstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_getstr 3x</H1>
+<H1 class="no-header">curs_getstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>                                                <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>getstr</STRONG>, <STRONG>getnstr</STRONG>, <STRONG>wgetstr</STRONG>, <STRONG>wgetnstr</STRONG>, <STRONG>mvgetstr</STRONG>, <STRONG>mvgetnstr</STRONG>, <STRONG>mvwgetstr</STRONG>,
-       <STRONG>mvwgetnstr</STRONG> - accept character strings from <STRONG>curses</STRONG> terminal keyboard
+       <STRONG>getstr</STRONG>,  <STRONG>getnstr</STRONG>,  <STRONG>wgetstr</STRONG>,  <STRONG>wgetnstr</STRONG>,  <STRONG>mvgetstr</STRONG>, <STRONG>mvgetnstr</STRONG>, <STRONG>mvwgetstr</STRONG>,
+       <STRONG>mvwgetnstr</STRONG> - accept character strings from <EM>curses</EM> terminal keyboard
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The function <STRONG>getstr</STRONG> is equivalent to a series of calls to <STRONG>getch</STRONG>,  until
-       a  newline or carriage return is received (the terminating character is
-       not included in the returned string).  The resulting value is placed in
-       the area pointed to by the character pointer <EM>str</EM>, followed by a NUL.
+       The function <STRONG>wgetnstr</STRONG> is equivalent to a series of calls to <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>,
+       until a newline or carriage return terminates the series:
 
-       The  <STRONG>getnstr</STRONG>  function reads from the <EM>stdscr</EM> default window.  The other
-       functions, such as <STRONG>wgetnstr</STRONG>, read from the window given as a parameter.
+       <STRONG>o</STRONG>   The terminating character is not included in the returned string.
 
-       <STRONG>getnstr</STRONG> reads at most <EM>n</EM> characters, thus preventing a possible overflow
-       of  the input buffer.  Any attempt to enter more characters (other than
-       the terminating newline or carriage return) causes  a  beep.   Function
-       keys also cause a beep and are ignored.
+       <STRONG>o</STRONG>   In all instances, the end of the string is terminated by a NUL.
+
+       <STRONG>o</STRONG>   The  function  stores  the result in the area pointed to by the <EM>str</EM>
+           parameter.
+
+       <STRONG>o</STRONG>   The function reads at most <EM>n</EM> characters, thus preventing a possible
+           overflow of the input buffer.
+
+           Any  attempt  to  enter more characters (other than the terminating
+           newline or carriage return) causes a beep.
+
+           Function keys also cause a beep and are ignored.
 
        The user's <EM>erase</EM> and <EM>kill</EM> characters are interpreted:
 
-       <STRONG>o</STRONG>   The  <EM>erase</EM>  character (e.g., <STRONG>^H</STRONG>) erases the character at the end of
+       <STRONG>o</STRONG>   The <EM>erase</EM> character (e.g., <STRONG>^H</STRONG>) erases the character at the  end  of
            the buffer, moving the cursor to the left.
 
            If <EM>keypad</EM> mode is on for the window, <STRONG>KEY_LEFT</STRONG> and <STRONG>KEY_BACKSPACE</STRONG> are
-           both considered equivalent to the user's erase character.
+           both considered equivalent to the user's <EM>erase</EM> character.
 
        <STRONG>o</STRONG>   The <EM>kill</EM> character (e.g., <STRONG>^U</STRONG>) erases the entire buffer, leaving the
            cursor at the beginning of the buffer.
 
-       Characters input are echoed only if <STRONG>echo</STRONG>  is  currently  on.   In  that
-       case,  backspace is echoed as deletion of the previous character (typi-
-       cally a left motion).
+       Characters  input  are  echoed  only  if <STRONG>echo</STRONG> is currently on.  In that
+       case, backspace  is  echoed  as  deletion  of  the  previous  character
+       (typically a left motion).
+
+       The   <STRONG>getnstr</STRONG>,   <STRONG>mvgetnstr</STRONG>,  <STRONG>mvwgetnstr</STRONG>,  and  <STRONG>wgetnstr</STRONG>  functions  are
+       identical to the <STRONG>getstr</STRONG>, <STRONG>mvgetstr</STRONG>, <STRONG>mvwgetstr</STRONG>,  and  <STRONG>wgetstr</STRONG>  functions,
+       respectively,  except  that the <STRONG>*n*</STRONG> versions read at most <EM>n</EM> characters,
+       letting the application prevent overflow of the input buffer.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG> (SVr4 speci-
-       fies  only  "an  integer value other than <STRONG>ERR</STRONG>") upon successful comple-
-       tion.
+       All  of  these  functions  return  the  integer  <STRONG>OK</STRONG>   upon   successful
+       completion.  (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") If
+       unsuccessful, they return <STRONG>ERR</STRONG>.
 
        X/Open defines no error conditions.
 
-       In this implementation, these functions return an error if  the  window
-       pointer is null, or if its timeout expires without having any data.
+       In this implementation, these functions return an error
+
+       <STRONG>o</STRONG>   if the window pointer is null,
 
-       This  implementation  provides an extension as well.  If a <STRONG>SIGWINCH</STRONG> in-
-       terrupts the function, it will return <STRONG>KEY_RESIZE</STRONG> rather than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.
+       <STRONG>o</STRONG>   if its timeout expires without having any data, or
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       <STRONG>o</STRONG>   if the associated call to <STRONG>wgetch</STRONG> failed.
+
+       This implementation provides an  extension  as  well.   If  a  <STRONG>SIGWINCH</STRONG>
+       interrupts  the  function,  it will return <STRONG>KEY_RESIZE</STRONG> rather than <STRONG>OK</STRONG> or
+       <STRONG>ERR</STRONG>.
+
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>getstr</STRONG>, <STRONG>mvgetstr</STRONG>, and <STRONG>mvwgetstr</STRONG> may be macros.
+       Any of these functions other than <STRONG>wgetnstr</STRONG> may be macros.
+
+       Using  <STRONG>getstr</STRONG>,  <STRONG>mvgetstr</STRONG>,  <STRONG>mvwgetstr</STRONG>,  or  <STRONG>wgetstr</STRONG>  to read a line that
+       overflows the array pointed to by <STRONG>str</STRONG> causes  undefined  results.   The
+       use  of  <STRONG>getnstr</STRONG>,  <STRONG>mvgetnstr</STRONG>, <STRONG>mvwgetnstr</STRONG>, or <STRONG>wgetnstr</STRONG>, respectively, is
+       recommended.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the  XSI  Curses  standard,  Issue  4.
-       They  read  single-byte  characters only.  The standard does not define
-       any error conditions.  This implementation returns <STRONG>ERR</STRONG>  if  the  window
-       pointer is null, or if the lower-level <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> call returns an <STRONG>ERR</STRONG>.
-
-       SVr3  and  early  SVr4  curses  implementations did not reject function
-       keys; the SVr4.0 documentation claimed that  "special  keys"  (such  as
-       function  keys, "home" key, "clear" key, <EM>etc</EM>.) are "interpreted", with-
-       out giving details.  It lied.  In fact, the "character" value  appended
-       to  the  string by those implementations was predictable but not useful
-       (being, in fact, the low-order eight bits of the key's KEY_ value).
+       These functions are described in The Single Unix Specification, Version
+       2.  No error conditions are defined.
+
+       This  implementation  returns  <STRONG>ERR</STRONG> if the window pointer is null, or if
+       the lower-level <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> call returns an <STRONG>ERR</STRONG>.
+
+       SVr3 and early SVr4 curses  implementations  did  not  reject  function
+       keys;  the  SVr4.0  documentation  claimed that "special keys" (such as
+       function keys,  "home"  key,  "clear"  key,  <EM>etc</EM>.)  are  "interpreted",
+       without  giving  details.   It  lied.   In  fact, the "character" value
+       appended to the string by those implementations was predictable but not
+       useful  (being,  in  fact,  the  low-order eight bits of the key's KEY_
+       value).
 
        The functions <STRONG>getnstr</STRONG>, <STRONG>mvgetnstr</STRONG>, and <STRONG>mvwgetnstr</STRONG> were present  but  not
        documented in SVr4.
        <EM>n</EM> bytes" but did not state whether the terminating NUL  is  counted  in
        that  limit.   X/Open  Curses,  Issue 7 (2009) changed that to say they
        "read at most <EM>n</EM>-1 bytes" to allow for the terminating NUL.  As of 2018,
-       some implementations do, some do not count it:
+       some implementations count it, some do not:
 
-       <STRONG>o</STRONG>   ncurses  6.1  and PDCurses do not count the NUL in the given limit,
+       <STRONG>o</STRONG>   <EM>ncurses</EM>  6.1  and PDCurses do not count the NUL in the given limit,
            while
 
        <STRONG>o</STRONG>   Solaris SVr4 and NetBSD curses count the NUL as part of the limit.
 
-       <STRONG>o</STRONG>   Solaris xcurses provides both:  its  wide-character  <STRONG>wget_nstr</STRONG>  re-
-           serves a NUL, but its <STRONG>wgetnstr</STRONG> does not count the NUL consistently.
+       <STRONG>o</STRONG>   Solaris  xcurses  provides  both:  its   wide-character   <STRONG>wget_nstr</STRONG>
+           reserves   a   NUL,  but  its  <STRONG>wgetnstr</STRONG>  does  not  count  the  NUL
+           consistently.
 
        In SVr4 curses, a negative value of <EM>n</EM> tells <STRONG>wgetnstr</STRONG> to assume that the
-       caller's buffer is large enough to hold the result, i.e., to  act  like
-       <STRONG>wgetstr</STRONG>.   X/Open  Curses does not mention this (or anything related to
-       negative or zero values of <EM>n</EM>), however  most  implementations  use  the
+       caller's  buffer  is large enough to hold the result, i.e., to act like
+       <STRONG>wgetstr</STRONG>.  X/Open Curses does not mention this (or anything  related  to
+       negative  or  zero  values  of <EM>n</EM>), however most implementations use the
        feature, with different limits:
 
-       <STRONG>o</STRONG>   Solaris  SVr4  curses  and  PDCurses limit the result to 255 bytes.
+       <STRONG>o</STRONG>   Solaris SVr4 curses and PDCurses limit the  result  to  255  bytes.
            Other Unix systems than Solaris are likely to use the same limit.
 
        <STRONG>o</STRONG>   Solaris xcurses limits the result to <STRONG>LINE_MAX</STRONG> bytes.
 
-       <STRONG>o</STRONG>   NetBSD 7 assumes no particular limit for the result  from  <STRONG>wgetstr</STRONG>.
-           However,  it  limits  the <STRONG>wgetnstr</STRONG> parameter <EM>n</EM> to ensure that it is
+       <STRONG>o</STRONG>   NetBSD  7  assumes no particular limit for the result from <STRONG>wgetstr</STRONG>.
+           However, it limits the <STRONG>wgetnstr</STRONG> parameter <EM>n</EM> to ensure  that  it  is
            greater than zero.
 
-           A comment in NetBSD's source code states that this is specified  in
+           A  comment in NetBSD's source code states that this is specified in
            SUSv2.
 
-       <STRONG>o</STRONG>   ncurses  (before  6.2)  assumes  no particular limit for the result
-           from <STRONG>wgetstr</STRONG>, and treats the <EM>n</EM>  parameter  of  <STRONG>wgetnstr</STRONG>  like  SVr4
+       <STRONG>o</STRONG>   <EM>ncurses</EM> (before 6.2) assumes no particular  limit  for  the  result
+           from  <STRONG>wgetstr</STRONG>,  and  treats  the  <EM>n</EM> parameter of <STRONG>wgetnstr</STRONG> like SVr4
            curses.
 
-       <STRONG>o</STRONG>   ncurses  6.2  uses  <STRONG>LINE_MAX</STRONG>,  or a larger (system-dependent) value
-           which the <STRONG>sysconf</STRONG> function may provide.   If  neither  <STRONG>LINE_MAX</STRONG>  or
-           <STRONG>sysconf</STRONG>  is available, ncurses uses the POSIX value for <STRONG>LINE_MAX</STRONG> (a
-           2048 byte limit).  In either case, it reserves a byte for the  ter-
-           minating NUL.
+       <STRONG>o</STRONG>   <EM>ncurses</EM> 6.2 uses <STRONG>LINE_MAX</STRONG>, or  a  larger  (system-dependent)  value
+           which  the  <STRONG>sysconf</STRONG>  function  may provide.  If neither <STRONG>LINE_MAX</STRONG> or
+           <STRONG>sysconf</STRONG> is available, <EM>ncurses</EM> uses the POSIX value for <STRONG>LINE_MAX</STRONG>  (a
+           2048  byte  limit).   In  either  case,  it reserves a byte for the
+           terminating NUL.
 
-       Although  <STRONG>getnstr</STRONG>  is equivalent to a series of calls to <STRONG>getch</STRONG>, it also
-       makes changes to the curses modes to allow simple editing of the  input
+       Although <STRONG>getnstr</STRONG> is equivalent to a series of calls to <STRONG>getch</STRONG>,  it  also
+       makes  changes to the curses modes to allow simple editing of the input
        buffer:
 
-       <STRONG>o</STRONG>   <STRONG>getnstr</STRONG>  saves  the  current  value of the <STRONG>nl</STRONG>, <STRONG>echo</STRONG>, <STRONG>raw</STRONG> and <STRONG>cbreak</STRONG>
+       <STRONG>o</STRONG>   <STRONG>getnstr</STRONG> saves the current value of the <STRONG>nl</STRONG>,  <STRONG>echo</STRONG>,  <STRONG>raw</STRONG>  and  <STRONG>cbreak</STRONG>
            modes, and sets <STRONG>nl</STRONG>, <STRONG>noecho</STRONG>, <STRONG>noraw</STRONG>, and <STRONG>cbreak</STRONG>.
 
-           <STRONG>getnstr</STRONG> handles the echoing of characters, rather than  relying  on
+           <STRONG>getnstr</STRONG>  handles  the echoing of characters, rather than relying on
            the caller to set an appropriate mode.
 
-       <STRONG>o</STRONG>   It  also  obtains  the <EM>erase</EM> and <EM>kill</EM> characters from <STRONG>erasechar</STRONG> and
+       <STRONG>o</STRONG>   It also obtains the <EM>erase</EM> and <EM>kill</EM> characters  from  <STRONG>erasechar</STRONG>  and
            <STRONG>killchar</STRONG>, respectively.
 
        <STRONG>o</STRONG>   On return, <STRONG>getnstr</STRONG> restores the modes to their previous values.
 
        Other implementations differ in their treatment of special characters:
 
-       <STRONG>o</STRONG>   While they may set the <EM>echo</EM> mode, other implementations do not mod-
-           ify  the  <EM>raw</EM> mode, They may take the <EM>cbreak</EM> mode set by the caller
-           into account when deciding whether to handle echoing within <STRONG>getnstr</STRONG>
-           or as a side-effect of the <STRONG>getch</STRONG> calls.
+       <STRONG>o</STRONG>   While  they  may  set  the  <EM>echo</EM> mode, other implementations do not
+           modify the <EM>raw</EM> mode, They may take  the  <EM>cbreak</EM>  mode  set  by  the
+           caller  into account when deciding whether to handle echoing within
+           <STRONG>getnstr</STRONG> or as a side-effect of the <STRONG>getch</STRONG> calls.
 
-       <STRONG>o</STRONG>   The original ncurses (as <EM>pcurses</EM> in 1986) set <STRONG>noraw</STRONG> and <STRONG>cbreak</STRONG> when
-           accepting input for <STRONG>getnstr</STRONG>.  That may have been done to make func-
-           tion- and cursor-keys work; it is not necessary with ncurses.
+       <STRONG>o</STRONG>   The original <EM>ncurses</EM> (as <EM>pcurses</EM> in 1986) set <STRONG>noraw</STRONG> and <STRONG>cbreak</STRONG> when
+           accepting  input  for  <STRONG>getnstr</STRONG>.   That  may  have been done to make
+           function- and cursor-keys work; it is not necessary with <EM>ncurses</EM>.
 
-           Since  1995, ncurses has provided signal handlers for INTR and QUIT
-           (e.g., <STRONG>^C</STRONG> or <STRONG>^\</STRONG>).  With the <STRONG>noraw</STRONG> and <STRONG>cbreak</STRONG>  settings,  those  may
-           catch  a  signal  and stop the program, where other implementations
+           Since 1995, <EM>ncurses</EM> has provided signal handlers for INTR and  QUIT
+           (e.g.,  <STRONG>^C</STRONG>  or  <STRONG>^\</STRONG>).  With the <STRONG>noraw</STRONG> and <STRONG>cbreak</STRONG> settings, those may
+           catch a signal and stop the program,  where  other  implementations
            allow one to enter those characters in the buffer.
 
-       <STRONG>o</STRONG>   Starting in 2021 (ncurses 6.3), <STRONG>getnstr</STRONG> sets <STRONG>raw</STRONG>, rather than <STRONG>noraw</STRONG>
-           and  <STRONG>cbreak</STRONG> for better compatibility with SVr4-curses, e.g., allow-
-           ing one to enter a <STRONG>^C</STRONG> into the buffer.
+       <STRONG>o</STRONG>   Starting in 2021 (<EM>ncurses</EM> 6.3), <STRONG>getnstr</STRONG> sets <STRONG>raw</STRONG>, rather than <STRONG>noraw</STRONG>
+           and  <STRONG>cbreak</STRONG>  for  better  compatibility  with  SVr4-curses,   e.g.,
+           allowing one to enter a <STRONG>^C</STRONG> into the buffer.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM> library
+       in its wide-character configuration (<EM>ncursesw</EM>).
+
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 0f463c589350f6e51af3478f8fe05c2b06ccc28b..1857170022bd379b9e6c69cd1fa41b2505369005 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2020-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2020-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2007,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_getyx.3x,v 1.23 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_getyx.3x,v 1.44 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_getyx 3x</TITLE>
+<TITLE>curs_getyx 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_getyx 3x</H1>
+<H1 class="no-header">curs_getyx 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
+<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>getyx</STRONG>,  <STRONG>getparyx</STRONG>,  <STRONG>getbegyx</STRONG>,  <STRONG>getmaxyx</STRONG>  -  get <STRONG>curses</STRONG> cursor and window
+       <STRONG>getyx</STRONG>,  <STRONG>getparyx</STRONG>,  <STRONG>getbegyx</STRONG>,  <STRONG>getmaxyx</STRONG>  -  get <EM>curses</EM> cursor and window
        coordinates
 
 
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       All  of these interfaces are macros.  A "<STRONG>&amp;</STRONG>" is not necessary before the
+       All  of these interfaces are macros.  A "&amp;" is not necessary before the
        variables <EM>y</EM> and <EM>x</EM>.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The <STRONG>getyx</STRONG>, <STRONG>getparyx</STRONG>, <STRONG>getbegyx</STRONG> and <STRONG>getmaxyx</STRONG> macros are described in  the
-       XSI Curses standard, Issue 4.
+       The <STRONG>getyx</STRONG>, <STRONG>getparyx</STRONG>, <STRONG>getbegyx</STRONG> and  <STRONG>getmaxyx</STRONG>  macros  are  described  in
+       X/Open Curses, Issue 4.
 
        This  implementation also provides functions <STRONG>getbegx</STRONG>, <STRONG>getbegy</STRONG>, <STRONG>getcurx</STRONG>,
        <STRONG>getcury</STRONG>, <STRONG>getmaxx</STRONG>, <STRONG>getmaxy</STRONG>, <STRONG>getparx</STRONG> and <STRONG>getpary</STRONG> for  compatibility  with
-       older versions of curses.
+       older versions of <EM>curses</EM>; see <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>.
 
        Although  X/Open  Curses  does  not  address this, many implementations
-       provide members of the WINDOW structure containing values corresponding
+       provide members of the <STRONG>WINDOW</STRONG> structure containing values corresponding
        to  these  macros.  For best portability, do not rely on using the data
-       in WINDOW, since some implementations make WINDOW opaque (do not  allow
+       in <STRONG>WINDOW</STRONG>, since some implementations make <STRONG>WINDOW</STRONG> opaque (do not  allow
        direct use of its members).
 
        Besides the problem of opaque structures, the data stored in like-named
        members may not have like-values  in  different  implementations.   For
-       example,  the  WINDOW._maxx and WINDOW._maxy values in ncurses have (at
+       example,  the  <STRONG>WINDOW._maxx</STRONG> and <STRONG>WINDOW._maxy</STRONG> values in <EM>ncurses</EM> have (at
        least  since  release  1.8.1)  differed  by   one   from   some   other
        implementations.   The  difference  is  hidden  by  means  of the macro
        <STRONG>getmaxyx</STRONG>.
 
 
 
-                                                                <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index f1ce0f493f67b229f05f025e307d9d3c795b39a5..1ea5b63ec42b1002b952cbae96b23504e4b07bcc 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_in_wch.3x,v 1.13 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_in_wch.3x,v 1.31 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_in_wch 3x</TITLE>
+<TITLE>curs_in_wch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_in_wch 3x</H1>
+<H1 class="no-header">curs_in_wch 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>                                                <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
+<STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>in_wch</STRONG>,  <STRONG>mvin_wch</STRONG>, <STRONG>mvwin_wch</STRONG>, <STRONG>win_wch</STRONG> - extract a complex character and
-       rendition from a window
+       <STRONG>in_wch</STRONG>,  <STRONG>mvin_wch</STRONG>,  <STRONG>mvwin_wch</STRONG>, <STRONG>win_wch</STRONG> - get a <EM>curses</EM> complex character
+       from a window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>in_wch(cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>win_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>in_wch(cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>win_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>mvin_wch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwin_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvin_wch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwin_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These functions extract the complex character and  rendition  from  the
        current position in the named window into the <STRONG>cchar_t</STRONG> object referenced
-       by wcval.
+       by wch.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       No errors are defined in the XSI Curses standard.  This  implementation
-       checks  for  null  pointers,  returns  <STRONG>ERR</STRONG>  in that case.  Also, the <EM>mv</EM>
-       routines check for error moving the cursor, returning <STRONG>ERR</STRONG> in that case.
-       Otherwise they return <STRONG>OK</STRONG>.
+       No errors are defined in X/Open Curses.  This implementation checks for
+       null  pointers,  returns <STRONG>ERR</STRONG> in that case.  Also, the <EM>mv</EM> routines check
+       for error moving the cursor, returning <STRONG>ERR</STRONG>  in  that  case.   Otherwise
+       they return <STRONG>OK</STRONG>.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.
+       These functions are described in X/Open Curses, Issue 4.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM> library  in
+       its non-wide-character configuration.
 
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
 
 
-                                                               <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
+
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 957bef23434b8c85499429d28cd99283ed2113d7..d7af18ddcfdf185f09b989a8a2064e09aac44f26 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_in_wchstr.3x,v 1.17 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_in_wchstr.3x,v 1.39 2024/04/20 21:24:19 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_in_wchstr 3x</TITLE>
+<TITLE>curs_in_wchstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_in_wchstr 3x</H1>
+<H1 class="no-header">curs_in_wchstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>                                          <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>               Library calls              <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>in_wchstr</STRONG>, <STRONG>in_wchnstr</STRONG>, <STRONG>win_wchstr</STRONG>, <STRONG>win_wchnstr</STRONG>, <STRONG>mvin_wchstr</STRONG>,
-       <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG> - get an array of complex
-       characters and renditions from a curses window
+       <STRONG>in_wchstr</STRONG>,    <STRONG>in_wchnstr</STRONG>,    <STRONG>win_wchstr</STRONG>,    <STRONG>win_wchnstr</STRONG>,   <STRONG>mvin_wchstr</STRONG>,
+       <STRONG>mvin_wchnstr</STRONG>,  <STRONG>mvwin_wchstr</STRONG>,  <STRONG>mvwin_wchnstr</STRONG>  -  get  a  <EM>curses</EM>  complex
+       character string from a window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>in_wchstr(cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>in_wchnstr(cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>win_wchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>win_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-
        <STRONG>int</STRONG> <STRONG>mvin_wchstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvin_wchnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwin_wchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwin_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM>, int <EM>n</EM><STRONG>);</STRONG>
-
 
-</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These functions return an array of complex characters in <EM>wchstr</EM>, start-
-       ing at the current cursor position in  the  named  window.   Attributes
-       (rendition) are stored with the characters.
+       <STRONG>int</STRONG> <STRONG>in_wchnstr(cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>win_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvin_wchnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwin_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
 
-       The  <STRONG>in_wchnstr</STRONG>,  <STRONG>mvin_wchnstr</STRONG>,  <STRONG>mvwin_wchnstr</STRONG> and <STRONG>win_wchnstr</STRONG> fill the
-       array with at most <EM>n</EM> <STRONG>cchar_t</STRONG> elements.
 
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       These  functions  return  an  array  of  complex  characters in <EM>wchstr</EM>,
+       starting  at  the  current  cursor  position  in  the   named   window.
+       Attributes (rendition) are stored with the characters.
 
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that all routines except <STRONG>win_wchnstr</STRONG> may be macros.
+       The  four  functions  with  <EM>n</EM>  as  the  last  argument return a leading
+       substring at most <EM>n</EM> characters long (exclusive of the  trailing  zeroed
+       <STRONG>cchar_t</STRONG>.   Transfer  stops  at  the  end of the current line, or when <EM>n</EM>
+       characters have been stored at the location referenced by <EM>wchstr</EM>.
 
-       Reading a line that overflows the  array  pointed  to  by  <EM>wchstr</EM>  with
-       <STRONG>in_wchstr</STRONG>, <STRONG>mvin_wchstr</STRONG>, <STRONG>mvwin_wchstr</STRONG> or <STRONG>win_wchstr</STRONG> causes undefined re-
-       sults.  Therefore, the use of <STRONG>in_wchnstr</STRONG>, <STRONG>mvin_wchnstr</STRONG>,  <STRONG>mvwin_wchnstr</STRONG>,
-       or <STRONG>win_wchnstr</STRONG> is recommended.
+       Constants defined in <STRONG>&lt;curses.h&gt;</STRONG> can be used with the  <STRONG>&amp;</STRONG>  (logical  AND)
+       operator  to  extract  the  character  or  the attribute alone from any
+       position in the <EM>wchstr</EM> [see <STRONG><A HREF="curs_getcchar.3x.html">getcchar(3x)</A></STRONG>].
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Upon successful completion, these functions return <STRONG>OK</STRONG>.  Otherwise, they
        return <STRONG>ERR</STRONG>.
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       X/Open Curses defines no error conditions.  This implementation returns
+       an error
+
+       <STRONG>o</STRONG>   if the <EM>win</EM> parameter is null or
+
+       <STRONG>o</STRONG>   if the <EM>wchstr</EM> parameter is null.
+
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       All routines except <STRONG>win_wchnstr</STRONG> may be macros.
+
+       Reading  a  line  that  overflows  the  array pointed to by <EM>wchstr</EM> with
+       <STRONG>in_wchstr</STRONG>, <STRONG>mvin_wchstr</STRONG>, <STRONG>mvwin_wchstr</STRONG>  or  <STRONG>win_wchstr</STRONG>  causes  undefined
+       results.     Therefore,    the   use   of   <STRONG>in_wchnstr</STRONG>,   <STRONG>mvin_wchnstr</STRONG>,
+       <STRONG>mvwin_wchnstr</STRONG>, or <STRONG>win_wchnstr</STRONG> is recommended.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The XSI Curses defines no error conditions.  This implementation checks
+       X/Open Curses defines no error conditions.  This implementation  checks
        for null pointers, returning <STRONG>ERR</STRONG> in that case.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       Functions: <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>, <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
-       <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
+       <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>  describes comparable functions of the <EM>ncurses</EM> library
+       in its non-wide-character configuration.
+
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
 
 
 
-                                                            <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
index db7a89521cd9105b5e0fb71fee56e0e959b64354..15bd134e9b760bff440799924c331a7d7e3234ba 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inch.3x,v 1.28 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_inch.3x,v 1.51 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_inch 3x</TITLE>
+<TITLE>curs_inch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_inch 3x</H1>
+<H1 class="no-header">curs_inch 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>                                                    <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
+<STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>inch</STRONG>,  <STRONG>winch</STRONG>,  <STRONG>mvinch</STRONG>,  <STRONG>mvwinch</STRONG> - get a character and attributes from a
-       <STRONG>curses</STRONG> window
+       <STRONG>inch</STRONG>, <STRONG>winch</STRONG>, <STRONG>mvinch</STRONG>, <STRONG>mvwinch</STRONG> - get a <EM>curses</EM> character from a window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These routines return the character, of type  <STRONG>chtype</STRONG>,  at  the  current
-       position  in  the  named  window.   If  any attributes are set for that
-       position, their values are OR'ed into the  value  returned.   Constants
-       defined  in <STRONG>&lt;curses.h&gt;</STRONG> can be used with the <STRONG>&amp;</STRONG> (logical AND) operator to
+       These  routines  return  the  character, of type <STRONG>chtype</STRONG>, at the current
+       position in the named window.  If  any  attributes  are  set  for  that
+       position,  their  values  are OR'ed into the value returned.  Constants
+       defined in <STRONG>&lt;curses.h&gt;</STRONG> can be used with the <STRONG>&amp;</STRONG> (logical AND) operator  to
        extract the character or attributes alone.
 
 
 </PRE><H3><a name="h3-Attributes">Attributes</a></H3><PRE>
-       The following bit-masks may  be  AND-ed  with  characters  returned  by
+       The  following  bit  masks  may  be  AND-ed with characters returned by
        <STRONG>winch</STRONG>.
 
-       <STRONG>A_CHARTEXT</STRONG>     Bit-mask to extract character
-       <STRONG>A_ATTRIBUTES</STRONG>   Bit-mask to extract attributes
-       <STRONG>A_COLOR</STRONG>        Bit-mask to extract color-pair field information
+       <STRONG>Name</STRONG>           <STRONG>Description</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>A_CHARTEXT</STRONG>     Extract character
+       <STRONG>A_ATTRIBUTES</STRONG>   Extract attributes
+       <STRONG>A_COLOR</STRONG>        Extract color pair information
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
        The  <STRONG>winch</STRONG>  function  does  not  return an error if the window contains
        characters larger than 8-bits (255).  Only the low-order 8 bits of  the
@@ -94,7 +94,7 @@
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.
+       These functions are described in X/Open Curses, Issue 4.
 
        Very  old systems (before standardization) provide a different function
        with the same name:
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
-            gives an overview of the WINDOW and <STRONG>chtype</STRONG> data types.
+       <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>  describes  comparable functions of the <EM>ncurses</EM> library
+       in its wide-character configuration (<EM>ncursesw</EM>).
 
-       <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
-            goes  into  more  detail,  pointing  out  portability problems and
-            constraints on the use of <STRONG>chtype</STRONG> for returning window information.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
 
-       <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
-            describes comparable functions for the  wide-character  (ncursesw)
-            library.
 
 
-
-                                                                 <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                     <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 691a8093da643e1e694b400552a54210ae13e5f1..1eeb1b3a3c5eeff4205cfc3a5b2f607db119c08f 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inchstr.3x,v 1.24 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_inchstr.3x,v 1.45 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_inchstr 3x</TITLE>
+<TITLE>curs_inchstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_inchstr 3x</H1>
+<H1 class="no-header">curs_inchstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>                                              <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>inchstr</STRONG>, <STRONG>inchnstr</STRONG>, <STRONG>winchstr</STRONG>, <STRONG>winchnstr</STRONG>, <STRONG>mvinchstr</STRONG>, <STRONG>mvinchnstr</STRONG>,
-       <STRONG>mvwinchstr</STRONG>, <STRONG>mvwinchnstr</STRONG> - get a string of characters (and attributes)
-       from a <STRONG>curses</STRONG> window
+       <STRONG>inchstr</STRONG>,   <STRONG>inchnstr</STRONG>,   <STRONG>winchstr</STRONG>,   <STRONG>winchnstr</STRONG>,   <STRONG>mvinchstr</STRONG>,  <STRONG>mvinchnstr</STRONG>,
+       <STRONG>mvwinchstr</STRONG>, <STRONG>mvwinchnstr</STRONG> - get a <EM>curses</EM> character string from a window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These  routines  return  a  NULL-terminated array of <STRONG>chtype</STRONG> quantities,
-       starting at the current cursor position in the named window and  ending
-       at  the  right  margin of the window.  The four functions with <EM>n</EM> as the
-       last argument, return a leading substring at  most  <EM>n</EM>  characters  long
-       (exclusive of the trailing (chtype)0).  Constants defined in <STRONG>&lt;curses.h&gt;</STRONG>
-       can be used with the <STRONG>&amp;</STRONG> (logical AND) operator to extract the  character
-       or   the   attribute   alone  from  any  position  in  the  <EM>chstr</EM>  [see
-       <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>].
+       These routines return a NULL-terminated  array  of  <STRONG>chtype</STRONG>  quantities,
+       starting  at the current cursor position in the named window and ending
+       at the right margin of the window.
+
+       The four functions with <EM>n</EM>  as  the  last  argument,  return  a  leading
+       substring  at  most  <EM>n</EM>  characters  long  (exclusive  of  the  trailing
+       (chtype)0).  Transfer stops at the end of the current line, or  when  <EM>n</EM>
+       characters have been stored at the location referenced by <EM>chstr</EM>.
+
+       Constants  defined  in  <STRONG>&lt;curses.h&gt;</STRONG> can be used with the <STRONG>&amp;</STRONG> (logical AND)
+       operator to extract the character  or  the  attribute  alone  from  any
+       position in the <EM>chstr</EM> [see <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>].
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and an  integer  value
-       other than <STRONG>ERR</STRONG> upon successful completion (the number of characters re-
-       trieved, exclusive of the trailing 0).
+       All  routines  return the integer <STRONG>ERR</STRONG> upon failure and an integer value
+       other than <STRONG>ERR</STRONG> upon successful completion  (the  number  of  characters
+       retrieved, exclusive of the trailing 0).
 
-       X/Open Curses defines no error conditions.  In this implementation:
+       X/Open Curses defines no error conditions.  This implementation returns
+       an error
 
-       <STRONG>o</STRONG>   If the <EM>win</EM> parameter is null, an error is returned,
+       <STRONG>o</STRONG>   if the <EM>win</EM> parameter is null or
 
-       <STRONG>o</STRONG>   If the <EM>chstr</EM> parameter is null, an error is returned,
+       <STRONG>o</STRONG>   if the <EM>chstr</EM> parameter is null.
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that all routines except <STRONG>winchnstr</STRONG> may be macros.  SVr4  does  not
-       document whether the result string is zero-terminated; it does not doc-
-       ument whether a length limit argument includes any trailing 0;  and  it
-       does not document the meaning of the return value.
+       All routines except <STRONG>winchnstr</STRONG> may be macros.
+
+       SVr4 does not document whether the result string is zero-terminated; it
+       does not document whether a length limit argument includes any trailing
+       0; and it does not document the meaning of the return value.
+
+       Reading  a  line  that  overflows  the  array  pointed to by <EM>chstr</EM> with
+       <STRONG>inchstr</STRONG>, <STRONG>mvinchstr</STRONG>, <STRONG>mvwinchstr</STRONG> or <STRONG>winchstr</STRONG>  causes  undefined  results.
+       Therefore,  the  use of <STRONG>inchnstr</STRONG>, <STRONG>mvinchnstr</STRONG>, <STRONG>mvwinchnstr</STRONG>, or <STRONG>winchnstr</STRONG>
+       is recommended.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  functions are described in the XSI Curses standard, Issue 4.  It
-       is no more specific than the SVr4 documentation on the trailing 0.   It
-       does specify that the successful return of the functions is <STRONG>OK</STRONG>.
+       These functions are described in X/Open Curses, Issue 4.  It is no more
+       specific  than  the  SVr4  documentation  on  the  trailing 0.  It does
+       specify that the successful return of the functions is <STRONG>OK</STRONG>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>.
-
-       Comparable  functions  in the wide-character (ncursesw) library are de-
-       scribed in <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>, <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
 
 
 
-                                                              <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                  <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 08d21a61da83814819ac6d9e2e31c39d8cc0b651..778fc0016d1ad2c99233fc06d82c1fe1c0a0a709 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_initscr.3x,v 1.39 2022/07/24 15:46:49 tom Exp @
+  * @Id: curs_initscr.3x,v 1.69 2024/04/20 21:24:19 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_initscr 3x</TITLE>
+<TITLE>curs_initscr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_initscr 3x</H1>
+<H1 class="no-header">curs_initscr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>                                              <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
+<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>initscr</STRONG>, <STRONG>newterm</STRONG>, <STRONG>endwin</STRONG>, <STRONG>isendwin</STRONG>, <STRONG>set_term</STRONG>, <STRONG>delscreen</STRONG> - <STRONG>curses</STRONG> screen
-       initialization and manipulation routines
+       <STRONG>initscr</STRONG>,  <STRONG>newterm</STRONG>,  <STRONG>endwin</STRONG>, <STRONG>isendwin</STRONG>, <STRONG>set_term</STRONG>, <STRONG>delscreen</STRONG> - initialize,
+       manipulate, or tear down <EM>curses</EM> terminal interface
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -59,7 +59,7 @@
 
        <STRONG>bool</STRONG> <STRONG>isendwin(void);</STRONG>
 
-       <STRONG>SCREEN</STRONG> <STRONG>*newterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>type</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>outfd</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>infd</EM><STRONG>);</STRONG>
+       <STRONG>SCREEN</STRONG> <STRONG>*newterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>type</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>outf</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>inf</EM><STRONG>);</STRONG>
        <STRONG>SCREEN</STRONG> <STRONG>*set_term(SCREEN</STRONG> <STRONG>*</STRONG><EM>new</EM><STRONG>);</STRONG>
        <STRONG>void</STRONG> <STRONG>delscreen(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
 
        it; these are <STRONG><A HREF="curs_slk.3x.html">slk_init(3x)</A></STRONG>, <STRONG>filter</STRONG>, <STRONG>ripoffline</STRONG>, <STRONG>use_env</STRONG>.  For multiple-
        terminal applications, <STRONG>newterm</STRONG> may be called before <STRONG>initscr</STRONG>.
 
-       The initscr code determines the terminal type and initializes all <STRONG>curs-</STRONG>
-       <STRONG>es</STRONG> data structures.  <STRONG>initscr</STRONG> also causes the first call to  <STRONG><A HREF="curscurs_refresh.3x.html">refresh(3x)</A></STRONG>
-       to  clear  the  screen.  If errors occur, <STRONG>initscr</STRONG> writes an appropriate
-       error message to standard error and exits; otherwise, a pointer is  re-
-       turned to <STRONG>stdscr</STRONG>.
+       The  initscr  code  determines  the  terminal  type and initializes all
+       <STRONG>curses</STRONG>  data  structures.   <STRONG>initscr</STRONG>  also  causes  the  first  call  to
+       <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>  to  clear  the screen.  If errors occur, <STRONG>initscr</STRONG> writes an
+       appropriate error message to standard error  and  exits;  otherwise,  a
+       pointer is returned to <STRONG>stdscr</STRONG>.
 
 
 </PRE><H3><a name="h3-newterm">newterm</a></H3><PRE>
        routine for each terminal instead of <STRONG>initscr</STRONG>.  A program that needs  to
        inspect capabilities, so it can continue to run in a line-oriented mode
        if the terminal cannot support a screen-oriented  program,  would  also
-       use <STRONG>newterm</STRONG>.  The routine <STRONG>newterm</STRONG> should be called once for each termi-
-       nal.  It returns a variable of type <STRONG>SCREEN</STRONG> <STRONG>*</STRONG> which should be saved as a
+       use <STRONG>newterm</STRONG>.
+
+       The  routine  <STRONG>newterm</STRONG>  should  be  called  once  for each terminal.  It
+       returns a variable of  type  <EM>SCREEN</EM>  <EM>*</EM>  which  should  be  saved  as  a
        reference to that terminal.  <STRONG>newterm</STRONG>'s arguments are
 
        <STRONG>o</STRONG>   the <EM>type</EM> of the terminal to be used in place of <STRONG>$TERM</STRONG>,
 
-       <STRONG>o</STRONG>   a file pointer for output to the terminal, and
+       <STRONG>o</STRONG>   an output stream connected to the terminal, and
 
-       <STRONG>o</STRONG>   another file pointer for input from the terminal
+       <STRONG>o</STRONG>   an input stream connected to the terminal
 
        If the <EM>type</EM> parameter is <STRONG>NULL</STRONG>, <STRONG>$TERM</STRONG> will be used.
 
+       The  file  descriptor  of the output stream is passed to <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>,
+       which returns a pointer to  a  <EM>TERMINAL</EM>  structure.   <STRONG>newterm</STRONG>'s  return
+       value holds a pointer to the <EM>TERMINAL</EM> structure.
+
 
 </PRE><H3><a name="h3-endwin">endwin</a></H3><PRE>
        The  program  must also call <STRONG>endwin</STRONG> for each terminal being used before
 
        <STRONG>o</STRONG>   moves the cursor to the lower left-hand corner of the screen,
 
-       <STRONG>o</STRONG>   clears  the  remainder of the line so that it uses the default col-
-           ors,
+       <STRONG>o</STRONG>   clears  the  remainder  of  the  line  so  that it uses the default
+           colors,
 
        <STRONG>o</STRONG>   sets the cursor to normal visibility (see <STRONG><A HREF="curs_kernel.3x.html">curs_set(3x)</A></STRONG>),
 
-       <STRONG>o</STRONG>   stops cursor-addressing mode using the <EM>exit</EM><STRONG>_</STRONG><EM>ca</EM><STRONG>_</STRONG><EM>mode</EM> terminal  capa-
-           bility,
+       <STRONG>o</STRONG>   stops  cursor-addressing  mode  using  the  <EM>exit</EM><STRONG>_</STRONG><EM>ca</EM><STRONG>_</STRONG><EM>mode</EM>   terminal
+           capability,
 
        <STRONG>o</STRONG>   restores tty modes (see <STRONG><A HREF="curs_kernel.3x.html">reset_shell_mode(3x)</A></STRONG>).
 
 
 </PRE><H3><a name="h3-set_term">set_term</a></H3><PRE>
        The  <STRONG>set_term</STRONG>  routine  is  used to switch between different terminals.
-       The screen reference <EM>new</EM> becomes the new current terminal.  The  previ-
-       ous  terminal  is  returned  by  the routine.  This is the only routine
-       which manipulates <STRONG>SCREEN</STRONG> pointers; all other routines affect  only  the
+       The screen  reference  <EM>new</EM>  becomes  the  new  current  terminal.   The
+       previous terminal is returned by the routine.  This is the only routine
+       which manipulates <EM>SCREEN</EM> pointers; all other routines affect  only  the
        current terminal.
 
 
 </PRE><H3><a name="h3-delscreen">delscreen</a></H3><PRE>
-       The  <STRONG>delscreen</STRONG>  routine  frees  storage associated with the <STRONG>SCREEN</STRONG> data
+       The  <STRONG>delscreen</STRONG>  routine  frees  storage associated with the <EM>SCREEN</EM> data
        structure.  The <STRONG>endwin</STRONG> routine does not do this, so <STRONG>delscreen</STRONG> should be
-       called after <STRONG>endwin</STRONG> if a particular <STRONG>SCREEN</STRONG> is no longer needed.
+       called after <STRONG>endwin</STRONG> if a particular <EM>SCREEN</EM> is no longer needed.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       <STRONG>endwin</STRONG> returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon successful com-
-       pletion.
+       <STRONG>endwin</STRONG>  returns  the  integer  <STRONG>ERR</STRONG>  upon failure and <STRONG>OK</STRONG> upon successful
+       completion.
 
        Routines that return pointers always return <STRONG>NULL</STRONG> on error.
 
        X/Open defines no error conditions.  In this implementation
 
-       <STRONG>o</STRONG>   <STRONG>endwin</STRONG> returns an error if the terminal was not initialized.
+       <STRONG>o</STRONG>   <STRONG>endwin</STRONG> returns an error if
+
+           <STRONG>o</STRONG>   the terminal was not initialized, or
+
+           <STRONG>o</STRONG>   <STRONG>endwin</STRONG> is called more than once without updating the screen, or
+
+           <STRONG>o</STRONG>   <STRONG><A HREF="curs_kernel.3x.html">reset_shell_mode(3x)</A></STRONG> returns an error.
 
        <STRONG>o</STRONG>   <STRONG>newterm</STRONG> returns an error if it cannot allocate the data  structures
            for  the  screen,  or  for the top-level windows within the screen,
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions were described in the XSI Curses standard, Issue 4.  As
-       of 2015, the current document is X/Open Curses, Issue 7.
+       These functions were described in X/Open Curses, Issue 4.  As of  2015,
+       the current document is X/Open Curses, Issue 7.
 
 
 </PRE><H3><a name="h3-Differences">Differences</a></H3><PRE>
-       X/Open  specifies that portable applications must not call <STRONG>initscr</STRONG> more
-       than once:
+       X/Open  Curses  specifies  that  portable  applications  must  not call
+       <STRONG>initscr</STRONG> more than once:
 
-       <STRONG>o</STRONG>   The portable way to use <STRONG>initscr</STRONG> is once only,  using  <STRONG>refresh</STRONG>  (see
-           <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>) to restore the screen after <STRONG>endwin</STRONG>.
+       <STRONG>o</STRONG>   The portable way to use <STRONG>initscr</STRONG> is once only, using <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>  to
+           restore the screen after <STRONG>endwin</STRONG>.
 
        <STRONG>o</STRONG>   This implementation allows using <STRONG>initscr</STRONG> after <STRONG>endwin</STRONG>.
 
        Old versions of curses, e.g., BSD 4.4, would return a null pointer from
        <STRONG>initscr</STRONG> when an error is detected, rather than exiting.  It is safe but
-       redundant to check the return value of <STRONG>initscr</STRONG> in XSI Curses.
+       redundant to check the return value of <STRONG>initscr</STRONG> in X/Open Curses.
 
        Calling  <STRONG>endwin</STRONG>  does not dispose of the memory allocated in <STRONG>initscr</STRONG> or
-       <STRONG>newterm</STRONG>.  Deleting a <STRONG>SCREEN</STRONG> provides a way to do this:
+       <STRONG>newterm</STRONG>.  Deleting a <EM>SCREEN</EM> provides a way to do this:
 
-       <STRONG>o</STRONG>   X/Open Curses does not say what happens to <STRONG>WINDOW</STRONG>s  when  <STRONG>delscreen</STRONG>
-           "frees  storage associated with the <STRONG>SCREEN</STRONG>" nor does the SVr4 docu-
-           mentation help, adding that it should be called after <STRONG>endwin</STRONG>  if  a
-           <STRONG>SCREEN</STRONG> is no longer needed.
+       <STRONG>o</STRONG>   X/Open Curses does not say what happens to <EM>WINDOW</EM>s  when  <STRONG>delscreen</STRONG>
+           "frees  storage  associated  with  the  <EM>SCREEN</EM>"  nor  does the SVr4
+           documentation help, adding that it should be called after <STRONG>endwin</STRONG> if
+           a <EM>SCREEN</EM> is no longer needed.
 
-       <STRONG>o</STRONG>   However,  <STRONG>WINDOW</STRONG>s are implicitly associated with a <STRONG>SCREEN</STRONG>.  so that
+       <STRONG>o</STRONG>   However,  <EM>WINDOW</EM>s are implicitly associated with a <EM>SCREEN</EM>.  so that
            it is reasonable to expect <STRONG>delscreen</STRONG> to deal with these.
 
-       <STRONG>o</STRONG>   SVr4 curses deletes  the  standard  <STRONG>WINDOW</STRONG>  structures  <STRONG>stdscr</STRONG>  and
+       <STRONG>o</STRONG>   SVr4 curses deletes  the  standard  <EM>WINDOW</EM>  structures  <STRONG>stdscr</STRONG>  and
            <STRONG>curscr</STRONG>  as  well  as a work area <STRONG>newscr</STRONG>.  SVr4 curses ignores other
            windows.
 
-       <STRONG>o</STRONG>   Since version 4.0 (1996), ncurses has maintained a list of all win-
-           dows  for  each screen, using that information to delete those win-
-           dows when <STRONG>delscreen</STRONG> is called.
+       <STRONG>o</STRONG>   Since version 4.0 (1996), <EM>ncurses</EM> has  maintained  a  list  of  all
+           windows  for  each  screen,  using that information to delete those
+           windows when <STRONG>delscreen</STRONG> is called.
+
+       <STRONG>o</STRONG>   NetBSD copied this feature of <EM>ncurses</EM> in  2001.   PDCurses  follows
+           the SVr4 model, deleting only the standard <EM>WINDOW</EM> structures.
+
+
+</PRE><H3><a name="h3-High-level-versus-Low-level">High-level versus Low-level</a></H3><PRE>
+       Different  implementations  may  disagree  regarding  the level of some
+       functions.  For example, <EM>SCREEN</EM>  (returned  by  <STRONG>newterm</STRONG>)  and  <EM>TERMINAL</EM>
+       (returned  by  <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>)  hold  file  descriptors  for  the output
+       stream.  If an application switches screens using <STRONG>set_term</STRONG>, or switches
+       terminals using <STRONG><A HREF="curs_terminfo.3x.html">set_curterm(3x)</A></STRONG>, applications which use the output file
+       descriptor can have different behavior  depending  on  which  structure
+       holds the corresponding descriptor.
+
+       For example
 
-       <STRONG>o</STRONG>   NetBSD copied this feature of ncurses in  2001.   PDCurses  follows
-           the SVr4 model, deleting only the standard <STRONG>WINDOW</STRONG> structures.
+       <STRONG>o</STRONG>   NetBSD's  <STRONG><A HREF="curs_termattrs.3x.html">baudrate(3x)</A></STRONG>  function  uses  the descriptor in <EM>TERMINAL</EM>.
+           <EM>ncurses</EM> and SVr4 use the descriptor in <EM>SCREEN</EM>.
 
+       <STRONG>o</STRONG>   NetBSD and <EM>ncurses</EM> use the descriptor in <EM>TERMINAL</EM> for terminal  I/O
+           modes,  e.g.,  <STRONG><A HREF="curs_kernel.3x.html">def_shell_mode(3x)</A></STRONG>,  <STRONG><A HREF="curs_kernel.3x.html">def_prog_mode(3x)</A></STRONG>.  SVr4 curses
+           uses the descriptor in <EM>SCREEN</EM>.
 
-</PRE><H3><a name="h3-Unset-TERM-Variable">Unset TERM Variable</a></H3><PRE>
-       If  the  TERM variable is missing or empty, <STRONG>initscr</STRONG> uses the value "un-
-       known", which normally corresponds to a terminal entry with the <EM>generic</EM>
-       (<EM>gn</EM>)  capability.   Generic  entries  are  detected  by  <STRONG>setupterm</STRONG> (see
-       <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>) and cannot be used for full-screen operation.  Other
-       implementations may handle a missing/empty TERM variable differently.
+   <STRONG>Unset</STRONG> <EM>TERM</EM> <STRONG>Variable</STRONG>
+       If the <EM>TERM</EM> variable is  missing  or  empty,  <STRONG>initscr</STRONG>  uses  the  value
+       "unknown",  which  normally  corresponds  to  a terminal entry with the
+       <EM>generic</EM> (<EM>gn</EM>) capability.  Generic entries are detected by <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>
+       and  cannot  be  used for full-screen operation.  Other implementations
+       may handle a missing/empty <EM>TERM</EM> variable differently.
 
 
 </PRE><H3><a name="h3-Signal-Handlers">Signal Handlers</a></H3><PRE>
-       Quoting from X/Open Curses, section 3.1.1:
+       Quoting from X/Open Curses Issue 7, section 3.1.1:
 
-            <EM>Curses</EM>  <EM>implementations</EM>  <EM>may</EM>  <EM>provide</EM>  <EM>for</EM> <EM>special</EM> <EM>handling</EM> <EM>of</EM> <EM>the</EM>
-            <STRONG>SIGINT</STRONG><EM>,</EM> <STRONG>SIGQUIT</STRONG>  <EM>and</EM>  <STRONG>SIGTSTP</STRONG>  <EM>signals</EM>  <EM>if</EM>  <EM>their</EM>  <EM>disposition</EM>  <EM>is</EM>
-            <STRONG>SIG_DFL</STRONG> <EM>at</EM> <EM>the</EM> <EM>time</EM> <STRONG>initscr</STRONG> <EM>is</EM> <EM>called</EM> ...
+            Curses implementations may provide for  special  handling  of  the
+            SIGINT,  SIGQUIT,  and  SIGTSTP  signals  if  their disposition is
+            SIG_DFL at the time <EM>initscr</EM> is called...
 
-            <EM>Any</EM>  <EM>special</EM>  <EM>handling</EM>  <EM>for</EM> <EM>these</EM> <EM>signals</EM> <EM>may</EM> <EM>remain</EM> <EM>in</EM> <EM>effect</EM> <EM>for</EM>
-            <EM>the</EM>  <EM>life</EM>  <EM>of</EM>  <EM>the</EM>  <EM>process</EM>  <EM>or</EM>  <EM>until</EM>  <EM>the</EM>  <EM>process</EM>  <EM>changes</EM>  <EM>the</EM>
-            <EM>disposition</EM> <EM>of</EM> <EM>the</EM> <EM>signal.</EM>
+            Any special handling for these signals may remain  in  effect  for
+            the  life  of  the  process  or  until  the  process  changes  the
+            disposition of the signal.
 
-            <EM>None</EM>  <EM>of</EM> <EM>the</EM> <EM>Curses</EM> <EM>functions</EM> <EM>are</EM> <EM>required</EM> <EM>to</EM> <EM>be</EM> <EM>safe</EM> <EM>with</EM> <EM>respect</EM>
-            <EM>to</EM> <EM>signals</EM> ...
+            None of the Curses functions are required to be safe with  respect
+            to signals...
 
-       This implementation establishes signal handlers during  initialization,
+       This  implementation establishes signal handlers during initialization,
        e.g., <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.  Applications which must handle these signals
-       should set up the corresponding handlers  <EM>after</EM>  initializing  the  li-
-       brary:
+       should  set  up  the  corresponding  handlers  <EM>after</EM>  initializing  the
+       library:
 
        <STRONG>SIGINT</STRONG>
-            The  handler  <EM>attempts</EM> to cleanup the screen on exit.  Although it
+            The handler <EM>attempts</EM> to clean up the screen on exit.  Although  it
             <EM>usually</EM> works as expected, there are limitations:
 
-            <STRONG>o</STRONG>   Walking the <STRONG>SCREEN</STRONG> list is unsafe, since all  list  management
+            <STRONG>o</STRONG>   Walking  the  <EM>SCREEN</EM> list is unsafe, since all list management
                 is done without any signal blocking.
 
-            <STRONG>o</STRONG>   On systems which have <STRONG>REENTRANT</STRONG> turned on, <STRONG>set_term</STRONG> uses func-
-                tions which could deadlock or misbehave in other ways.
+            <STRONG>o</STRONG>   On systems which  have  <STRONG>REENTRANT</STRONG>  turned  on,  <STRONG>set_term</STRONG>  uses
+                functions which could deadlock or misbehave in other ways.
 
-            <STRONG>o</STRONG>   <STRONG>endwin</STRONG> calls other functions, many of which use stdio or other
-                library functions which are clearly unsafe.
+            <STRONG>o</STRONG>   <STRONG>endwin</STRONG>  calls  other  functions, many of which use <STRONG>stdio(3)</STRONG> or
+                other library functions which are clearly unsafe.
 
        <STRONG>SIGTERM</STRONG>
-            This  uses  the same handler as <STRONG>SIGINT</STRONG>, with the same limitations.
-            It is not mentioned in X/Open Curses, but  is  more  suitable  for
+            This uses the same handler as <STRONG>SIGINT</STRONG>, with the  same  limitations.
+            It  is  not  mentioned  in X/Open Curses, but is more suitable for
             this purpose than <STRONG>SIGQUIT</STRONG> (which is used in debugging).
 
        <STRONG>SIGTSTP</STRONG>
-            This  handles the <EM>stop</EM> signal, used in job control.  When resuming
-            the process,  this  implementation  discards  pending  input  with
-            <STRONG>flushinput</STRONG>  (see  <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>), and repaints the screen assuming
-            that it has been completely altered.  It also  updates  the  saved
-            terminal modes with <STRONG>def_shell_mode</STRONG> (see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>).
+            This handles the <EM>stop</EM> signal, used in job control.  When  resuming
+            the  process,  this  implementation  discards  pending  input with
+            <STRONG><A HREF="curs_util.3x.html">flushinp(3x)</A></STRONG>, and repaints the screen assuming that  it  has  been
+            completely altered.  It also updates the saved terminal modes with
+            <STRONG><A HREF="curs_kernel.3x.html">def_shell_mode(3x)</A></STRONG>.
 
        <STRONG>SIGWINCH</STRONG>
-            This  handles  the  window-size  changes which were ignored in the
-            standardization efforts.  The handler sets a  (signal-safe)  vari-
-            able  which  is  later  tested in <STRONG>wgetch</STRONG> (see <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>).  If
-            <STRONG>keypad</STRONG> has been enabled for the corresponding window,  <STRONG>wgetch</STRONG>  re-
-            turns  the  key symbol <STRONG>KEY_RESIZE</STRONG>.  At the same time, <STRONG>wgetch</STRONG> calls
-            <STRONG>resizeterm</STRONG> to adjust the standard screen <STRONG>stdscr</STRONG>, and update  other
-            data such as <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG>.
+            This handles the window-size changes which  were  ignored  in  the
+            standardization   efforts.    The  handler  sets  a  (signal-safe)
+            variable which is later tested in <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>.  If <STRONG>keypad</STRONG> has  been
+            enabled  for  the  corresponding  window,  <STRONG>wgetch</STRONG>  returns the key
+            symbol <STRONG>KEY_RESIZE</STRONG>.  At the same time, <STRONG>wgetch</STRONG> calls  <STRONG>resizeterm</STRONG>  to
+            adjust  the  standard screen <STRONG>stdscr</STRONG>, and update other data such as
+            <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG>curs_ter-</STRONG>
-       <STRONG><A HREF="curs_terminfo.3x.html">minfo(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,    <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,     <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,     <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                              <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                  <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a>
 <ul>
 <li><a href="#h3-Differences">Differences</a></li>
-<li><a href="#h3-Unset-TERM-Variable">Unset TERM Variable</a></li>
+<li><a href="#h3-High-level-versus-Low-level">High-level versus Low-level</a></li>
 <li><a href="#h3-Signal-Handlers">Signal Handlers</a></li>
 </ul>
 </li>
index 4bee87ac6af6a337478dc9904cb964962be50c9f..149b2b82be28ff98b25a6461daf3fb739fefbc25 100644 (file)
@@ -1,6 +1,7 @@
 <!--
+  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inopts.3x,v 1.36 2022/02/12 20:07:29 tom Exp @
+  * @Id: curs_inopts.3x,v 1.66 2024/04/13 22:20:29 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_inopts 3x</TITLE>
+<TITLE>curs_inopts 3x 2024-04-13 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_inopts 3x</H1>
+<H1 class="no-header">curs_inopts 3x 2024-04-13 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>                                                <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
+<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>cbreak</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>keypad</STRONG>, <STRONG>meta</STRONG>, <STRONG>nl</STRONG>,
-       <STRONG>nonl</STRONG>, <STRONG>nodelay</STRONG>, <STRONG>notimeout</STRONG>, <STRONG>raw</STRONG>, <STRONG>noraw</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>timeout</STRONG>,
-       <STRONG>wtimeout</STRONG>, <STRONG>typeahead</STRONG> - <STRONG>curses</STRONG> input options
+       <STRONG>cbreak</STRONG>,  <STRONG>echo</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>is_cbreak</STRONG>, <STRONG>is_echo</STRONG>, <STRONG>is_nl</STRONG>, <STRONG>is_raw</STRONG>,
+       <STRONG>keypad</STRONG>, <STRONG>meta</STRONG>, <STRONG>nl</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>nodelay</STRONG>, <STRONG>noecho</STRONG>,  <STRONG>nonl</STRONG>,  <STRONG>noqiflush</STRONG>,  <STRONG>noraw</STRONG>,
+       <STRONG>notimeout</STRONG>,  <STRONG>qiflush</STRONG>,  <STRONG>raw</STRONG>,  <STRONG>timeout</STRONG>,  <STRONG>wtimeout</STRONG>, <STRONG>typeahead</STRONG> - get and set
+       <EM>curses</EM> terminal input options
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
        <STRONG>int</STRONG> <STRONG>typeahead(int</STRONG> <EM>fd</EM><STRONG>);</STRONG>
 
+       <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM>
+       <STRONG>int</STRONG> <STRONG>is_cbreak(void);</STRONG>
+       <STRONG>int</STRONG> <STRONG>is_echo(void);</STRONG>
+       <STRONG>int</STRONG> <STRONG>is_nl(void);</STRONG>
+       <STRONG>int</STRONG> <STRONG>is_raw(void);</STRONG>
+
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The <STRONG>ncurses</STRONG> library provides several functions which let an application
-       change the way input from the terminal is handled.   Some  are  global,
-       applying to all windows.  Others apply only to a specific window.  Win-
-       dow-specific settings are not automatically applied to new  or  derived
-       windows.   An  application must apply these to each window, if the same
-       behavior is needed.
-
-
-</PRE><H3><a name="h3-cbreak_nocbreak">cbreak/nocbreak</a></H3><PRE>
-       Normally, the tty driver buffers typed characters until  a  newline  or
-       carriage  return  is typed.  The <STRONG>cbreak</STRONG> routine disables line buffering
-       and erase/kill character-processing (interrupt and flow control charac-
-       ters  are  unaffected), making characters typed by the user immediately
-       available to the program.  The <STRONG>nocbreak</STRONG> routine returns the terminal to
-       normal (cooked) mode.
+       <EM>ncurses</EM> provides several functions that let an application  change  the
+       way  input  from the terminal is handled.  Some are global, applying to
+       all windows.  Others apply only to a specific window.   Window-specific
+       settings  are  not automatically applied to new or derived windows.  An
+       application must apply these to each window if  the  same  behavior  is
+       desired.
+
+
+</PRE><H3><a name="h3-cbreak_nocbreak">cbreaknocbreak</a></H3><PRE>
+       Normally,  the terminal driver buffers typed characters until a newline
+       or  carriage  return  is  typed.   The  <STRONG>cbreak</STRONG>  routine  disables  line
+       buffering  and  erase/kill  character-processing  (interrupt  and  flow
+       control characters are unaffected), making characters typed by the user
+       immediately available to the program.  The <STRONG>nocbreak</STRONG> routine returns the
+       terminal to normal (cooked) mode.
 
        Initially the terminal may or may not be in <STRONG>cbreak</STRONG> mode, as the mode is
-       inherited; therefore, a program should call <STRONG>cbreak</STRONG> or <STRONG>nocbreak</STRONG>  explic-
-       itly.   Most  interactive  programs  using  <STRONG>curses</STRONG> set the <STRONG>cbreak</STRONG> mode.
-       Note that <STRONG>cbreak</STRONG> overrides <STRONG>raw</STRONG>.  [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for  a  discussion
-       of how these routines interact with <STRONG>echo</STRONG> and <STRONG>noecho</STRONG>.]
+       inherited;   therefore,  a  program  should  call  <STRONG>cbreak</STRONG>  or  <STRONG>nocbreak</STRONG>
+       explicitly.  Most interactive programs  using  <EM>curses</EM>  set  the  <STRONG>cbreak</STRONG>
+       mode.   Note  that  <STRONG>cbreak</STRONG>  overrides  <STRONG>raw</STRONG>.   [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a
+       discussion of how these routines interact with <STRONG>echo</STRONG> and <STRONG>noecho</STRONG>.]
 
 
-</PRE><H3><a name="h3-echo_noecho">echo/noecho</a></H3><PRE>
-       The  <STRONG>echo</STRONG>  and  <STRONG>noecho</STRONG> routines control whether characters typed by the
-       user are echoed by <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG> as they are typed.   Echoing  by  the  tty
-       driver  is  always  disabled,  but  initially <STRONG>getch</STRONG> is in echo mode, so
-       characters typed are echoed.  Authors of most interactive programs pre-
-       fer  to do their own echoing in a controlled area of the screen, or not
-       to echo at all, so  they  disable  echoing  by  calling  <STRONG>noecho</STRONG>.   [See
-       <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>  for  a  discussion  of how these routines interact with
-       <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG>.]
+</PRE><H3><a name="h3-echo_noecho">echonoecho</a></H3><PRE>
+       The <STRONG>echo</STRONG> and <STRONG>noecho</STRONG> routines control whether characters  typed  by  the
+       user  are  echoed  by  <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>  as  they  are  typed.  Echoing by the
+       terminal driver is always disabled, but  initially  <STRONG>getch</STRONG>  is  in  echo
+       mode,  so  characters  typed  are  echoed.  Authors of most interactive
+       programs prefer to do their own echoing in a  controlled  area  of  the
+       screen,  or  not  to  echo  at  all, so they disable echoing by calling
+       <STRONG>noecho</STRONG>.  [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a discussion  of  how  these  routines
+       interact with <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG>.]
 
 
 </PRE><H3><a name="h3-halfdelay">halfdelay</a></H3><PRE>
-       The <STRONG>halfdelay</STRONG> routine is used for half-delay mode, which is similar  to
-       <STRONG>cbreak</STRONG> mode in that characters typed by the user are immediately avail-
-       able to the program.  However, after blocking for <EM>tenths</EM> tenths of sec-
-       onds,  <STRONG>ERR</STRONG>  is returned if nothing has been typed.  The value of <EM>tenths</EM>
-       must be a number between 1 and 255.  Use <STRONG>nocbreak</STRONG> to  leave  half-delay
-       mode.
+       The  <STRONG>halfdelay</STRONG> routine is used for half-delay mode, which is similar to
+       <STRONG>cbreak</STRONG> mode in that  characters  typed  by  the  user  are  immediately
+       available to the program.  However, after blocking for <EM>tenths</EM> tenths of
+       seconds, <STRONG>ERR</STRONG> is returned if nothing  has  been  typed.   The  value  of
+       <EM>tenths</EM> must be a number between 1 and 255.  Use <STRONG>nocbreak</STRONG> to leave half-
+       delay mode.
 
 
 </PRE><H3><a name="h3-intrflush">intrflush</a></H3><PRE>
-       If  the  <STRONG>intrflush</STRONG> option is enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), and an interrupt key
-       is pressed on the keyboard (interrupt, break, quit), all output in  the
-       tty  driver queue will be flushed, giving the effect of faster response
-       to the interrupt, but causing <STRONG>curses</STRONG> to have the wrong idea of what  is
-       on  the screen.  Disabling the option (<EM>bf</EM> is <STRONG>FALSE</STRONG>) prevents the flush.
-       The default for the option is inherited from the tty  driver  settings.
-       The window argument is ignored.
+       If the <STRONG>intrflush</STRONG> option is enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), and an  interrupt  key
+       is  pressed on the keyboard (interrupt, break, quit), all output in the
+       terminal driver queue is flushed, giving the effect of faster  response
+       to  the interrupt, but causing <EM>curses</EM> to have the wrong idea of what is
+       on the screen.  Disabling the option (<EM>bf</EM> is <STRONG>FALSE</STRONG>), prevents the flush.
+       The  default  for  the  option  is  inherited  from the terminal driver
+       settings.  The <EM>win</EM> argument is ignored.
 
 
 </PRE><H3><a name="h3-keypad">keypad</a></H3><PRE>
-       The  <STRONG>keypad</STRONG>  option  enables the keypad of the user's terminal.  If en-
-       abled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the user can press a function key (such as an arrow
-       key)  and  <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>  returns a single value representing the function
-       key, as in <STRONG>KEY_LEFT</STRONG>.  If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <STRONG>curses</STRONG> does not  treat
-       function keys specially and the program has to interpret the escape se-
-       quences itself.  If the keypad in the terminal can be turned  on  (made
-       to  transmit)  and  off  (made to work locally), turning on this option
-       causes the terminal keypad to be turned on when <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>  is  called.
-       The default value for keypad is <STRONG>FALSE</STRONG>.
+       The <STRONG>keypad</STRONG> option enables  the  keypad  of  the  user's  terminal.   If
+       enabled  (<EM>bf</EM>  is  <STRONG>TRUE</STRONG>),  the user can press a function key (such as an
+       arrow key) and <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>  returns  a  single  value  representing  the
+       function  key,  as in <STRONG>KEY_LEFT</STRONG>.  If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <EM>curses</EM> does
+       not treat function keys specially and the program has to interpret  the
+       escape  sequences  itself.  If the keypad in the terminal can be turned
+       on (made to transmit) and off (made to work locally), turning  on  this
+       option  causes  the  terminal keypad to be turned on when <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> is
+       called.  The default value for keypad is <STRONG>FALSE</STRONG>.
 
 
 </PRE><H3><a name="h3-meta">meta</a></H3><PRE>
-       Initially,  whether the terminal returns 7 or 8 significant bits on in-
-       put depends on the control mode of the tty driver [see <STRONG>termios(3)</STRONG>].  To
-       force  8  bits  to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>); this is equiva-
-       lent, under POSIX, to setting the CS8 flag on the terminal.  To force 7
-       bits to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>); this is equivalent, under
-       POSIX, to setting the CS7 flag on the terminal.  The  window  argument,
-       <EM>win</EM>, is always ignored.  If the terminfo capabilities <STRONG>smm</STRONG> (meta_on) and
-       <STRONG>rmm</STRONG> (meta_off) are defined for the terminal, <STRONG>smm</STRONG> is sent to the  termi-
-       nal  when  <STRONG>meta</STRONG>(<EM>win</EM>,  <STRONG>TRUE</STRONG>)  is  called  and <STRONG>rmm</STRONG> is sent when <STRONG>meta</STRONG>(<EM>win</EM>,
-       <STRONG>FALSE</STRONG>) is called.
-
-
-</PRE><H3><a name="h3-nl_nonl">nl/nonl</a></H3><PRE>
-       The <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> routines control whether the underlying display  device
+       Initially, whether the terminal returns 7  or  8  significant  bits  on
+       input  depends  on  the  control  mode  of  the  terminal  driver  [see
+       <STRONG>termios(3)</STRONG>].  To force 8 bits to be returned, invoke  <STRONG>meta</STRONG>(<EM>win</EM>,  <STRONG>TRUE</STRONG>);
+       this  is  equivalent,  under  POSIX,  to  setting  the  CS8 flag on the
+       terminal.  To force 7 bits to be  returned,  invoke  <STRONG>meta</STRONG>(<EM>win</EM>,  <STRONG>FALSE</STRONG>);
+       this  is  equivalent,  under  POSIX,  to  setting  the  CS7 flag on the
+       terminal.  The  window  argument,  <EM>win</EM>,  is  always  ignored.   If  the
+       terminfo  capabilities <STRONG>smm</STRONG> (meta_on) and <STRONG>rmm</STRONG> (meta_off) are defined for
+       the terminal, <STRONG>smm</STRONG> is sent to  the  terminal  when  <STRONG>meta</STRONG>(<EM>win</EM>,  <STRONG>TRUE</STRONG>)  is
+       called and <STRONG>rmm</STRONG> is sent when <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>) is called.
+
+
+</PRE><H3><a name="h3-nl_nonl">nlnonl</a></H3><PRE>
+       The  <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> routines control whether the underlying display device
        translates the return key into newline on input.
 
 
 </PRE><H3><a name="h3-nodelay">nodelay</a></H3><PRE>
        The <STRONG>nodelay</STRONG> option causes <STRONG>getch</STRONG> to be a non-blocking call.  If no input
-       is ready, <STRONG>getch</STRONG> returns <STRONG>ERR</STRONG>.  If disabled (<EM>bf</EM> is  <STRONG>FALSE</STRONG>),  <STRONG>getch</STRONG>  waits
+       is  ready,  <STRONG>getch</STRONG>  returns <STRONG>ERR</STRONG>.  If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <STRONG>getch</STRONG> waits
        until a key is pressed.
 
 
 </PRE><H3><a name="h3-notimeout">notimeout</a></H3><PRE>
-       When  interpreting  an  escape  sequence, <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> sets a timer while
-       waiting for the next character.  If  <STRONG>notimeout(</STRONG><EM>win</EM>,  <STRONG>TRUE</STRONG>)  is  called,
-       then  <STRONG>wgetch</STRONG>  does  not  set a timer.  The purpose of the timeout is to
-       differentiate between sequences received from a function key and  those
-       typed by a user.
-
-
-</PRE><H3><a name="h3-raw_noraw">raw/noraw</a></H3><PRE>
-       The  <STRONG>raw</STRONG> and <STRONG>noraw</STRONG> routines place the terminal into or out of raw mode.
-       Raw mode is similar to <STRONG>cbreak</STRONG> mode, in that characters typed are  imme-
-       diately  passed  through to the user program.  The differences are that
-       in raw mode, the interrupt, quit, suspend, and flow control  characters
-       are  all  passed through uninterpreted, instead of generating a signal.
-       The behavior of the BREAK key depends on other bits in the  tty  driver
-       that are not set by <STRONG>curses</STRONG>.
-
-
-</PRE><H3><a name="h3-qiflush_noqiflush">qiflush/noqiflush</a></H3><PRE>
-       When  the  <STRONG>noqiflush</STRONG>  routine is used, normal flush of input and output
-       queues associated with the <STRONG>INTR</STRONG>, <STRONG>QUIT</STRONG> and <STRONG>SUSP</STRONG> characters will  not  be
-       done  [see  <STRONG>termios(3)</STRONG>].   When  <STRONG>qiflush</STRONG>  is called, the queues will be
-       flushed when these control characters are read.  You may want  to  call
-       <STRONG>noqiflush</STRONG>  in a signal handler if you want output to continue as though
+       When interpreting an escape sequence, <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>  sets  a  timer  while
+       waiting  for  the  next  character.  If <STRONG>notimeout(</STRONG><EM>win</EM>, <STRONG>TRUE</STRONG>) is called,
+       then <STRONG>wgetch</STRONG> does not set a timer.  The purpose of  the  timeout  is  to
+       distinguish  sequences produced by a function key from those typed by a
+       user.
+
+
+</PRE><H3><a name="h3-raw_noraw">rawnoraw</a></H3><PRE>
+       The <STRONG>raw</STRONG> and <STRONG>noraw</STRONG> routines place the terminal into or out of raw  mode.
+       Raw  mode  is  similar  to  <STRONG>cbreak</STRONG>  mode,  in that characters typed are
+       immediately passed through to the user program.   The  differences  are
+       that  in  raw  mode,  the  interrupt,  quit,  suspend, and flow control
+       characters are all passed through uninterpreted, instead of  generating
+       a  signal.   The behavior of the BREAK key depends on other bits in the
+       terminal driver that are not set by <EM>curses</EM>.
+
+
+</PRE><H3><a name="h3-qiflush_nqiflush">qiflush, nqiflush</a></H3><PRE>
+       When the <STRONG>noqiflush</STRONG> routine is used, normal flush of  input  and  output
+       queues  associated  with the <STRONG>INTR</STRONG>, <STRONG>QUIT</STRONG> and <STRONG>SUSP</STRONG> characters will not be
+       done [see <STRONG>termios(3)</STRONG>].  When <STRONG>qiflush</STRONG> is  called,  the  queues  will  be
+       flushed  when  these control characters are read.  You may want to call
+       <STRONG>noqiflush</STRONG> in a signal handler if you want output to continue as  though
        the interrupt had not occurred, after the handler exits.
 
 
-</PRE><H3><a name="h3-timeout_wtimeout">timeout/wtimeout</a></H3><PRE>
+</PRE><H3><a name="h3-timeout_wtimeout">timeoutwtimeout</a></H3><PRE>
        The <STRONG>timeout</STRONG> and <STRONG>wtimeout</STRONG> routines set blocking or non-blocking read for
-       a  given  window.   If  <EM>delay</EM> is negative, blocking read is used (i.e.,
-       waits indefinitely for input).  If <EM>delay</EM>  is  zero,  then  non-blocking
-       read is used (i.e., read returns <STRONG>ERR</STRONG> if no input is waiting).  If <EM>delay</EM>
-       is positive, then read blocks for <EM>delay</EM> milliseconds, and  returns  <STRONG>ERR</STRONG>
-       if  there  is  still  no input.  Hence, these routines provide the same
-       functionality as <STRONG>nodelay</STRONG>, plus the additional capability of being  able
+       a given window.  If <EM>delay</EM> is negative, a blocking read is  used  (i.e.,
+       waits  indefinitely  for input).  If <EM>delay</EM> is zero, then a non-blocking
+       read is used (i.e., <EM>read</EM> returns <STRONG>ERR</STRONG> if no input is waiting).  If <EM>delay</EM>
+       is  positive,  then <EM>read</EM> blocks for <EM>delay</EM> milliseconds, and returns <STRONG>ERR</STRONG>
+       if there is still no input.  Hence, these  routines  provide  the  same
+       functionality  as <STRONG>nodelay</STRONG>, plus the additional capability of being able
        to block for only <EM>delay</EM> milliseconds (where <EM>delay</EM> is positive).
 
 
 </PRE><H3><a name="h3-typeahead">typeahead</a></H3><PRE>
-       The <STRONG>curses</STRONG> library does "line-breakout optimization" by looking for ty-
-       peahead periodically while updating the screen.  If input is found, and
-       it  is  coming  from  a  tty, the current update is postponed until <STRONG>re-</STRONG>
-       <STRONG><A HREF="refresh.3x.html">fresh(3x)</A></STRONG> or <STRONG>doupdate</STRONG> is called again.  This allows faster response  to
-       commands  typed in advance.  Normally, the input FILE pointer passed to
-       <STRONG>newterm</STRONG>, or <STRONG>stdin</STRONG> in the case that <STRONG>initscr</STRONG> was used, will be used to do
-       this typeahead checking.  The <STRONG>typeahead</STRONG> routine specifies that the file
-       descriptor <EM>fd</EM> is to be used to check for typeahead instead.  If  <EM>fd</EM>  is
-       -1, then no typeahead checking is done.
+       <EM>curses</EM> does  "line-breakout  optimization"  by  looking  for  typeahead
+       periodically  while  updating the screen.  If input is found, and it is
+       coming  from  a  terminal,  the  current  update  is  postponed   until
+       <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>  or  <STRONG>doupdate</STRONG> is called again.  This allows faster response
+       to commands typed in advance.  Normally, the input <EM>FILE</EM> pointer  passed
+       to <STRONG>newterm</STRONG>, or <STRONG>stdin</STRONG> in the case that <STRONG>initscr</STRONG> was used, will be used to
+       do this typeahead checking.  The <STRONG>typeahead</STRONG> routine specifies  that  the
+       file descriptor <EM>fd</EM> is to be used to check for typeahead instead.  If <EM>fd</EM>
+       is -1, then no typeahead checking is done.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All  routines  that  return  an  integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
+       All routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure  and  <STRONG>OK</STRONG>
        (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful
-       completion,  unless  otherwise  noted in the preceding routine descrip-
-       tions.
+       completion,  unless  otherwise   noted   in   the   preceding   routine
+       descriptions.
+
+       X/Open   Curses  does  not  specify  any  error  conditions.   In  this
+       implementation, functions with a window parameter will return an  error
+       if  it is null.  Any function will also return an error if the terminal
+       was not initialized.  Also,
+
+          <STRONG>halfdelay</STRONG>
+               returns an error if its parameter is outside the range 1..255.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG>, <STRONG>nodelay</STRONG>, <STRONG>notimeout</STRONG>,
+       <STRONG>noqiflush</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, and <STRONG>wtimeout</STRONG> may be implemented as macros.
+
+       <STRONG>noraw</STRONG>  and  <STRONG>nocbreak</STRONG> follow historical practice in that they attempt to
+       restore normal ("cooked") mode from raw and cbreak modes  respectively.
+       Mixing  <STRONG>raw</STRONG>/<STRONG>noraw</STRONG>  and  <STRONG>cbreak</STRONG>/<STRONG>nocbreak</STRONG>  calls leads to terminal driver
+       control states that are hard to predict or understand; doing so is  not
+       recommended.
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       <EM>ncurses</EM> provides four "is_" functions that may be used to detect if the
+       corresponding flags were set or reset.
 
-       X/Open does not define any error conditions.  In  this  implementation,
-       functions  with  a window parameter will return an error if it is null.
-       Any function will also return an error if the terminal was not initial-
-       ized.  Also,
+                            <STRONG>Query</STRONG>       <STRONG>Set</STRONG>      <STRONG>Reset</STRONG>
+                            ------------------------------
+                            is_cbreak   cbreak   nocbreak
+                            is_echo     echo     noecho
+                            is_nl       nl       nonl
+                            is_raw      raw      noraw
 
-              <STRONG>halfdelay</STRONG>
-                   returns  an  error  if  its  parameter is outside the range
-                   1..255.
+       In each case, the function returns
+
+       1   if the flag is set,
+
+       0   if the flag is reset, or
+
+       -1  if the library is not initialized.
+
+       They were designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and are not found in  SVr4  <EM>curses</EM>,
+       4.4BSD <EM>curses</EM>, or any other previous <EM>curses</EM> implementation.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.
-
-       The ncurses library obeys the XPG4 standard and the historical practice
-       of  the  AT&amp;T  curses  implementations, in that the echo bit is cleared
-       when curses initializes the terminal state.  BSD curses  differed  from
-       this  slightly;  it left the echo bit on at initialization, but the BSD
-       <STRONG>raw</STRONG> call turned it off as a side-effect.   For  best  portability,  set
-       <STRONG>echo</STRONG>  or <STRONG>noecho</STRONG> explicitly just after initialization, even if your pro-
-       gram remains in cooked mode.
-
-       The XSI Curses standard is ambiguous on the  question  of  whether  <STRONG>raw</STRONG>
-       should  disable  the  CRLF translations controlled by <STRONG>nl</STRONG> and <STRONG>nonl</STRONG>.  BSD
-       curses did turn off these translations; AT&amp;T curses (at least  as  late
-       as  SVr1)  did not.  We chose to do so, on the theory that a programmer
-       requesting raw input wants a clean  (ideally  8-bit  clean)  connection
-       that the operating system will not alter.
-
-       When <STRONG>keypad</STRONG> is first enabled, ncurses loads the key-definitions for the
-       current terminal description.  If the terminal description includes ex-
-       tended string capabilities, e.g., from using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>, then
-       ncurses also defines keys for the capabilities whose names  begin  with
-       "k".  The corresponding keycodes are generated and (depending on previ-
-       ous loads of terminal descriptions) may differ from one execution of  a
-       program to the next.  The generated keycodes are recognized by the <STRONG>key-</STRONG>
-       <STRONG>name</STRONG> function (which will then return a name beginning with "k"  denot-
-       ing  the terminfo capability name rather than "K", used for curses key-
-       names).  On the other hand, an application can use <STRONG>define_key</STRONG> to estab-
-       lish a specific keycode for a given string.  This makes it possible for
-       an application to check for  an  extended  capability's  presence  with
-       <STRONG>tigetstr</STRONG>, and reassign the keycode to match its own needs.
+       Applications employing <EM>ncurses</EM> extensions should condition their use on
+       the visibility of the <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
+
+       Except as noted in section "EXTENSIONS" above, X/Open Curses, Issue  4,
+       Version 2 describes these functions.
+
+       <EM>ncurses</EM>  follows  X/Open  Curses  and  the  historical practice of AT&amp;T
+       <EM>curses</EM> implementations, in that the echo bit  is  cleared  when  <EM>curses</EM>
+       initializes   the  terminal  state.   BSD  <EM>curses</EM>  differed  from  this
+       slightly; it left the echo bit on at initialization, but  the  BSD  <STRONG>raw</STRONG>
+       call turned it off as a side effect.  For best portability, set <STRONG>echo</STRONG> or
+       <STRONG>noecho</STRONG> explicitly just  after  initialization,  even  if  your  program
+       remains in cooked mode.
+
+       X/Open  Curses  is  ambiguous  regarding whether <STRONG>raw</STRONG> should disable the
+       CR/LF translations controlled by <STRONG>nl</STRONG> and <STRONG>nonl</STRONG>.  BSD <EM>curses</EM> did turn  off
+       these  translations;  AT&amp;T  <EM>curses</EM>  (at least as late as SVr1) did not.
+       <EM>ncurses</EM> does so, on the assumption that  a  programmer  requesting  raw
+       input  wants  a  clean  (ideally,  8-bit  clean)  connection  that  the
+       operating system will not alter.
+
+       When <STRONG>keypad</STRONG> is first enabled, <EM>ncurses</EM> loads the key definitions for the
+       current  terminal  description.   If  the terminal description includes
+       extended string capabilities, e.g., from using the <STRONG>-x</STRONG>  option  of  <STRONG>tic</STRONG>,
+       then  <EM>ncurses</EM>  also defines keys for the capabilities whose names begin
+       with "k".  The corresponding keycodes are generated and  (depending  on
+       previous  loads of terminal descriptions) may differ from one execution
+       of a program to the next.  The generated keycodes are recognized by the
+       <STRONG><A HREF="curs_util.3x.html">keyname(3x)</A></STRONG>  function (which will then return a name beginning with "k"
+       denoting the terminfo capability name rather than "K", used for  <EM>curses</EM>
+       key  names).   On the other hand, an application can use <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
+       to establish a specific keycode for a  given  string.   This  makes  it
+       possible  for  an  application  to  check  for an extended capability's
+       presence with <STRONG>tigetstr</STRONG>, and reassign  the  keycode  to  match  its  own
+       needs.
 
        Low-level applications can use <STRONG>tigetstr</STRONG> to obtain the definition of any
        particular string capability.  Higher-level applications which use  the
-       curses  <STRONG>wgetch</STRONG>  and  similar functions to return keycodes rely upon the
+       <EM>curses</EM>  <STRONG>wgetch</STRONG>  and  similar functions to return keycodes rely upon the
        order in which the strings are loaded.  If more than one key definition
        has  the  same  string  value, then <STRONG>wgetch</STRONG> can return only one keycode.
-       Most curses implementations (including ncurses) load key definitions in
+       Most <EM>curses</EM> implementations (including <EM>ncurses</EM>) load key definitions in
        the  order  defined  by the array of string capability names.  The last
        key to be loaded determines the keycode which  will  be  returned.   In
-       ncurses,  you  may  also  have extended capabilities interpreted as key
-       definitions.  These are loaded after the predefined keys, and if a  ca-
-       pability's value is the same as a previously-loaded key definition, the
-       later definition is the one used.
+       <EM>ncurses</EM>,  you  may  also  have extended capabilities interpreted as key
+       definitions.  These are loaded after the  predefined  keys,  and  if  a
+       capability's  value  is the same as a previously-loaded key definition,
+       the later definition is the one used.
 
 
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG>,  <STRONG>nodelay</STRONG>,
-       <STRONG>notimeout</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, and <STRONG>wtimeout</STRONG> may be macros.
-
-       The  <STRONG>noraw</STRONG>  and  <STRONG>nocbreak</STRONG> calls follow historical practice in that they
-       attempt to restore to normal ("cooked") mode from raw and cbreak  modes
-       respectively.   Mixing raw/noraw and cbreak/nocbreak calls leads to tty
-       driver control states that are hard to predict or understand; it is not
-       recommended.
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       Formerly, <EM>ncurses</EM> used  <STRONG>nl</STRONG>  and  <STRONG>nonl</STRONG>  to  control  the  conversion  of
+       newlines  to  carriage  return/line  feed  on  output as well as input.
+       X/Open Curses documents the use of  these  functions  only  for  input.
+       This  difference arose from converting the <EM>pcurses</EM> source (1986), which
+       used <STRONG>ioctl(2)</STRONG> calls and the <EM>sgttyb</EM> structure,  to  <EM>termios</EM>  (the  POSIX
+       terminal  API).   In  the former, both input and output were controlled
+       via a single option <STRONG>CRMOD</STRONG>, while the latter separates  these  features.
+       Because  that  conversion  interferes with output optimization, <EM>ncurses</EM>
+       6.2 (2020) amended <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> to eliminate their effect on output.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,   <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>,  <STRONG>de-</STRONG>
-       <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG>, <STRONG>termios(3)</STRONG>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,    <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>,     <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,     <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>,
+       <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG>termios(3)</STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
+ncurses 6.5                       2024-04-13                   <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-cbreak_nocbreak">cbreak/nocbreak</a></li>
-<li><a href="#h3-echo_noecho">echo/noecho</a></li>
+<li><a href="#h3-cbreak_nocbreak">cbreaknocbreak</a></li>
+<li><a href="#h3-echo_noecho">echonoecho</a></li>
 <li><a href="#h3-halfdelay">halfdelay</a></li>
 <li><a href="#h3-intrflush">intrflush</a></li>
 <li><a href="#h3-keypad">keypad</a></li>
 <li><a href="#h3-meta">meta</a></li>
-<li><a href="#h3-nl_nonl">nl/nonl</a></li>
+<li><a href="#h3-nl_nonl">nlnonl</a></li>
 <li><a href="#h3-nodelay">nodelay</a></li>
 <li><a href="#h3-notimeout">notimeout</a></li>
-<li><a href="#h3-raw_noraw">raw/noraw</a></li>
-<li><a href="#h3-qiflush_noqiflush">qiflush/noqiflush</a></li>
-<li><a href="#h3-timeout_wtimeout">timeout/wtimeout</a></li>
+<li><a href="#h3-raw_noraw">rawnoraw</a></li>
+<li><a href="#h3-qiflush_nqiflush">qiflush, nqiflush</a></li>
+<li><a href="#h3-timeout_wtimeout">timeoutwtimeout</a></li>
 <li><a href="#h3-typeahead">typeahead</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 883121e82179ec5b6d71343f6dad63d6bfa7f168..7c25b2ed7e9d8c9060174186ac62e5207ad31c63 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_ins_wch.3x,v 1.13 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_ins_wch.3x,v 1.30 2024/04/20 19:18:18 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_ins_wch 3x</TITLE>
+<TITLE>curs_ins_wch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_ins_wch 3x</H1>
+<H1 class="no-header">curs_ins_wch 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>                                              <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
+<STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>ins_wch</STRONG>,  <STRONG>mvins_wch</STRONG>,  <STRONG>mvwins_wch</STRONG>, <STRONG>wins_wch</STRONG> - insert a complex character
-       and rendition into a window
+       <STRONG>ins_wch</STRONG>,  <STRONG>mvins_wch</STRONG>,  <STRONG>mvwins_wch</STRONG>,  <STRONG>wins_wch</STRONG>  -  insert a <EM>curses</EM> complex
+       character in a window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       #include &lt;curses.h&gt;
+       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>ins_wch(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wins_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
-
        <STRONG>int</STRONG> <STRONG>mvins_wch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwins_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These routines, insert the complex character <EM>wch</EM> with rendition  before
-       the  character  under  the  cursor.  All characters to the right of the
-       cursor are moved one space to the right, with the  possibility  of  the
-       rightmost  character  on  the line being lost.  The insertion operation
-       does not change the cursor position.
+       These functions insert the <EM>curses</EM> complex character <EM>wch</EM> at  the  cursor
+       in  the  specified window <EM>win</EM> (or <STRONG>stdscr</STRONG>).  The character previously at
+       the cursor and any to its  right  move  one  cell  to  the  right;  the
+       rightmost  character  on  the  line  is discarded.  The cursor does not
+       advance.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       If successful, these functions return <STRONG>OK</STRONG>.  If not, they return <STRONG>ERR</STRONG>.
+       These functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure.
+
+       Functions taking a <EM>WINDOW</EM> pointer argument fail if the pointer is <STRONG>NULL</STRONG>.
+
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       A  terminal's  <STRONG>insert_character</STRONG>  (<STRONG>ich1</STRONG>)  capability  is not necessarily
+       employed.
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       <STRONG>ins_wch</STRONG>, <STRONG>mvins_wch</STRONG>, and <STRONG>mvwins_wch</STRONG> may be implemented as macros.
 
 
-</PRE><H2><a name="h2-ERRORS">ERRORS</a></H2><PRE>
-       No errors are defined.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       X/Open Curses, Issue 4 describes these functions.
+
+       SVr4 describes successful return values only as "an integer value other
+       than <STRONG>ERR</STRONG>".
+
+
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       SVr4  (1989)  implemented  these  functions  under  the  names  <STRONG>inswch</STRONG>,
+       <STRONG>winswch</STRONG>, <STRONG>mvinswch</STRONG>, and <STRONG>mvwinswch</STRONG>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> describes comparable functions in the non-wide-character
+       <EM>curses</EM> configuration.
+
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
-                                                              <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                  <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-ERRORS">ERRORS</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index fa4289381f561612e91864f696717fccdf674c1f..f2982eaa14ab777553abd1ad34c0aeeb9b3d31ba 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_ins_wstr.3x,v 1.14 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_ins_wstr.3x,v 1.38 2024/04/20 21:23:08 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_ins_wstr 3x</TITLE>
+<TITLE>curs_ins_wstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_ins_wstr 3x</H1>
+<H1 class="no-header">curs_ins_wstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>                                            <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>ins_wstr</STRONG>, <STRONG>ins_nwstr</STRONG>, <STRONG>wins_wstr</STRONG>, <STRONG>wins_nwstr</STRONG>, <STRONG>mvins_wstr</STRONG>, <STRONG>mvins_nwstr</STRONG>,
-       <STRONG>mvwins_wstr</STRONG>, <STRONG>mvwins_nwstr</STRONG> - insert a wide-character string into a
-       curses window
+       <STRONG>ins_wstr</STRONG>,  <STRONG>ins_nwstr</STRONG>,  <STRONG>wins_wstr</STRONG>,  <STRONG>wins_nwstr</STRONG>, <STRONG>mvins_wstr</STRONG>, <STRONG>mvins_nwstr</STRONG>,
+       <STRONG>mvwins_wstr</STRONG>, <STRONG>mvwins_nwstr</STRONG> - insert a wide-character string in a  <EM>curses</EM>
+       window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>ins_wstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr);</EM>
+       <STRONG>int</STRONG> <STRONG>ins_wstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>ins_nwstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wins_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wins_nwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These routines insert a <STRONG>wchar_t</STRONG> character string (as many characters as
-       will fit on the line) before the character under the cursor.  All char-
-       acters to the right of the cursor are shifted right, with the possibil-
-       ity of the rightmost characters on the line being lost.  No wrapping is
-       performed.   The cursor position does not change (after moving to <EM>y</EM>, <EM>x</EM>,
-       if specified).  The four routines with <EM>n</EM> as the last argument insert  a
-       leading  substring  of at most <EM>n</EM> <STRONG>wchar_t</STRONG> characters.  If <EM>n</EM> is less than
-       1, the entire string is inserted.
-
-       If a character in <EM>wstr</EM> is a tab, newline, carriage return or backspace,
-       the  cursor  is  moved appropriately within the window.  A newline also
-       does a <STRONG>clrtoeol</STRONG> before moving.  Tabs are  considered  to  be  at  every
-       eighth column.  If a character in <EM>wstr</EM> is another control character, it
-       is drawn in the <STRONG>^</STRONG><EM>X</EM> notation.  Calling <STRONG>win_wch</STRONG> after  adding  a  control
-       character  (and moving to it, if necessary) does not return the control
-       character, but instead returns a character in the  ^-representation  of
-       the control character.
+       will fit on the line) before the character  under  the  cursor,  as  if
+       calling  <STRONG><A HREF="curs_ins_wch.3x.html">wins_wch(3x)</A></STRONG>.   All  characters to the right of the cursor are
+       shifted right, with the possibility of the rightmost characters on  the
+       line being lost.  No wrapping is performed.
 
+       The  cursor  position  does  not  change  (after  moving  to  <EM>y</EM>,  <EM>x</EM>, if
+       specified).
 
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that all but wins_nwstr may be macros.
+       The functions with <EM>n</EM> as the last argument insert a leading substring of
+       at  most  <EM>n</EM>  <STRONG>wchar_t</STRONG>  characters.   If  <EM>n</EM> is less than zero, the entire
+       string is inserted (stopping on a L'\0' character).
 
-       If  the  first character in the string is a nonspacing character, these
-       functions will fail.  XSI does not define what will happen  if  a  non-
-       spacing character follows a control character.
+       Special characters are handled as in <STRONG><A HREF="curs_add_wch.3x.html">wadd_wch(3x)</A></STRONG>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       Upon successful completion, these functions return <STRONG>OK</STRONG>.  Otherwise, they
-       return <STRONG>ERR</STRONG>.
+       All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
+
+       X/Open  Curses  does  not   specify   any   error   conditions.    This
+       implementation returns an error
+
+       <STRONG>o</STRONG>   if the <EM>win</EM> parameter is null or
+
+       <STRONG>o</STRONG>   if the <EM>wstr</EM> parameter is null or
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       <STRONG>o</STRONG>   if the <STRONG>wins_wch</STRONG> function returns an error.
+
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       All but <STRONG>wins_nwstr</STRONG> may be macros.
+
+       If the first character in the string is a non-spacing character,  these
+       functions will fail.  X/Open Curses does not define what will happen if
+       a non-spacing character follows a control character.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These functions are described in X/Open Curses,  Issue  4,  which  adds
+       <EM>const</EM> qualifiers to the arguments.
+
+       X/Open  states  that the entire string is inserted if <EM>n</EM> is less than 1.
+       This is probably an  error,  because  it  is  inconsistent  with  other
+       functions, and differs from the X/Open implementation on Solaris.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>  describes  comparable functions of the <EM>ncurses</EM> library
+       in its non-wide-character configuration.
 
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
 
 
-                                                             <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
+
+ncurses 6.5                       2024-04-20                 <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 12edc6cd880ddf9cf9c15dd9c0ef4d03455d20b5..5f60c67c0fdea7a912b5237dcd5c4bb2158d2901 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_insch.3x,v 1.22 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_insch.3x,v 1.40 2024/04/20 19:03:47 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_insch 3x</TITLE>
+<TITLE>curs_insch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_insch 3x</H1>
+<H1 class="no-header">curs_insch 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
+<STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>insch</STRONG>,  <STRONG>winsch</STRONG>, <STRONG>mvinsch</STRONG>, <STRONG>mvwinsch</STRONG> - insert a character before cursor in
-       a <STRONG>curses</STRONG> window
+       <STRONG>insch</STRONG>,  <STRONG>winsch</STRONG>,  <STRONG>mvinsch</STRONG>,  <STRONG>mvwinsch</STRONG>  -  insert  a <EM>curses</EM> character in a
+       window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
        <STRONG>int</STRONG> <STRONG>insch(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>winsch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
-
        <STRONG>int</STRONG> <STRONG>mvinsch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwinsch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These routines insert the character <EM>ch</EM> before the character  under  the
-       cursor.   All characters to the right of the cursor are moved one space
-       to the right, with the possibility of the rightmost  character  on  the
-       line  being  lost.   The insertion operation does not change the cursor
-       position.
+       These functions insert the <EM>curses</EM> character <EM>ch</EM> at  the  cursor  in  the
+       specified  window  <EM>win</EM>  (or  <STRONG>stdscr</STRONG>).   The character previously at the
+       cursor and any to its right move one cell to the right;  the  rightmost
+       character on the line is discarded.  The cursor does not advance.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure  and  <STRONG>OK</STRONG>
-       (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful
-       completion,  unless  otherwise   noted   in   the   preceding   routine
-       descriptions.
+       These functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure.
+
+       Functions taking a <EM>WINDOW</EM> pointer argument fail if the pointer is <STRONG>NULL</STRONG>.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       These  routines  do  not  necessarily  imply  use  of a hardware insert
-       character feature.
+       <STRONG>insch</STRONG>, <STRONG>mvinsch</STRONG>, and <STRONG>mvwinsch</STRONG> may be implemented as macros.
 
-       Note that <STRONG>insch</STRONG>, <STRONG>mvinsch</STRONG>, and <STRONG>mvwinsch</STRONG> may be macros.
+       A terminal's <STRONG>insert_character</STRONG>  (<STRONG>ich1</STRONG>)  capability  is  not  necessarily
+       employed.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.
+       X/Open Curses, Issue 4 describes these functions.
+
+       SVr4  <EM>curses</EM>  describes  a  successful return value only as "an integer
+       value other than <STRONG>ERR</STRONG>".
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> describes comparable functions in  the  wide-character
+       <EM>curses</EM> configuration.
 
-       Comparable functions  in  the  wide-character  (ncursesw)  library  are
-       described in <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
-                                                                <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 2692a549361b639c0904495a6e9fe80733f05a1e..04e0239925e291a8d70a1441c1cb30d4b20f8f7b 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_insstr.3x,v 1.29 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_insstr.3x,v 1.51 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_insstr 3x</TITLE>
+<TITLE>curs_insstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_insstr 3x</H1>
+<H1 class="no-header">curs_insstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>                                                <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>insstr</STRONG>,  <STRONG>insnstr</STRONG>,  <STRONG>winsstr</STRONG>,  <STRONG>winsnstr</STRONG>,  <STRONG>mvinsstr</STRONG>, <STRONG>mvinsnstr</STRONG>, <STRONG>mvwinsstr</STRONG>,
-       <STRONG>mvwinsnstr</STRONG> - insert string before cursor in a <STRONG>curses</STRONG> window
+       <STRONG>mvwinsnstr</STRONG> - insert a string in a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These routines insert a character string (as many  characters  as  will
-       fit on the line) before the character under the cursor.  All characters
-       to the right of the cursor are shifted right with  the  possibility  of
-       the  rightmost  characters on the line being lost.  The cursor position
-       does not change (after moving to <EM>y</EM>, <EM>x</EM>, if  specified).   The  functions
-       with  <EM>n</EM>  as  the  last argument insert a leading substring of at most <EM>n</EM>
-       characters.  If <EM>n</EM>&lt;=0, then the entire string is inserted.
+       fit  on  the line) before the character under the cursor, as if calling
+       <STRONG><A HREF="curs_insch.3x.html">winsch(3x)</A></STRONG>.  All characters to the right  of  the  cursor  are  shifted
+       right,  with  the  possibility  of the rightmost characters on the line
+       being lost.  No wrapping is performed.
 
-       Special characters are handled as in <STRONG>addch</STRONG>.
+       The cursor  position  does  not  change  (after  moving  to  <EM>y</EM>,  <EM>x</EM>,  if
+       specified).
+
+       The functions with <EM>n</EM> as the last argument insert a leading substring of
+       at most <EM>n</EM> characters.  If <EM>n</EM> is less than zero,  the  entire  string  is
+       inserted (stopping on a NUL character).
+
+       Special characters are handled as in <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure  and  <STRONG>OK</STRONG>
-       (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful
-       completion,  unless  otherwise   noted   in   the   preceding   routine
-       descriptions.
+       All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
+
+       X/Open   Curses   does   not   specify   any  error  conditions.   This
+       implementation returns an error
 
-       X/Open  defines  no  error  conditions.  In this implementation, if the
-       window parameter is null or the str parameter  is  null,  an  error  is
-       returned.
+       <STRONG>o</STRONG>   if the <EM>win</EM> parameter is null or
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       <STRONG>o</STRONG>   if the <EM>str</EM> parameter is null or
+
+       <STRONG>o</STRONG>   the <STRONG><A HREF="curs_insch.3x.html">winsch(3x)</A></STRONG> function returns an error.
+
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that all but <STRONG>winsnstr</STRONG> may be macros.
+       All but <STRONG>winsnstr</STRONG> may be macros.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  functions  are  described  in  the XSI Curses standard, Issue 4,
-       which adds const qualifiers to the arguments.
+       These  functions  are  described  in X/Open Curses, Issue 4, which adds
+       <EM>const</EM> qualifiers to the arguments.
 
        The Single Unix  Specification,  Version  2  states  that  <STRONG>insnstr</STRONG>  and
        <STRONG>winsnstr</STRONG>  perform  wrapping.  This is probably an error, since it makes
        this group of  functions  inconsistent.   Also,  no  implementation  of
        curses documents this inconsistency.
 
+       X/Open  states  that the entire string is inserted if <EM>n</EM> is less than 1.
+       This is probably an  error,  because  it  is  inconsistent  with  other
+       functions,  and  differs  from  the  SVr4 and X/Open implementations on
+       Solaris.
+
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>, <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 28be2ba924e60b5b8f634d2c7c9c87debe642eac..50d0f20e2d9b928c19a09576bc950c17d2bfe4f2 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_instr.3x,v 1.25 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_instr.3x,v 1.51 2024/04/20 21:24:19 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_instr 3x</TITLE>
+<TITLE>curs_instr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_instr 3x</H1>
+<H1 class="no-header">curs_instr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
+<STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>instr</STRONG>,  <STRONG>innstr</STRONG>, <STRONG>winstr</STRONG>, <STRONG>winnstr</STRONG>, <STRONG>mvinstr</STRONG>, <STRONG>mvinnstr</STRONG>, <STRONG>mvwinstr</STRONG>, <STRONG>mvwinnstr</STRONG>
-       - get a string of characters from a <STRONG>curses</STRONG> window
+       - get a string from a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These routines return a string of characters in <EM>str</EM>, extracted starting
-       at  the  current  cursor  position in the named window.  Attributes are
-       stripped from the characters.  The four functions with <EM>n</EM>  as  the  last
-       argument   return  a  leading  substring  at  most  <EM>n</EM>  characters  long
-       (exclusive of the trailing NUL).
+       These routines return a string of characters in <EM>str</EM>,  starting  at  the
+       current  cursor  position in the named window.  Attributes are stripped
+       from the characters.
+
+       The four functions with  <EM>n</EM>  as  the  last  argument  return  a  leading
+       substring  at  most  <EM>n</EM> characters long (exclusive of the trailing NUL).
+       Transfer stops at the end of the current line,  or  when  <EM>n</EM>  characters
+       have been stored at the location referenced by <EM>str</EM>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All of the  functions  return  <STRONG>ERR</STRONG>  upon  failure,  or  the  number  of
+       All  of  the  functions  return  <STRONG>ERR</STRONG>  upon  failure,  or  the number of
        characters actually read into the string.
 
-       X/Open Curses defines no error conditions.  In this implementation:
+       X/Open Curses defines no error conditions.  This implementation returns
+       an error
 
-       <STRONG>o</STRONG>   If the <EM>win</EM> parameter is null, an error is returned,
+       <STRONG>o</STRONG>   if the <EM>win</EM> parameter is null or
 
-       <STRONG>o</STRONG>   If the <EM>chstr</EM> parameter is null, an error is returned,
+       <STRONG>o</STRONG>   if the <EM>chstr</EM> parameter is null.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that all routines except <STRONG>winnstr</STRONG> may be macros.
+       All routines except <STRONG>winnstr</STRONG> may be macros.
+
+       Reading a line that overflows the array pointed to by <EM>str</EM>  with  <STRONG>instr</STRONG>,
+       <STRONG>mvinstr</STRONG>,  <STRONG>mvwinstr</STRONG>  or <STRONG>winstr</STRONG> causes undefined results.  Therefore, the
+       use of <STRONG>innstr</STRONG>, <STRONG>mvinnstr</STRONG>, <STRONG>mvwinnstr</STRONG>, or <STRONG>winnstr</STRONG> is recommended.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       SVr4  does not document whether a length limit includes or excludes the
+       SVr4 does not document whether a length limit includes or excludes  the
        trailing NUL.
 
-       The ncurses library extends the XSI description by allowing a  negative
-       value  for  <EM>n</EM>.  In this case, the functions return the string ending at
-       the right margin.
+       The <EM>ncurses</EM> library extends the X/Open Curses description by allowing a
+       negative value for <EM>n</EM>.  In this case, the functions  return  the  string
+       ending at the right margin.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> describes comparable functions of the <EM>ncurses</EM> library
+       in its wide-character configuration (<EM>ncursesw</EM>).
+
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>, <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
 
 
 
-                                                                <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 0d8c3c1e71dbcddafea11f0909c9a5f35b924355..6c79b595fbeb57b9e34e8c3ada1b01c476fafa23 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inwstr.3x,v 1.17 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_inwstr.3x,v 1.41 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_inwstr 3x</TITLE>
+<TITLE>curs_inwstr 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_inwstr 3x</H1>
+<H1 class="no-header">curs_inwstr 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>                                                <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+<STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>inwstr</STRONG>,  <STRONG>innwstr</STRONG>,  <STRONG>winwstr</STRONG>,  <STRONG>winnwstr</STRONG>,  <STRONG>mvinwstr</STRONG>, <STRONG>mvinnwstr</STRONG>, <STRONG>mvwinwstr</STRONG>,
-       <STRONG>mvwinnwstr</STRONG> - get a string of <STRONG>wchar_t</STRONG> characters from a curses window
+       <STRONG>mvwinnwstr</STRONG> - get a wide-character string from a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -67,7 +67,7 @@
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These routines return a string of  <STRONG>wchar_t</STRONG>  wide  characters  in  <EM>wstr</EM>,
-       extracted starting at the current cursor position in the named window.
+       starting at the current cursor position in the named window.
 
        The  four  functions  with  <EM>n</EM>  as  the  last  argument return a leading
        substring at most <EM>n</EM> characters long (exclusive of  the  trailing  NUL).
        character, an error is generated.
 
 
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All  routines return <STRONG>ERR</STRONG> upon failure.  Upon successful completion, the
+       *<STRONG>inwstr</STRONG> routines return <STRONG>OK</STRONG>, and the *<STRONG>innwstr</STRONG> routines return the number
+       of characters read into the string.
+
+       X/Open  defines  no  error  conditions.  This implementation returns an
+       error
+
+       <STRONG>o</STRONG>   if the <EM>win</EM> parameter is null or
+
+       <STRONG>o</STRONG>   if the <EM>wstr</EM> parameter is null, or
+
+       <STRONG>o</STRONG>   if no characters could be read.
+
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        All routines except <STRONG>winnwstr</STRONG> may be macros.
 
-       Each  cell  in  the  window  holds a complex character (i.e., base- and
-       combining-characters)  together  with  attributes  and  color.    These
-       functions  store  only  the  wide  characters,  ignoring attributes and
-       color.  Use <STRONG>in_wchstr</STRONG> to return the complex characters from a window.
+       Each  cell in the window holds a complex character (a spacing character
+       and zero or more non-spacing characters) together with  attributes  and
+       color.   These  functions  store  only  the  wide  characters, ignoring
+       attributes and color.  Use <STRONG>in_wchstr</STRONG> to return the  complex  characters
+       from a window.
 
+       Reading a line that overflows the array pointed to by <EM>wstr</EM> with <STRONG>inwstr</STRONG>,
+       <STRONG>mvinwstr</STRONG>, <STRONG>mvwinwstr</STRONG> or <STRONG>winwstr</STRONG> causes  undefined  results.   Therefore,
+       the use of <STRONG>innwstr</STRONG>, <STRONG>mvinnwstr</STRONG>, <STRONG>mvwinnwstr</STRONG>, or <STRONG>winnwstr</STRONG> is recommended.
 
-</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All routines return <STRONG>ERR</STRONG> upon failure.  Upon successful completion,  the
-       *<STRONG>inwstr</STRONG> routines return <STRONG>OK</STRONG>, and the *<STRONG>innwstr</STRONG> routines return the number
-       of characters read into the string.
 
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These functions are described in X/Open Curses, Issue 4.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,     <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>,     <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>,    <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index da6792c6b256e5b05fce76f3983898499c6572c8..90042caf9d2ec17687621377749a3a8ab0381e4d 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_kernel.3x,v 1.32 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_kernel.3x,v 1.61 2024/04/20 21:24:19 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_kernel 3x</TITLE>
+<TITLE>curs_kernel 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_kernel 3x</H1>
+<H1 class="no-header">curs_kernel 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>                                                <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
+<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>def_prog_mode</STRONG>, <STRONG>def_shell_mode</STRONG>, <STRONG>reset_prog_mode</STRONG>, <STRONG>reset_shell_mode</STRONG>,
-       <STRONG>resetty</STRONG>, <STRONG>savetty</STRONG>, <STRONG>getsyx</STRONG>, <STRONG>setsyx</STRONG>, <STRONG>ripoffline</STRONG>, <STRONG>curs_set</STRONG>, <STRONG>napms</STRONG> - low-
-       level <STRONG>curses</STRONG> routines
+       <STRONG>def_prog_mode</STRONG>,   <STRONG>def_shell_mode</STRONG>,   <STRONG>reset_prog_mode</STRONG>,   <STRONG>reset_shell_mode</STRONG>,
+       <STRONG>resetty</STRONG>, <STRONG>savetty</STRONG>, <STRONG>getsyx</STRONG>, <STRONG>setsyx</STRONG>, <STRONG>ripoffline</STRONG>, <STRONG>curs_set</STRONG>,  <STRONG>napms</STRONG>  -  low-
+       level <EM>curses</EM> routines
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The following routines give low-level access to various <STRONG>curses</STRONG> capabil-
-       ities.  These routines typically are used inside library routines.
+       The   following  routines  give  low-level  access  to  various  <STRONG>curses</STRONG>
+       capabilities.   These  routines  typically  are  used  inside   library
+       routines.
 
 
-</PRE><H3><a name="h3-def_prog_mode_-def_shell_mode">def_prog_mode, def_shell_mode</a></H3><PRE>
+</PRE><H3><a name="h3-def_prog_mode_def_shell_mode">def_prog_mode, def_shell_mode</a></H3><PRE>
        The <STRONG>def_prog_mode</STRONG> and <STRONG>def_shell_mode</STRONG> routines save the current terminal
        modes as the "program" (in <STRONG>curses</STRONG>) or "shell" (not in <STRONG>curses</STRONG>) state for
        use by the <STRONG>reset_prog_mode</STRONG> and <STRONG>reset_shell_mode</STRONG> routines.  This is done
-       automatically  by <STRONG>initscr</STRONG>.  There is one such save area for each screen
+       automatically by <STRONG>initscr</STRONG>.  There is one such save area for each  screen
        context allocated by <STRONG>newterm</STRONG>.
 
 
-</PRE><H3><a name="h3-reset_prog_mode_-reset_shell_mode">reset_prog_mode, reset_shell_mode</a></H3><PRE>
-       The <STRONG>reset_prog_mode</STRONG> and <STRONG>reset_shell_mode</STRONG> routines restore the  terminal
-       to  "program"  (in <STRONG>curses</STRONG>) or "shell" (out of <STRONG>curses</STRONG>) state.  These are
-       done automatically by <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> and, after an <STRONG>endwin</STRONG>, by <STRONG>doupdate</STRONG>,  so
+</PRE><H3><a name="h3-reset_prog_mode_reset_shell_mode">reset_prog_mode, reset_shell_mode</a></H3><PRE>
+       The  <STRONG>reset_prog_mode</STRONG> and <STRONG>reset_shell_mode</STRONG> routines restore the terminal
+       to "program" (in <STRONG>curses</STRONG>) or "shell" (out of <STRONG>curses</STRONG>) state.   These  are
+       done  automatically by <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> and, after an <STRONG>endwin</STRONG>, by <STRONG>doupdate</STRONG>, so
        they normally are not called.
 
 
-</PRE><H3><a name="h3-resetty_-savetty">resetty, savetty</a></H3><PRE>
-       The <STRONG>resetty</STRONG> and <STRONG>savetty</STRONG> routines save and restore the state of the ter-
-       minal modes.  <STRONG>savetty</STRONG> saves the current state in a buffer  and  <STRONG>resetty</STRONG>
-       restores the state to what it was at the last call to <STRONG>savetty</STRONG>.
+</PRE><H3><a name="h3-resetty_savetty">resetty, savetty</a></H3><PRE>
+       The <STRONG>resetty</STRONG> and <STRONG>savetty</STRONG> routines save and  restore  the  state  of  the
+       terminal  modes.   <STRONG>savetty</STRONG>  saves  the  current  state  in a buffer and
+       <STRONG>resetty</STRONG> restores the state to what it was at the last call to <STRONG>savetty</STRONG>.
 
 
 </PRE><H3><a name="h3-getsyx">getsyx</a></H3><PRE>
-       The  <STRONG>getsyx</STRONG>  routine  returns  the  current  coordinates of the <EM>virtual</EM>
-       <EM>screen</EM> cursor in <EM>y</EM> and <EM>x</EM>.  If <STRONG>leaveok</STRONG> is currently <STRONG>TRUE</STRONG>, then <STRONG>-1</STRONG>,<STRONG>-1</STRONG>  is
+       The <STRONG>getsyx</STRONG> routine returns  the  current  coordinates  of  the  <EM>virtual</EM>
+       <EM>screen</EM>  cursor in <EM>y</EM> and <EM>x</EM>.  If <STRONG>leaveok</STRONG> is currently <STRONG>TRUE</STRONG>, then <STRONG>-1</STRONG>,<STRONG>-1</STRONG> is
        returned.  If lines have been removed from the top of the screen, using
-       <STRONG>ripoffline</STRONG>, <EM>y</EM> and <EM>x</EM> include these lines; therefore, <EM>y</EM> and <EM>x</EM>  should  be
+       <STRONG>ripoffline</STRONG>,  <EM>y</EM>  and <EM>x</EM> include these lines; therefore, <EM>y</EM> and <EM>x</EM> should be
        used only as arguments for <STRONG>setsyx</STRONG>.
 
        Few applications will use this feature, most use <STRONG>getyx</STRONG> instead.
 
 
 </PRE><H3><a name="h3-setsyx">setsyx</a></H3><PRE>
-       The  <STRONG>setsyx</STRONG> routine sets the <EM>virtual</EM> <EM>screen</EM> cursor to <EM>y</EM>, <EM>x</EM>.  If <EM>y</EM> and <EM>x</EM>
-       are both <STRONG>-1</STRONG>, then <STRONG>leaveok</STRONG> is set.  The two routines <STRONG>getsyx</STRONG>  and  <STRONG>setsyx</STRONG>
-       are  designed to be used by a library routine, which manipulates <STRONG>curses</STRONG>
-       windows but does not want to change the current position  of  the  pro-
-       gram's cursor.  The library routine would call <STRONG>getsyx</STRONG> at the beginning,
-       do its manipulation of its own windows, do a <STRONG>wnoutrefresh</STRONG> on  its  win-
-       dows, call <STRONG>setsyx</STRONG>, and then call <STRONG>doupdate</STRONG>.
+       The <STRONG>setsyx</STRONG> routine sets the <EM>virtual</EM> <EM>screen</EM> cursor to <EM>y</EM>, <EM>x</EM>.  If <EM>y</EM> and  <EM>x</EM>
+       are  both  <STRONG>-1</STRONG>, then <STRONG>leaveok</STRONG> is set.  The two routines <STRONG>getsyx</STRONG> and <STRONG>setsyx</STRONG>
+       are designed to be used by a library routine, which manipulates  <STRONG>curses</STRONG>
+       windows  but  does  not  want  to  change  the  current position of the
+       program's cursor.   The  library  routine  would  call  <STRONG>getsyx</STRONG>  at  the
+       beginning, do its manipulation of its own windows, do a <STRONG>wnoutrefresh</STRONG> on
+       its windows, call <STRONG>setsyx</STRONG>, and then call <STRONG>doupdate</STRONG>.
 
        Few applications will use this feature, most use <STRONG>wmove</STRONG> instead.
 
 
 </PRE><H3><a name="h3-ripoffline">ripoffline</a></H3><PRE>
-       The  <STRONG>ripoffline</STRONG>  routine  provides  access  to  the  same facility that
-       <STRONG>slk_init</STRONG> [see <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>] uses to reduce  the  size  of  the  screen.
-       <STRONG>ripoffline</STRONG>  must be called before <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> is called, to pre-
-       pare these initial actions:
+       <STRONG>ripoffline</STRONG> provides access to the same facility that <STRONG><A HREF="curs_slk.3x.html">slk_init(3x)</A></STRONG>  uses
+       to  reduce  the  size  of the screen.  <STRONG>ripoffline</STRONG> must be called before
+       <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> is called, to prepare these initial actions:
 
        <STRONG>o</STRONG>   If <EM>line</EM> is positive, a line is removed from the top of <STRONG>stdscr</STRONG>.
 
        <STRONG>o</STRONG>   an integer with the number of columns in the window.
 
        Inside  this  initialization  routine,  the integer variables <STRONG>LINES</STRONG> and
-       <STRONG>COLS</STRONG> (defined in <STRONG>&lt;curses.h&gt;</STRONG>) are not guaranteed to be accurate and <STRONG>wre-</STRONG>
-       <STRONG>fresh</STRONG> or <STRONG>doupdate</STRONG> must not be called.  It is allowable to call <STRONG>wnoutre-</STRONG>
-       <STRONG>fresh</STRONG> during the initialization routine.
+       <STRONG>COLS</STRONG> (defined in <STRONG>&lt;curses.h&gt;</STRONG>) are not  guaranteed  to  be  accurate  and
+       <STRONG>wrefresh</STRONG>  or  <STRONG>doupdate</STRONG>  must  not  be  called.  It is allowable to call
+       <STRONG>wnoutrefresh</STRONG> during the initialization routine.
 
        <STRONG>ripoffline</STRONG> can be called up to five times  before  calling  <STRONG>initscr</STRONG>  or
        <STRONG>newterm</STRONG>.
 
 
 </PRE><H3><a name="h3-napms">napms</a></H3><PRE>
-       The <STRONG>napms</STRONG> routine is used to sleep for <EM>ms</EM> milliseconds.
+       <STRONG>napms</STRONG> sleeps  for  <EM>ms</EM>  milliseconds.   If  <EM>ms</EM>  exceeds  30,000  (thirty
+       seconds), it is capped at that value.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Except for <STRONG>curs_set</STRONG>, these routines always return <STRONG>OK</STRONG>.
 
-       <STRONG>curs_set</STRONG> returns the previous cursor state, or  <STRONG>ERR</STRONG>  if  the  requested
+       <STRONG>curs_set</STRONG>  returns  the  previous  cursor state, or <STRONG>ERR</STRONG> if the requested
        <EM>visibility</EM> is not supported.
 
        X/Open defines no error conditions.  In this implementation
 
        <STRONG>ripoffline</STRONG>
             returns an error if the maximum number of ripped-off lines exceeds
-            the maximum (NRIPS = 5).
+            the maximum (5).
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>getsyx</STRONG> is a macro, so <STRONG>&amp;</STRONG> is not necessary before the variables
        <EM>y</EM> and <EM>x</EM>.
 
-       Older SVr4 man pages warn that the return value of  <STRONG>curs_set</STRONG>  "is  cur-
-       rently  incorrect".   This  implementation gets it right, but it may be
+       Older  SVr4  man  pages  warn  that  the  return  value of <STRONG>curs_set</STRONG> "is
+       currently incorrect".  This implementation gets it right, but it may be
        unwise to count on the correctness of the return value anywhere else.
 
-       Both ncurses and SVr4 will call <STRONG>curs_set</STRONG> in <STRONG>endwin</STRONG> if <STRONG>curs_set</STRONG> has been
-       called  to make the cursor other than normal, i.e., either invisible or
-       very visible.  There is no way for ncurses  to  determine  the  initial
+       Both <EM>ncurses</EM> and SVr4 will call <STRONG>curs_set</STRONG> in <STRONG>endwin</STRONG> if <STRONG>curs_set</STRONG> has been
+       called to make the cursor other than normal, i.e., either invisible  or
+       very  visible.   There  is  no way for <EM>ncurses</EM> to determine the initial
        cursor state to restore that.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The <EM>virtual</EM> <EM>screen</EM> functions <STRONG>setsyx</STRONG> and <STRONG>getsyx</STRONG> are not described in the
-       XSI Curses standard, Issue 4.  All other functions are as described  in
-       XSI Curses.
+       The <EM>virtual</EM> <EM>screen</EM> functions <STRONG>setsyx</STRONG> and <STRONG>getsyx</STRONG>  are  not  described  in
+       X/Open Curses, Issue 4.  All other functions are as described in X/Open
+       Curses.
 
-       The  SVr4  documentation  describes  <STRONG>setsyx</STRONG> and <STRONG>getsyx</STRONG> as having return
-       type int.  This is misleading, as they are macros  with  no  documented
+       The SVr4 documentation describes <STRONG>setsyx</STRONG> and  <STRONG>getsyx</STRONG>  as  having  return
+       type  int.   This  is misleading, as they are macros with no documented
        semantics for the return value.
 
+       If interrupted, <EM>ncurses</EM> restarts <STRONG>napms</STRONG>.  That, and the limitation to 30
+       seconds, are different from other implementations.
+
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,   <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>,   <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-def_prog_mode_-def_shell_mode">def_prog_mode, def_shell_mode</a></li>
-<li><a href="#h3-reset_prog_mode_-reset_shell_mode">reset_prog_mode, reset_shell_mode</a></li>
-<li><a href="#h3-resetty_-savetty">resetty, savetty</a></li>
+<li><a href="#h3-def_prog_mode_def_shell_mode">def_prog_mode, def_shell_mode</a></li>
+<li><a href="#h3-reset_prog_mode_reset_shell_mode">reset_prog_mode, reset_shell_mode</a></li>
+<li><a href="#h3-resetty_savetty">resetty, savetty</a></li>
 <li><a href="#h3-getsyx">getsyx</a></li>
 <li><a href="#h3-setsyx">setsyx</a></li>
 <li><a href="#h3-ripoffline">ripoffline</a></li>
index 5947cdede118b9a8ea15983ee764f3d76da3ef25..22f78dddbcf97374ff016b6b7a3d5d0122613444 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2020,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2007-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_legacy.3x,v 1.13 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_legacy.3x,v 1.32 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_legacy 3x</TITLE>
+<TITLE>curs_legacy 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_legacy 3x</H1>
+<H1 class="no-header">curs_legacy 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>                                                <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>
+<STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       curs_legacy - get <STRONG>curses</STRONG> cursor and window coordinates, attributes
+       <STRONG>getattrs</STRONG>,   <STRONG>getbegx</STRONG>,   <STRONG>getbegy</STRONG>,  <STRONG>getcurx</STRONG>,  <STRONG>getcury</STRONG>,  <STRONG>getmaxx</STRONG>,  <STRONG>getmaxy</STRONG>,
+       <STRONG>getparx</STRONG>,  <STRONG>getpary</STRONG>  -  get  <EM>curses</EM>  cursor  and  window  coordinates  or
+       attributes (legacy)
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -69,7 +71,7 @@
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These  legacy  functions  are  simpler  to  use  than the X/Open Curses
+       These  legacy  functions  are  simpler  to  use  than the X/Open <EM>curses</EM>
        functions:
 
        <STRONG>o</STRONG>   The <STRONG>getattrs</STRONG> function returns the same attribute data as <STRONG>wattr_get</STRONG>.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       All of these interfaces are provided  as  macros  and  functions.   The
-       macros   are   suppressed   (and  only  the  functions  provided)  when
-       <STRONG>NCURSES_OPAQUE</STRONG> is defined.  The standard forms such as  <STRONG>getyx</STRONG>  must  be
-       implemented  as  macros,  and  (in  this implementation) are defined in
-       terms of the functions described here, to avoid  reliance  on  internal
-       details of the WINDOW structure.
+       All of these interfaces are implemented as macros and  functions.   The
+       macros  are suppressed (and only the functions provided) in an "opaque"
+       <EM>ncurses</EM> build, which defines the  preprocessor  symbol  <STRONG>NCURSES_OPAQUE</STRONG>.
+       See section "ALTERNATE CONFIGURATIONS" in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
+
+       The standard forms such as <STRONG>getyx</STRONG> <EM>must</EM> be implemented as macros, and (in
+       this implementation) are defined in terms of  the  functions  described
+       here, to avoid reliance on internal details of the <EM>WINDOW</EM> structure.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
 
 
 
-                                                               <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                   <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 7ac7342bf57a8e4ccd15964dcfc96f80ac9b55cd..085e3aba91d81141e00428fc354507b3344ded9a 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2008-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_memleaks.3x,v 1.15 2022/06/04 23:33:48 tom Exp @
+  * @Id: curs_memleaks.3x,v 1.35 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_memleaks 3x</TITLE>
+<TITLE>curs_memleaks 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_memleaks 3x</H1>
+<H1 class="no-header">curs_memleaks 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>                                            <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>
+<STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>exit_curses</STRONG>, <STRONG>exit_terminfo</STRONG> - <STRONG>curses</STRONG> memory-leak checking
+       <STRONG>exit_curses</STRONG>, <STRONG>exit_terminfo</STRONG> - check for memory leaks in <EM>curses</EM>
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -57,7 +57,7 @@
        <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
        <STRONG>void</STRONG> <STRONG>exit_terminfo(int</STRONG> <EM>code</EM><STRONG>);</STRONG>
 
-       /* deprecated (intentionally not declared in curses.h or term.h) */
+       <EM>/*</EM> <EM>deprecated</EM> <EM>(intentionally</EM> <EM>not</EM> <EM>declared</EM> <EM>in</EM> <EM>curses.h</EM> <EM>or</EM> <EM>term.h)</EM> <EM>*/</EM>
        <STRONG>void</STRONG> <STRONG>_nc_freeall(void);</STRONG>
        <STRONG>void</STRONG> <STRONG>_nc_free_and_exit(int</STRONG> <EM>code</EM><STRONG>);</STRONG>
        <STRONG>void</STRONG> <STRONG>_nc_free_tinfo(int</STRONG> <EM>code</EM><STRONG>);</STRONG>
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These  functions  are  used to simplify analysis of memory leaks in the
-       ncurses library.
+       <EM>ncurses</EM> library.
 
        Any implementation of curses must not free the memory associated with a
        screen, since (even after calling <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG>), it must be available for
        use in the next call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>.  There are also chunks  of  memory
-       held for performance reasons.  That makes it hard to analyze curses ap-
-       plications for memory leaks.  When using the specially  configured  de-
-       bugging version of the ncurses library, applications can call functions
-       which free those chunks of memory, simplifying the process  of  memory-
-       leak checking.
+       held  for  performance  reasons.   That makes it hard to analyze curses
+       applications for memory leaks.  When  using  the  specially  configured
+       debugging  version  of  the  <EM>ncurses</EM>  library,  applications  can  call
+       functions which free those chunks of memory, simplifying the process of
+       memory-leak checking.
 
        Some  of  the functions are named with a "_nc_" prefix because they are
        not intended for use in the non-debugging library:
 
        <STRONG>_nc_freeall</STRONG>
-            This frees (almost) all of the memory allocated by ncurses.
+            This frees (almost) all of the memory allocated by <EM>ncurses</EM>.
 
        <STRONG>_nc_free_and_exit</STRONG>
-            This frees the memory allocated by ncurses (like <STRONG>_nc_freeall</STRONG>), and
+            This frees the memory allocated by <EM>ncurses</EM> (like <STRONG>_nc_freeall</STRONG>), and
             exits the program.  It is preferred over <STRONG>_nc_freeall</STRONG> since some of
-            that memory may be required to keep the application running.  Sim-
-            ply exiting (with the given exit-code) is safer.
+            that memory may be  required  to  keep  the  application  running.
+            Simply exiting (with the given exit-code) is safer.
 
        <STRONG>_nc_free_tinfo</STRONG>
             Use  this  function  if only the low-level terminfo functions (and
@@ -94,9 +94,9 @@
             the program after freeing memory.
 
        The  functions  prefixed "_nc" are normally not available; they must be
-       configured into the library at build time using the <STRONG>--disable-leaks</STRONG> op-
-       tion.   That compiles-in code that frees memory that normally would not
-       be freed.
+       configured into the library at build  time  using  the  <STRONG>--disable-leaks</STRONG>
+       option.   That  compiles-in  code that frees memory that normally would
+       not be freed.
 
        The <STRONG>exit_curses</STRONG> and <STRONG>exit_terminfo</STRONG> functions call <STRONG>_nc_free_and_exit</STRONG>  and
        <STRONG>_nc_free_tinfo</STRONG>  if  the  library  is  configured to support memory-leak
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are not part of X/Open Curses; nor do other implementa-
-       tions of curses provide a similar feature.
+       These   functions   are  not  part  of  X/Open  Curses;  nor  do  other
+       implementations of curses provide a similar feature.
 
        In any implementation of X/Open Curses, an application can free part of
        the memory allocated by curses:
 
        <STRONG>o</STRONG>   The  portable  part  of  <STRONG>exit_curses</STRONG>  can be freed using <STRONG>delscreen</STRONG>,
-           passing the <STRONG>SCREEN*</STRONG> pointer returned by <STRONG>newterm</STRONG>.
+           passing the <EM>SCREEN</EM> pointer returned by <STRONG>newterm</STRONG>.
 
            In some implementations, there is a global variable <STRONG>sp</STRONG> which  could
            be used, e.g., if the screen were only initialized using <STRONG>initscr</STRONG>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>.  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
 
 
 
-                                                             <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                 <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 2228690d5dfc1b114e57402cc359ca2e88b080c8..cdb42f278832c476d6f929d5b0e31a50daf0e90c 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2022,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_mouse.3x,v 1.59 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_mouse.3x,v 1.98 2024/04/20 19:02:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_mouse 3x</TITLE>
+<TITLE>curs_mouse 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_mouse 3x</H1>
+<H1 class="no-header">curs_mouse 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
+<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>has_mouse</STRONG>, <STRONG>getmouse</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>wenclose</STRONG>, <STRONG>mouse_trafo</STRONG>,
-       <STRONG>wmouse_trafo</STRONG>, <STRONG>mouseinterval</STRONG> - mouse interface through curses
+       <STRONG>has_mouse</STRONG>,  <STRONG>getmouse</STRONG>,  <STRONG>ungetmouse</STRONG>,  <STRONG>mousemask</STRONG>,  <STRONG>wenclose</STRONG>,  <STRONG>mouse_trafo</STRONG>,
+       <STRONG>wmouse_trafo</STRONG>, <STRONG>mouseinterval</STRONG> - get mouse events in <EM>curses</EM>
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
        <STRONG>bool</STRONG> <STRONG>has_mouse(void);</STRONG>
 
+       <STRONG>mmask_t</STRONG> <STRONG>mousemask(mmask_t</STRONG> <EM>newmask</EM><STRONG>,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*</STRONG><EM>oldmask</EM><STRONG>);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>getmouse(MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>ungetmouse(MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
 
-       <STRONG>mmask_t</STRONG> <STRONG>mousemask(mmask_t</STRONG> <EM>newmask</EM><STRONG>,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*</STRONG><EM>oldmask</EM><STRONG>);</STRONG>
-
        <STRONG>bool</STRONG> <STRONG>wenclose(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
 
        <STRONG>bool</STRONG> <STRONG>mouse_trafo(int*</STRONG> <EM>pY</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pX</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>to</EM><STRONG>_</STRONG><EM>screen</EM><STRONG>);</STRONG>
        <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> input stream.
 
 
+</PRE><H3><a name="h3-has_mouse">has_mouse</a></H3><PRE>
+       The <STRONG>has_mouse</STRONG> function returns  <STRONG>TRUE</STRONG>  if  the  mouse  driver  has  been
+       successfully initialized, and <STRONG>FALSE</STRONG> otherwise.
+
+       Mouse  events  are  ignored  when input is in cooked mode, and cause an
+       error beep when cooked mode  is  being  simulated  in  a  window  by  a
+       function  such  as  <STRONG>getstr</STRONG>  that  expects  a  linefeed  for  input-loop
+       termination.
+
+
 </PRE><H3><a name="h3-mousemask">mousemask</a></H3><PRE>
        To make mouse events visible, use the <STRONG>mousemask</STRONG>  function.   This  sets
-       the  mouse  events to be reported.  By default, no mouse events are re-
-       ported.
+       the  mouse  events  to  be  reported.   By default, no mouse events are
+       reported.
 
        <STRONG>o</STRONG>   The function returns an updated copy of <EM>newmask</EM> to  indicate  which
            of the specified mouse events can be reported.
            If the screen has not been initialized, or if the terminal does not
            support mouse-events, this function returns 0.
 
-       <STRONG>o</STRONG>   If <EM>oldmask</EM> is non-NULL, this function fills the indicated  location
+       <STRONG>o</STRONG>   If <EM>oldmask</EM> is non-<STRONG>NULL</STRONG>, this function fills the indicated  location
            with the previous value of the current screen's mouse event mask.
 
-       As  a  side  effect,  setting  a  zero mousemask may turn off the mouse
+       As  a  side  effect,  setting  a zero mouse mask may turn off the mouse
        pointer; setting a nonzero mask may turn it on.  Whether  this  happens
        is device-dependent.
 
 
-</PRE><H3><a name="h3-Mouse-events">Mouse events</a></H3><PRE>
+</PRE><H3><a name="h3-Mouse-Events">Mouse Events</a></H3><PRE>
        Here are the mouse event type masks which may be defined:
 
        <STRONG>Name</STRONG>                     <STRONG>Description</STRONG>
-       ---------------------------------------------------------------------
-       BUTTON1_PRESSED          mouse button 1 down
-       BUTTON1_RELEASED         mouse button 1 up
-       BUTTON1_CLICKED          mouse button 1 clicked
-
-       BUTTON1_DOUBLE_CLICKED   mouse button 1 double clicked
-       BUTTON1_TRIPLE_CLICKED   mouse button 1 triple clicked
-       ---------------------------------------------------------------------
-       BUTTON2_PRESSED          mouse button 2 down
-       BUTTON2_RELEASED         mouse button 2 up
-       BUTTON2_CLICKED          mouse button 2 clicked
-       BUTTON2_DOUBLE_CLICKED   mouse button 2 double clicked
-       BUTTON2_TRIPLE_CLICKED   mouse button 2 triple clicked
-       ---------------------------------------------------------------------
-       BUTTON3_PRESSED          mouse button 3 down
-       BUTTON3_RELEASED         mouse button 3 up
-       BUTTON3_CLICKED          mouse button 3 clicked
-       BUTTON3_DOUBLE_CLICKED   mouse button 3 double clicked
-       BUTTON3_TRIPLE_CLICKED   mouse button 3 triple clicked
-       ---------------------------------------------------------------------
-       BUTTON4_PRESSED          mouse button 4 down
-       BUTTON4_RELEASED         mouse button 4 up
-       BUTTON4_CLICKED          mouse button 4 clicked
-       BUTTON4_DOUBLE_CLICKED   mouse button 4 double clicked
-       BUTTON4_TRIPLE_CLICKED   mouse button 4 triple clicked
-       ---------------------------------------------------------------------
-       BUTTON5_PRESSED          mouse button 5 down
-       BUTTON5_RELEASED         mouse button 5 up
-       BUTTON5_CLICKED          mouse button 5 clicked
-       BUTTON5_DOUBLE_CLICKED   mouse button 5 double clicked
-       BUTTON5_TRIPLE_CLICKED   mouse button 5 triple clicked
-       ---------------------------------------------------------------------
-       BUTTON_SHIFT             shift was down during button state change
-       BUTTON_CTRL              control was down during button state change
-       BUTTON_ALT               alt was down during button state change
-       ALL_MOUSE_EVENTS         report all button state changes
-       REPORT_MOUSE_POSITION    report mouse movement
-       ---------------------------------------------------------------------
+       ------------------------------------------------------------------------
+       <STRONG>BUTTON1_PRESSED</STRONG>          mouse button 1 down
+       <STRONG>BUTTON1_RELEASED</STRONG>         mouse button 1 up
+       <STRONG>BUTTON1_CLICKED</STRONG>          mouse button 1 clicked
+       <STRONG>BUTTON1_DOUBLE_CLICKED</STRONG>   mouse button 1 double clicked
+       <STRONG>BUTTON1_TRIPLE_CLICKED</STRONG>   mouse button 1 triple clicked
+       ------------------------------------------------------------------------
+       <STRONG>BUTTON2_PRESSED</STRONG>          mouse button 2 down
+       <STRONG>BUTTON2_RELEASED</STRONG>         mouse button 2 up
+       <STRONG>BUTTON2_CLICKED</STRONG>          mouse button 2 clicked
+       <STRONG>BUTTON2_DOUBLE_CLICKED</STRONG>   mouse button 2 double clicked
+       <STRONG>BUTTON2_TRIPLE_CLICKED</STRONG>   mouse button 2 triple clicked
+       ------------------------------------------------------------------------
+       <STRONG>BUTTON3_PRESSED</STRONG>          mouse button 3 down
+       <STRONG>BUTTON3_RELEASED</STRONG>         mouse button 3 up
+       <STRONG>BUTTON3_CLICKED</STRONG>          mouse button 3 clicked
+       <STRONG>BUTTON3_DOUBLE_CLICKED</STRONG>   mouse button 3 double clicked
+       <STRONG>BUTTON3_TRIPLE_CLICKED</STRONG>   mouse button 3 triple clicked
+       ------------------------------------------------------------------------
+       <STRONG>BUTTON4_PRESSED</STRONG>          mouse button 4 down
+       <STRONG>BUTTON4_RELEASED</STRONG>         mouse button 4 up
+       <STRONG>BUTTON4_CLICKED</STRONG>          mouse button 4 clicked
+       <STRONG>BUTTON4_DOUBLE_CLICKED</STRONG>   mouse button 4 double clicked
+       <STRONG>BUTTON4_TRIPLE_CLICKED</STRONG>   mouse button 4 triple clicked
+       ------------------------------------------------------------------------
+       <STRONG>BUTTON5_PRESSED</STRONG>          mouse button 5 down
+       <STRONG>BUTTON5_RELEASED</STRONG>         mouse button 5 up
+       <STRONG>BUTTON5_CLICKED</STRONG>          mouse button 5 clicked
+       <STRONG>BUTTON5_DOUBLE_CLICKED</STRONG>   mouse button 5 double clicked
+       <STRONG>BUTTON5_TRIPLE_CLICKED</STRONG>   mouse button 5 triple clicked
+       ------------------------------------------------------------------------
+       <STRONG>BUTTON_SHIFT</STRONG>             shift was down during button state change
+       <STRONG>BUTTON_CTRL</STRONG>              control was down during button state change
+       <STRONG>BUTTON_ALT</STRONG>               alt was down during button state change
+       <STRONG>ALL_MOUSE_EVENTS</STRONG>         report all button state changes
+       <STRONG>REPORT_MOUSE_POSITION</STRONG>    report mouse movement
+       ------------------------------------------------------------------------
 
 
 </PRE><H3><a name="h3-getmouse">getmouse</a></H3><PRE>
        event off the queue, call <STRONG>getmouse</STRONG>.  This function will return <STRONG>OK</STRONG> if  a
        mouse  event  is  actually  visible in the given window, <STRONG>ERR</STRONG> otherwise.
        When <STRONG>getmouse</STRONG> returns <STRONG>OK</STRONG>, the data deposited as y and x  in  the  event
-       structure  coordinates  will  be screen-relative character-cell coordi-
-       nates.  The returned state mask will have exactly one bit set to  indi-
-       cate the event type.  The corresponding data in the queue is marked in-
-       valid.  A subsequent call to <STRONG>getmouse</STRONG> will retrieve the next older item
-       from the queue.
+       structure    coordinates   will   be   screen-relative   character-cell
+       coordinates.  The returned state mask will have exactly one bit set  to
+       indicate the event type.  The corresponding data in the queue is marked
+       invalid.  A subsequent call to <STRONG>getmouse</STRONG> will retrieve  the  next  older
+       item from the queue.
 
 
 </PRE><H3><a name="h3-ungetmouse">ungetmouse</a></H3><PRE>
        <STRONG>TRUE</STRONG>  if  it is and <STRONG>FALSE</STRONG> otherwise.  It is useful for determining what
        subset of the screen windows enclose the location of a mouse event.
 
+       If the parameter is  a  pad,  <STRONG>wenclose</STRONG>  uses  the  most  recent  screen
+       coordinates used for this pad in <STRONG><A HREF="curs_pad.3x.html">prefresh(3x)</A></STRONG> or <STRONG><A HREF="curs_pad.3x.html">pnoutrefresh(3x)</A></STRONG>.
+
 
 </PRE><H3><a name="h3-wmouse_trafo">wmouse_trafo</a></H3><PRE>
-       The <STRONG>wmouse_trafo</STRONG> function transforms a given pair of  coordinates  from
-       stdscr-relative coordinates to coordinates relative to the given window
-       or vice versa.  The resulting stdscr-relative coordinates are  not  al-
-       ways  identical  to window-relative coordinates due to the mechanism to
-       reserve lines on top or bottom of the screen for  other  purposes  (see
-       the <STRONG>ripoffline</STRONG> and <STRONG><A HREF="curs_slk.3x.html">slk_init(3x)</A></STRONG> calls, for example).
-
-       <STRONG>o</STRONG>   If the parameter <EM>to</EM><STRONG>_</STRONG><EM>screen</EM> is <STRONG>TRUE</STRONG>, the pointers <EM>pY,</EM> <EM>pX</EM> must refer-
-           ence the coordinates of a location inside the window <EM>win</EM>.  They are
-           converted  to  window-relative coordinates and returned through the
-           pointers.  If the conversion was successful, the  function  returns
-           <STRONG>TRUE</STRONG>.
-
-       <STRONG>o</STRONG>   If one of the parameters was NULL or the location is not inside the
+       The  <STRONG>wmouse_trafo</STRONG>  function transforms a given pair of coordinates from
+       <STRONG>stdscr</STRONG>-relative coordinates to coordinates relative to the given window
+       or  vice  versa.   The  resulting  <STRONG>stdscr</STRONG>-relative  coordinates are not
+       always identical to screen coordinates due to the mechanism to  reserve
+       lines  on  top  or  bottom  of  the  screen for other purposes (see the
+       <STRONG><A HREF="curs_kernel.3x.html">ripoffline(3x)</A></STRONG> and <STRONG><A HREF="curs_slk.3x.html">slk_init(3x)</A></STRONG> calls, for example).
+
+       <STRONG>o</STRONG>   If the parameter <EM>to</EM><STRONG>_</STRONG><EM>screen</EM>  is  <STRONG>TRUE</STRONG>,  the  pointers  <EM>pY,</EM>  <EM>pX</EM>  must
+           reference  the  coordinates  of  a  location inside the window <EM>win</EM>.
+           They are converted  to  <STRONG>stdscr</STRONG>-relative  coordinates  and  returned
+           through  the  pointers.   If  the  conversion  was  successful, the
+           function returns <STRONG>TRUE</STRONG>.
+
+           If one of the parameters was <STRONG>NULL</STRONG> or the location is not inside the
            window, <STRONG>FALSE</STRONG> is returned.
 
-       <STRONG>o</STRONG>   If <EM>to</EM><STRONG>_</STRONG><EM>screen</EM> is <STRONG>FALSE</STRONG>, the pointers <EM>pY,</EM> <EM>pX</EM> must  reference  window-
-           relative  coordinates.  They are converted to stdscr-relative coor-
-           dinates if the window <EM>win</EM> encloses this point.  In  this  case  the
-           function returns <STRONG>TRUE</STRONG>.
+       <STRONG>o</STRONG>   If   <EM>to</EM><STRONG>_</STRONG><EM>screen</EM>  is  <STRONG>FALSE</STRONG>,  the  pointers  <EM>pY,</EM>  <EM>pX</EM>  must  reference
+           <STRONG>stdscr</STRONG>-relative coordinates.  They are converted to window-relative
+           coordinates  if  the  window <EM>win</EM> encloses this point.  In this case
+           the function returns <STRONG>TRUE</STRONG>.
+
+           If one of the parameters is <STRONG>NULL</STRONG> or the point  is  not  inside  the
+           window, <STRONG>FALSE</STRONG> is returned.
 
-       <STRONG>o</STRONG>   If  one  of  the  parameters is NULL or the point is not inside the
-           window, <STRONG>FALSE</STRONG> is returned.  The referenced coordinates are only re-
-           placed  by the converted coordinates if the transformation was suc-
-           cessful.
+       The   referenced   coordinates  are  only  replaced  by  the  converted
+       coordinates if the transformation was successful.
 
 
 </PRE><H3><a name="h3-mouse_trafo">mouse_trafo</a></H3><PRE>
        The <STRONG>mouse_trafo</STRONG> function performs the same translation as <STRONG>wmouse_trafo</STRONG>,
-       using stdscr for <EM>win</EM>.
+       using <STRONG>stdscr</STRONG> for <EM>win</EM>.
 
 
 </PRE><H3><a name="h3-mouseinterval">mouseinterval</a></H3><PRE>
        The  <STRONG>mouseinterval</STRONG>  function  sets  the maximum time (in thousands of a
        second) that can elapse between press and release events for them to be
-       recognized  as  a click.  Use <STRONG>mouseinterval(0)</STRONG> to disable click resolu-
-       tion.  This function returns the previous interval value.  Use <STRONG>mousein-</STRONG>
-       <STRONG>terval(-1)</STRONG>  to obtain the interval without altering it.  The default is
-       one sixth of a second.
+       resolved  as  a <EM>click</EM>.  An application might interpret button press and
+       release events separated by more than the mouse  interval  as  a  "long
+       press", or, with motion, as a "drag".
 
+       Calling  <STRONG>mouseinterval(0)</STRONG>  disables  click  resolution.   When  <EM>ncurses</EM>
+       detects a mouse event, it awaits further  input  activity  up  to  this
+       interval,  and  then  checks  for a subsequent mouse event which can be
+       combined with the first event.  If the timeout  expires  without  input
+       activity  (which  would  happen  with  a  zero interval), then no click
+       resolution will occur.
 
-</PRE><H3><a name="h3-has_mouse">has_mouse</a></H3><PRE>
-       The <STRONG>has_mouse</STRONG> function returns <STRONG>TRUE</STRONG> if the mouse driver has  been  suc-
-       cessfully initialized.
+       This   function   returns   the   previous   interval    value.     Use
+       <STRONG>mouseinterval(-1)</STRONG> to obtain the interval without altering it.
 
-       Note  that  mouse  events will be ignored when input is in cooked mode,
-       and will cause an error beep when cooked mode is being simulated  in  a
-       window  by a function such as <STRONG>getstr</STRONG> that expects a linefeed for input-
-       loop termination.
+       The  mouse  interval  is  set  to  one  sixth  of  a  second  when  the
+       corresponding  screen  is  initialized,   e.g.,   in   <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>   or
+       <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       <STRONG>getmouse</STRONG> and <STRONG>ungetmouse</STRONG> return the integer <STRONG>ERR</STRONG> upon failure or <STRONG>OK</STRONG>  upon
-       successful completion:
+       <STRONG>has_mouse</STRONG>, <STRONG>wenclose</STRONG>, <STRONG>mouse_trafo</STRONG>, and <STRONG>wmouse_trafo</STRONG> return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>
+       as noted above.
+
+       <STRONG>getmouse</STRONG> and <STRONG>ungetmouse</STRONG> return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon success.
+
+       <STRONG>getmouse</STRONG> fails if:
 
-          <STRONG>getmouse</STRONG>
-               returns an error.
+       <STRONG>o</STRONG>   no mouse driver was initialized,
 
-          <STRONG>o</STRONG>   If  no mouse driver was initialized, or if the mask parameter is
-              zero,
+       <STRONG>o</STRONG>   the mask of reportable events is zero,
 
-          <STRONG>o</STRONG>   It returns an error if a mouse event was detected which did  not
-              match the current <EM>mousemask</EM>.
+       <STRONG>o</STRONG>   a mouse event was detected that does not match the mask,
 
-          <STRONG>o</STRONG>   It also returns an error if no more events remain in the queue.
+       <STRONG>o</STRONG>   or if no more events remain in the queue.
 
-          <STRONG>ungetmouse</STRONG>
-               returns an error if the FIFO is full.
+       <STRONG>ungetmouse</STRONG> returns an error if the event queue is full.
 
        <STRONG>mousemask</STRONG> returns the mask of reportable events.
 
-       <STRONG>mouseinterval</STRONG>  returns the previous interval value, unless the terminal
-       was not initialized.  In that case, it  returns  the  maximum  interval
+       <STRONG>mouseinterval</STRONG> returns the previous interval value, unless the  terminal
+       was  not  initialized.   In  that case, it returns the maximum interval
        value (166).
 
-       <STRONG>wenclose</STRONG> and <STRONG>wmouse_trafo</STRONG> are boolean functions returning <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>
-       depending on their test result.
 
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       The  order  of  the  <STRONG>MEVENT</STRONG>  structure  members  is   not   guaranteed.
+       Additional fields may be added to the structure in the future.
 
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These calls were designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and are not  found  in  SVr4
-       curses, 4.4BSD curses, or any other previous version of curses.
+       Under  <EM>ncurses</EM>, these calls are implemented using either <EM>xterm</EM>'s built-
+       in mouse-tracking API or platform-specific drivers including
 
-       SVr4  curses had support for the mouse in a variant of <STRONG>xterm(1)</STRONG>.  It is
-       mentioned in a few places, but with no supporting documentation:
+          <STRONG>o</STRONG>   Alessandro Rubini's gpm server
 
-       <STRONG>o</STRONG>   the "libcurses" manual page lists functions for this feature  which
-           are prototyped in <STRONG>curses.h</STRONG>:
+          <STRONG>o</STRONG>   FreeBSD sysmouse
 
-               extern int mouse_set(long int);
-               extern int mouse_on(long int);
-               extern int mouse_off(long int);
-               extern int request_mouse_pos(void);
-               extern int map_button(unsigned long);
-               extern void wmouse_position(WINDOW *, int *, int *);
-               extern unsigned long getmouse(void), getbmap(void);
+          <STRONG>o</STRONG>   OS/2 EMX
+
+       If you are using an unsupported configuration, mouse events will not be
+       visible to <EM>ncurses</EM> (and the <STRONG>mousemask</STRONG> function will always return <STRONG>0</STRONG>).
 
-       <STRONG>o</STRONG>   the "terminfo" manual page lists capabilities for the feature
+       If  the  <EM>terminfo</EM> entry contains a <STRONG>XM</STRONG> string, this is used in the <EM>xterm</EM>
+       mouse driver to control the way the terminal is initialized  for  mouse
+       operation.   The  default,  if  <STRONG>XM</STRONG> is not found, corresponds to private
+       mode 1000 of <EM>xterm:</EM>
 
-               buttons           btns    BT       Number of buttons on the mouse
-               get_mouse         getm    Gm       Curses should get button events
-               key_mouse         kmous   Km       0631, Mouse event has occurred
-               mouse_info        minfo   Mi       Mouse status information
-               req_mouse_pos     reqmp   RQ       Request mouse position report
+          \E[?1000%?%p1%{1}%=%th%el%;
 
-       <STRONG>o</STRONG>   the  interface  made assumptions (as does ncurses) about the escape
-           sequences sent to and received from the terminal.
+       The mouse driver also recognizes a newer <EM>xterm</EM> private mode 1006, e.g.,
 
-           For instance the SVr4 curses library used the <STRONG>get_mouse</STRONG>  capability
-           to  tell  the  terminal  which  mouse button events it should send,
-           passing the mouse-button bit-mask to the terminal.  Also, it  could
-           ask  the terminal where the mouse was using the <STRONG>req_mouse_pos</STRONG> capa-
-           bility.
+          \E[?1006;1000%?%p1%{1}%=%th%el%;
 
-           Those features required a terminal which had been modified to  work
-           with curses.  They were not part of the X Consortium's xterm.
+       The <EM>z</EM> member in the event structure  is  not  presently  used.   It  is
+       intended  for  use with touch screens (which may be pressure-sensitive)
+       or with 3D-mice/trackballs/power gloves.
 
-       When  developing the xterm mouse support for ncurses in September 1995,
-       Eric Raymond was uninterested in using the same interface  due  to  its
-       lack of documentation.  Later, in 1998, Mark Hesseling provided support
-       in PDCurses 2.3 using the SVr4 interface.  PDCurses, however, does  not
-       use  video  terminals, making it unnecessary to be concerned about com-
-       patibility with the escape sequences.
+       The <STRONG>ALL_MOUSE_EVENTS</STRONG>  class  does  not  include  <STRONG>REPORT_MOUSE_POSITION</STRONG>.
+       They  are  distinct.   For example, in <EM>xterm</EM>, wheel/scrolling mice send
+       position reports as a sequence of presses of buttons  4  or  5  without
+       matching button-releases.
 
-       The feature macro <STRONG>NCURSES_MOUSE_VERSION</STRONG> is provided so the preprocessor
-       can  be used to test whether these features are present.  If the inter-
-       face is changed, the value of <STRONG>NCURSES_MOUSE_VERSION</STRONG> will be  increment-
-       ed.   These values for <STRONG>NCURSES_MOUSE_VERSION</STRONG> may be specified when con-
-       figuring ncurses:
 
-          1  has definitions for reserved events.  The mask uses 28 bits.
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       These  functions  were  designed  for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and are not found in
+       SVr4  <EM>curses</EM>,   4.4BSD   <EM>curses</EM>,   or   any   other   previous   curses
+       implementation.   (SVr4 <EM>curses</EM> did have a <EM>getmouse</EM> function, which took
+       no argument and returned a different type.)
 
-          2  adds definitions for button 5, removes the  definitions  for  re-
-             served events.  The mask uses 29 bits.
 
-       The order of the <STRONG>MEVENT</STRONG> structure members is not guaranteed.  Addition-
-       al fields may be added to the structure in the future.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       Applications employing the <EM>ncurses</EM> mouse extension should condition its
+       use  on the visibility of the <STRONG>NCURSES_MOUSE_VERSION</STRONG> preprocessor macro.
+       When the interface changes, the  macro's  value  increments.   Multiple
+       versions   are  available  when  <EM>ncurses</EM>  is  configured;  see  section
+       "ALTERNATE CONFIGURATIONS" of <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.  The following values may be
+       specified.
 
-       Under <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, these calls are  implemented  using  either  xterm's
-       built-in mouse-tracking API or platform-specific drivers including
+          1  has definitions for reserved events.  The mask uses 28 bits.
 
-          <STRONG>o</STRONG>   Alessandro Rubini's gpm server
+          2  adds  definitions  for  button  5,  removes  the  definitions for
+             reserved events.  The mask uses 29 bits.
 
-          <STRONG>o</STRONG>   FreeBSD sysmouse
+       SVr4 <EM>curses</EM> had support for the mouse in a variant of <STRONG>xterm(1)</STRONG>.  It  is
+       mentioned in a few places, with little supporting documentation.
 
-          <STRONG>o</STRONG>   OS/2 EMX
+       <STRONG>o</STRONG>   Its  "libcurses"  manual  page  lists  functions  for  this feature
+           prototyped in <EM>curses.h</EM>.
 
-       If you are using an unsupported configuration, mouse events will not be
-       visible to <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> (and the <STRONG>mousemask</STRONG> function will  always  return
-       <STRONG>0</STRONG>).
+               extern int mouse_set(long int);
+               extern int mouse_on(long int);
+               extern int mouse_off(long int);
+               extern int request_mouse_pos(void);
+               extern int map_button(unsigned long);
+               extern void wmouse_position(WINDOW *, int *, int *);
+               extern unsigned long getmouse(void), getbmap(void);
 
-       If  the  terminfo entry contains a <STRONG>XM</STRONG> string, this is used in the xterm
-       mouse driver to control the way the terminal is initialized  for  mouse
-       operation.   The  default,  if  <STRONG>XM</STRONG> is not found, corresponds to private
-       mode 1000 of xterm:
+       <STRONG>o</STRONG>   Its "terminfo" manual page lists capabilities for the feature.
 
-          \E[?1000%?%p1%{1}%=%th%el%;
+               <STRONG>buttons</STRONG>         <STRONG>btns</STRONG>    <STRONG>BT</STRONG>   Number of buttons on the mouse
+               <STRONG>get_mouse</STRONG>       <STRONG>getm</STRONG>    <STRONG>Gm</STRONG>   Curses should get button events
+               <STRONG>key_mouse</STRONG>       <STRONG>kmous</STRONG>   <STRONG>Km</STRONG>   0631, Mouse event has occurred
+               <STRONG>mouse_info</STRONG>      <STRONG>minfo</STRONG>   <STRONG>Mi</STRONG>   Mouse status information
+               <STRONG>req_mouse_pos</STRONG>   <STRONG>reqmp</STRONG>   <STRONG>RQ</STRONG>   Request mouse position report
 
-       The mouse driver also recognizes a newer xterm private mode 1006, e.g.,
+       <STRONG>o</STRONG>   The interface made assumptions (as does <EM>ncurses</EM>) about  the  escape
+           sequences sent to and received from the terminal.
 
-          \E[?1006;1000%?%p1%{1}%=%th%el%;
+           For instance, the SVr4 <EM>curses</EM> library used the <STRONG>get_mouse</STRONG> capability
+           to tell the terminal which mouse  button  events  it  should  send,
+           passing  the mouse-button bit mask to the terminal.  Also, it could
+           ask the terminal  where  the  mouse  was  using  the  <STRONG>req_mouse_pos</STRONG>
+           capability.
 
-       The <EM>z</EM> member in the event structure is not presently used.  It  is  in-
-       tended  for use with touch screens (which may be pressure-sensitive) or
-       with 3D-mice/trackballs/power gloves.
+           Those  features  required a terminal program that had been modified
+           to work with SVr4 <EM>curses</EM>.  They were not part of the X Consortium's
+           <EM>xterm</EM>.
 
-       The <STRONG>ALL_MOUSE_EVENTS</STRONG>  class  does  not  include  <STRONG>REPORT_MOUSE_POSITION</STRONG>.
-       They  are  distinct.   For example, in xterm, wheel/scrolling mice send
-       position reports as a sequence of presses of buttons  4  or  5  without
-       matching button-releases.
+       When  developing the <EM>xterm</EM> mouse support for <EM>ncurses</EM> in September 1995,
+       Eric Raymond was uninterested in using the same interface  due  to  its
+       lack of documentation.  Later, in 1998, Mark Hesseling provided support
+       in <EM>PDCurses</EM> 2.3 using the SVr4 interface.  <EM>PDCurses</EM>, however, does  not
+       use  video  terminals,  making  it  unnecessary  to  be concerned about
+       compatibility with the escape sequences.
 
 
 </PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
-       Mouse  events  under  xterm  will  not in fact be ignored during cooked
-       mode, if they have been enabled by <STRONG>mousemask</STRONG>.  Instead, the xterm mouse
-       report sequence will appear in the string read.
-
-       Mouse  events  under  xterm  will not be detected correctly in a window
-       with its keypad bit off, since they are interpreted  as  a  variety  of
-       function  key.   Your  terminfo  description  should  have <STRONG>kmous</STRONG> set to
-       "\E[M" (the beginning of the response from  xterm  for  mouse  clicks).
-       Other  values  for  <STRONG>kmous</STRONG> are permitted, but under the same assumption,
-       i.e., it is the beginning of the response.
-
-       Because there are no standard terminal responses that  would  serve  to
-       identify  terminals which support the xterm mouse protocol, <STRONG>ncurses</STRONG> as-
-       sumes that if <STRONG>kmous</STRONG> is defined in the terminal description, or  if  the
-       terminal  description's  primary  name  or  aliases  contain the string
-       "xterm", then the terminal may send mouse events.  The <STRONG>kmous</STRONG> capability
-       is  checked first, allowing the use of newer xterm mouse protocols such
-       as xterm's private mode 1006.
+       Mouse events from <EM>xterm</EM> are <EM>not</EM> ignored in cooked  mode  if  they  have
+       been  enabled  by  <STRONG>mousemask</STRONG>.  Instead, the <EM>xterm</EM> mouse report sequence
+       appears in the string read.
+
+       Mouse event reports from <EM>xterm</EM> are not detected correctly in  a  window
+       with  keypad application mode disabled, since they are interpreted as a
+       variety of function key.  Set the terminal's <EM>terminfo</EM> capability  <STRONG>kmous</STRONG>
+       to  "\E[M" (the beginning of the response from <EM>xterm</EM> for mouse clicks).
+       Other values of <STRONG>kmous</STRONG> are permitted under the same assumption, that is,
+       the report begins with that sequence.
+
+       Because there are no standard response sequences that serve to identify
+       terminals supporting the <EM>xterm</EM> mouse protocol, <EM>ncurses</EM> assumes that  if
+       <STRONG>kmous</STRONG> is defined in the terminal description, or if the terminal type's
+       primary name or aliases contain the string "xterm", then  the  terminal
+       may send mouse events.  The <STRONG>kmous</STRONG> capability is checked first, allowing
+       use of newer <EM>xterm</EM> mouse protocols, such as its private mode 1006.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>,  <STRONG>curs_vari-</STRONG>
-       <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,     <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,     <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,     <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                                <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
+<li><a href="#h3-has_mouse">has_mouse</a></li>
 <li><a href="#h3-mousemask">mousemask</a></li>
-<li><a href="#h3-Mouse-events">Mouse events</a></li>
+<li><a href="#h3-Mouse-Events">Mouse Events</a></li>
 <li><a href="#h3-getmouse">getmouse</a></li>
 <li><a href="#h3-ungetmouse">ungetmouse</a></li>
 <li><a href="#h3-wenclose">wenclose</a></li>
 <li><a href="#h3-wmouse_trafo">wmouse_trafo</a></li>
 <li><a href="#h3-mouse_trafo">mouse_trafo</a></li>
 <li><a href="#h3-mouseinterval">mouseinterval</a></li>
-<li><a href="#h3-has_mouse">has_mouse</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-BUGS">BUGS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
index 8d7d7e4677359116f9300a7a6432c6990e6b3d39..bbab2b871ff3237553199444c288c9c33275f1d8 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_move.3x,v 1.22 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_move.3x,v 1.40 2024/04/27 17:56:05 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_move 3x</TITLE>
+<TITLE>curs_move 3x 2024-04-27 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_move 3x</H1>
+<H1 class="no-header">curs_move 3x 2024-04-27 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>                                                    <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
+<STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>move</STRONG>, <STRONG>wmove</STRONG> - move <STRONG>curses</STRONG> window cursor
+       <STRONG>move</STRONG>, <STRONG>wmove</STRONG> - move cursor in a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These routines move the cursor associated with the window to line <EM>y</EM> and
-       column <EM>x</EM>.  This routine does not move the physical cursor of the termi-
-       nal until <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> is called.  The position specified is relative to
-       the upper left-hand corner of the window, which is (0,0).
+       <STRONG>wmove</STRONG>  relocates  the  cursor  associated with the <EM>curses</EM> window <EM>win</EM> to
+       line <EM>y</EM> and column  <EM>x</EM>.   The  terminal's  cursor  does  not  move  until
+       <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>  is  called.   The position (<EM>y</EM>, <EM>x</EM>) is relative to the upper
+       left-hand  corner  of  the  window,  which  has   coordinates   (0, 0).
+       <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> describes the <STRONG>move</STRONG> variant of this function.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       These routines return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 specifies only  "an
-       integer value other than <STRONG>ERR</STRONG>") upon successful completion.
+       These functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure.
 
-       Specifically, they return an error if the window pointer is null, or if
-       the position is outside the window.
+       They fail if the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
+
+       <STRONG>wmove</STRONG> fails if its <EM>WINDOW</EM> pointer argument is <STRONG>NULL</STRONG>.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>move</STRONG> may be a macro.
+       <STRONG>move</STRONG> may be implemented as a macro.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.
+       X/Open Curses, Issue 4 describes these functions.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
@@ -85,7 +86,7 @@
 
 
 
-                                                                 <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
+ncurses 6.5                       2024-04-27                     <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index fd7017ddceb9d142d7538e9b351d553d032aa746..50bb9ee64e917d93eab6ed9b1b6b845cf924da6e 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2020-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2020-2023,2024 Thomas E. Dickey                                *
   * Copyright 2007-2014,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_opaque.3x,v 1.18 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_opaque.3x,v 1.43 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_opaque 3x</TITLE>
+<TITLE>curs_opaque 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_opaque 3x</H1>
+<H1 class="no-header">curs_opaque 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>                                                <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
+<STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>is_cleared</STRONG>, <STRONG>is_idlok</STRONG>, <STRONG>is_idcok</STRONG>, <STRONG>is_immedok</STRONG>, <STRONG>is_keypad</STRONG>, <STRONG>is_leaveok</STRONG>,
-       <STRONG>is_nodelay</STRONG>, <STRONG>is_notimeout</STRONG>, <STRONG>is_pad</STRONG>, <STRONG>is_scrollok</STRONG>, <STRONG>is_subwin</STRONG>, <STRONG>is_syncok</STRONG>,
-       <STRONG>wgetdelay</STRONG>, <STRONG>wgetparent</STRONG>, <STRONG>wgetscrreg</STRONG> - <STRONG>curses</STRONG> window properties
+       <STRONG>is_cleared</STRONG>,  <STRONG>is_idlok</STRONG>,  <STRONG>is_idcok</STRONG>,  <STRONG>is_immedok</STRONG>,  <STRONG>is_keypad</STRONG>,  <STRONG>is_leaveok</STRONG>,
+       <STRONG>is_nodelay</STRONG>, <STRONG>is_notimeout</STRONG>, <STRONG>is_pad</STRONG>,  <STRONG>is_scrollok</STRONG>,  <STRONG>is_subwin</STRONG>,  <STRONG>is_syncok</STRONG>,
+       <STRONG>wgetdelay</STRONG>, <STRONG>wgetparent</STRONG>, <STRONG>wgetscrreg</STRONG> - obtain <EM>curses</EM> window properties
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>bool</STRONG> <STRONG>is_scrollok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
        <STRONG>bool</STRONG> <STRONG>is_subwin(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
        <STRONG>bool</STRONG> <STRONG>is_syncok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+
        <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>wgetparent(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wgetdelay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>wgetscrreg(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>top</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>bottom</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This  implementation  provides functions which return properties set in
-       the WINDOW structure, allowing it to be "opaque" if the  symbol  <STRONG>NCURS-</STRONG>
-       <STRONG>ES_OPAQUE</STRONG> is defined:
+       <EM>ncurses</EM>  provides functions returning properties of a <EM>WINDOW</EM> structure,
+       allowing  it  to  be  "opaque"   if   the   application   defines   the
+       <STRONG>NCURSES_OPAQUE</STRONG>  preprocessor  symbol.  <EM>Opacity</EM> in this sense means that
+       the members of <EM>struct</EM> data  types  are  not  directly  accessible  (for
+       instance,  through  "." or "-&gt;" operators), but instead must be queried
+       and/or set  via  library  functions.   Advantages  of  opacity  include
+       greater  abstraction  and improved management of concurrent accesses to
+       data structures, keeping object states coherent.
 
        <STRONG>is_cleared</STRONG>
-            returns the value set in <STRONG>clearok</STRONG>
+              returns the value set by <STRONG><A HREF="curs_outopts.3x.html">clearok(3x)</A></STRONG>.
 
        <STRONG>is_idcok</STRONG>
-            returns the value set in <STRONG>idcok</STRONG>
+              returns the value set by <STRONG><A HREF="idcok.3x.html">idcok(3x)</A></STRONG>.
 
        <STRONG>is_idlok</STRONG>
-            returns the value set in <STRONG>idlok</STRONG>
+              returns the value set by <STRONG><A HREF="idlok.3x.html">idlok(3x)</A></STRONG>.
 
        <STRONG>is_immedok</STRONG>
-            returns the value set in <STRONG>immedok</STRONG>
+              returns the value set by <STRONG><A HREF="curs_outopts.3x.html">immedok(3x)</A></STRONG>.
 
        <STRONG>is_keypad</STRONG>
-            returns the value set in <STRONG>keypad</STRONG>
+              returns the value set by <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG>.
 
        <STRONG>is_leaveok</STRONG>
-            returns the value set in <STRONG>leaveok</STRONG>
+              returns the value set by <STRONG><A HREF="leaveok.3x.html">leaveok(3x)</A></STRONG>.
 
        <STRONG>is_nodelay</STRONG>
-            returns the value set in <STRONG>nodelay</STRONG>
+              returns the value set by <STRONG><A HREF="nodelay.3x.html">nodelay(3x)</A></STRONG>.
 
        <STRONG>is_notimeout</STRONG>
-            returns the value set in <STRONG>notimeout</STRONG>
+              returns the value set by <STRONG><A HREF="notimeout.3x.html">notimeout(3x)</A></STRONG>.
 
-       <STRONG>is_pad</STRONG>
-            returns <STRONG>TRUE</STRONG> if the window is a pad i.e., created by <STRONG>newpad</STRONG>
+       <STRONG>is_pad</STRONG> returns <STRONG>TRUE</STRONG> if the window is a pad; that is, it was created  by
+              <STRONG><A HREF="newpad.3x.html">newpad(3x)</A></STRONG>.
 
        <STRONG>is_scrollok</STRONG>
-            returns the value set in <STRONG>scrollok</STRONG>
+              returns the value set by <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG>.
 
        <STRONG>is_subwin</STRONG>
-            returns <STRONG>TRUE</STRONG> if the window is a subwindow, i.e., created by <STRONG>subwin</STRONG>
-            or <STRONG>derwin</STRONG>
+              returns  <STRONG>TRUE</STRONG>  if  the  window  is  a subwindow, that is, it was
+              created by <STRONG><A HREF="subwin.3x.html">subwin(3x)</A></STRONG> or <STRONG><A HREF="derwin.3x.html">derwin(3x)</A></STRONG>.
 
        <STRONG>is_syncok</STRONG>
-            returns the value set in <STRONG>syncok</STRONG>
+              returns the value set by <STRONG><A HREF="syncok.3x.html">syncok(3x)</A></STRONG>.
 
        <STRONG>wgetdelay</STRONG>
-            returns the delay timeout as set in <STRONG>wtimeout</STRONG>.
+              returns the delay timeout set by <STRONG><A HREF="wtimeout.3x.html">wtimeout(3x)</A></STRONG>.
 
        <STRONG>wgetparent</STRONG>
-            returns the parent WINDOW pointer for subwindows, or NULL for win-
-            dows having no parent.
+              returns the parent <EM>WINDOW</EM> pointer for subwindows,  or  <STRONG>NULL</STRONG>  for
+              windows having no parent.
 
        <STRONG>wgetscrreg</STRONG>
-            returns the top and bottom rows for the scrolling margin as set in
-            <STRONG>wsetscrreg</STRONG>.
+              stores  the the top and bottom rows for the scrolling margin set
+              by <STRONG><A HREF="curs_outopts.3x.html">wsetscrreg(3x)</A></STRONG> in the corresponding arguments, returning  <STRONG>ERR</STRONG>
+              upon failure and <STRONG>OK</STRONG> upon successful completion.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       These functions all return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, except as noted.
+       These functions return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG> except as noted.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Both a macro and a function are provided for each name.
+       <EM>ncurses</EM>  provides  both  a C function and a preprocessor macro for each
+       function documented in this page.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines are specific to ncurses.  They  were  not  supported  on
+       These routines are specific to <EM>ncurses</EM>.  They  were  not  supported  on
        Version 7, BSD or System V implementations.  It is recommended that any
-       code depending on ncurses extensions be conditioned using  NCURSES_VER-
-       SION.
+       code   depending   on   <EM>ncurses</EM>   extensions   be   conditioned   using
+       <STRONG>NCURSES_VERSION</STRONG>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,    <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,   <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>,   <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                   <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 5e86a9f411ae1c67ef542c17aefd94b51682c8a6..7f04d92eabefa3c54a1e20b9085470123246758f 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_outopts.3x,v 1.36 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_outopts.3x,v 1.64 2024/04/20 21:24:19 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_outopts 3x</TITLE>
+<TITLE>curs_outopts 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_outopts 3x</H1>
+<H1 class="no-header">curs_outopts 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>                                              <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
+<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>clearok</STRONG>, <STRONG>idlok</STRONG>, <STRONG>idcok</STRONG>, <STRONG>immedok</STRONG>, <STRONG>leaveok</STRONG>, <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>,
-       <STRONG>scrollok</STRONG> - <STRONG>curses</STRONG> output options
+       <STRONG>clearok</STRONG>,   <STRONG>idlok</STRONG>,   <STRONG>idcok</STRONG>,  <STRONG>immedok</STRONG>,  <STRONG>leaveok</STRONG>,  <STRONG>setscrreg</STRONG>,  <STRONG>wsetscrreg</STRONG>,
+       <STRONG>scrollok</STRONG> - set <EM>curses</EM> output options
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -66,9 +66,9 @@
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These routines set options that change the style of output within <STRONG>curs-</STRONG>
-       <STRONG>es</STRONG>.   All  options are initially <STRONG>FALSE</STRONG>, unless otherwise stated.  It is
-       not necessary to turn these options off before calling <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG>.
+       These routines set options that  change  the  style  of  output  within
+       <STRONG>curses</STRONG>.   All options are initially <STRONG>FALSE</STRONG>, unless otherwise stated.  It
+       is not necessary to turn these options off before calling <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG>.
 
 
 </PRE><H3><a name="h3-clearok">clearok</a></H3><PRE>
 </PRE><H3><a name="h3-idlok">idlok</a></H3><PRE>
        If <STRONG>idlok</STRONG> is called with <STRONG>TRUE</STRONG> as second argument, <STRONG>curses</STRONG> considers using
        the  hardware  insert/delete  line  feature  of  terminals so equipped.
-       Calling <STRONG>idlok</STRONG> with <STRONG>FALSE</STRONG> as second argument disables use of line inser-
-       tion  and deletion.  This option should be enabled only if the applica-
-       tion needs insert/delete line, for example, for a screen editor.  It is
-       disabled by default because insert/delete line tends to be visually an-
-       noying when used in applications where it is not really needed.  If in-
-       sert/delete line cannot be used, <STRONG>curses</STRONG> redraws the changed portions of
-       all lines.
+       Calling <STRONG>idlok</STRONG> with <STRONG>FALSE</STRONG>  as  second  argument  disables  use  of  line
+       insertion  and  deletion.   This  option  should be enabled only if the
+       application needs insert/delete line, for example, for a screen editor.
+       It  is  disabled  by  default  because  insert/delete  line tends to be
+       visually annoying when used in applications  where  it  is  not  really
+       needed.   If  insert/delete  line  cannot  be  used, <STRONG>curses</STRONG> redraws the
+       changed portions of all lines.
 
 
 </PRE><H3><a name="h3-idcok">idcok</a></H3><PRE>
-       If <STRONG>idcok</STRONG> is called with <STRONG>FALSE</STRONG> as second argument, <STRONG>curses</STRONG> no longer con-
-       siders  using the hardware insert/delete character feature of terminals
-       so equipped.  Use of character insert/delete  is  enabled  by  default.
-       Calling  <STRONG>idcok</STRONG> with <STRONG>TRUE</STRONG> as second argument re-enables use of character
-       insertion and deletion.
+       If <STRONG>idcok</STRONG> is called with <STRONG>FALSE</STRONG> as  second  argument,  <STRONG>curses</STRONG>  no  longer
+       considers   using  the  hardware  insert/delete  character  feature  of
+       terminals so equipped.  Use of character insert/delete  is  enabled  by
+       default.   Calling <STRONG>idcok</STRONG> with <STRONG>TRUE</STRONG> as second argument re-enables use of
+       character insertion and deletion.
 
 
 </PRE><H3><a name="h3-immedok">immedok</a></H3><PRE>
-       If <STRONG>immedok</STRONG> is called with <STRONG>TRUE</STRONG> <STRONG>as</STRONG> <STRONG>argument</STRONG>, any change  in  the  window
-       image, such as the ones caused by <STRONG>waddch,</STRONG> <STRONG>wclrtobot,</STRONG> <STRONG>wscrl</STRONG>, etc., auto-
-       matically cause a call to <STRONG>wrefresh</STRONG>.  However, it  may  degrade  perfor-
-       mance  considerably, due to repeated calls to <STRONG>wrefresh</STRONG>.  It is disabled
-       by default.
+       If <STRONG>immedok</STRONG> is called with <STRONG>TRUE</STRONG> as second argument, any  change  in  the
+       window  image,  such  as  the  ones caused by <STRONG>waddch,</STRONG> <STRONG>wclrtobot,</STRONG> <STRONG>wscrl</STRONG>,
+       etc., automatically causes a call to <STRONG>wrefresh</STRONG>.  However, it may degrade
+       performance  considerably,  due to repeated calls to <STRONG>wrefresh</STRONG>.  Calling
+       <STRONG>immedok</STRONG> with <STRONG>FALSE</STRONG> as second argument restores  the  default  behavior,
+       i.e., deferring screen updates until a refresh is needed.
 
 
 </PRE><H3><a name="h3-leaveok">leaveok</a></H3><PRE>
-       Normally, the hardware cursor is left at the  location  of  the  window
-       cursor  being  refreshed.   The  <STRONG>leaveok</STRONG> option allows the cursor to be
-       left wherever the update happens to leave it.  It is useful for  appli-
-       cations  where  the  cursor  is not used, since it reduces the need for
-       cursor motions.
+       Normally,  the  hardware  cursor  is left at the location of the window
+       cursor being refreshed.  The <STRONG>leaveok</STRONG> option allows  the  cursor  to  be
+       left  wherever  the  update  happens  to  leave  it.   It is useful for
+       applications where the cursor is not used, since it  reduces  the  need
+       for cursor motions.
 
 
 </PRE><H3><a name="h3-scrollok">scrollok</a></H3><PRE>
-       The <STRONG>scrollok</STRONG> option controls what happens when the cursor of  a  window
-       is  moved  off  the edge of the window or scrolling region, either as a
-       result of a newline action on the bottom line, or typing the last char-
-       acter of the last line.  If disabled, (<EM>bf</EM> is <STRONG>FALSE</STRONG>), the cursor is left
-       on the bottom line.  If enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the window  is  scrolled
-       up one line (Note that to get the physical scrolling effect on the ter-
-       minal, it is also necessary to call <STRONG>idlok</STRONG>).
-
-
-</PRE><H3><a name="h3-setscrreg_wsetscrreg">setscrreg/wsetscrreg</a></H3><PRE>
-       The <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> routines allow the application  programmer
-       to set a software scrolling region in a window.  The <EM>top</EM> and <EM>bot</EM> param-
-       eters are the line  numbers  of  the  top  and  bottom  margin  of  the
-       scrolling region.  (Line 0 is the top line of the window.)  If this op-
-       tion and <STRONG>scrollok</STRONG> are enabled, an attempt to move off the bottom margin
-       line causes all lines in the scrolling region to scroll one line in the
-       direction of the first line.  Only the text of the window is  scrolled.
-       (Note  that this has nothing to do with the use of a physical scrolling
-       region capability in the terminal, like that in the VT100.  If <STRONG>idlok</STRONG> is
-       enabled and the terminal has either a scrolling region or insert/delete
-       line capability, they will probably be used by the output routines.)
+       The  <STRONG>scrollok</STRONG>  option controls what happens when the cursor of a window
+       is moved off the edge of the window or scrolling region,  either  as  a
+       result  of  a  newline  action  on  the bottom line, or typing the last
+       character of the last line.  If disabled, (<EM>bf</EM> is <STRONG>FALSE</STRONG>), the cursor  is
+       left  on  the  bottom  line.   If  enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the window is
+       scrolled up one line (Note that to get the physical scrolling effect on
+       the terminal, it is also necessary to call <STRONG>idlok</STRONG>).
+
+
+</PRE><H3><a name="h3-setscrreg_wsetscrreg">setscrreg, wsetscrreg</a></H3><PRE>
+       The  <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> routines allow the application programmer
+       to set a software scrolling region  in  a  window.   The  <EM>top</EM>  and  <EM>bot</EM>
+       parameters  are  the  line  numbers of the top and bottom margin of the
+       scrolling region.  (Line 0 is the top line of  the  window.)   If  this
+       option  and  <STRONG>scrollok</STRONG>  are  enabled,  an attempt to move off the bottom
+       margin line causes all lines in the scrolling region to scroll one line
+       in  the  direction  of  the first line.  Only the text of the window is
+       scrolled.  (Note that this has nothing to do with the use of a physical
+       scrolling  region  capability  in the terminal, like that in the VT100.
+       If <STRONG>idlok</STRONG> is enabled and the terminal has either a scrolling  region  or
+       insert/delete line capability, they will probably be used by the output
+       routines.)
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        upon  failure.  All other routines that return an integer always return
        <STRONG>OK</STRONG>.
 
-       X/Open Curses does not define any error conditions.
+       X/Open Curses does not specify any error conditions.
 
        In this implementation,
 
            the window pointer is null
 
        <STRONG>o</STRONG>   <STRONG>wsetscrreg</STRONG>  returns  an error if the scrolling region limits extend
-           outside the window.
+           outside the window boundaries.
 
-       X/Open does not define any error conditions.  This  implementation  re-
-       turns an error if the window pointer is null.
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       Note that <STRONG>clearok</STRONG>, <STRONG>leaveok</STRONG>,  <STRONG>scrollok</STRONG>,  <STRONG>idcok</STRONG>,  and  <STRONG>setscrreg</STRONG>  may  be
+       macros.
+
+       The  <STRONG>immedok</STRONG>  routine  is  useful for windows that are used as terminal
+       emulators.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These functions are described in the XSI Curses standard, Issue 4.
-
-       From the outset, ncurses used <STRONG>nl</STRONG>/<STRONG>nonl</STRONG> to control the conversion of new-
-       lines to carriage return/line-feed on output as  well  as  input.   XSI
-       Curses  documents only the use of these functions for input.  This dif-
-       ference arose from converting the  <EM>pcurses</EM>  source  (which  used  <STRONG>ioctl</STRONG>
-       calls  with  the <STRONG>sgttyb</STRONG> structure) to termios (i.e., the POSIX terminal
-       interface).  In the former, both input and output were controlled via a
-       single  option  <STRONG>CRMOD</STRONG>,  while the latter separates these features.  Be-
-       cause that conversion interferes with output optimization, <STRONG>nl</STRONG>/<STRONG>nonl</STRONG> were
-       amended after ncurses 6.2 to eliminate their effect on output.
-
-       Some  historic  curses implementations had, as an undocumented feature,
-       the ability to do the equivalent of <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG>  by  saying  <STRONG>touch-</STRONG>
-       <STRONG>win(stdscr)</STRONG> or <STRONG>clear(stdscr)</STRONG>.  This will not work under ncurses.
-
-       Earlier  System  V  curses implementations specified that with <STRONG>scrollok</STRONG>
-       enabled, any window modification triggering  a  scroll  also  forced  a
-       physical refresh.  XSI Curses does not require this, and <STRONG>ncurses</STRONG> avoids
-       doing it to perform better  vertical-motion  optimization  at  <STRONG>wrefresh</STRONG>
-       time.
-
-       The XSI Curses standard does not mention that the cursor should be made
-       invisible as a side-effect of <STRONG>leaveok</STRONG>.  SVr4 curses documentation  does
-       this,  but  the code does not.  Use <STRONG>curs_set</STRONG> to make the cursor invisi-
-       ble.
+       These functions are described in X/Open Curses, Issue 4.
 
+       Some historic curses implementations had, as an  undocumented  feature,
+       the  ability  to  do  the  equivalent  of  <STRONG>clearok(...,</STRONG>  <STRONG>1)</STRONG>  by  saying
+       <STRONG>touchwin(stdscr)</STRONG> or <STRONG>clear(stdscr)</STRONG>.  This will not work under <EM>ncurses</EM>.
 
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>clearok</STRONG>, <STRONG>leaveok</STRONG>,  <STRONG>scrollok</STRONG>,  <STRONG>idcok</STRONG>,  and  <STRONG>setscrreg</STRONG>  may  be
-       macros.
+       Earlier System V curses implementations specified  that  with  <STRONG>scrollok</STRONG>
+       enabled,  any  window  modification  triggering  a scroll also forced a
+       physical refresh.  X/Open Curses does not  require  this,  and  <EM>ncurses</EM>
+       avoids  doing  it  to  perform  better  vertical-motion optimization at
+       <STRONG>wrefresh</STRONG> time.
+
+       X/Open Curses does not mention that the cursor should be made invisible
+       as  a side-effect of <STRONG>leaveok</STRONG>.  SVr4 curses documentation does this, but
+       the code does not.  Use <STRONG>curs_set</STRONG> to make the cursor invisible.
 
-       The <STRONG>immedok</STRONG> routine is useful for windows that are used as terminal em-
-       ulators.
+
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       <EM>ncurses</EM> formerly treated <STRONG><A HREF="curs_inopts.3x.html">nl(3x)</A></STRONG> and <STRONG><A HREF="curs_inopts.3x.html">nonl(3x)</A></STRONG> as both input  <EM>and</EM>  output
+       options, but no longer; see <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,     <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>,    <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>,    <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                              <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                  <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h3-immedok">immedok</a></li>
 <li><a href="#h3-leaveok">leaveok</a></li>
 <li><a href="#h3-scrollok">scrollok</a></li>
-<li><a href="#h3-setscrreg_wsetscrreg">setscrreg/wsetscrreg</a></li>
+<li><a href="#h3-setscrreg_wsetscrreg">setscrregwsetscrreg</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index f87fc8848530664ac081c0b62032d14df4f792a5..61c4c1999fd1f470f67c8c69d3a2329d1fa4d0d3 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2020-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2020-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2013,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_overlay.3x,v 1.22 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_overlay.3x,v 1.43 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_overlay 3x</TITLE>
+<TITLE>curs_overlay 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_overlay 3x</H1>
+<H1 class="no-header">curs_overlay 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>                                              <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
+<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>overlay</STRONG>, <STRONG>overwrite</STRONG>, <STRONG>copywin</STRONG> - overlay and manipulate overlapped <STRONG>curses</STRONG>
-       windows
+       <STRONG>overlay</STRONG>,  <STRONG>overwrite</STRONG>,  <STRONG>copywin</STRONG>  -  overlay <EM>curses</EM> windows and manipulate
+       them
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
-</PRE><H3><a name="h3-overlay_-overwrite">overlay, overwrite</a></H3><PRE>
+</PRE><H3><a name="h3-overlay_overwrite">overlay, overwrite</a></H3><PRE>
        The <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> routines overlay <EM>srcwin</EM>  on  top  of  <EM>dstwin</EM>.
        <EM>scrwin</EM> and <EM>dstwin</EM> are not required to be the same size; only text where
        the two windows overlap is copied.  The difference is that  <STRONG>overlay</STRONG>  is
-       non-destructive  (blanks  are not copied) whereas <STRONG>overwrite</STRONG> is destruc-
-       tive.
+       non-destructive   (blanks   are   not   copied)  whereas  <STRONG>overwrite</STRONG>  is
+       destructive.
 
 
 </PRE><H3><a name="h3-copywin">copywin</a></H3><PRE>
        The <STRONG>copywin</STRONG> routine provides a finer granularity of  control  over  the
-       <STRONG>overlay</STRONG>  and <STRONG>overwrite</STRONG> routines.  As in the <STRONG>prefresh</STRONG> routine, a rectan-
-       gle is specified in the  destination  window,  (<EM>dminrow</EM>,  <EM>dmincol</EM>)  and
-       (<EM>dmaxrow</EM>, <EM>dmaxcol</EM>), and the upper-left-corner coordinates of the source
-       window, (<EM>sminrow</EM>, <EM>smincol</EM>).  If the  argument  <EM>overlay</EM>  is  <STRONG>true</STRONG>,  then
-       copying is non-destructive, as in <STRONG>overlay</STRONG>.
+       <STRONG>overlay</STRONG>  and  <STRONG>overwrite</STRONG>  routines.   As  in  the  <STRONG>prefresh</STRONG>  routine,  a
+       rectangle is specified in the destination  window,  (<EM>dminrow</EM>,  <EM>dmincol</EM>)
+       and  (<EM>dmaxrow</EM>,  <EM>dmaxcol</EM>),  and the upper-left-corner coordinates of the
+       source window, (<EM>sminrow</EM>, <EM>smincol</EM>).  If the argument  <EM>overlay</EM>  is  <STRONG>true</STRONG>,
+       then copying is non-destructive, as in <STRONG>overlay</STRONG>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       Routines  that  return an integer return <STRONG>ERR</STRONG> upon failure, and <STRONG>OK</STRONG> (SVr4
-       only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful  com-
-       pletion.
+       These  routines  return  the  integer  <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG> (SVr4
+       specifies only "an integer  value  other  than  <STRONG>ERR</STRONG>")  upon  successful
+       completion.
 
        X/Open  defines  no error conditions.  In this implementation, <STRONG>copywin</STRONG>,
        <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> return an error if either of the window  pointers
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The  XSI Curses standard, Issue 4 describes these functions (adding the
-       const qualifiers).  It further specifies their behavior in the presence
-       of  characters with multibyte renditions (not yet supported in this im-
-       plementation).
+       These  functions  are  described  in X/Open Curses, Issue 4, which adds
+       <EM>const</EM> qualifiers to the arguments.  It further specifies their behavior
+       in  the  presence  of  characters  with  multibyte  renditions (not yet
+       supported in this implementation).
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
 
 
 
-                                                              <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                  <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-overlay_-overwrite">overlay, overwrite</a></li>
+<li><a href="#h3-overlay_overwrite">overlay, overwrite</a></li>
 <li><a href="#h3-copywin">copywin</a></li>
 </ul>
 </li>
index 4758d36b8a710b0c21dea0bc2329f565960ce206..ae27590967bcb2772af8a30888e912bd344c705e 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_pad.3x,v 1.29 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_pad.3x,v 1.61 2024/04/27 17:55:43 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_pad 3x</TITLE>
+<TITLE>curs_pad 3x 2024-04-27 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_pad 3x</H1>
+<H1 class="no-header">curs_pad 3x 2024-04-27 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>                                                      <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
+<STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>                     Library calls                    <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>newpad</STRONG>, <STRONG>subpad</STRONG>, <STRONG>prefresh</STRONG>, <STRONG>pnoutrefresh</STRONG>, <STRONG>pechochar</STRONG>, <STRONG>pecho_wchar</STRONG> - create
-       and display <STRONG>curses</STRONG> pads
+       and display <EM>curses</EM> pads
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>WINDOW</STRONG> <STRONG>*newpad(int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>);</STRONG>
-       <STRONG>WINDOW</STRONG> <STRONG>*subpad(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
+       <STRONG>WINDOW</STRONG> <STRONG>*subpad(WINDOW</STRONG> <STRONG>*</STRONG><EM>parent</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
              <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>prefresh(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pmincol</EM><STRONG>,</STRONG>
              <STRONG>int</STRONG> <EM>sminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxcol</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>pnoutrefresh(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pmincol</EM><STRONG>,</STRONG>
              <STRONG>int</STRONG> <EM>sminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxcol</EM><STRONG>);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>pechochar(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>pecho_wchar(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       A <EM>curses</EM> <EM>pad</EM> is like a window, except that it is not restricted by  the
+       screen  size,  and is not necessarily associated with a particular part
+       of the screen.  Pads can be used when a large window  is  needed,  only
+       part  of  which  is  to  be  visible  on  the  screen.   Pads  are  not
+       automatically refreshed by scrolling or input-echoing operations.
+
+       Pads  cannot  be  refreshed  with   <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG>;   use   <STRONG>prefresh</STRONG>   or
+       <STRONG>pnoutrefresh</STRONG> instead.
+
 
 </PRE><H3><a name="h3-newpad">newpad</a></H3><PRE>
-       The <STRONG>newpad</STRONG> routine creates and returns a pointer  to  a  new  pad  data
-       structure  with  the given number of lines, <EM>nlines</EM>, and columns, <EM>ncols</EM>.
-       A pad is like a window, except that it is not restricted by the  screen
-       size,  and  is not necessarily associated with a particular part of the
-       screen.  Pads can be used when a large window is  needed,  and  only  a
-       part  of  the  window will be on the screen at one time.  Automatic re-
-       freshes of pads (e.g., from scrolling or echoing of input) do  not  oc-
-       cur.
-
-       It  is  not  legal to call <STRONG>wrefresh</STRONG> with a <EM>pad</EM> as an argument; the rou-
-       tines <STRONG>prefresh</STRONG> or <STRONG>pnoutrefresh</STRONG> should be  called  instead.   Note  that
-       these routines require additional parameters to specify the part of the
-       pad to be displayed and the location on the screen to be used  for  the
-       display.
+       <STRONG>newpad</STRONG>  creates  and returns a pointer to a new pad data structure with
+       the given number of lines, <EM>nlines</EM>, and columns, <EM>ncols</EM>.
 
 
 </PRE><H3><a name="h3-subpad">subpad</a></H3><PRE>
-       The  <STRONG>subpad</STRONG> routine creates and returns a pointer to a subwindow within
-       a pad with the given number of lines, <EM>nlines</EM>, and columns, <EM>ncols</EM>.   Un-
-       like  <STRONG>subwin</STRONG>,  which uses screen coordinates, the window is at position
-       (<EM>begin</EM>_<EM>x</EM><STRONG>,</STRONG> <EM>begin</EM>_<EM>y</EM>) on the pad.  The window is made in the middle of the
-       window  <EM>orig</EM>,  so  that changes made to one window affect both windows.
-       During the use of this routine, it will  often  be  necessary  to  call
-       <STRONG>touchwin</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> before calling <STRONG>prefresh</STRONG>.
+       <STRONG>subpad</STRONG> creates and returns a pointer to a subwindow within a  pad  with
+       the  given  number  of  lines,  <EM>nlines</EM>,  and  columns,  <EM>ncols</EM>.   Unlike
+       <STRONG><A HREF="subwin.3x.html">subwin(3x)</A></STRONG>, which uses screen coordinates, the new  pad  is  placed  at
+       position (<EM>begin</EM><STRONG>_</STRONG><EM>y</EM>, <EM>begin</EM><STRONG>_</STRONG><EM>x</EM>) relative to its parent.  Thus, changes made
+       to one pad can affect both.  When operating on a subpad,  it  is  often
+       necessary  to  call  <STRONG><A HREF="curs_touch.3x.html">touchwin(3x)</A></STRONG>  or  <STRONG><A HREF="curs_touch.3x.html">touchline(3x)</A></STRONG>  on  <EM>parent</EM> before
+       calling <STRONG>prefresh</STRONG>.
 
 
-</PRE><H3><a name="h3-prefresh_-pnoutrefresh">prefresh, pnoutrefresh</a></H3><PRE>
-       The  <STRONG>prefresh</STRONG>  and  <STRONG>pnoutrefresh</STRONG> routines are analogous to <STRONG>wrefresh</STRONG> and
-       <STRONG>wnoutrefresh</STRONG> except that they relate to pads instead of  windows.   The
-       additional  parameters  are needed to indicate what part of the pad and
-       screen are involved.
+</PRE><H3><a name="h3-prefresh_pnoutrefresh">prefresh, pnoutrefresh</a></H3><PRE>
+       <STRONG>prefresh</STRONG>  and  <STRONG>pnoutrefresh</STRONG>   are   analogous   to   <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG>   and
+       <STRONG><A HREF="curs_refresh.3x.html">wnoutrefresh(3x)</A></STRONG>  except that they operate on pads rather than windows.
+       They require additional parameters are needed to indicate what portions
+       of the pad and screen are involved.
 
-       <STRONG>o</STRONG>   The <EM>pminrow</EM> and <EM>pmincol</EM> parameters specify the upper left-hand cor-
-           ner of the rectangle to be displayed in the pad.
+       <STRONG>o</STRONG>   <EM>pminrow</EM>  and  <EM>pmincol</EM>  specify  the  upper  left-hand  corner  of a
+           rectangular view of the pad.
 
-       <STRONG>o</STRONG>   The  <EM>sminrow</EM>,  <EM>smincol</EM>, <EM>smaxrow</EM>, and <EM>smaxcol</EM> parameters specify the
-           edges of the rectangle to be displayed on the screen.
+       <STRONG>o</STRONG>   <EM>sminrow</EM>, <EM>smincol</EM>, <EM>smaxrow</EM>, and <EM>smaxcol</EM> specify the vertices of  the
+           rectangle to be displayed on the screen.
 
        The lower right-hand corner of the rectangle to be displayed in the pad
        is calculated from the screen coordinates, since the rectangles must be
        the same size.  Both rectangles must be entirely contained within their
-       respective  structures.   Negative values of <EM>pminrow</EM>, <EM>pmincol</EM>, <EM>sminrow</EM>,
-       or <EM>smincol</EM> are treated as if they were zero.
+       respective structures.  <EM>curses</EM> treats negative values of any  of  these
+       parameters as zero.
 
 
 </PRE><H3><a name="h3-pechochar">pechochar</a></H3><PRE>
-       The <STRONG>pechochar</STRONG> routine is functionally equivalent to  a  call  to  <STRONG>addch</STRONG>
-       followed  by a call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>, a call to <STRONG>waddch</STRONG> followed by a call
-       to <STRONG>wrefresh</STRONG>, or a call to <STRONG>waddch</STRONG> followed by a call to  <STRONG>prefresh</STRONG>.   The
-       knowledge  that  only  a single character is being output is taken into
-       consideration and, for non-control characters, a  considerable  perfor-
-       mance  gain  might  be  seen  by  using these routines instead of their
-       equivalents.  In the case of <STRONG>pechochar</STRONG>, the last location of the pad on
-       the screen is reused for the arguments to <STRONG>prefresh</STRONG>.
+       <STRONG>pechochar</STRONG>  is functionally equivalent to calling <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG> followed by
+       <STRONG>prefresh</STRONG>.  It suggests to the  <EM>curses</EM>  optimizer  that  only  a  single
+       character  is  being  output; a considerable performance benefit may be
+       thus enjoyed.  The location of the character <EM>ch</EM> written to the  pad  is
+       used to populate the arguments to <STRONG>prefresh</STRONG>.
 
 
 </PRE><H3><a name="h3-pecho_wchar">pecho_wchar</a></H3><PRE>
-       The  <STRONG>pecho_wchar</STRONG>  function  is the analogous wide-character form of <STRONG>pe-</STRONG>
-       <STRONG>chochar</STRONG>.  It outputs one character to a pad and  immediately  refreshes
-       the pad.  It does this by a call to <STRONG>wadd_wch</STRONG> followed by a call to <STRONG>pre-</STRONG>
-       <STRONG>fresh</STRONG>.
+       <STRONG>pecho_wchar</STRONG> is functionally equivalent to calling <STRONG><A HREF="curs_add_wch.3x.html">wadd_wch(3x)</A></STRONG> followed
+       by <STRONG>prefresh</STRONG>.  It suggests to the <EM>curses</EM> optimizer that  only  a  single
+       wide  character is being output; a considerable performance benefit may
+       be thus enjoyed.  The location of the character <EM>wch</EM> written to the  pad
+       is used to populate the arguments to <STRONG>prefresh</STRONG>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       Routines that return an integer return <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>  (SVr4
-       only  specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful com-
-       pletion.
+       Functions  that  return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4
+       specifies only "an integer  value  other  than  <STRONG>ERR</STRONG>")  upon  successful
+       completion.
 
-       Routines that return pointers return <STRONG>NULL</STRONG> on error, and  set  <STRONG>errno</STRONG>  to
+       Functions  that  return pointers return <STRONG>NULL</STRONG> on error, and set <STRONG>errno</STRONG> to
        <STRONG>ENOMEM</STRONG>.
 
-       X/Open does not define any error conditions.  In this implementation
+       X/Open  Curses  does  not  specify  any  error  conditions.   In   this
+       implementation
 
           <STRONG>prefresh</STRONG> and <STRONG>pnoutrefresh</STRONG>
                return an error if the window pointer is null, or if the window
                is not really a pad or if the  area  to  refresh  extends  off-
-               screen or if the minimum coordinates are greater than the maxi-
-               mum.
+               screen  or  if  the  minimum  coordinates  are greater than the
+               maximum.
 
           <STRONG>pechochar</STRONG>
-               returns an error if the window is not really a pad, and the as-
-               sociated call to <STRONG>wechochar</STRONG> returns an error.
+               returns an error if the window is not really  a  pad,  and  the
+               associated call to <STRONG>wechochar</STRONG> returns an error.
 
           <STRONG>pecho_wchar</STRONG>
-               returns an error if the window is not really a pad, and the as-
-               sociated call to <STRONG>wecho_wchar</STRONG> returns an error.
+               returns  an  error  if  the window is not really a pad, and the
+               associated call to <STRONG>wecho_wchar</STRONG> returns an error.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>pechochar</STRONG> may be a macro.
+       <STRONG>pechochar</STRONG> may be a macro.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       BSD curses has no <EM>pad</EM> feature.
+       BSD <EM>curses</EM> has no <EM>pad</EM> feature.
 
-       SVr2 curses (1986) provided the <STRONG>newpad</STRONG> and related functions, document-
-       ing  them  in  a single line each.  SVr3 (1987) provided more extensive
-       documentation.
+       SVr2  <EM>curses</EM>  (1986)  provided  the  <STRONG>newpad</STRONG>  and   related   functions,
+       documenting  them  in  a  single  line each.  SVr3 (1987) provided more
+       extensive documentation.
 
        The documentation does not explain the term <EM>pad</EM>.  However,  the  Apollo
        <EM>Aegis</EM> workstation operating system supported a graphical <EM>pad</EM> feature:
 
-       <STRONG>o</STRONG>   These  graphical pads could be much larger than the computer's dis-
-           play.
+       <STRONG>o</STRONG>   These  graphical  pads  could  be  much  larger than the computer's
+           display.
 
-       <STRONG>o</STRONG>   The read-only output from a command could be scrolled back  to  in-
-           spect, and select text from the pad.
+       <STRONG>o</STRONG>   The read-only output from a  command  could  be  scrolled  back  to
+           inspect, and select text from the pad.
 
        The two uses may be related.
 
-       The  XSI  Curses  standard,  Issue 4 describes these functions, without
-       significant change from the SVr3 documentation.  It describes no  error
-       conditions.   The  behavior of <STRONG>subpad</STRONG> if the parent window is not a pad
-       is undocumented, and is not checked by the vendor Unix implementations:
+       X/Open  Curses,  Issue 4 describes these functions, without significant
+       change from the SVr3 documentation.  It describes no error  conditions.
+       The  behavior  of  <STRONG>subpad</STRONG>  if  the  parent  window  is  not  a  pad  is
+       undocumented, and is not checked by the vendor Unix implementations:
 
-       <STRONG>o</STRONG>   SVr4 curses sets a flag in the <STRONG>WINDOW</STRONG>  structure  in  <STRONG>newpad</STRONG>  which
+       <STRONG>o</STRONG>   SVr4 <EM>curses</EM> sets a flag in the <EM>WINDOW</EM>  structure  in  <STRONG>newpad</STRONG>  which
            tells if the window is a <EM>pad</EM>.
 
            However,  it  uses this information only in <STRONG>waddch</STRONG> (to decide if it
            does  not  check  in  <STRONG>wrefresh</STRONG>  to ensure that the pad is refreshed
            properly.
 
-       <STRONG>o</STRONG>   Solaris X/Open Curses checks if a window is a pad in  <STRONG>wnoutrefresh</STRONG>,
+       <STRONG>o</STRONG>   Solaris <EM>xcurses</EM> checks whether a window is a pad  in  <STRONG>wnoutrefresh</STRONG>,
            returning <STRONG>ERR</STRONG> in that case.
 
            However,  it only sets the flag for subwindows if the parent window
-           is a pad.  Its <STRONG>newpad</STRONG> function does not set this information.  Con-
-           sequently, the check will never fail.
+           is a pad.  Its <STRONG>newpad</STRONG>  function  does  not  set  this  information.
+           Consequently, the check will never fail.
 
            It  makes no comparable check in <STRONG>pnoutrefresh</STRONG>, though interestingly
            enough, a comment in the source code states  that  the  lack  of  a
            check was an MKS extension.
 
-       <STRONG>o</STRONG>   NetBSD  7 curses sets a flag in the <STRONG>WINDOW</STRONG> structure for <STRONG>newpad</STRONG> and
-           <STRONG>subpad</STRONG>, using this to help with the  distinction  between  <STRONG>wnoutre-</STRONG>
-           <STRONG>fresh</STRONG> and <STRONG>pnoutrefresh</STRONG>.
+       <STRONG>o</STRONG>   NetBSD  7 <EM>curses</EM> sets a flag in the <EM>WINDOW</EM> structure for <STRONG>newpad</STRONG> and
+           <STRONG>subpad</STRONG>,  using  this  to  help   with   the   distinction   between
+           <STRONG>wnoutrefresh</STRONG> and <STRONG>pnoutrefresh</STRONG>.
 
            It  does  not  check for the case where a subwindow is created in a
            pad using <STRONG>subwin</STRONG> or <STRONG>derwin</STRONG>.
 
        This implementation
 
-       <STRONG>o</STRONG>   sets a flag in the <STRONG>WINDOW</STRONG> structure for <STRONG>newpad</STRONG> and <STRONG>subpad</STRONG>,
+       <STRONG>o</STRONG>   sets a flag in the <EM>WINDOW</EM> structure for <STRONG>newpad</STRONG> and <STRONG>subpad</STRONG>,
 
        <STRONG>o</STRONG>   allows a <STRONG>subwin</STRONG> or <STRONG>derwin</STRONG> call to succeed having a  pad  parent  by
            forcing the subwindow to be a pad,
        <STRONG>o</STRONG>   checks  in  both  <STRONG>wnoutrefresh</STRONG> and <STRONG>pnoutrefresh</STRONG> to ensure that pads
            and windows are handled distinctly, and
 
-       <STRONG>o</STRONG>   ensures that <STRONG>dupwin</STRONG> and <STRONG>getwin</STRONG> treat pads  versus  windows  consis-
-           tently.
+       <STRONG>o</STRONG>   ensures  that  <STRONG>dupwin</STRONG>  and  <STRONG>getwin</STRONG>  treat   pads   versus   windows
+           consistently.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
 
 
 
-                                                                  <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
+ncurses 6.5                       2024-04-27                      <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <ul>
 <li><a href="#h3-newpad">newpad</a></li>
 <li><a href="#h3-subpad">subpad</a></li>
-<li><a href="#h3-prefresh_-pnoutrefresh">prefresh, pnoutrefresh</a></li>
+<li><a href="#h3-prefresh_pnoutrefresh">prefresh, pnoutrefresh</a></li>
 <li><a href="#h3-pechochar">pechochar</a></li>
 <li><a href="#h3-pecho_wchar">pecho_wchar</a></li>
 </ul>
index 24c62d2e59cb75c553c939f56d033236214ecf75..92fb48d478568df3f725a757c9ded25cf730eb53 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_print.3x,v 1.19 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_print.3x,v 1.38 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_print 3x</TITLE>
+<TITLE>curs_print 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_print 3x</H1>
+<H1 class="no-header">curs_print 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>
+<STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>mcprint</STRONG> - ship binary data to printer
+       <STRONG>mcprint</STRONG> - write binary data to printer using <EM>terminfo</EM> capabilities
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        some  reason.   In  this  case,  <STRONG>errno</STRONG>  will  contain  either  an error
        associated with <STRONG>write(2)</STRONG> or one of the following:
 
-       ENODEV
+       <STRONG>ENODEV</STRONG>
             Capabilities for printer redirection do not exist.
 
-       ENOMEM
+       <STRONG>ENOMEM</STRONG>
             Couldn't allocate sufficient memory to buffer the printer write.
 
        When <STRONG>mcprint</STRONG> succeeds, it returns the  number  of  characters  actually
        sent to the printer.
 
 
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       <STRONG>mcprint</STRONG> was designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and was not found in SVr4 <EM>curses</EM>,
+       4.4BSD <EM>curses</EM>, or any other previous curses implementation.
+
+
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The <STRONG>mcprint</STRONG> call was designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and is not found in SVr4
-       curses, 4.4BSD curses, or any other previous version of curses.
+       Applications employing this <EM>ncurses</EM> extension should condition its  use
+       on the visibility of the <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
 
 
 </PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
-       Padding in the <STRONG>mc5p</STRONG>, <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities will not be interpreted.
+       Padding in the <STRONG>mc5p</STRONG>, <STRONG>mc4</STRONG>, and <STRONG>mc5</STRONG> capabilities is not interpreted.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
 
 
 
-                                                                <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                    <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-BUGS">BUGS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
index 90a016cf79044fad7f42fb8efc832ec6ed3b44e5..259b56121b939586ffa2db9615abb2a4bc28721b 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_printw.3x,v 1.32 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_printw.3x,v 1.53 2024/04/20 19:18:18 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_printw 3x</TITLE>
+<TITLE>curs_printw 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_printw 3x</H1>
+<H1 class="no-header">curs_printw 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>                                                <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
+<STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG>, <STRONG>mvwprintw</STRONG>, <STRONG>vwprintw</STRONG>, <STRONG>vw_printw</STRONG> - print
-       formatted output in <STRONG>curses</STRONG> windows
+       <STRONG>printw</STRONG>,  <STRONG>wprintw</STRONG>,  <STRONG>mvprintw</STRONG>,  <STRONG>mvwprintw</STRONG>,  <STRONG>vwprintw</STRONG>,  <STRONG>vw_printw</STRONG>  - write
+       formatted output to a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>int</STRONG> <STRONG>wprintw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvprintw(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvwprintw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>vw_printw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>va_list</STRONG> <EM>varglist</EM><STRONG>);</STRONG>
 
-       /* obsolete */
+       <EM>/*</EM> <EM>obsolete</EM> <EM>*/</EM>
        <STRONG>int</STRONG> <STRONG>vwprintw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>va_list</STRONG> <EM>varglist</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG> and <STRONG>mvwprintw</STRONG> routines are  analogous  to
-       <STRONG>printf</STRONG>  [see <STRONG>printf(3)</STRONG>].  In effect, the string that would be output by
-       <STRONG>printf</STRONG> is output instead as though <STRONG>waddstr</STRONG> were used on the given  win-
-       dow.
+       <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG>, and <STRONG>mvwprintw</STRONG> are  analogous  to  <STRONG>printf(3)</STRONG>.
+       In  effect,  the  string  that  would be output by <STRONG>printf(3)</STRONG> is instead
+       output as though <STRONG><A HREF="curs_addstr.3x.html">waddstr(3x)</A></STRONG> were used with  <EM>win</EM>  (or  <STRONG>stdscr</STRONG>)  as  its
+       first argument.
 
-       The  <STRONG>vwprintw</STRONG>  and  <STRONG>vw_printw</STRONG>  routines  are  analogous to <STRONG>vprintf</STRONG> [see
-       <STRONG>printf(3)</STRONG>] and perform a <STRONG>wprintw</STRONG> using a variable argument  list.   The
-       third  argument  is a <STRONG>va_list</STRONG>, a pointer to a list of arguments, as de-
-       fined in <STRONG>&lt;stdarg.h&gt;</STRONG>.
+       <STRONG>vwprintw</STRONG>  and  <STRONG>vw_printw</STRONG>  are  analogous  to  <STRONG>vprintf(3)</STRONG>, and perform a
+       <STRONG>wprintw</STRONG> using a variable  argument  list.   The  third  argument  is  a
+       <EM>va</EM><STRONG>_</STRONG><EM>list</EM>, a pointer to a list of arguments, as defined in <EM>stdarg.h</EM>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       Routines that return an integer return <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>  (SVr4
-       only  specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful com-
-       pletion.
-
-       X/Open defines no error conditions.  In this implementation,  an  error
-       may be returned if it cannot allocate enough memory for the buffer used
-       to format the results.  It will return an error if the  window  pointer
-       is null.
+       These functions return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon success.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       In <EM>ncurses</EM>, failure occurs if the library cannot allocate enough memory
+       for the buffer into which the output is formatted,  or  if  the  window
+       pointer <EM>win</EM> is null.
 
+       Functions  prefixed with "mv" first perform cursor movement and fail if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
-</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       While <STRONG>printw</STRONG> was implemented in 4BSD, it was unused until 4.2BSD (which
-       used it in games).  That early version of curses was before the ANSI  C
-       standard.   It  did not use &lt;varargs.h&gt;, though that was available.  In
-       1991 (a couple of years after SVr4 was generally available,  and  after
-       the  C  standard  was published), other developers updated the library,
-       using &lt;stdarg.h&gt; internally in 4.4BSD curses.  Even with this  improve-
-       ment, BSD curses did not use function prototypes (or even declare func-
-       tions) in the &lt;curses.h&gt; header until 1992.
 
-       SVr2 documented <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>  tersely  as  "printf  on  <EM>stdscr</EM>"  and
-       tersely as "printf on <EM>win</EM>", respectively.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       No wide character counterpart  functions  are  defined  by  the  "wide"
+       <EM>ncurses</EM> configuration nor by any standard.  To format and write a wide-
+       character string to a <EM>curses</EM> window,  consider  using  <STRONG>swprintf(3)</STRONG>  and
+       <STRONG><A HREF="curs_addwstr.3x.html">waddwstr(3x)</A></STRONG> or similar.
 
-       SVr3  added  <STRONG>mvprintw</STRONG>,  and <STRONG>mvwprintw</STRONG>, with a three-line summary saying
-       that they were analogous to <STRONG>printf(3)</STRONG>, explaining that the string which
-       would be output from <STRONG>printf(3)</STRONG> would instead be output using <STRONG>waddstr</STRONG> on
-       the given window.  SVr3 also added <STRONG>vwprintw</STRONG>, saying that the third  pa-
-       rameter  is a <STRONG>va_list</STRONG>, defined in &lt;varargs.h&gt;, and referring the reader
-       to the manual pages for <EM>varargs</EM> and <STRONG>vprintf</STRONG> for detailed descriptions.
 
-       SVr4 added  no  new  variations  of  <STRONG>printw</STRONG>,  but  provided  for  using
-       &lt;varargs.h&gt; or &lt;stdarg.h&gt; to define the <STRONG>va_list</STRONG> type.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       X/Open  Curses,  Issue  4  describes  these functions.  It specifies no
+       error conditions for them.
 
-       X/Open  Curses  added  <STRONG>vw_printw</STRONG>  to replace <STRONG>vwprintw</STRONG>, stating that its
-       <STRONG>va_list</STRONG> definition requires &lt;stdarg.h&gt;.
+       <EM>ncurses</EM> defines <STRONG>vw_printw</STRONG> and <STRONG>vwprintw</STRONG> identically  to  support  legacy
+       applications.  However, the latter is obsolete.
 
+       <STRONG>o</STRONG>   X/Open  Curses,  Issue  4  Version  2  (1996),  marked  <STRONG>vwprintw</STRONG> as
+           requiring <EM>varargs.h</EM> and "TO BE WITHDRAWN", and specified  <STRONG>vw_printw</STRONG>
+           using the <EM>stdarg.h</EM> interface.
 
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       In this implementation, <STRONG>vw_printw</STRONG> and <STRONG>vwprintw</STRONG> are equivalent, to  sup-
-       port legacy applications.  However, the latter (<STRONG>vwprintw</STRONG>) is obsolete:
+       <STRONG>o</STRONG>   X/Open  Curses,  Issue  5,  Draft 2 (December 2007) marked <STRONG>vwprintw</STRONG>
+           (along with <STRONG>vwscanw</STRONG> and the <EM>termcap</EM> interface) as withdrawn.  After
+           incorporating  review  comments, this became X/Open Curses, Issue 7
+           (2009).
 
-       <STRONG>o</STRONG>   The  XSI  Curses  standard, Issue 4 described these functions.  The
-           function <STRONG>vwprintw</STRONG> is marked TO BE WITHDRAWN, and is to be  replaced
-           by a function <STRONG>vw_printw</STRONG> using the <STRONG>&lt;stdarg.h&gt;</STRONG> interface.
+       <STRONG>o</STRONG>   <EM>ncurses</EM> provides <STRONG>vwprintw</STRONG>, but marks it as deprecated.
 
-       <STRONG>o</STRONG>   The  Single Unix Specification, Version 2 states that <STRONG>vw_printw</STRONG>  is
-           preferred  to  <STRONG>vwprintw</STRONG>  since  the   latter   requires   including
-           <STRONG>&lt;varargs.h&gt;</STRONG>,  which  cannot be used in the same file as <STRONG>&lt;stdarg.h&gt;</STRONG>.
-           This implementation uses <STRONG>&lt;stdarg.h&gt;</STRONG> for both, because  that  header
-           is included in <STRONG>&lt;curses.h</STRONG>&gt;.
 
-       <STRONG>o</STRONG>   X/Open  Curses, Issue 5 (December 2007) marked <STRONG>vwprintw</STRONG> (along with
-           <STRONG>vwscanw</STRONG> and the termcap interface) as withdrawn.
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       While <STRONG>printw</STRONG> was implemented in 4BSD (November  1980),  it  was  unused
+       until  4.2BSD  (August  1983), which employed it for games.  That early
+       version of <EM>curses</EM> preceded the ANSI C standard of 1989.  It did not use
+       <EM>varargs.h</EM>,  though  that  had been available since Seventh Edition Unix
+       (1979).  In 1991 (a couple of years after SVr4 was generally available,
+       and  after  the C standard was published), other developers updated the
+       library, using <EM>stdarg.h</EM> internally in 4.4BSD <EM>curses</EM>.   Even  with  this
+       improvement,  BSD  <EM>curses</EM>  did  not  use  function prototypes (nor even
+       declare functions) in <EM>curses.h</EM> until 1992.
+
+       SVr2 (1984) documented <STRONG>printw</STRONG> and <STRONG>wprintw</STRONG> tersely as "printf on <STRONG>stdscr</STRONG>"
+       and "printf on <EM>win</EM>", respectively.
+
+       SVr3  (1987)  added  <STRONG>mvprintw</STRONG>  and <STRONG>mvwprintw</STRONG>, with a three-line summary
+       asserting that they were analogous to <STRONG>printf(3)</STRONG>,  explaining  that  the
+       string  that  <STRONG>printf(3)</STRONG> would write to the standard output stream would
+       instead be output  using  <STRONG>waddstr</STRONG>  to  the  given  window.   SVr3  also
+       implemented  <STRONG>vwprintw</STRONG>,  describing  its  third  parameter as a <EM>va</EM><STRONG>_</STRONG><EM>list</EM>,
+       defined in <EM>varargs.h</EM>, and referred the reader to the manual  pages  for
+       <EM>varargs</EM> and <EM>vprintf</EM> for detailed descriptions.
+
+       SVr4  (1989)  introduced  no new variations of <EM>printw</EM>, but provided for
+       using either <EM>varargs.h</EM> or <EM>stdarg.h</EM> to define the <EM>va</EM><STRONG>_</STRONG><EM>list</EM> type.
+
+       X/Open Curses, Issue 4 (1995), defined <STRONG>vw_printw</STRONG> to  replace  <STRONG>vwprintw</STRONG>,
+       stating that its <EM>va</EM><STRONG>_</STRONG><EM>list</EM> type is defined in <EM>stdarg.h</EM>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>, <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,
-       <STRONG>printf(3)</STRONG>, <STRONG>vprintf(3)</STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>, <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>, <STRONG>printf(3)</STRONG>, <STRONG>vprintf(3)</STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 7a81e03ed321300590fe602194fa41787e0efd05..4beec325ad4481e1c0e715973598e8c367b46c2c 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_refresh.3x,v 1.25 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_refresh.3x,v 1.46 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_refresh 3x</TITLE>
+<TITLE>curs_refresh 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_refresh 3x</H1>
+<H1 class="no-header">curs_refresh 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>                                              <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>doupdate</STRONG>, <STRONG>redrawwin</STRONG>, <STRONG>refresh</STRONG>, <STRONG>wnoutrefresh</STRONG>, <STRONG>wredrawln</STRONG>, <STRONG>wrefresh</STRONG> -
-       refresh <STRONG>curses</STRONG> windows and lines
+       <STRONG>doupdate</STRONG>,  <STRONG>redrawwin</STRONG>,  <STRONG>refresh</STRONG>,  <STRONG>wnoutrefresh</STRONG>,  <STRONG>wredrawln</STRONG>,  <STRONG>wrefresh</STRONG>  -
+       refresh <EM>curses</EM> windows or lines thereupon
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
-</PRE><H3><a name="h3-refresh_wrefresh">refresh/wrefresh</a></H3><PRE>
+</PRE><H3><a name="h3-refresh_wrefresh">refreshwrefresh</a></H3><PRE>
        The <STRONG>refresh</STRONG> and <STRONG>wrefresh</STRONG> routines (or <STRONG>wnoutrefresh</STRONG> and  <STRONG>doupdate</STRONG>)  must
-       be called to get actual output to the terminal, as other routines mere-
-       ly manipulate data structures.  The routine <STRONG>wrefresh</STRONG> copies  the  named
-       window  to  the  <EM>physical</EM>  <EM>screen</EM>,  taking into account what is already
-       there to do optimizations.  The <STRONG>refresh</STRONG> routine is the same, using <STRONG>std-</STRONG>
-       <STRONG>scr</STRONG> as the default window.  Unless <STRONG>leaveok</STRONG> has been enabled, the physi-
-       cal cursor of the terminal is left at the location of  the  cursor  for
-       that window.
+       be  called  to  get  actual  output  to the terminal, as other routines
+       merely manipulate data structures.  The  routine  <STRONG>wrefresh</STRONG>  copies  the
+       named  window  to  the  <EM>physical</EM>  <EM>screen</EM>,  taking  into account what is
+       already there to do optimizations.  The <STRONG>refresh</STRONG> routine  is  the  same,
+       using  <STRONG>stdscr</STRONG>  as  the  default  window.   Unless  <STRONG><A HREF="leaveok.3x.html">leaveok(3x)</A></STRONG> has been
+       enabled, the physical cursor of the terminal is left at the location of
+       the cursor for that window.
 
 
-</PRE><H3><a name="h3-wnoutrefresh_doupdate">wnoutrefresh/doupdate</a></H3><PRE>
+</PRE><H3><a name="h3-wnoutrefresh_doupdate">wnoutrefreshdoupdate</a></H3><PRE>
        The <STRONG>wnoutrefresh</STRONG> and <STRONG>doupdate</STRONG> routines allow multiple updates with more
-       efficiency than <STRONG>wrefresh</STRONG> alone.  In addition to all the  window  struc-
-       tures,  <STRONG>curses</STRONG>  keeps  two  data  structures  representing the terminal
+       efficiency  than  <STRONG>wrefresh</STRONG>  alone.   In  addition  to  all  the  window
+       structures,  <STRONG>curses</STRONG> keeps two data structures representing the terminal
        screen:
 
        <STRONG>o</STRONG>   a <EM>physical</EM> <EM>screen</EM>, describing what is actually on the screen, and
        If the programmer wishes to output several windows at once, a series of
        calls to <STRONG>wrefresh</STRONG> results in  alternating  calls  to  <STRONG>wnoutrefresh</STRONG>  and
        <STRONG>doupdate</STRONG>,  causing  several  bursts  of output to the screen.  By first
-       calling <STRONG>wnoutrefresh</STRONG> for each window, it is then possible to call <STRONG>doup-</STRONG>
-       <STRONG>date</STRONG>  once,  resulting  in  only  one burst of output, with fewer total
+       calling <STRONG>wnoutrefresh</STRONG> for each window,  it  is  then  possible  to  call
+       <STRONG>doupdate</STRONG>  once, resulting in only one burst of output, with fewer total
        characters transmitted and less CPU time used.
 
-       If the <EM>win</EM> argument to <STRONG>wrefresh</STRONG> is the <EM>physical</EM> <EM>screen</EM> (i.e., the glob-
-       al  variable  <STRONG>curscr</STRONG>),  the screen is immediately cleared and repainted
-       from scratch.
+       If the <EM>win</EM> argument to <STRONG>wrefresh</STRONG>  is  the  <EM>physical</EM>  <EM>screen</EM>  (i.e.,  the
+       global   variable  <STRONG>curscr</STRONG>),  the  screen  is  immediately  cleared  and
+       repainted from scratch.
 
-       The phrase "copies the named window to the virtual screen" above is am-
-       biguous.   What actually happens is that all <EM>touched</EM> (changed) lines in
-       the window are copied to the virtual  screen.   This  affects  programs
+       The phrase "copies the named window to the  virtual  screen"  above  is
+       ambiguous.   What  actually happens is that all <EM>touched</EM> (changed) lines
+       in the window are copied to the virtual screen.  This affects  programs
        that use overlapping windows; it means that if two windows overlap, you
-       can refresh them in either order and the overlap region will  be  modi-
-       fied  only  when  it  is  explicitly  changed.  (But see the section on
+       can refresh them in  either  order  and  the  overlap  region  will  be
+       modified  only  when it is explicitly changed.  (But see the section on
        <STRONG>PORTABILITY</STRONG> below for a warning about exploiting this behavior.)
 
 
-</PRE><H3><a name="h3-wredrawln_redrawwin">wredrawln/redrawwin</a></H3><PRE>
+</PRE><H3><a name="h3-wredrawln_redrawwin">wredrawlnredrawwin</a></H3><PRE>
        The <STRONG>wredrawln</STRONG> routine indicates to <STRONG>curses</STRONG> that some  screen  lines  are
        corrupted  and  should  be  thrown away before anything is written over
-       them.  It touches the indicated lines (marking them changed).  The rou-
-       tine <STRONG>redrawwin</STRONG> touches the entire window.
+       them.  It touches the indicated  lines  (marking  them  changed).   The
+       routine <STRONG>redrawwin</STRONG> touches the entire window.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       Routines  that  return an integer return <STRONG>ERR</STRONG> upon failure, and <STRONG>OK</STRONG> (SVr4
-       only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful  com-
-       pletion.
+       These  routines  return  the  integer  <STRONG>ERR</STRONG>  upon  failure  and <STRONG>OK</STRONG> (SVr4
+       specifies only "an integer  value  other  than  <STRONG>ERR</STRONG>")  upon  successful
+       completion.
 
-       X/Open does not define any error conditions.  In this implementation
+       X/Open   Curses  does  not  specify  any  error  conditions.   In  this
+       implementation
 
           <STRONG>wnoutrefresh</STRONG>
-               returns  an error if the window pointer is null, or if the win-
-               dow is really a pad.
+               returns an error if the window  pointer  is  null,  or  if  the
+               window is really a pad.
 
           <STRONG>wredrawln</STRONG>
-               returns an error if the associated call to <STRONG>touchln</STRONG>  returns  an
+               returns  an  error if the associated call to <STRONG>touchln</STRONG> returns an
                error.
 
 
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The XSI Curses standard, Issue 4 describes these functions.
+       X/Open Curses, Issue 4 describes these functions.
 
-       Whether  <STRONG>wnoutrefresh</STRONG>  copies to the virtual screen the entire contents
+       Whether <STRONG>wnoutrefresh</STRONG> copies to the virtual screen the  entire  contents
        of a window or just its changed portions has never been well-documented
-       in  historic  curses  versions (including SVr4).  It might be unwise to
-       rely on either behavior in programs that might have to be  linked  with
+       in historic curses versions (including SVr4).  It might  be  unwise  to
+       rely  on  either behavior in programs that might have to be linked with
        other curses implementations.  Instead, you can do an explicit <STRONG>touchwin</STRONG>
-       before the <STRONG>wnoutrefresh</STRONG> call to guarantee an entire-contents copy  any-
-       where.
+       before  the  <STRONG>wnoutrefresh</STRONG>  call  to  guarantee  an entire-contents copy
+       anywhere.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                              <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                  <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-refresh_wrefresh">refresh/wrefresh</a></li>
-<li><a href="#h3-wnoutrefresh_doupdate">wnoutrefresh/doupdate</a></li>
-<li><a href="#h3-wredrawln_redrawwin">wredrawln/redrawwin</a></li>
+<li><a href="#h3-refresh_wrefresh">refreshwrefresh</a></li>
+<li><a href="#h3-wnoutrefresh_doupdate">wnoutrefreshdoupdate</a></li>
+<li><a href="#h3-wredrawln_redrawwin">wredrawlnredrawwin</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
index 19a8e6550e528d54db8731744b79e2693d25577a..d0b9b7947d47c6e55159f5f054b3f08d2a57edba 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_scanw.3x,v 1.32 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_scanw.3x,v 1.53 2024/04/20 19:18:18 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_scanw 3x</TITLE>
+<TITLE>curs_scanw 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_scanw 3x</H1>
+<H1 class="no-header">curs_scanw 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
+<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG>, <STRONG>mvscanw</STRONG>, <STRONG>mvwscanw</STRONG>, <STRONG>vwscanw</STRONG>, <STRONG>vw_scanw</STRONG> - convert formatted
-       input from a <STRONG>curses</STRONG> window
+       <STRONG>scanw</STRONG>,  <STRONG>wscanw</STRONG>,  <STRONG>mvscanw</STRONG>,  <STRONG>mvwscanw</STRONG>, <STRONG>vwscanw</STRONG>, <STRONG>vw_scanw</STRONG> - read formatted
+       input from a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
        <STRONG>int</STRONG> <STRONG>vw_scanw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>va_list</STRONG> <EM>varglist</EM><STRONG>);</STRONG>
 
-       /* obsolete */
+       <EM>/*</EM> <EM>obsolete</EM> <EM>*/</EM>
        <STRONG>int</STRONG> <STRONG>vwscanw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>va_list</STRONG> <EM>varglist</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG> and <STRONG>mvscanw</STRONG> routines  are  analogous  to  <STRONG>scanf</STRONG>  [see
-       <STRONG>scanf(3)</STRONG>].   The  effect  of  these  routines is as though <STRONG>wgetstr</STRONG> were
-       called on the  window,  and  the  resulting  line  used  as  input  for
-       <STRONG>sscanf(3)</STRONG>.   Fields which do not map to a variable in the <EM>fmt</EM> field are
-       lost.
+       <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG>, <STRONG>mvscanw</STRONG>, and <STRONG>mvwscanw</STRONG> are  analogous  to  <STRONG>scanf(3)</STRONG>.   In
+       effect,  they  call  <STRONG><A HREF="curs_getstr.3x.html">wgetstr(3x)</A></STRONG>  with  <EM>win</EM>  (or  <STRONG>stdscr</STRONG>)  as its first
+       argument,  then  attempt  conversion  of  the  resulting  string   with
+       <STRONG>vsscanf(3)</STRONG>.   Fields in the string that do not map to a variable in the
+       <EM>fmt</EM> parameter are discarded.
 
-       The <STRONG>vwscanw</STRONG> and <STRONG>vw_scanw</STRONG> routines are  analogous  to  <STRONG>vscanf(3)</STRONG>.   They
-       perform a <STRONG>wscanw</STRONG> using a variable argument list.  The third argument is
-       a <STRONG>va_list</STRONG>, a pointer to a list of arguments, as defined in <STRONG>&lt;stdarg.h&gt;</STRONG>.
+       <STRONG>vwscanw</STRONG> and <STRONG>vw_scanw</STRONG> are analogous to <STRONG>vscanf(3)</STRONG>, and perform  a  <STRONG>wscanw</STRONG>
+       using  a  variable  argument  list.  The third argument is a <EM>va</EM><STRONG>_</STRONG><EM>list</EM>, a
+       pointer to a list of arguments, as defined in <EM>stdarg.h</EM>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       <STRONG>vwscanw</STRONG> returns <STRONG>ERR</STRONG> on failure and an integer equal to  the  number  of
-       fields scanned on success.
+       These functions return <STRONG>ERR</STRONG>  upon  failure  and  otherwise  a  count  of
+       successful conversions; this quantity may be zero.
 
-       Applications  may  use the return value from the <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG>, <STRONG>mvscanw</STRONG>
-       and <STRONG>mvwscanw</STRONG> routines to determine the  number  of  fields  which  were
-       mapped in the call.
+       In  <EM>ncurses</EM>, failure occurs if <STRONG>vsscanf(3)</STRONG> returns <STRONG>EOF</STRONG>, or if the window
+       pointer <EM>win</EM> is null.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer is null.
+       Functions prefixed with "mv" first perform cursor movement and fail  if
+       the position (<EM>y</EM>, <EM>x</EM>) is outside the window boundaries.
 
 
-</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       While  <STRONG>scanw</STRONG>  was implemented in 4BSD, none of the BSD releases used it
-       until 4.4BSD (in a game).  That early version of curses was before  the
-       ANSI  C  standard.   It  did  not  use  &lt;varargs.h&gt;,  though  that  was
-       available.  In 1991  (a  couple  of  years  after  SVr4  was  generally
-       available,  and  after  the C standard was published), other developers
-       updated the library, using  &lt;stdarg.h&gt;  internally  in  4.4BSD  curses.
-       Even  with this improvement, BSD curses did not use function prototypes
-       (or even declare functions) in the &lt;curses.h&gt; header until 1992.
-
-       SVr2 documented <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG> tersely as  "scanf  through  <EM>stdscr</EM>"  and
-       tersely as "scanf through <EM>win</EM>", respectively.
-
-       SVr3 added <STRONG>mvscanw</STRONG>, and <STRONG>mvwscanw</STRONG>, with a three-line summary saying that
-       they were analogous to <STRONG>scanf(3)</STRONG>, explaining that the string which would
-       be  output  from  <STRONG>scanf(3)</STRONG> would instead be output using <STRONG>waddstr</STRONG> on the
-       given window.  SVr3 also added <STRONG>vwscanw</STRONG>, saying that the third parameter
-       is  a  <STRONG>va_list</STRONG>, defined in &lt;varargs.h&gt;, and referring the reader to the
-       manual  pages  for  <EM>varargs</EM>  and  <STRONG>vprintf</STRONG>  for  detailed  descriptions.
-       (Because the SVr3 documentation does not mention <STRONG>vscanf</STRONG>, that reference
-       to <STRONG>vprintf</STRONG> may not be an error).
-
-       SVr4  added  no  new  variations  of  <STRONG>scanw</STRONG>,  but  provided  for  using
-       &lt;varargs.h&gt; or &lt;stdarg.h&gt; to define the <STRONG>va_list</STRONG> type.
-
-       X/Open  Curses  added  <STRONG>vw_scanw</STRONG>  to  replace  <STRONG>vwscanw</STRONG>, stating that its
-       <STRONG>va_list</STRONG> definition requires &lt;stdarg.h&gt;.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       No  wide  character  counterpart  functions  are  defined by the "wide"
+       <EM>ncurses</EM> configuration nor by any standard.  They  are  unnecessary:  to
+       retrieve  and  convert  a  wide-character string from a <EM>curses</EM> terminal
+       keyboard, use these functions with the <STRONG>scanf(3)</STRONG> conversions  "%lc"  and
+       "%ls" for wide characters and strings, respectively.
+
+       <EM>ncurses</EM>  implements <STRONG>vsscanf(3)</STRONG> internally if it is unavailable when the
+       library is configured.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       In this implementation, <STRONG>vw_scanw</STRONG> and <STRONG>vwscanw</STRONG> are equivalent, to support
-       legacy applications.  However, the latter (<STRONG>vwscanw</STRONG>) is obsolete:
+       X/Open Curses, Issue 4 describes  these  functions.   It  specifies  no
+       error conditions for them.
+
+       <EM>ncurses</EM>  defines  <STRONG>vw_scanw</STRONG>  and  <STRONG>vwscanw</STRONG>  identically to support legacy
+       applications.  However, the latter is obsolete.
+
+       <STRONG>o</STRONG>   X/Open  Curses,  Issue  4  Version  2  (1996),  marked  <STRONG>vwscanw</STRONG>  as
+           requiring  <EM>varargs.h</EM>  and "TO BE WITHDRAWN", and specified <STRONG>vw_scanw</STRONG>
+           using the <EM>stdarg.h</EM> interface.
+
+       <STRONG>o</STRONG>   X/Open Curses, Issue 5, Draft  2  (December  2007)  marked  <STRONG>vwscanw</STRONG>
+           (along with <STRONG>vwscanw</STRONG> and the <EM>termcap</EM> interface) as withdrawn.  After
+           incorporating review comments, this became X/Open Curses,  Issue  7
+           (2009).
+
+       <STRONG>o</STRONG>   <EM>ncurses</EM> provides <STRONG>vwscanw</STRONG>, but marks it as deprecated.
+
+       X/Open Curses Issues 4 and 7 both state that these functions return <STRONG>ERR</STRONG>
+       or <STRONG>OK</STRONG>.  This is likely an erratum.
 
-       <STRONG>o</STRONG>   The  XSI Curses standard, Issue 4 described these functions, noting
-           that the function <STRONG>vwscanw</STRONG> is marked TO BE WITHDRAWN, and is  to  be
-           replaced by a function <STRONG>vw_scanw</STRONG> using the <STRONG>&lt;stdarg.h&gt;</STRONG> interface.
+       <STRONG>o</STRONG>   Since the underlying <STRONG>scanf(3)</STRONG>  returns  the  number  of  successful
+           conversions,  and  SVr4  <EM>curses</EM> was documented to use this feature,
+           this may have been an  editorial  solecism  introduced  by  X/Open,
+           rather than an intentional change.
 
-       <STRONG>o</STRONG>   The  Single  Unix Specification, Version 2 states that <STRONG>vw_scanw</STRONG>  is
-           preferred  to  <STRONG>vwscanw</STRONG>  since   the   latter   requires   including
-           <STRONG>&lt;varargs.h&gt;</STRONG>,  which  cannot be used in the same file as <STRONG>&lt;stdarg.h&gt;</STRONG>.
-           This implementation uses <STRONG>&lt;stdarg.h&gt;</STRONG> for both, because  that  header
-           is included in <STRONG>&lt;curses.h</STRONG>&gt;.
+       <STRONG>o</STRONG>   This  implementation retains compatibility with SVr4 <EM>curses</EM>.  As of
+           2018,  NetBSD  <EM>curses</EM>  also  returns  the  number   of   successful
+           conversions.   Both  <EM>ncurses</EM>  and  NetBSD <EM>curses</EM> call <STRONG>vsscanf(3)</STRONG> to
+           scan the string, which returns <STRONG>EOF</STRONG> on error.
 
-       <STRONG>o</STRONG>   X/Open  Curses,  Issue 5 (December 2007) marked <STRONG>vwscanw</STRONG> (along with
-           <STRONG>vwprintw</STRONG> and the termcap interface) as withdrawn.
+       <STRONG>o</STRONG>   Portable applications should test only if the return value is  <STRONG>ERR</STRONG>,
+           and  not  compare  it  to  <STRONG>OK</STRONG>,  since  that  value  (zero) might be
+           misleading.
 
-       Both XSI and The Single Unix Specification, Version 2 state that  these
-       functions return <STRONG>ERR</STRONG> or <STRONG>OK</STRONG>.
+           One portable way to get useful results  would  be  to  use  a  "%n"
+           conversion  at the end of the format string, and check the value of
+           the  corresponding  variable  to  determine  how  many  conversions
+           succeeded.
 
-       <STRONG>o</STRONG>   Since  the  underlying  <STRONG>scanf(3)</STRONG>  can  return  the  number of items
-           scanned, and the SVr4 code was documented to use this feature, this
-           is  probably  an  editing error which was introduced in XSI, rather
-           than being done intentionally.
 
-       <STRONG>o</STRONG>   This implementation  returns  the  number  of  items  scanned,  for
-           compatibility  with  SVr4  curses.   As of 2018, NetBSD curses also
-           returns the number of  items  scanned.   Both  ncurses  and  NetBSD
-           curses call <STRONG>vsscanf</STRONG> to scan the string, which returns <STRONG>EOF</STRONG> on error.
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       <STRONG>scanw</STRONG>  was  implemented  in 4BSD (November 1980); that early version of
+       <EM>curses</EM> preceded the ANSI C standard of 1989.  The function  was  unused
+       in  Berkeley  distributions  for  over  ten  years, until 4.4BSD, which
+       employed it in a game.  The 4BSD <STRONG>scanw</STRONG> did not  use  <EM>varargs.h</EM>,  though
+       that  had been available since Seventh Edition Unix (1979).  In 1991 (a
+       couple of years after SVr4 was generally available,  and  after  the  C
+       standard  was  published),  other developers updated the library, using
+       <EM>stdarg.h</EM> internally in 4.4BSD <EM>curses</EM>.  Even with this improvement,  BSD
+       <EM>curses</EM>  did not use function prototypes (nor even declare functions) in
+       <EM>curses.h</EM> until 1992.
+
+       SVr2 (1984) documented <STRONG>scanw</STRONG>  and  <STRONG>wscanw</STRONG>  tersely  as  "scanf  through
+       <STRONG>stdscr</STRONG>" and "scanf through <EM>win</EM>", respectively.
+
+       SVr3 (1987) added <STRONG>mvscanw</STRONG>, and <STRONG>mvwscanw</STRONG>, stating
+
+              "[t]hese routines correspond to <STRONG>scanf(3S)</STRONG>, as do their arguments
+              and return values.  <STRONG>wgetstr</STRONG>() is called on the window,  and  the
+              resulting line is used as input for the scan."
 
-       <STRONG>o</STRONG>   Portable  applications should only test if the return value is <STRONG>ERR</STRONG>,
-           since the <STRONG>OK</STRONG> value (zero) is likely to be misleading.
+       SVr3  also  implemented  <STRONG>vwscanw</STRONG>,  describing  its third parameter as a
+       <EM>va</EM><STRONG>_</STRONG><EM>list</EM>, defined in <EM>varargs.h</EM>, and referred the reader  to  the  manual
+       pages  for <EM>varargs</EM> and <EM>vprintf</EM> for detailed descriptions.  (Because the
+       SVr3 documentation does not mention <EM>vscanf</EM>, the  reference  to  <EM>vprintf</EM>
+       might not be an error).
 
-           One possible way to get useful results  would  be  to  use  a  "%n"
-           conversion at the end of the format string to ensure that something
-           was processed.
+       SVr4  (1989)  introduced  no  new variations of <EM>scanw</EM>, but provided for
+       using either <EM>varargs.h</EM> or <EM>stdarg.h</EM> to define the <EM>va</EM><STRONG>_</STRONG><EM>list</EM> type.
+
+       X/Open Curses, Issue 4 (1995), defined  <EM>vw</EM><STRONG>_</STRONG><EM>scanw</EM>  to  replace  <EM>vwscanw</EM>,
+       stating that its <EM>va</EM><STRONG>_</STRONG><EM>list</EM> type is defined in <EM>stdarg.h</EM>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>, <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,
-       <STRONG>scanf(3)</STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>, <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG>scanf(3)</STRONG>, <STRONG>vscanf(3)</STRONG>
 
 
 
-                                                                <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 7f964c92bb33ab20cbc5102808993f70d8f9cfb9..f1759cb3b70075e437001262acd4706a676519b6 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_scr_dump.3x,v 1.20 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_scr_dump.3x,v 1.43 2024/04/20 18:54:36 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_scr_dump 3x</TITLE>
+<TITLE>curs_scr_dump 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_scr_dump 3x</H1>
+<H1 class="no-header">curs_scr_dump 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>                                            <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
+<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>scr_dump</STRONG>, <STRONG>scr_restore</STRONG>, <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG> - read (write) a <STRONG>curses</STRONG> screen
-       from (to) a file
+       <STRONG>scr_dump</STRONG>,  <STRONG>scr_restore</STRONG>,  <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG> - read/write a <EM>curses</EM> screen
+       from/to a file
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       <EM>curses</EM> provides applications the ability to write the contents  of  the
+       screen  to  a  file and read them back.  To read/write a window (rather
+       than the whole screen) from/to a file, use <STRONG><A HREF="curs_util.3x.html">getwin(3x)</A></STRONG>  and  <STRONG><A HREF="curs_util.3x.html">putwin(3x)</A></STRONG>,
+       respectively.
+
 
 </PRE><H3><a name="h3-scr_dump">scr_dump</a></H3><PRE>
-       The <STRONG>scr_dump</STRONG> routine dumps the current contents of the  <EM>virtual</EM>  <EM>screen</EM>
-       to the file <EM>filename</EM>.
+       <STRONG>scr_dump</STRONG>  writes  to  <EM>filename</EM>  the contents of the virtual screen; see
+       <STRONG><A HREF="curs_variables.3x.html">curscr(3x)</A></STRONG>.
 
 
 </PRE><H3><a name="h3-scr_restore">scr_restore</a></H3><PRE>
-       The  <STRONG>scr_restore</STRONG>  routine  sets  the  <EM>virtual</EM> <EM>screen</EM> to the contents of
-       <EM>filename</EM>, which must have been written using <STRONG>scr_dump</STRONG>.  The  next  call
-       to  <STRONG>doupdate</STRONG>  restores  the <EM>physical</EM> <EM>screen</EM> to the way it looked in the
-       dump file.
+       <STRONG>scr_restore</STRONG> updates the virtual  screen  to  contain  the  contents  of
+       <EM>filename</EM>  (if  it  was  validly  written with <STRONG>scr_dump</STRONG>).  No refresh is
+       performed;  after  performing  any  further   desired   updates,   call
+       <STRONG><A HREF="curs_refresh.3x.html">doupdate(3x)</A></STRONG> or similar.
 
 
 </PRE><H3><a name="h3-scr_init">scr_init</a></H3><PRE>
-       The <STRONG>scr_init</STRONG> routine reads in the contents of <EM>filename</EM> and uses them to
-       initialize the <STRONG>curses</STRONG> data structures about what the terminal currently
-       has on its screen.  If the data is determined to be valid, <STRONG>curses</STRONG> bases
-       its  next update of the screen on this information rather than clearing
-       the  screen  and  starting  from  scratch.   <STRONG>scr_init</STRONG>  is  used   after
-       <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>  or  a  <STRONG>system(3)</STRONG>  call  to  share  the screen with another
-       process which has done a <STRONG>scr_dump</STRONG> after its <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> call.  The  data
-       is declared invalid
+       <STRONG>scr_init</STRONG>  reads <EM>filename</EM>, using it to initialize <EM>curses</EM> data structures
+       describing the state of the terminal screen.  If these data are  valid,
+       <EM>curses</EM>  bases  its next update of the screen on this information rather
+       than clearing it and starting from scratch.
+
+       The data fail the validity check
+
+       <STRONG>o</STRONG>   if the terminal employs <EM>terminfo</EM> capabilities <STRONG>exit_ca_mode</STRONG>  (<STRONG>rmcup</STRONG>)
+           or <STRONG>non_rev_rmcup</STRONG> (<STRONG>nrrmc</STRONG>) are defined, or
 
-       <STRONG>o</STRONG>   if the terminfo capabilities <STRONG>rmcup</STRONG> and <STRONG>nrrmc</STRONG> exist, also
+       <STRONG>o</STRONG>   if  <EM>curses</EM>  knows  that  the terminal has been written to since the
+           preceding <STRONG>scr_dump</STRONG> call.
 
-       <STRONG>o</STRONG>   if  the  terminal  has been written to since the preceding <STRONG>scr_dump</STRONG>
-           call.
+       <STRONG>scr_init</STRONG> could be used after <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>  or  <STRONG>system(3)</STRONG>  to  share  the
+       screen with another process that has done a <STRONG>scr_dump</STRONG> after <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG>.
 
 
 </PRE><H3><a name="h3-scr_set">scr_set</a></H3><PRE>
-       The <STRONG>scr_set</STRONG> routine is a combination of <STRONG>scr_restore</STRONG> and  <STRONG>scr_init</STRONG>.   It
+       The  <STRONG>scr_set</STRONG>  routine is a combination of <STRONG>scr_restore</STRONG> and <STRONG>scr_init</STRONG>.  It
        tells the program that the information in <EM>filename</EM> is what is currently
        on the screen, and also what the program wants on the screen.  This can
        be thought of as a screen inheritance function.
 
-       To  read  (write)  a window from (to) a file, use the <STRONG>getwin</STRONG> and <STRONG>putwin</STRONG>
-       routines [see <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>].
-
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon success.
+       These functions return <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure.
 
-       X/Open defines no error conditions.  In this implementation, each  will
-       return an error if the file cannot be opened.
+       X/Open defines no failure conditions.   In  this  implementation,  each
+       function fails if it cannot open <EM>filename</EM>.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>, and <STRONG>scr_restore</STRONG> may be macros.
+       <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>, and <STRONG>scr_restore</STRONG> may be macros.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The XSI Curses standard, Issue 4, describes these functions (adding the
-       const qualifiers).
+       X/Open Curses, Issue 4 describes these functions.
+
+       SVr4 omitted the <EM>const</EM> qualifiers.
 
-       The SVr4 docs merely say under <STRONG>scr_init</STRONG> that the dump data is also con-
-       sidered invalid "if the time-stamp of the tty is old" but do not define
-       "old".
+       SVr4  documentation  describes <STRONG>scr_init</STRONG> such that the dump data is also
+       considered invalid "if the time-stamp of the tty is old" but  does  not
+       define "old".
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,    <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,    <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,    <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>,
-       <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>, <STRONG>system(3)</STRONG>
+       <STRONG>system(3)</STRONG>, <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
 
 
 
-                                                             <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                 <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 4b9fe87237180d46485dda9ccca1c83ca6a37222..5b827feded69e4c27377fd8a3dc474b9b62ec45a 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_scroll.3x,v 1.22 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_scroll.3x,v 1.43 2024/04/20 18:54:36 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_scroll 3x</TITLE>
+<TITLE>curs_scroll 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_scroll 3x</H1>
+<H1 class="no-header">curs_scroll 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>                                                <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
+<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>scroll</STRONG>, <STRONG>scrl</STRONG>, <STRONG>wscrl</STRONG> - scroll a <STRONG>curses</STRONG> window
+       <STRONG>scroll</STRONG>, <STRONG>scrl</STRONG>, <STRONG>wscrl</STRONG> - scroll a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The  <STRONG>scroll</STRONG> routine scrolls the window up one line.  This involves mov-
-       ing the lines in the window data structure.  As an optimization, if the
-       scrolling  region  of  the  window  is  the entire screen, the <EM>physical</EM>
-       <EM>screen</EM> may be scrolled at the same time.
+       <STRONG>scroll</STRONG>  scrolls  the  given window up one line.  That is, every visible
+       line we might number <EM>i</EM> becomes line <EM>i</EM>-1.  The text of the top  line  in
+       the  window  disappears  and  the  bottom  line is populated with blank
+       characters; see <STRONG><A HREF="curs_bkgd.3x.html">bkgd(3x)</A></STRONG> or <STRONG><A HREF="curs_bkgrnd.3x.html">bkgrnd(3x)</A></STRONG>.  As  an  optimization,  if  the
+       scrolling  region  of  the  window  is  the entire screen, the physical
+       screen may be scrolled at the same time; see <STRONG><A HREF="curs_variables.3x.html">curscr(3x)</A></STRONG>.
 
-       For positive <EM>n</EM>, the <STRONG>scrl</STRONG> and <STRONG>wscrl</STRONG> routines  scroll  the  window  up  <EM>n</EM>
-       lines  (line  <EM>i</EM>+<EM>n</EM> becomes <EM>i</EM>); otherwise scroll the window down <EM>n</EM> lines.
-       This involves moving the lines in the window character image structure.
-       The current cursor position is not changed.
+       <STRONG>scrl</STRONG> and <STRONG>wscrl</STRONG> scroll  <STRONG>stdscr</STRONG>  or  the  specified  window  up  or  down
+       depending on the sign of <EM>n</EM>.
 
-       For these functions to work, scrolling must be enabled via <STRONG>scrollok</STRONG>.
+       <STRONG>o</STRONG>   For positive <EM>n</EM>, line <EM>i</EM>+<EM>n</EM> becomes <EM>i</EM> (scrolling up);
 
+       <STRONG>o</STRONG>   for negative <EM>n</EM>, line <EM>i</EM>-<EM>n</EM> becomes <EM>i</EM> (scrolling down).
+
+       The  cursor does not move.  These functions perform no operation unless
+       scrolling is enabled for the window via <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG>.
 
-</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       These routines return <STRONG>ERR</STRONG> upon failure, and <STRONG>OK</STRONG> (SVr4 only specifies "an
-       integer value other than <STRONG>ERR</STRONG>") upon successful completion.
 
-       X/Open defines no error conditions.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       These functions return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon success.
 
-       This implementation returns an error if the window pointer is null,  or
-       if scrolling is not enabled in the window, e.g., with <STRONG>scrollok</STRONG>.
+       <EM>ncurses</EM> returns <STRONG>ERR</STRONG> if scrolling is not  enabled  in  the  window,  for
+       example with <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG>, or if the <EM>WINDOW</EM> pointer is null.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that <STRONG>scrl</STRONG> and <STRONG>scroll</STRONG> may be macros.
-
-       The  SVr4  documentation  says  that  the  optimization  of  physically
-       scrolling immediately if the scroll region is the  entire  screen  "is"
-       performed,  not  "may  be" performed.  This implementation deliberately
-       does not guarantee that this will occur, to leave open the  possibility
-       of smarter optimization of multiple scroll actions on the next update.
+       Unusually,  there  is  no <STRONG>wscroll</STRONG> function; <STRONG>scroll</STRONG> behaves as one would
+       expect <STRONG>wscroll</STRONG> to, accepting a <EM>WINDOW</EM> pointer argument.
 
-       Neither  the SVr4 nor the XSI documentation specify whether the current
-       attribute or current color-pair of blanks generated by the scroll func-
-       tion is zeroed.  Under this implementation it is.
+       <STRONG>scrl</STRONG> and <STRONG>scroll</STRONG> may be implemented as macros.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The XSI Curses standard, Issue 4 describes these functions.
+       X/Open Curses, Issue 4 describes these functions.  It defines no  error
+       conditions.
+
+       SVr4  specifies  only "an integer value other than <STRONG>ERR</STRONG>" as a successful
+       return value.
+
+       SVr4  indicates  that  the   optimization   of   physically   scrolling
+       immediately  if  the scroll region is the entire screen "is" performed,
+       not "may be" performed.  <EM>ncurses</EM> deliberately does not  guarantee  that
+       this  will occur, to leave open the possibility of smarter optimization
+       of multiple scroll actions on the next update.
+
+       Neither SVr4 <EM>curses</EM> nor  X/Open  Curses  specify  whether  the  current
+       attribute  or  current  color  pair  of  blanks generated by the scroll
+       function are zeroed.  <EM>ncurses</EM> does so.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
 
 
 
-                                                               <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 84b202d04af49b8074790589bd03df7f4acc9c6b..52f8c29fbdefe8223d89dd3a06add98db95d710f 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_slk.3x,v 1.44 2022/10/29 22:44:14 tom Exp @
+  * @Id: curs_slk.3x,v 1.71 2024/04/20 18:54:36 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_slk 3x</TITLE>
+<TITLE>curs_slk 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_slk 3x</H1>
+<H1 class="no-header">curs_slk 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>                                                      <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
+<STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>                     Library calls                    <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>slk_init</STRONG>, <STRONG>slk_set</STRONG>, <STRONG>slk_wset</STRONG>, <STRONG>slk_refresh</STRONG>, <STRONG>slk_noutrefresh</STRONG>, <STRONG>slk_label</STRONG>,
-       <STRONG>slk_clear</STRONG>, <STRONG>slk_restore</STRONG>, <STRONG>slk_touch</STRONG>, <STRONG>slk_attron</STRONG>, <STRONG>slk_attrset</STRONG>,
-       <STRONG>slk_attroff</STRONG>, <STRONG>slk_attr_on</STRONG>, <STRONG>slk_attr_set</STRONG>, <STRONG>slk_attr_off</STRONG>, <STRONG>slk_attr</STRONG>,
-       <STRONG>slk_color</STRONG>, <STRONG>extended_slk_color</STRONG> - <STRONG>curses</STRONG> soft label routines
+       <STRONG>slk_init</STRONG>,  <STRONG>slk_set</STRONG>,  <STRONG>slk_wset</STRONG>, <STRONG>slk_refresh</STRONG>, <STRONG>slk_noutrefresh</STRONG>, <STRONG>slk_label</STRONG>,
+       <STRONG>slk_clear</STRONG>,    <STRONG>slk_restore</STRONG>,    <STRONG>slk_touch</STRONG>,    <STRONG>slk_attron</STRONG>,    <STRONG>slk_attrset</STRONG>,
+       <STRONG>slk_attroff</STRONG>,   <STRONG>slk_attr_on</STRONG>,   <STRONG>slk_attr_set</STRONG>,   <STRONG>slk_attr_off</STRONG>,   <STRONG>slk_attr</STRONG>,
+       <STRONG>slk_color</STRONG>, <STRONG>extended_slk_color</STRONG> - <EM>curses</EM> soft label key routines
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -58,8 +58,8 @@
 
        <STRONG>int</STRONG> <STRONG>slk_init(int</STRONG> <EM>fmt</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>slk_set(int</STRONG> <EM>labnum</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>slk_wset(int</STRONG> <EM>labnum</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_set(int</STRONG> <EM>labnum</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>align</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_wset(int</STRONG> <EM>labnum</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>align</EM><STRONG>);</STRONG>
 
        <STRONG>char</STRONG> <STRONG>*slk_label(int</STRONG> <EM>labnum</EM><STRONG>);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>slk_attron(const</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_attroff(const</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_attrset(const</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>slk_attr_on(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>slk_attr_off(const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>slk_attr_set(const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
-       /* extension */
+       <STRONG>int</STRONG> <STRONG>slk_attr_on(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attr_off(const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attr_set(const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <EM>/*</EM> <EM>extension</EM> <EM>*/</EM>
        <STRONG>attr_t</STRONG> <STRONG>slk_attr(void);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>slk_color(short</STRONG> <EM>pair</EM><STRONG>);</STRONG>
-       /* extension */
+       <EM>/*</EM> <EM>extension</EM> <EM>*/</EM>
        <STRONG>int</STRONG> <STRONG>extended_slk_color(int</STRONG> <EM>pair</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The slk* functions manipulate the set of soft function-key labels  that
-       exist on many terminals.  For those terminals that do not have soft la-
-       bels, <STRONG>curses</STRONG> takes over the bottom line of <STRONG>stdscr</STRONG>, reducing the size of
-       <STRONG>stdscr</STRONG>  and the variable <STRONG>LINES</STRONG>.  <STRONG>curses</STRONG> standardizes on eight labels of
-       up to eight characters each.  In addition to this, the  ncurses  imple-
-       mentation  supports  a  mode where it simulates 12 labels of up to five
-       characters each.  This is useful for PC-like enduser devices.   ncurses
-       simulates this mode by taking over up to two lines at the bottom of the
-       screen; it does not try to use any hardware support for this mode.
+       These functions manipulate the  soft  function  key  labels  that  some
+       hardware  terminals support.  For those terminals that do not have soft
+       labels, <EM>curses</EM> takes over the  bottom  line  of  <STRONG>stdscr</STRONG>,  reducing  its
+       vertical  size  and the value of <STRONG>LINES</STRONG> by one.  By default, <EM>curses</EM> uses
+       eight labels of up to eight characters each.
+
+       <EM>ncurses</EM> furthermore supports a mode comprising twelve labels of  up  to
+       five  characters  each,  following a convention associated with the IBM
+       PC/AT keyboard.  <EM>ncurses</EM> simulates this mode by taking over up  to  two
+       lines  at the bottom of the screen; it does not try to use any hardware
+       support for this mode.
 
 
 </PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
-       The <STRONG>slk_init</STRONG> routine must  be  called  before  <STRONG>initscr</STRONG>  or  <STRONG>newterm</STRONG>  is
-       called.   If  <STRONG>initscr</STRONG> eventually uses a line from <STRONG>stdscr</STRONG> to emulate the
-       soft labels, then <EM>fmt</EM> determines how the labels  are  arranged  on  the
-       screen:
+       <STRONG>slk_init</STRONG>  must  be  called  before  <STRONG>initscr</STRONG>  or  <STRONG>newterm</STRONG>.   If  <STRONG>initscr</STRONG>
+       eventually uses a line from <STRONG>stdscr</STRONG> to emulate the soft labels, then <EM>fmt</EM>
+       determines how the labels are arranged on the screen.
 
-          <STRONG>0</STRONG>  indicates a 3-2-3 arrangement of the labels.
+       <STRONG>0</STRONG>  indicates a 3-2-3 arrangement of the labels.
 
-          <STRONG>1</STRONG>  indicates a 4-4 arrangement
+       <STRONG>1</STRONG>  indicates a 4-4 arrangement
 
-          <STRONG>2</STRONG>  indicates the PC-like 4-4-4 mode.
+       <STRONG>2</STRONG>  indicates the PC-like 4-4-4 mode.
 
-          <STRONG>3</STRONG>  is again the PC-like 4-4-4 mode, but in addition an index line is
-             generated, helping the user to identify the key numbers easily.
+       <STRONG>3</STRONG>  is again the PC-like 4-4-4 mode, but in addition an  index  line  is
+          generated,  helping  the  user  to  associate  each  label  with its
+          numbered function key.  <STRONG>LINES</STRONG> and the vertical size  of  <STRONG>stdscr</STRONG>  are
+          further reduced.
 
 
 </PRE><H3><a name="h3-Labels">Labels</a></H3><PRE>
-       The <STRONG>slk_set</STRONG> routine (and the <STRONG>slk_wset</STRONG> routine  for  the  wide-character
-       library) has three parameters:
+       Populate  the  labels  with  normal strings (<STRONG>slk_set</STRONG>) or wide-character
+       strings (<STRONG>slk_wset</STRONG>).  Each function takes three parameters.
 
-          <EM>labnum</EM>
-               is the label number, from <STRONG>1</STRONG> to <STRONG>8</STRONG> (12 if <EM>fmt</EM> in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> or
+       <EM>labnum</EM>  is the label number, from <STRONG>1</STRONG> to <STRONG>8</STRONG> (12 if <EM>fmt</EM> in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> or
                <STRONG>3</STRONG>);
 
-          <EM>label</EM>
-               is be the string to put on the label, up to eight (five if  <EM>fmt</EM>
-               in  <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> or <STRONG>3</STRONG>) characters in length.  A null string or
+       <EM>label</EM>   is  be the string to put on the label, up to eight (five if <EM>fmt</EM>
+               in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> or <STRONG>3</STRONG>) characters in length.  A empty string or
                a null pointer sets up a blank label.
 
-          <EM>fmt</EM>  is either <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG>, indicating whether the  label  is  to  be
-               left-justified,  centered,  or  right-justified,  respectively,
-               within the label.
+       <EM>align</EM>   is  <STRONG>0</STRONG>,  <STRONG>1</STRONG>,  or <STRONG>2</STRONG>, aligning <EM>label</EM> to the left, center, or right,
+               respectively, within the 8 (5) character cells housing it.
 
-       The <STRONG>slk_label</STRONG> routine returns the current label for label  number  <EM>lab-</EM>
-       <EM>num</EM>, with leading and trailing blanks stripped.
+       <STRONG>slk_label</STRONG> obtains the string assigned to label number <EM>labnum</EM>, with  any
+       leading and trailing blanks stripped.
 
 
-</PRE><H3><a name="h3-Screen-updates">Screen updates</a></H3><PRE>
-       The <STRONG>slk_refresh</STRONG> and <STRONG>slk_noutrefresh</STRONG> routines correspond to the <STRONG>wrefresh</STRONG>
-       and <STRONG>wnoutrefresh</STRONG> routines.
+</PRE><H3><a name="h3-Screen-Updates">Screen Updates</a></H3><PRE>
+       <STRONG>slk_refresh</STRONG>  and  <STRONG>slk_noutrefresh</STRONG>  affect  the  soft key label lines as
+       <STRONG>wrefresh</STRONG> and <STRONG>wnoutrefresh</STRONG> do the <EM>curses</EM> window.
 
        The <STRONG>slk_clear</STRONG> routine clears the soft labels from the screen.
 
        time a <STRONG>slk_noutrefresh</STRONG> is performed.
 
 
-</PRE><H3><a name="h3-Video-attributes">Video attributes</a></H3><PRE>
-       The <STRONG>slk_attron</STRONG>, <STRONG>slk_attrset</STRONG>, <STRONG>slk_attroff</STRONG> and <STRONG>slk_attr</STRONG>  routines  corre-
-       spond  to  <STRONG>attron</STRONG>,  <STRONG>attrset</STRONG>,  <STRONG>attroff</STRONG> and <STRONG>attr_get</STRONG>, respectively.  They
-       have an effect only if soft labels are simulated on the bottom line  of
-       the  screen.   The default highlight for soft keys is A_STANDOUT (as in
-       System V curses, which does not document this fact).
+</PRE><H3><a name="h3-Video-Attributes">Video Attributes</a></H3><PRE>
+       The  <STRONG>slk_attron</STRONG>,  <STRONG>slk_attrset</STRONG>,  <STRONG>slk_attroff</STRONG>,  and   <STRONG>slk_attr</STRONG>   routines
+       correspond  to  <STRONG>attron</STRONG>,  <STRONG>attrset</STRONG>,  <STRONG>attroff</STRONG>, and <STRONG>attr_get</STRONG>, respectively.
+       They have an effect only if soft labels are  simulated  on  the  bottom
+       line  of  the  screen.   The  default  highlight for soft key labels is
+       <STRONG>A_STANDOUT</STRONG> (as in System V <EM>curses</EM>, which does not document this fact).
 
 
 </PRE><H3><a name="h3-Colors">Colors</a></H3><PRE>
        The <STRONG>slk_color</STRONG> routine corresponds to <STRONG>color_set</STRONG>.  It has an effect  only
        if soft labels are simulated on the bottom line of the screen.
 
-       Because  <STRONG>slk_color</STRONG>  accepts  only <STRONG>short</STRONG> (signed 16-bit integer) values,
-       this implementation provides <STRONG>extended_slk_color</STRONG> which accepts an  inte-
-       ger value, e.g., 32-bits.
+       Because  <STRONG>slk_color</STRONG>  accepts  only <EM>short</EM> (signed 16-bit integer) values,
+       this implementation provides <STRONG>extended_slk_color</STRONG>, which accepts  an  <EM>int</EM>
+       value of at least 32 bits.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       These  routines return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 specifies only "an
-       integer value other than <STRONG>ERR</STRONG>") upon successful completion.
+       Routines  that  return  an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4
+       specifies only "an integer  value  other  than  <STRONG>ERR</STRONG>")  upon  successful
+       completion.
+
+       X/Open Curses defines no error conditions.
 
-       X/Open defines no error conditions.  In this implementation
+       In this implementation
 
           <STRONG>slk_attr</STRONG>
                returns the attribute used for the soft keys.
 
-          <STRONG>slk_attroff</STRONG>, <STRONG>slk_attron</STRONG>, <STRONG>slk_clear</STRONG>, <STRONG>slk_noutrefresh</STRONG>, <STRONG>slk_refresh</STRONG>,
+          <STRONG>slk_attroff</STRONG>,  <STRONG>slk_attron</STRONG>,  <STRONG>slk_clear</STRONG>,  <STRONG>slk_noutrefresh</STRONG>, <STRONG>slk_refresh</STRONG>,
           <STRONG>slk_touch</STRONG>
-               return  an  error if the terminal or the softkeys were not ini-
-               tialized.
+               return an error if  the  terminal  or  the  softkeys  were  not
+               initialized.
 
           <STRONG>slk_attrset</STRONG>
-               returns an error if the terminal or the softkeys were not  ini-
-               tialized.
+               returns  an  error  if  the  terminal  or the softkeys were not
+               initialized.
 
           <STRONG>slk_attr_set</STRONG>
-               returns  an error if the terminal or the softkeys were not ini-
-               tialized, or the  color  pair  is  outside  the  range  0..COL-
-               OR_PAIRS-1.
+               returns an error if the  terminal  or  the  softkeys  were  not
+               initialized,   or   the   color   pair  is  outside  the  range
+               0..<STRONG>COLOR_PAIRS</STRONG>-1.
 
           <STRONG>slk_color</STRONG>
-               returns  an error if the terminal or the softkeys were not ini-
-               tialized, or the  color  pair  is  outside  the  range  0..COL-
-               OR_PAIRS-1.
+               returns an error if the  terminal  or  the  softkeys  were  not
+               initialized,   or   the   color   pair  is  outside  the  range
+               0..<STRONG>COLOR_PAIRS</STRONG>-1.
 
           <STRONG>slk_init</STRONG>
-               returns  an  error if the format parameter is outside the range
+               returns an error if the format parameter is outside  the  range
                0..3.
 
           <STRONG>slk_label</STRONG>
                returns <STRONG>NULL</STRONG> on error.
 
           <STRONG>slk_set</STRONG>
-               returns an error if the terminal or the softkeys were not  ini-
-               tialized, or the <EM>labnum</EM> parameter is outside the range of label
-               counts, or if the format parameter is outside the  range  0..2,
-               or if memory for the labels cannot be allocated.
-
-
-</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       SVr3 introduced these functions:
-         slk_clear
-         slk_init
-         slk_label
-         slk_noutrefresh
-         slk_refresh
-         slk_restore
-         slk_set
-         slk_touch
+               returns  an  error  if  the  terminal  or the softkeys were not
+               initialized, or the <EM>labnum</EM> parameter is outside  the  range  of
+               label  counts,  or if the format parameter is outside the range
+               0..2, or if memory for the labels cannot be allocated.
 
-       SVr4 added these functions:
-         slk_attroff
-         slk_attron
-         slk_attrset
-         slk_start
 
-       X/Open Curses added these:
-         slk_attr_off
-         slk_attr_on
-         slk_attr_set
-         slk_color
-         slk_wset
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       Most applications would  use  <STRONG>slk_noutrefresh</STRONG>  because  a  <STRONG>wrefresh</STRONG>  is
+       likely to follow soon.
 
 
 </PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
        X/Open  Curses  documents the <EM>opts</EM> argument as reserved for future use,
        saying that it must be null.  This implementation uses  that  parameter
-       in ABI 6 for the functions which have a color-pair parameter to support
+       in ABI 6 for the functions which have a color pair parameter to support
        extended color pairs.
 
-       For  functions  which modify the color, e.g., <STRONG>slk_attr_set</STRONG>, if <EM>opts</EM>  is
-       set  it  is  treated  as a pointer to <STRONG>int</STRONG>, and used to  set  the  color
-       pair instead of the <STRONG>short</STRONG> pair parameter.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Most applications would use <STRONG>slk_noutrefresh</STRONG> because a <STRONG>wrefresh</STRONG> is like-
-       ly to follow soon.
+       For functions which modify the color, e.g., <STRONG>slk_attr_set</STRONG>,  if  <EM>opts</EM>  is
+       set  it  is treated as a pointer to <EM>int</EM>, and used to set the color pair
+       instead of the <EM>short</EM> pair parameter.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The  XSI  Curses  standard,  Issue 4, described the soft-key functions,
-       with some differences from SVr4 curses:
+       X/Open Curses, Issue 4 describes these functions, with some differences
+       from SVr4 <EM>curses</EM>:
 
-       <STRONG>o</STRONG>   It added functions like the SVr4  attribute-manipulation  functions
-           <STRONG>slk_attron</STRONG>,  <STRONG>slk_attroff</STRONG>, <STRONG>slk_attrset</STRONG>, but which use <STRONG>attr_t</STRONG> parame-
-           ters (rather than <STRONG>chtype</STRONG>), along with a reserved <EM>opts</EM> parameter.
+       <STRONG>o</STRONG>   X/Open   added   functions  like  the  SVr4  attribute-manipulation
+           functions <STRONG>slk_attron</STRONG>, <STRONG>slk_attroff</STRONG>, and <STRONG>slk_attrset</STRONG>, but  which  use
+           <EM>attr</EM><STRONG>_</STRONG><EM>t</EM>  parameters (rather than <EM>chtype</EM>), along with a reserved <EM>opts</EM>
+           parameter.
 
-           Two of these new functions (unlike the SVr4 functions) have no pro-
-           vision for color: <STRONG>slk_attr_on</STRONG> and <STRONG>slk_attr_off</STRONG>.
+           Two of these new functions (unlike  the  SVr4  functions)  have  no
+           provision for color: <STRONG>slk_attr_on</STRONG> and <STRONG>slk_attr_off</STRONG>.
 
-           The third function (<STRONG>slk_attr_set</STRONG>) has a color-pair parameter.
+           The third function (<STRONG>slk_attr_set</STRONG>) has a color pair parameter.
 
-       <STRONG>o</STRONG>   It added <STRONG>const</STRONG> qualifiers to parameters (unnecessarily), and
+       <STRONG>o</STRONG>   It added <EM>const</EM> qualifiers to parameters (unnecessarily), and
 
        <STRONG>o</STRONG>   It added <STRONG>slk_color</STRONG>.
 
-       Although  <STRONG>slk_start</STRONG>  is  declared in the curses header file, it was not
+       Although  <STRONG>slk_start</STRONG>  is  declared in the <EM>curses</EM> header file, it was not
        documented by SVr4 other than its presence in a list of libtermlib.so.1
        symbols.  Reading the source code (i.e., Illumos):
 
        <STRONG>o</STRONG>   Soft-key groups are an array of <EM>ng</EM> integers.
 
        <STRONG>o</STRONG>   In  SVr4, <STRONG>slk_init</STRONG> calls <STRONG>slk_start</STRONG> passing a null for <EM>gp</EM>.  For this
-           case, <STRONG>slk_start</STRONG> uses the number of groups <EM>ng</EM> (3 for the 3-2-3  lay-
-           out, 2 for the 4-4 layout) which <STRONG>slk_init</STRONG> provided.
+           case, <STRONG>slk_start</STRONG> uses the number of  groups  <EM>ng</EM>  (3  for  the  3-2-3
+           layout, 2 for the 4-4 layout) which <STRONG>slk_init</STRONG> provided.
 
-           If  <EM>ng</EM>  is  neither  2 or 3, <STRONG>slk_start</STRONG> checks the terminfo <EM>fln</EM> (la-
-           bel_format) capability, interpreting that as a comma-separated list
-           of numbers, e.g., "3,2,3" for the 3-2-3 layout.
+           If  <EM>ng</EM>  is  neither  2  or  3,  <STRONG>slk_start</STRONG>  checks  the terminfo <STRONG>fln</STRONG>
+           (label_format) capability, interpreting that as  a  comma-separated
+           list of numbers, e.g., "3,2,3" for the 3-2-3 layout.
 
-           Finally, if there is no <EM>fln</EM> capability, <STRONG>slk_start</STRONG> returns ERR.
+           Finally, if there is no <STRONG>fln</STRONG> capability, <STRONG>slk_start</STRONG> returns <STRONG>ERR</STRONG>.
 
        <STRONG>o</STRONG>   If  <STRONG>slk_start</STRONG>  is given a non-null <EM>gp</EM>, it copies the <EM>ng</EM> elements of
            the group of soft-keys, up to 16.
 
            If there are more than 16 elements, <STRONG>slk_start</STRONG> returns an error.
 
-       <STRONG>o</STRONG>   The format codes <STRONG>2</STRONG> and <STRONG>3</STRONG> for <STRONG>slk_init</STRONG>  were  added  by  ncurses  in
+       <STRONG>o</STRONG>   The format codes <STRONG>2</STRONG> and <STRONG>3</STRONG> for <STRONG>slk_init</STRONG>  were  added  by  <EM>ncurses</EM>  in
            1996.  PDCurses 2.4 added this feature in 2001.
 
-       The function <STRONG>slk_attr</STRONG> was added by ncurses in 1996.
+       The function <STRONG>slk_attr</STRONG> was added by <EM>ncurses</EM> in 1996.
 
        X/Open  Curses  does  not  specify a limit for the number of colors and
-       color pairs which a terminal can support.  However, in its use of <STRONG>short</STRONG>
+       color pairs which a terminal can support.  However, in its use of <EM>short</EM>
        for  the  parameters,  it carries over SVr4's implementation detail for
        the compiled terminfo database, which uses signed 16-bit numbers.  This
        implementation  provides extended versions of those functions which use
-       <STRONG>int</STRONG> parameters, allowing applications to use larger  color-  and  pair-
+       <EM>int</EM> parameters, allowing applications to use larger  color-  and  pair-
        numbers.
 
 
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       SVr3 introduced these functions:
+         <STRONG>slk_clear</STRONG>
+         <STRONG>slk_init</STRONG>
+         <STRONG>slk_label</STRONG>
+         <STRONG>slk_noutrefresh</STRONG>
+         <STRONG>slk_refresh</STRONG>
+         <STRONG>slk_restore</STRONG>
+         <STRONG>slk_set</STRONG>
+         <STRONG>slk_touch</STRONG>
+
+       SVr4 added these functions:
+         <STRONG>slk_attroff</STRONG>
+         <STRONG>slk_attron</STRONG>
+         <STRONG>slk_attrset</STRONG>
+         <STRONG>slk_start</STRONG>
+
+       X/Open Curses added these:
+         <STRONG>slk_attr_off</STRONG>
+         <STRONG>slk_attr_on</STRONG>
+         <STRONG>slk_attr_set</STRONG>
+         <STRONG>slk_color</STRONG>
+         <STRONG>slk_wset</STRONG>
+
+
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,    <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,    <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,    <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                                  <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                      <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <ul>
 <li><a href="#h3-Initialization">Initialization</a></li>
 <li><a href="#h3-Labels">Labels</a></li>
-<li><a href="#h3-Screen-updates">Screen updates</a></li>
-<li><a href="#h3-Video-attributes">Video attributes</a></li>
+<li><a href="#h3-Screen-Updates">Screen Updates</a></li>
+<li><a href="#h3-Video-Attributes">Video Attributes</a></li>
 <li><a href="#h3-Colors">Colors</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
-<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index c726d0ba06f0bd0457c36e1a0697434211f9af9d..7695f68c40e428d2d87ddb127454459931843caa 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2010-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_sp_funcs.3x,v 1.27 2022/02/12 20:05:11 tom Exp @
-  * ***************************************************************************
-  * ***************************************************************************
-  * ***************************************************************************
+  * @Id: curs_sp_funcs.3x,v 1.50 2024/04/20 18:56:31 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_sp_funcs 3x</TITLE>
+<TITLE>curs_sp_funcs 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_sp_funcs 3x</H1>
+<H1 class="no-header">curs_sp_funcs 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>                                            <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>
+<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       curs_sp_funcs - <STRONG>curses</STRONG> screen-pointer extension
+       <STRONG>curs_sp_funcs</STRONG> - <EM>curses</EM> screen-pointer extension
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -63,7 +60,7 @@
        <STRONG>bool</STRONG> <STRONG>can_change_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>cbreak_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>color_content_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>short*</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>short*</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>short*</STRONG> <EM>b</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>curs_set_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>visibility</EM>);
+       <STRONG>int</STRONG> <STRONG>curs_set_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>visibility</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>def_prog_mode_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>def_shell_mode_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
 
@@ -73,7 +70,7 @@
        <STRONG>int</STRONG> <STRONG>echo_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>endwin_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>char</STRONG> <STRONG>erasechar_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>erasewchar_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>erasewchar_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wc</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>extended_color_content_sp(SCREEN</STRONG> <STRONG>*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG> <EM>b</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>extended_pair_content_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG> <EM>bg</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>extended_slk_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pair</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>flushinp_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>free_pair_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pair</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>get_escdelay_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>getmouse_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>MEVENT*</STRONG> <STRONG>event);</STRONG>
+       <STRONG>int</STRONG> <STRONG>getmouse_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>MEVENT*</STRONG> <EM>event</EM><STRONG>);</STRONG>
        <STRONG>WINDOW*</STRONG> <STRONG>getwin_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>FILE*</STRONG> <EM>filep</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>halfdelay_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>tenths</EM><STRONG>);</STRONG>
        <STRONG>bool</STRONG> <STRONG>has_colors_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
 
        <STRONG>bool</STRONG> <STRONG>has_ic_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>bool</STRONG> <STRONG>has_il_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>has_key_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>has_key_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG>
        <STRONG>bool</STRONG> <STRONG>has_mouse_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>init_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>b</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>init_extended_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>b</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>init_extended_pair_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bg</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>init_pair_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>bg</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>intrflush_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>WINDOW*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
-       <STRONG>bool</STRONG> <STRONG>is_term_resized_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>is_cbreak_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
 
+       <STRONG>int</STRONG> <STRONG>is_echo_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>is_nl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>is_raw_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>is_term_resized_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG>
        <STRONG>bool</STRONG> <STRONG>isendwin_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>key_defined_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>definition</EM><STRONG>);</STRONG>
        <STRONG>char*</STRONG> <STRONG>keybound_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>keycode</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>count</EM><STRONG>);</STRONG>
-       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>keyname_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG>
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char*</STRONG> <STRONG>keyname_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>keyok_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>keycode</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>enable</EM><STRONG>);</STRONG>
        <STRONG>char</STRONG> <STRONG>killchar_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>killwchar_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>ch</EM><STRONG>);</STRONG>
+
+       <STRONG>int</STRONG> <STRONG>killwchar_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wc</EM><STRONG>);</STRONG>
        <STRONG>char*</STRONG> <STRONG>longname_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mcprint_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>data</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>len</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mouseinterval_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>erval</EM><STRONG>);</STRONG>
-
        <STRONG>mmask_t</STRONG> <STRONG>mousemask_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>mmask_t</STRONG> <EM>newmask</EM><STRONG>,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*</STRONG><EM>oldmask</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvcur_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newcol</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>napms_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ms</EM><STRONG>);</STRONG>
        <STRONG>WINDOW*</STRONG> <STRONG>newpad_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>nrows</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>);</STRONG>
        <STRONG>SCREEN*</STRONG> <STRONG>new_prescr(void);</STRONG>
        <STRONG>SCREEN*</STRONG> <STRONG>newterm_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>type</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>outfd</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>infd</EM><STRONG>);</STRONG>
+
        <STRONG>WINDOW*</STRONG> <STRONG>newwin_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>nl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>nocbreak_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>noecho_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
-
        <STRONG>void</STRONG> <STRONG>nofilter_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>nonl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>void</STRONG> <STRONG>noqiflush_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>noraw_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>pair_content_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>short*</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>short*</STRONG> <EM>bg</EM><STRONG>);</STRONG>
        <STRONG>void</STRONG> <STRONG>qiflush_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>raw_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>reset_prog_mode_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>void</STRONG> <STRONG>reset_color_pairs_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>reset_prog_mode_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>reset_shell_mode_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
-
        <STRONG>int</STRONG> <STRONG>resetty_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>resize_term_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>resizeterm_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>ripoffline_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>line</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>init</EM><STRONG>)(WINDOW*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>));</STRONG>
        <STRONG>int</STRONG> <STRONG>savetty_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>scr_init_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>filename</EM><STRONG>);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>scr_restore_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>filename</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>scr_set_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>filename</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>set_escdelay_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ms</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>set_tabsize_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>cols</EM><STRONG>);</STRONG>
-
-       <STRONG>int</STRONG> <STRONG>slk_attr_set_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG><EM>opts</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_attrset_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>a</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attr_set_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG><EM>opts</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_attroff_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>a</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_attron_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>a</EM><STRONG>);</STRONG>
        <STRONG>attr_t</STRONG> <STRONG>slk_attr_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_clear_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>slk_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_init_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>);</STRONG>
        <STRONG>char*</STRONG> <STRONG>slk_label_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>labnum</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_noutrefresh_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
-
        <STRONG>int</STRONG> <STRONG>slk_refresh_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_restore_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_set_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>labnum</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <EM>label</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_touch_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>start_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>attr_t</STRONG> <STRONG>term_attrs_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
+
        <STRONG>chtype</STRONG> <STRONG>termattrs_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>char*</STRONG> <STRONG>termname_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>typeahead_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fd</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>unget_wch_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <EM>wch</EM><STRONG>);</STRONG>
-
-       <STRONG>int</STRONG> <STRONG>ungetch_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>ungetmouse_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,MEVENT</STRONG> <STRONG>*</STRONG> <STRONG>event);</STRONG>
+       <STRONG>int</STRONG> <STRONG>unget_wch_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <EM>wc</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>ungetch_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>ungetmouse_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>MEVENT*</STRONG> <EM>event</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>use_default_colors_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
        <STRONG>void</STRONG> <STRONG>use_env_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>use_legacy_coding_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>level</EM><STRONG>);</STRONG>
        <STRONG>void</STRONG> <STRONG>use_tioctl_sp(SCREEN</STRONG> <STRONG>*</STRONG><EM>sp</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>vid_attr_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>vid_puts_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG> <EM>opts</EM><STRONG>,</STRONG> <STRONG>NCURSES_SP_OUTC</STRONG> <EM>putc</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>vidattr_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>vidputs_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>NCURSES_SP_OUTC</STRONG> <EM>putc</EM><STRONG>);</STRONG>
-       <STRONG>wchar_t*</STRONG> <STRONG>wunctrl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>wchar_t*</STRONG> <STRONG>wunctrl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
 
        <STRONG>char*</STRONG> <STRONG>tgetstr_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>**</STRONG><EM>area</EM><STRONG>);</STRONG>
        <STRONG>char*</STRONG> <STRONG>tgoto_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>col</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>row</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>tigetflag_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>tigetnum_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
        <STRONG>char*</STRONG> <STRONG>tigetstr_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
-       /* may instead use 9 long parameters */
+       <EM>/*</EM> <EM>tparm</EM><STRONG>_</STRONG><EM>sp</EM> <EM>may</EM> <EM>use</EM> <EM>9</EM> <EM>long</EM> <EM>parameters</EM> <EM>rather</EM> <EM>than</EM> <EM>being</EM> <EM>variadic</EM> <EM>*/</EM>
        <STRONG>char*</STRONG> <STRONG>tparm_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
        <STRONG>int</STRONG> <STRONG>tputs_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>affcnt</EM><STRONG>,</STRONG> <STRONG>NCURSES_SP_OUTC</STRONG> <EM>putc</EM><STRONG>);</STRONG>
 
        <STRONG>#include</STRONG> <STRONG>&lt;unctrl.h&gt;</STRONG>
 
-       <STRONG>NCURSES_CONST</STRONG> <STRONG>char*</STRONG> <STRONG>unctrl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>c</EM><STRONG>);</STRONG>
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char*</STRONG> <STRONG>unctrl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        This  implementation  can  be  configured to provide a set of functions
        which improve the ability to manage multiple screens.  This feature can
-       be added to any of the configurations supported by ncurses; it adds new
-       entrypoints without changing the meaning of any of the existing ones.
+       be added to any of the configurations supported by <EM>ncurses</EM>; it adds new
+       symbols without changing the meaning of any of the existing ones.
 
 
-</PRE><H3><a name="h3-IMPROVED-FUNCTIONS">IMPROVED FUNCTIONS</a></H3><PRE>
-       Most of the functions are new versions of existing functions.  A param-
-       eter  is  added  at  the  front  of the parameter list.  It is a SCREEN
+</PRE><H3><a name="h3-Improved-Functions">Improved Functions</a></H3><PRE>
+       Most of the functions  are  new  versions  of  existing  functions.   A
+       parameter  is added at the front of the parameter list.  It is a <EM>SCREEN</EM>
        pointer.
 
        The existing functions all use the current screen, which  is  a  static
-       variable.  The extended functions use the specified screen, thereby re-
-       ducing the number of variables which must be modified to update  multi-
-       ple screens.
+       variable.   The  extended  functions  use the specified screen, thereby
+       reducing the number of variables  which  must  be  modified  to  update
+       multiple screens.
 
 
-</PRE><H3><a name="h3-NEW-FUNCTIONS">NEW FUNCTIONS</a></H3><PRE>
+</PRE><H3><a name="h3-New-Functions">New Functions</a></H3><PRE>
        Here are the new functions:
 
        ceiling_panel
             With  the  screen-pointer extension, there are situations where it
             must create a current screen before the unextended  library  does.
             The  <STRONG>new_prescr</STRONG> function is used internally to handle these cases.
-            It is also provided as an entrypoint to allow applications to cus-
-            tomize the library initialization.
+            It is also provided to allow  applications  to  customize  library
+            initialization.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
 
        NCURSES_SP_NAME
             The new functions are named using the macro <EM>NCURSES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>NAME</EM>, which
-            hides the actual implementation.  Currently this adds a "_sp" suf-
-            fix  to the name of the unextended function.  This manual page in-
-            dexes the extensions showing the full name.   However  the  proper
-            usage of these functions uses the macro, to provide for the possi-
-            bility of changing the naming convention for specific library con-
-            figurations.
+            hides the actual implementation.   Currently  this  adds  a  "_sp"
+            suffix  to  the name of the unextended function.  This manual page
+            indexes the extensions showing the full name.  However the  proper
+            usage  of  these  functions  uses  the  macro,  to provide for the
+            possibility of changing the naming convention for specific library
+            configurations.
 
        NCURSES_SP_OUTC
             This  is  a new function-pointer type to use in the screen-pointer
             functions where an <EM>NCURSES</EM><STRONG>_</STRONG><EM>OUTC</EM> is used in the unextended library.
 
        NCURSES_OUTC
-            This is a function-pointer type used for the cases where  a  func-
-            tion passes characters to the output stream, e.g., <STRONG><A HREF="curs_terminfo.3x.html">vidputs(3x)</A></STRONG>.
+            This is a  function-pointer  type  used  for  the  cases  where  a
+            function   passes   characters   to   the   output  stream,  e.g.,
+            <STRONG><A HREF="curs_terminfo.3x.html">vidputs(3x)</A></STRONG>.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  are  specific  to ncurses.  They were not supported on
+       These routines are specific to <EM>ncurses</EM>.  They  were  not  supported  on
        Version 7, BSD or System V implementations.  It is recommended that any
-       code  depending  on  ncurses  extensions  be  conditioned  using <EM>NCURS-</EM>
-       <EM>ES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>FUNCS</EM>.
+       code   depending   on   <EM>ncurses</EM>   extensions   be   conditioned   using
+       <EM>NCURSES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>FUNCS</EM>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
 
 
 
-                                                             <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                 <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-IMPROVED-FUNCTIONS">IMPROVED FUNCTIONS</a></li>
-<li><a href="#h3-NEW-FUNCTIONS">NEW FUNCTIONS</a></li>
+<li><a href="#h3-Improved-Functions">Improved Functions</a></li>
+<li><a href="#h3-New-Functions">New Functions</a></li>
 </ul>
 </li>
 <li><a href="#h2-NOTES">NOTES</a></li>
index bc8b9c1fa1473a689e3da86292b627120e042e26..386b4b4b39a64300377f965d403af4a7dab3198d 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_termattrs.3x,v 1.19 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_termattrs.3x,v 1.41 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_termattrs 3x</TITLE>
+<TITLE>curs_termattrs 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_termattrs 3x</H1>
+<H1 class="no-header">curs_termattrs 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>                                          <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
+<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>               Library calls              <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>baudrate</STRONG>,  <STRONG>erasechar</STRONG>,  <STRONG>erasewchar</STRONG>, <STRONG>has_ic</STRONG>, <STRONG>has_il</STRONG>, <STRONG>killchar</STRONG>, <STRONG>killwchar</STRONG>,
-       <STRONG>longname</STRONG>, <STRONG>term_attrs</STRONG>, <STRONG>termattrs</STRONG>, <STRONG>termname</STRONG> -  <STRONG>curses</STRONG>  environment  query
+       <STRONG>longname</STRONG>, <STRONG>term_attrs</STRONG>, <STRONG>termattrs</STRONG>, <STRONG>termname</STRONG> -  <EM>curses</EM>  environment  query
        routines
 
 
 
        <STRONG>int</STRONG> <STRONG>baudrate(void);</STRONG>
        <STRONG>char</STRONG> <STRONG>erasechar(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>erasewchar(wchar_t</STRONG> <STRONG>*</STRONG><EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>erasewchar(wchar_t</STRONG> <STRONG>*</STRONG><EM>wc</EM><STRONG>);</STRONG>
        <STRONG>bool</STRONG> <STRONG>has_ic(void);</STRONG>
        <STRONG>bool</STRONG> <STRONG>has_il(void);</STRONG>
        <STRONG>char</STRONG> <STRONG>killchar(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>killwchar(wchar_t</STRONG> <STRONG>*</STRONG><EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>killwchar(wchar_t</STRONG> <STRONG>*</STRONG><EM>wc</EM><STRONG>);</STRONG>
        <STRONG>char</STRONG> <STRONG>*longname(void);</STRONG>
        <STRONG>attr_t</STRONG> <STRONG>term_attrs(void);</STRONG>
        <STRONG>chtype</STRONG> <STRONG>termattrs(void);</STRONG>
        integer.
 
 
-</PRE><H3><a name="h3-erasechar_-erasewchar">erasechar, erasewchar</a></H3><PRE>
+</PRE><H3><a name="h3-erasechar_erasewchar">erasechar, erasewchar</a></H3><PRE>
        The <STRONG>erasechar</STRONG> routine returns the user's current erase character.
 
        The  <STRONG>erasewchar</STRONG>  routine  stores  the  current  erase  character in the
-       location referenced by <EM>ch</EM>.  If no erase character has been defined, the
-       routine fails and the location referenced by <EM>ch</EM> is not changed.
+       location referenced by <EM>wc</EM>.  If no erase character has been defined, the
+       routine fails and the location referenced by <EM>wc</EM> is not changed.
 
 
-</PRE><H3><a name="h3-has_is_-has_il">has_is, has_il</a></H3><PRE>
+</PRE><H3><a name="h3-has_ic_has_il">has_ic, has_il</a></H3><PRE>
        The  <STRONG>has_ic</STRONG>  routine  is  true  if the terminal has insert- and delete-
        character capabilities.
 
        The <STRONG>has_il</STRONG> routine is true if the terminal has insert- and  delete-line
        capabilities, or can simulate them using scrolling regions.  This might
        be used to determine if it would be appropriate  to  turn  on  physical
-       scrolling using <STRONG>scrollok</STRONG>.
+       scrolling using <STRONG><A HREF="scrollok.3x.html">scrollok(3x)</A></STRONG>.
 
 
-</PRE><H3><a name="h3-killchar_-killwchar">killchar, killwchar</a></H3><PRE>
+</PRE><H3><a name="h3-killchar_killwchar">killchar, killwchar</a></H3><PRE>
        The <STRONG>killchar</STRONG> routine returns the user's current line kill character.
 
        The  <STRONG>killwchar</STRONG>  routine  stores  the current line-kill character in the
-       location referenced by <EM>ch</EM>.  If no line-kill character has been defined,
-       the routine fails and the location referenced by <EM>ch</EM> is not changed.
+       location referenced by <EM>wc</EM>.  If no line-kill character has been defined,
+       the routine fails and the location referenced by <EM>wc</EM> is not changed.
 
 
 </PRE><H3><a name="h3-longname">longname</a></H3><PRE>
        terminals.
 
 
-</PRE><H3><a name="h3-termattrs_-term_attrs">termattrs, term_attrs</a></H3><PRE>
+</PRE><H3><a name="h3-termattrs_term_attrs">termattrs, term_attrs</a></H3><PRE>
        If  a  given  terminal  does  not  support  a  video  attribute that an
        application program is trying to use, <STRONG>curses</STRONG> may substitute a different
        video  attribute for it.  The <STRONG>termattrs</STRONG> and <STRONG>term_attrs</STRONG> functions return
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The XSI Curses standard, Issue 4 describes these functions.  It changes
-       the return type of <STRONG>termattrs</STRONG> to the new type <STRONG>attr_t</STRONG>.  Most versions  of
+       X/Open  Curses,  Issue  4  describes  these  functions.  It changes the
+       return type of <STRONG>termattrs</STRONG> to the new  type  <STRONG>attr_t</STRONG>.   Most  versions  of
        curses truncate the result returned by <STRONG>termname</STRONG> to 14 characters.
 
 
 
 
 
-                                                            <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
 <li><a href="#h3-baudrate">baudrate</a></li>
-<li><a href="#h3-erasechar_-erasewchar">erasechar, erasewchar</a></li>
-<li><a href="#h3-has_is_-has_il">has_is, has_il</a></li>
-<li><a href="#h3-killchar_-killwchar">killchar, killwchar</a></li>
+<li><a href="#h3-erasechar_erasewchar">erasechar, erasewchar</a></li>
+<li><a href="#h3-has_ic_has_il">has_ic, has_il</a></li>
+<li><a href="#h3-killchar_killwchar">killchar, killwchar</a></li>
 <li><a href="#h3-longname">longname</a></li>
-<li><a href="#h3-termattrs_-term_attrs">termattrs, term_attrs</a></li>
+<li><a href="#h3-termattrs_term_attrs">termattrs, term_attrs</a></li>
 <li><a href="#h3-termname">termname</a></li>
 </ul>
 </li>
index 9cd555ec46d39dba477b9699b90ab5062698cac8..c2763afe3b945ed72a809e806becdb80ffbd5c2e 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2022,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_termcap.3x,v 1.56 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_termcap.3x,v 1.85 2024/04/20 19:13:12 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_termcap 3x</TITLE>
+<TITLE>curs_termcap 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_termcap 3x</H1>
+<H1 class="no-header">curs_termcap 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>                                              <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
+<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>PC</STRONG>, <STRONG>UP</STRONG>, <STRONG>BC</STRONG>, <STRONG>ospeed</STRONG>, <STRONG>tgetent</STRONG>, <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG>, <STRONG>tgetstr</STRONG>, <STRONG>tgoto</STRONG>, <STRONG>tputs</STRONG> -
-       <STRONG>curses</STRONG> emulation of termcap
+       <EM>curses</EM> emulation of <EM>termcap</EM>
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
        <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
 
-       <STRONG>extern</STRONG> <STRONG>char</STRONG> <STRONG>PC;</STRONG>
-       <STRONG>extern</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>UP;</STRONG>
-       <STRONG>extern</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>BC;</STRONG>
-       <STRONG>extern</STRONG> <STRONG>short</STRONG> <STRONG>ospeed;</STRONG>
+       <STRONG>char</STRONG> <STRONG>PC;</STRONG>
+       <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>UP;</STRONG>
+       <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>BC;</STRONG>
+       <STRONG>short</STRONG> <STRONG>ospeed;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>tgetent(char</STRONG> <STRONG>*</STRONG><EM>bp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>name</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>tgetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>id</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These routines are included as a conversion aid for programs  that  use
-       the  <EM>termcap</EM>  library.  Their parameters are the same, but the routines
-       are emulated using the <EM>terminfo</EM> database.  Thus, they can only be  used
-       to  query  the  capabilities  of entries for which a terminfo entry has
-       been compiled.
+       <EM>ncurses</EM>  provides  the  foregoing  variables   and   functions   as   a
+       compatibility layer for programs that use the <EM>termcap</EM> library.  The API
+       is the same, but behavior is  emulated  using  the  <EM>terminfo</EM>  database.
+       Thus,  it  can  be  used  only  to  query  the capabilities of terminal
+       database entries for which a <EM>terminfo</EM> entry has been compiled.
 
 
 </PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
-       The <STRONG>tgetent</STRONG> routine loads the entry for <EM>name</EM>.  It returns:
+       <STRONG>tgetent</STRONG> loads the terminal database entry for <EM>name</EM>; see <STRONG><A HREF="term.7.html">term(7)</A></STRONG>.   This
+       must be done before calling any of the other functions.  It returns
 
-          1  on success,
+          1    on success,
 
-          0  if there is no such entry (or that it is a generic  type,  having
-             too little information for curses applications to run), and
+          0    if there is no such entry (or if the matching entry describes a
+               generic terminal, having  too  little  information  for  <EM>curses</EM>
+               applications to run), and
 
-          -1 if the terminfo database could not be found.
+          -1   if the <EM>terminfo</EM> database could not be found.
 
-       This differs from the <EM>termcap</EM> library in two ways:
+       This implementation differs from those of historical <EM>termcap</EM> libraries.
 
-          <STRONG>o</STRONG>   The  emulation  ignores  the buffer pointer <EM>bp</EM>.  The <EM>termcap</EM> li-
-              brary would store a copy of the terminal description in the area
-              referenced  by this pointer.  However, ncurses stores its termi-
-              nal descriptions in compiled binary form, which is not the  same
-              thing.
+          <STRONG>o</STRONG>   <EM>ncurses</EM>  ignores  the  buffer  pointer  <EM>bp</EM>,  as do other <EM>termcap</EM>
+              implementations conforming to  portions  of  X/Open  Curses  now
+              withdrawn.   The  BSD  <EM>termcap</EM> library would store a copy of the
+              terminal  type  description  in  the  area  referenced  by  this
+              pointer.  <EM>terminfo</EM> stores terminal type descriptions in compiled
+              form, which is not the same thing.
 
-          <STRONG>o</STRONG>   There is a difference in return codes.  The <EM>termcap</EM> library does
-              not check if the terminal description is marked with the <EM>generic</EM>
-              capability,  or  if the terminal description has cursor-address-
-              ing.
+          <STRONG>o</STRONG>   The meanings of the  return  values  differ.   The  BSD  <EM>termcap</EM>
+              library  does  not  check  whether the terminal type description
+              includes the <STRONG>generic</STRONG> (<STRONG>gn</STRONG>) capability, nor whether  the  terminal
+              type  description  supports  an  addressable  cursor, a property
+              essential for any <EM>curses</EM> implementation to operate.
 
 
-</PRE><H3><a name="h3-Capability-Values">Capability Values</a></H3><PRE>
-       The <STRONG>tgetflag</STRONG> routine gets the boolean entry for <EM>id</EM>, or zero  if  it  is
-       not available.
-
-       The  <STRONG>tgetnum</STRONG>  routine gets the numeric entry for <EM>id</EM>, or -1 if it is not
+</PRE><H3><a name="h3-Retrieving-Capability-Values">Retrieving Capability Values</a></H3><PRE>
+       <STRONG>tgetflag</STRONG> reports the Boolean entry  for  <EM>id</EM>,  or  zero  if  it  is  not
        available.
 
-       The <STRONG>tgetstr</STRONG> routine returns the string entry for <EM>id</EM>, or zero if  it  is
-       not  available.  Use <STRONG>tputs</STRONG> to output the returned string.  The <EM>area</EM> pa-
-       rameter is used as follows:
+       <STRONG>tgetnum</STRONG> obtains the numeric entry for <EM>id</EM>, or -1 if it is not available.
+
+       <STRONG>tgetstr</STRONG>  returns  the  string  entry  for  <EM>id</EM>,  or  <STRONG>NULL</STRONG>  if  it is not
+       available.   Use  <STRONG>tputs</STRONG>  to  output  the  string  returned.   The  <EM>area</EM>
+       parameter is used as follows.
 
           <STRONG>o</STRONG>   It is assumed to be the address of a pointer to a buffer managed
               by the calling application.
 
-          <STRONG>o</STRONG>   However, ncurses checks to ensure that <STRONG>area</STRONG> is not NULL, and al-
-              so that the resulting buffer pointer is  not  NULL.   If  either
-              check fails, the <EM>area</EM> parameter is ignored.
+          <STRONG>o</STRONG>   However, <EM>ncurses</EM> checks to ensure that <EM>area</EM>  is  not  <STRONG>NULL</STRONG>,  and
+              also  that  the resulting buffer pointer is not <STRONG>NULL</STRONG>.  If either
+              check fails, <EM>area</EM> is ignored.
 
-          <STRONG>o</STRONG>   If  the  checks succeed, ncurses also copies the return value to
-              the buffer pointed to by <EM>area</EM>, and the <EM>area</EM> value will be updat-
-              ed to point past the null ending this value.
+          <STRONG>o</STRONG>   If the checks succeed, <EM>ncurses</EM> also copies the return  value  to
+              the  buffer  pointed to by <EM>area</EM>, and the library updates <EM>area</EM> to
+              point past the null character terminating this value.
 
-          <STRONG>o</STRONG>   The  return  value itself is an address in the terminal descrip-
-              tion which is loaded into memory.
+          <STRONG>o</STRONG>   The return value itself is  an  address  in  the  terminal  type
+              description loaded into memory.
 
-       Only the first two characters of the <STRONG>id</STRONG> parameter of <STRONG>tgetflag</STRONG>,  <STRONG>tgetnum</STRONG>
-       and <STRONG>tgetstr</STRONG> are compared in lookups.
 
+</PRE><H3><a name="h3-Applying-String-Capabilities">Applying String Capabilities</a></H3><PRE>
+       String capabilities can be parameterized; see subsection "Parameterized
+       Strings" in  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.  <STRONG>tgoto</STRONG> applies its second and third arguments
+       to  the  parametric  placeholders in the capability stored in the first
+       argument.
 
-</PRE><H3><a name="h3-Formatting-Capabilities">Formatting Capabilities</a></H3><PRE>
-       The <STRONG>tgoto</STRONG> routine expands the given capability using the parameters.
+       <STRONG>o</STRONG>   The capability may contain padding specifications;  see  subsection
+           "Delays  and  Padding"  of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.  The output of <STRONG>tgoto</STRONG> should
+           thus be passed to <STRONG>tputs</STRONG> rather than some other output function such
+           as <STRONG>printf(3)</STRONG>.
 
-       <STRONG>o</STRONG>   Because  the  capability may have padding characters, the output of
-           <STRONG>tgoto</STRONG> should be passed to <STRONG>tputs</STRONG> rather than some other output func-
-           tion such as <STRONG>printf(3)</STRONG>.
+       <STRONG>o</STRONG>   While  <STRONG>tgoto</STRONG>  is  assumed  to  be used for the two-parameter cursor
+           positioning  capability,  <EM>termcap</EM>  applications  also  use  it  for
+           single-parameter capabilities.
 
-       <STRONG>o</STRONG>   While  <STRONG>tgoto</STRONG> is assumed to be used for the two-parameter cursor po-
-           sitioning capability, termcap applications also use it for  single-
-           parameter capabilities.
+           Doing  so  reveals  a  quirk  in <STRONG>tgoto</STRONG>: most hardware terminals use
+           cursor addressing with <EM>row</EM> first, but the  original  developers  of
+           the  <EM>termcap</EM>  interface  chose  to  put  the <EM>col</EM> (column) parameter
+           first.  The <STRONG>tgoto</STRONG> function swaps the order of its  parameters.   It
+           does  this  even  for  calls requiring only a single parameter.  In
+           that case, the first parameter is merely a placeholder.
 
-           Doing this shows a quirk in <STRONG>tgoto</STRONG>: most hardware terminals use cur-
-           sor addressing with <EM>row</EM> first, but the original developers  of  the
-           termcap  interface  chose  to  put the <EM>column</EM> parameter first.  The
-           <STRONG>tgoto</STRONG> function swaps the order of parameters.  It  does  this  also
-           for  calls  requiring  only  a single parameter.  In that case, the
-           first parameter is merely a placeholder.
+       <STRONG>o</STRONG>   Normally the <EM>ncurses</EM>  library  is  compiled  without  full  <EM>termcap</EM>
+           support.  In that case, <STRONG>tgoto</STRONG> uses an internal version of <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>
+           (a more capable function).
 
-       <STRONG>o</STRONG>   Normally the ncurses library is compiled with terminfo support.  In
-           that case, <STRONG>tgoto</STRONG> uses <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> (a more capable formatter).
+           Because it uses <STRONG>tparm</STRONG> internally, <STRONG>tgoto</STRONG> is able to use  some  <EM>term-</EM>
+           <EM>info</EM>  features, but not all.  In particular, it allows only numeric
+           parameters; <STRONG>tparm</STRONG> supports string parameters.
 
-           However,  <STRONG>tparm</STRONG>  is not a <EM>termcap</EM> feature, and portable <EM>termcap</EM> ap-
-           plications should not rely upon its availability.
+           However, <STRONG>tparm</STRONG> is not  a  <EM>termcap</EM>  feature,  and  portable  <EM>termcap</EM>
+           applications should not rely upon its availability.
 
-       The <STRONG>tputs</STRONG> routine is described on the  <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>  manual  page.
-       It can retrieve capabilities by either termcap or terminfo name.
+       <STRONG>tputs</STRONG>  is described in <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>.  It can retrieve capabilities
+       by either <EM>termcap</EM> or <EM>terminfo</EM> code.
 
 
 </PRE><H3><a name="h3-Global-Variables">Global Variables</a></H3><PRE>
-       The  variables <STRONG>PC</STRONG>, <STRONG>UP</STRONG> and <STRONG>BC</STRONG> are set by <STRONG>tgetent</STRONG> to the terminfo entry's
+       The variables <STRONG>PC</STRONG>, <STRONG>UP</STRONG> and <STRONG>BC</STRONG> are set by <STRONG>tgetent</STRONG> to the <EM>terminfo</EM>  entry's
        data for <STRONG>pad_char</STRONG>, <STRONG>cursor_up</STRONG> and <STRONG>backspace_if_not_bs</STRONG>, respectively.  <STRONG>UP</STRONG>
-       is  not used by ncurses.  <STRONG>PC</STRONG> is used in the <STRONG>tdelay_output</STRONG> function.  <STRONG>BC</STRONG>
-       is used in the <STRONG>tgoto</STRONG> emulation.  The variable <STRONG>ospeed</STRONG> is set by  ncurses
-       in a system-specific coding to reflect the terminal speed.
+       is not used by <EM>ncurses</EM>.  <STRONG>PC</STRONG> is used by <STRONG><A HREF="curs_util.3x.html">delay_output(3x)</A></STRONG>.  <STRONG>BC</STRONG> is used by
+       <STRONG>tgoto</STRONG> emulation.  The variable <STRONG>ospeed</STRONG> is set by <EM>ncurses</EM> using a system-
+       specific encoding to indicate the terminal's data rate.
 
 
 </PRE><H3><a name="h3-Releasing-Memory">Releasing Memory</a></H3><PRE>
-       The  termcap  functions  provide  no  means for freeing memory, because
-       legacy termcap implementations used only the buffer areas  provided  by
-       the  caller  via <STRONG>tgetent</STRONG> and <STRONG>tgetstr</STRONG>.  Those buffers are unused in ter-
-       minfo.
-
-       On the other hand, terminfo allocates memory.  It uses <STRONG>setupterm</STRONG> to re-
-       trieve the data used by <STRONG>tgetent</STRONG> and the functions which return capabil-
-       ity values such as <STRONG>tgetstr</STRONG>.  One could use
+       The <EM>termcap</EM> functions provide  no  means  of  freeing  memory,  because
+       legacy  <EM>termcap</EM>  implementations used only the buffer areas provided by
+       the caller via <STRONG>tgetent</STRONG> and <STRONG>tgetstr</STRONG>.  Those buffers are unused in  <EM>term-</EM>
+       <EM>info</EM>.
 
-            <STRONG>del_curterm(cur_term);</STRONG>
+       By  contrast,  <EM>terminfo</EM>  allocates  memory.   It  uses <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to
+       obtain the data  used  by  <STRONG>tgetent</STRONG>  and  the  functions  that  retrieve
+       capability values.  One could use
+              del_curterm(cur_term);
+       to  free  this  memory,  but  there  is an additional complication with
+       <EM>ncurses</EM>.  It uses a fixed-size pool of storage locations, one per value
+       of the terminal name parameter given to <STRONG>tgetent</STRONG>.  The <STRONG>screen(1)</STRONG> program
+       relies upon this arrangement to improve its performance.
 
-
-       to free this memory, but  there  is  an  additional  complication  with
-       ncurses.   It uses a fixed-size <EM>pool</EM> of storage locations, one per set-
-       ting of the <STRONG>TERM</STRONG> variable when <STRONG>tgetent</STRONG> is called.  The  <STRONG>screen(1)</STRONG>  pro-
-       gram relies upon this arrangement, to improve its performance.
-
-       An  application  which  uses only the low-level termcap functions could
-       free the memory using <STRONG>del_curterm</STRONG>, because the pool is freed using oth-
-       er functions (see <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>).
+       An application that uses only the <EM>termcap</EM>  functions,  not  the  higher
+       level  <EM>curses</EM>  API,  could  release  the  memory using <STRONG><A HREF="curs_terminfo.3x.html">del_curterm(3x)</A></STRONG>,
+       because the pool is freed using other functions; see <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       Except  where  explicitly noted, routines that return an integer return
-       <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 only specifies "an  integer  value  other
-       than <STRONG>ERR</STRONG>") upon successful completion.
+       The return values of  <STRONG>tgetent</STRONG>,  <STRONG>tgetflag</STRONG>,  <STRONG>tgetname</STRONG>,  and  <STRONG>tgetstr</STRONG>  are
+       documented above.
 
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.
+       <STRONG>tgoto</STRONG> returns <STRONG>NULL</STRONG> on error.  Error conditions include:
 
+       <STRONG>o</STRONG>   uninitialized state (<STRONG>tgetent</STRONG> was not called successfully),
 
-</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
-       If  you  call <STRONG>tgetstr</STRONG> to fetch <STRONG>ca</STRONG> or any other parameterized string, be
-       aware that it will be returned in terminfo notation, not the older  and
-       not-quite-compatible termcap notation.  This will not cause problems if
-       all you do with it is call <STRONG>tgoto</STRONG> or <STRONG>tparm</STRONG>, which both expand  terminfo-
-       style  strings as terminfo.  (The <STRONG>tgoto</STRONG> function, if configured to sup-
-       port termcap, will check if the  string  is  indeed  terminfo-style  by
-       looking  for  "%p"  parameters or "$&lt;..&gt;" delays, and invoke a termcap-
-       style parser if the string does not appear to be terminfo).
+       <STRONG>o</STRONG>   <EM>cap</EM> being a null pointer,
 
-       Because terminfo conventions for representing padding in  string  capa-
-       bilities differ from termcap's, users can be surprised:
+       <STRONG>o</STRONG>   <EM>cap</EM> referring to a canceled capability,
 
-       <STRONG>o</STRONG>   <STRONG>tputs("50")</STRONG> in a terminfo system will put out a literal "50" rather
-           than busy-waiting for 50 milliseconds.
+       <STRONG>o</STRONG>   <EM>cap</EM>  being  a  capability  with  string-valued  parameters (a <EM>term-</EM>
+           <EM>info</EM>-only feature), and
 
-       <STRONG>o</STRONG>   However, if ncurses is configured to support termcap, it  may  also
-           have been configured to support the BSD-style padding.
+       <STRONG>o</STRONG>   <EM>cap</EM> being a capability with more than two parameters.
 
-           In that case, <STRONG>tputs</STRONG> inspects strings passed to it, looking for dig-
-           its at the beginning of the string.
+       See <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> regarding <STRONG>tputs</STRONG>.
 
-           <STRONG>tputs("50")</STRONG> in a termcap system may wait for 50 milliseconds rather
-           than put out a literal "50"
 
-       Note  that termcap has nothing analogous to terminfo's <STRONG>sgr</STRONG> string.  One
-       consequence of this is that termcap applications  assume  <STRONG>me</STRONG>  (terminfo
-       <STRONG>sgr0</STRONG>)  does not reset the alternate character set.  This implementation
-       checks for, and modifies the data shown to the termcap interface to ac-
-       commodate termcap's limitation in this respect.
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       <EM>ncurses</EM> compares only the first two characters of the <EM>id</EM>  parameter  of
+       <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG>, and <STRONG>tgetstr</STRONG> to the capability names in the database.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  functions  are  no  longer standardized (and the variables never
+       were); <EM>ncurses</EM> provides them  to  support  legacy  applications.   They
+       should not be used in new programs.
 
-</PRE><H3><a name="h3-Standards">Standards</a></H3><PRE>
-       These  functions  are  provided for supporting legacy applications, and
-       should not be used in new programs:
-
-       <STRONG>o</STRONG>   The XSI Curses standard, Issue 4 describes these functions.  Howev-
-           er,  they  are  marked TO BE WITHDRAWN and may be removed in future
-           versions.
-
-       <STRONG>o</STRONG>   X/Open Curses, Issue 5 (December 2007) marked the termcap interface
-           (along with <STRONG>vwprintw</STRONG> and <STRONG>vwscanw</STRONG>) as withdrawn.
-
-       Neither  the  XSI Curses standard nor the SVr4 man pages documented the
-       return values of <STRONG>tgetent</STRONG> correctly, though all three were in  fact  re-
-       turned  ever  since SVr1.  In particular, an omission in the XSI Curses
-       documentation has been misinterpreted to mean that <STRONG>tgetent</STRONG>  returns  <STRONG>OK</STRONG>
-       or  <STRONG>ERR</STRONG>.  Because the purpose of these functions is to provide compati-
-       bility with the <EM>termcap</EM> library, that is a defect in XCurses, Issue  4,
-       Version 2 rather than in ncurses.
-
-
-</PRE><H3><a name="h3-Compatibility-with-BSD-Termcap">Compatibility with BSD Termcap</a></H3><PRE>
-       External variables are provided for support of certain termcap applica-
-       tions.  However, termcap applications' use of those variables is poorly
-       documented, e.g., not distinguishing between input and output.  In par-
-       ticular, some applications are reported to declare  and/or  modify  <STRONG>os-</STRONG>
-       <STRONG>peed</STRONG>.
 
-       The  comment that only the first two characters of the <STRONG>id</STRONG> parameter are
-       used escapes many application developers.  The original BSD 4.2 termcap
-       library (and historical relics thereof) did not require a trailing null
-       NUL on the parameter name passed  to  <STRONG>tgetstr</STRONG>,  <STRONG>tgetnum</STRONG>  and  <STRONG>tgetflag</STRONG>.
-       Some  applications  assume  that the termcap interface does not require
-       the trailing NUL for the parameter name.  Taking into account these is-
-       sues:
-
-       <STRONG>o</STRONG>   As  a  special  case,  <STRONG>tgetflag</STRONG>  matched against a single-character
-           identifier provided that was at the end of  the  terminal  descrip-
-           tion.  You should not rely upon this behavior in portable programs.
-           This implementation disallows matches against single-character  ca-
-           pability names.
-
-       <STRONG>o</STRONG>   This  implementation  disallows  matches  by  the termcap interface
-           against extended capability names which are longer than two charac-
-           ters.
-
-       The BSD termcap function <STRONG>tgetent</STRONG> returns the text of a termcap entry in
-       the buffer passed as an argument.  This library  (like  other  terminfo
-       implementations) does not store terminal descriptions as text.  It sets
-       the buffer contents to a null-terminated string.
-
-
-</PRE><H3><a name="h3-Other-Compatibility">Other Compatibility</a></H3><PRE>
-       This library includes a termcap.h header, for compatibility with  other
-       implementations.   But  the header is rarely used because the other im-
-       plementations are not strictly compatible.
-
-       The original BSD termcap (through 4.3BSD) had no header file which gave
-       function prototypes, because that was a feature of ANSI C.  BSD termcap
-       was written several years before C was  standardized.   However,  there
-       were two different termcap.h header files in the BSD sources:
-
-       <STRONG>o</STRONG>   One  was used internally by the <STRONG>jove</STRONG> editor in 2BSD through 4.4BSD.
-           It defined global symbols for the termcap variables which it used.
-
-       <STRONG>o</STRONG>   The other appeared in 4.4BSD Lite Release 2 (mid-1993) as  part  of
-           <EM>libedit</EM> (also known as the <EM>editline</EM> library).  The CSRG source his-
-           tory shows that this was added in  mid-1992.   The  <EM>libedit</EM>  header
-           file  was used internally, as a convenience for compiling the <EM>edit-</EM>
-           <EM>line</EM> library.  It declared function prototypes, but no global vari-
-           ables.
+</PRE><H3><a name="h3-Standards">Standards</a></H3><PRE>
+       <STRONG>o</STRONG>   X/Open   Curses,   Issue  4,  Version  2  (1996),  describes  these
+           functions, marking them as "TO BE WITHDRAWN".
+
+       <STRONG>o</STRONG>   X/Open Curses, Issue 7 (2009) marks the  <EM>termcap</EM>  interface  (along
+           with <STRONG>vwprintw</STRONG> and <STRONG>vwscanw</STRONG>) as withdrawn.
+
+       Neither  X/Open  Curses  nor  the  SVr4 man pages documented the return
+       values of <STRONG>tgetent</STRONG> correctly, though all three shown here were  in  fact
+       returned  ever  since  SVr1.   In particular, an omission in the X/Open
+       Curses specification has  been  misinterpreted  to  mean  that  <STRONG>tgetent</STRONG>
+       returns  <STRONG>OK</STRONG>  or  <STRONG>ERR</STRONG>.   Because  the  purpose  of these functions is to
+       provide compatibility with the <EM>termcap</EM> library, that  is  a  defect  in
+       X/Open Curses, Issue 4, Version 2 rather than in <EM>ncurses</EM>.
+
+   <STRONG>Compatibility</STRONG> <STRONG>with</STRONG> <STRONG>BSD</STRONG> <EM>termcap</EM>
+       Externally  visible  variables  are  provided  for  support  of certain
+       <EM>termcap</EM>  applications.   However,  their  correct   usage   is   poorly
+       documented; for example, it is unclear when reading and writing them is
+       meaningful.  In particular, some applications are reported  to  declare
+       and/or modify <STRONG>ospeed</STRONG>.
+
+       The  constraint  that only the first two characters of the <EM>id</EM> parameter
+       are used escapes many application developers.  The BSD <EM>termcap</EM>  library
+       did  not require a trailing null character on the capability identifier
+       passed to <STRONG>tgetstr</STRONG>,  <STRONG>tgetnum</STRONG>,  and  <STRONG>tgetflag</STRONG>.   Some  applications  thus
+       assume  that  the  <EM>termcap</EM> interface does not require the trailing null
+       character for the capability identifier.
+
+       <STRONG>o</STRONG>   <EM>ncurses</EM> disallows matches by the <EM>termcap</EM> interface against extended
+           capability   names   that  are  longer  than  two  characters;  see
+           <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
+
+       The BSD <EM>termcap</EM> function <STRONG>tgetent</STRONG> returns the text of a <EM>termcap</EM> entry in
+       the  buffer  passed  as an argument.  This library, like other <EM>terminfo</EM>
+       implementations, does not store terminal type descriptions as text.  It
+       sets the buffer contents to a null-terminated string.
+
+
+</PRE><H3><a name="h3-Header-File">Header File</a></H3><PRE>
+       This  library  includes a <EM>termcap.h</EM> header for compatibility with other
+       implementations, but the  header  is  rarely  used  because  the  other
+       implementations are not strictly compatible.
+
+
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       Bill  Joy  originated  a  forerunner  of <EM>termcap</EM> called "ttycap", dated
+       September 1977, and released in 1BSD (March 1978).  It used many of the
+       same  function  names  as the later <EM>termcap</EM>, such as <STRONG>tgetent</STRONG>, <STRONG>tgetflag</STRONG>,
+       <STRONG>tgetnum</STRONG>, and <STRONG>tgetstr</STRONG>.
+
+       A clear descendant, the <EM>termlib</EM> library, followed in 2BSD  (May  1979),
+       adding <STRONG>tgoto</STRONG> and <STRONG>tputs</STRONG>.  The former applied at that time only to cursor
+       positioning  capabilities,  thus  the  overly  specific  name.   Little
+       changed  in 3BSD (late 1979) except the addition of test programs and a
+       <EM>termlib</EM> man page, which documented the API shown in section  "SYNOPSIS"
+       above.
+
+       4BSD  (November 1980) renamed <EM>termlib</EM> to <EM>termcap</EM> and added another test
+       program.  The library remained much the same though 4.3BSD (June 1986).
+       4.4BSD-Lite (June 1994) refactored it, leaving the API unchanged.
+
+       Function  prototypes were a feature of ANSI C (1989).  The library long
+       antedated the standard and thus provided no header file declaring them.
+       Nevertheless,  the  BSD sources included two different <EM>termcap.h</EM> header
+       files over time.
+
+       <STRONG>o</STRONG>   One was used internally by <STRONG>jove(1)</STRONG> from 4.3BSD onward.  It declared
+           global symbols for the <EM>termcap</EM> variables that it used.
+
+       <STRONG>o</STRONG>   The  other appeared in 4.4BSD-Lite Release 2 (June 1995) as part of
+           <EM>libedit</EM> (also known as the <EM>editline</EM> library).  CSRG source  history
+           shows that this was added in mid-1992.  The <EM>libedit</EM> header file was
+           used  internally  as  a  convenience  for  compiling  the  <EM>editline</EM>
+           library.  It declared function prototypes, but no global variables.
+           This header file was added to NetBSD's <EM>termcap</EM> library in mid-1994.
+
+       Meanwhile, GNU <EM>termcap</EM> began development in 1990.   Its  first  release
+       (1.0)  in  1991  included  a  <EM>termcap.h</EM>  header.   Its  second (1.1) in
+       September 1992 modified the  header  to  use  <EM>const</EM>  for  the  function
+       prototypes  in  the  header where one would expect the parameters to be
+       read-only.   BSD  <EM>termcap</EM>  did  not.   The  prototype  for  <STRONG>tputs</STRONG>  also
+       differed,  but  in that instance, it was <EM>libedit</EM> that differed from BSD
+       <EM>termcap</EM>.
+
+       GNU <EM>termcap</EM> 1.3 was bundled with <STRONG>bash(1)</STRONG> in  mid-1993  to  support  the
+       <STRONG>readline(3)</STRONG> library.
+
+       <EM>ncurses</EM>  1.8.1 (November 1993) provided a <EM>termcap.h</EM> file.  It reflected
+       influence  from  GNU  <EM>termcap</EM>  and  <STRONG>emacs(1)</STRONG>  (rather  than   <STRONG>jove(1)</STRONG>),
+       providing the following interface:
+
+       <STRONG>o</STRONG>   global symbols used by <EM>emacs</EM>,
+
+       <STRONG>o</STRONG>   <EM>const</EM>-qualified function prototypes, and
+
+       <STRONG>o</STRONG>   a prototype for <STRONG>tparam</STRONG>, a GNU <EM>termcap</EM> feature.
+
+       Later  (in mid-1996) the <STRONG>tparam</STRONG> function was removed from <EM>ncurses</EM>.  Any
+       two of the four implementations thus differ, and programs  that  intend
+       to work with all <EM>termcap</EM> library interfaces must account for that fact.
 
-       The  header  file from <EM>libedit</EM> was added to NetBSD's termcap library in
-       mid-1994.
 
-       Meanwhile, GNU termcap was under development, starting  in  1990.   The
-       first  release  (termcap 1.0) in 1991 included a termcap.h header.  The
-       second release (termcap 1.1) in September 1992 modified the  header  to
-       use <STRONG>const</STRONG> for the function prototypes in the header where one would ex-
-       pect the parameters to be read-only.  This was a difference versus  the
-       original  BSD  termcap.   The prototype for <STRONG>tputs</STRONG> also differed, but in
-       that instance, it was <EM>libedit</EM> which differed from BSD termcap.
+</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
+       If  you  call  <STRONG>tgetstr</STRONG>  to  fetch  <STRONG>column_address</STRONG>  (<STRONG>ch</STRONG>)  or  any  other
+       parameterized string capability, be aware that it is returned in  <EM>term-</EM>
+       <EM>info</EM> notation, not the older and not-quite-compatible <EM>termcap</EM> notation.
+       This does not cause problems if all you do with it  is  call  <STRONG>tgoto</STRONG>  or
+       <STRONG>tparm</STRONG>,   which   both   parametrically   expand  <EM>terminfo</EM>-style  string
+       capabilities as <EM>terminfo</EM> does.  (If <EM>ncurses</EM> is  configured  to  support
+       <EM>termcap,</EM>  <STRONG>tgoto</STRONG>  checks whether the string is <EM>terminfo</EM>-style by looking
+       for "<STRONG>%p</STRONG>" parameters or "<STRONG>&lt;</STRONG>...<STRONG>&gt;</STRONG>"  delays,  and  invokes  a  <EM>termcap</EM>-style
+       parser if the string appears not to use <EM>terminfo</EM> syntax.)
 
-       A copy of GNU termcap 1.3 was bundled with <EM>bash</EM> in mid-1993, to support
-       the <STRONG>readline(3)</STRONG> library.
+       Because  <EM>terminfo</EM>'s  syntax  for padding in string capabilities differs
+       from <EM>termcap</EM>'s, users can be surprised.
 
-       A  termcap.h  file was provided in ncurses 1.8.1 (November 1993).  That
-       reflected influence by <STRONG>emacs(1)</STRONG> (rather than <STRONG>jove(1)</STRONG>) and GNU termcap:
+       <STRONG>o</STRONG>   <STRONG>tputs("50")</STRONG> in a <EM>terminfo</EM> system transmits "50" rather  than  busy-
+           waiting for 50 milliseconds.
 
-       <STRONG>o</STRONG>   it provided declarations for a few global symbols used by <STRONG>emacs</STRONG>
+       <STRONG>o</STRONG>   However,  if  <EM>ncurses</EM> is configured to support <EM>termcap</EM>, it may also
+           have been configured to support BSD-style padding.
 
-       <STRONG>o</STRONG>   it provided function prototypes (using <STRONG>const</STRONG>).
+           In that case, <STRONG>tputs</STRONG> inspects strings  passed  to  it,  looking  for
+           digits at the beginning of the string.
 
-       <STRONG>o</STRONG>   a prototype for <STRONG>tparam</STRONG> (a GNU termcap feature) was provided.
+           <STRONG>tputs("50")</STRONG>  in  a <EM>termcap</EM> system may busy-wait for 50 milliseconds
+           rather than transmitting "50".
 
-       Later (in mid-1996) the <STRONG>tparam</STRONG> function was removed from ncurses.  As a
-       result,  there are differences between any of the four implementations,
-       which must be taken into account by programs which can  work  with  all
-       termcap library interfaces.
+       <EM>termcap</EM>  has  nothing  analogous  to  <EM>terminfo</EM>'s  <STRONG>set_attributes</STRONG>  (<STRONG>sgr</STRONG>)
+       capability.   One  consequence is that <EM>termcap</EM> applications assume that
+       "<STRONG>me</STRONG>" (equivalent to <EM>terminfo</EM>'s <STRONG>exit_attribute_mode</STRONG>  (<STRONG>sgr0</STRONG>)  capability)
+       does  not  reset  the alternate character set.  <EM>ncurses</EM> checks for, and
+       modifies the data shared with, the <EM>termcap</EM> interface to accommodate the
+       latter's limitation in this respect.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
        https://invisible-island.net/ncurses/tctest.html
 
 
 
-                                                              <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                  <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
 <li><a href="#h3-Initialization">Initialization</a></li>
-<li><a href="#h3-Capability-Values">Capability Values</a></li>
-<li><a href="#h3-Formatting-Capabilities">Formatting Capabilities</a></li>
+<li><a href="#h3-Retrieving-Capability-Values">Retrieving Capability Values</a></li>
+<li><a href="#h3-Applying-String-Capabilities">Applying String Capabilities</a></li>
 <li><a href="#h3-Global-Variables">Global Variables</a></li>
 <li><a href="#h3-Releasing-Memory">Releasing Memory</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a>
 <ul>
 <li><a href="#h3-Standards">Standards</a></li>
-<li><a href="#h3-Compatibility-with-BSD-Termcap">Compatibility with BSD Termcap</a></li>
-<li><a href="#h3-Other-Compatibility">Other Compatibility</a></li>
+<li><a href="#h3-Header-File">Header File</a></li>
 </ul>
 </li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index c50d7db335adb200641134c57006511622c7df21..2bba9d91256708d9f017b2bd47ae5d4738e0e3e8 100644 (file)
@@ -1,6 +1,7 @@
 <!--
+  * t
   ****************************************************************************
-  * Copyright 2018-2022,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_terminfo.3x,v 1.82 2022/06/04 22:47:05 tom Exp @
-  * ***************************************************************************
-  * ***************************************************************************
-  * ***************************************************************************
-  * ***************************************************************************
-  * ***************************************************************************
-  * ***************************************************************************
-  * ***************************************************************************
-  * ***************************************************************************
-  * ***************************************************************************
+  * @Id: curs_terminfo.3x,v 1.136 2024/04/14 00:14:40 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_terminfo 3x</TITLE>
+<TITLE>curs_terminfo 3x 2024-04-13 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_terminfo 3x</H1>
+<H1 class="no-header">curs_terminfo 3x 2024-04-13 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>                                            <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>                Library calls               <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>del_curterm</STRONG>, <STRONG>mvcur</STRONG>, <STRONG>putp</STRONG>, <STRONG>restartterm</STRONG>, <STRONG>set_curterm</STRONG>, <STRONG>setupterm</STRONG>,
-       <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG>, <STRONG>tigetstr</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tparm</STRONG>, <STRONG>tputs</STRONG>, <STRONG>vid_attr</STRONG>,
-       <STRONG>vid_puts</STRONG>, <STRONG>vidattr</STRONG>, <STRONG>vidputs</STRONG> - <STRONG>curses</STRONG> interfaces to terminfo database
+       <STRONG>del_curterm</STRONG>,   <STRONG>mvcur</STRONG>,   <STRONG>putp</STRONG>,   <STRONG>restartterm</STRONG>,   <STRONG>set_curterm</STRONG>,  <STRONG>setupterm</STRONG>,
+       <STRONG>tigetflag</STRONG>,  <STRONG>tigetnum</STRONG>,  <STRONG>tigetstr</STRONG>,  <STRONG>tiparm</STRONG>,  <STRONG>tiparm_s</STRONG>,  <STRONG>tiscan_s</STRONG>,  <STRONG>tparm</STRONG>,
+       <STRONG>tputs</STRONG>,  <STRONG>vid_attr</STRONG>,  <STRONG>vid_puts</STRONG>,  <STRONG>vidattr</STRONG>,  <STRONG>vidputs</STRONG>  - <EM>curses</EM> interfaces to
+       <EM>terminfo</EM> database
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>int</STRONG> <STRONG>del_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>oterm</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>restartterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>filedes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG>
 
-       <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> ...<STRONG>);</STRONG>
+            <EM>/*</EM> <EM>or</EM> <EM>*/</EM>
+       <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>long</STRONG> <EM>p1</EM> ... <STRONG>long</STRONG> <EM>p9</EM><STRONG>);</STRONG>
+
        <STRONG>int</STRONG> <STRONG>tputs(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>affcnt</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
        <STRONG>int</STRONG> <STRONG>putp(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>vid_puts(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
        <STRONG>int</STRONG> <STRONG>vid_attr(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>mvcur(int</STRONG> <EM>oldrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newrow</EM>, int <EM>newcol</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvcur(int</STRONG> <EM>oldrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newcol</EM><STRONG>);</STRONG>
+
+       <STRONG>int</STRONG> <STRONG>tigetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>cap-code</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>tigetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>cap-code</EM><STRONG>);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*tigetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>cap-code</EM><STRONG>);</STRONG>
+
+       <STRONG>char</STRONG> <STRONG>*tiparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> ...<STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>tigetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>tigetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*tigetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
+       <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM>
+       <STRONG>char</STRONG> <STRONG>*tiparm_s(int</STRONG> <EM>expected</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>mask</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
+       <STRONG>int</STRONG> <STRONG>tiscan_s(int</STRONG> <STRONG>*</STRONG><EM>expected</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>mask</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
 
-       <STRONG>char</STRONG> <STRONG>*tiparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
+       <EM>/*</EM> <EM>deprecated</EM> <EM>*/</EM>
+       <STRONG>int</STRONG> <STRONG>setterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These  low-level  routines must be called by programs that have to deal
-       directly with the <STRONG>terminfo</STRONG> database to handle certain terminal capabil-
-       ities, such as programming function keys.  For all other functionality,
-       <STRONG>curses</STRONG> routines are more suitable and their use is recommended.
+       These low-level functions must be called by programs that deal directly
+       with  the  <EM>terminfo</EM>  database  to handle certain terminal capabilities,
+       such as programming function keys.  For all other functionality, <EM>curses</EM>
+       functions are more suitable and their use is recommended.
 
-       None of these functions use  (or  are  aware  of)  multibyte  character
-       strings such as UTF-8:
+       None  of  these  functions  use  (or  are aware of) multibyte character
+       strings such as UTF-8.
 
-       <STRONG>o</STRONG>   capability names use the POSIX portable character set
+       <STRONG>o</STRONG>   Capability names and codes use the POSIX portable character set.
 
-       <STRONG>o</STRONG>   capability  string  values  have  no  associated encoding; they are
+       <STRONG>o</STRONG>   Capability string values have  no  associated  encoding;  they  are
            strings of 8-bit characters.
 
 
 </PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
-       Initially, <STRONG>setupterm</STRONG> should be called.  The high-level curses functions
-       <STRONG>initscr</STRONG>  and  <STRONG>newterm</STRONG> call <STRONG>setupterm</STRONG> to initialize the low-level set of
-       terminal-dependent variables [listed in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].
+       Initially, <STRONG>setupterm</STRONG> should be called.  The high-level <EM>curses</EM> functions
+       <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> call <STRONG>setupterm</STRONG> to initialize the low-level  set  of
+       terminal-dependent variables listed in <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>.
 
-       Applications can use the terminal  capabilities  either  directly  (via
-       header  definitions),  or by special functions.  The header files <STRONG>curs-</STRONG>
-       <STRONG>es.h</STRONG> and <STRONG>term.h</STRONG> should be included (in this order) to get  the  defini-
-       tions for these strings, numbers, and flags.
+       Applications  can  use  the  terminal capabilities either directly (via
+       header  definitions),  or  by  special  functions.   The  header  files
+       <EM>curses.h</EM>  and  <EM>term.h</EM>  should  be  included  (in that order) to get the
+       definitions for these strings, numbers, and flags.
 
-       The  <STRONG>terminfo</STRONG>  variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized by <STRONG>setupterm</STRONG>
-       as follows:
+       The <EM>terminfo</EM> variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized  by  <STRONG>setupterm</STRONG>
+       as follows.
 
-       <STRONG>o</STRONG>   If <STRONG>use_env(FALSE)</STRONG> has been called, values  for  <STRONG>lines</STRONG>  and  <STRONG>columns</STRONG>
-           specified in <STRONG>terminfo</STRONG> are used.
+       <STRONG>o</STRONG>   If  <STRONG>use_env(FALSE)</STRONG>  has  been  called, values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG>
+           specified in <EM>terminfo</EM> are used.
 
-       <STRONG>o</STRONG>   Otherwise,  if  the  environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> exist,
+       <STRONG>o</STRONG>   Otherwise, if the environment variables <EM>LINES</EM>  and  <EM>COLUMNS</EM>  exist,
            their values are used.  If these environment variables do not exist
-           and  the program is running in a window, the current window size is
-           used.  Otherwise, if the environment variables do  not  exist,  the
-           values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in the <STRONG>terminfo</STRONG> database are
+           and the program is running in a window, the current window size  is
+           used.   Otherwise,  if  the environment variables do not exist, the
+           values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in the <EM>terminfo</EM> database are
            used.
 
-       Parameterized strings should be passed  through  <STRONG>tparm</STRONG>  to  instantiate
-       them.   All  <STRONG>terminfo</STRONG> strings (including the output of <STRONG>tparm</STRONG>) should be
-       printed with <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>.  Call <STRONG>reset_shell_mode</STRONG> to restore  the  tty
-       modes before exiting [see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>].
+       Parameterized  strings  should  be  passed through <STRONG>tparm</STRONG> to instantiate
+       them.  All <EM>terminfo</EM> strings (including the output of <STRONG>tparm</STRONG>)  should  be
+       sent  to the terminal device with <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>.  Call <STRONG>reset_shell_mode</STRONG>
+       to restore the terminal modes before exiting; see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>.
 
-       Programs which use cursor addressing should
+       Programs that use cursor addressing should
 
        <STRONG>o</STRONG>   output <STRONG>enter_ca_mode</STRONG> upon startup and
 
        <STRONG>o</STRONG>   output <STRONG>exit_ca_mode</STRONG> before exiting.
 
-       Programs which execute shell subprocesses should
+       Programs that execute shell subprocesses should
 
-       <STRONG>o</STRONG>   call  <STRONG>reset_shell_mode</STRONG>  and output <STRONG>exit_ca_mode</STRONG> before the shell is
+       <STRONG>o</STRONG>   call <STRONG>reset_shell_mode</STRONG> and output <STRONG>exit_ca_mode</STRONG> before the  shell  is
            called and
 
-       <STRONG>o</STRONG>   output <STRONG>enter_ca_mode</STRONG> and call <STRONG>reset_prog_mode</STRONG> after returning  from
+       <STRONG>o</STRONG>   output  <STRONG>enter_ca_mode</STRONG> and call <STRONG>reset_prog_mode</STRONG> after returning from
            the shell.
 
-       The  <STRONG>setupterm</STRONG> routine reads in the <STRONG>terminfo</STRONG> database, initializing the
-       <STRONG>terminfo</STRONG> structures, but does not  set  up  the  output  virtualization
-       structures used by <STRONG>curses</STRONG>.  These are its parameters:
+       <STRONG>setupterm</STRONG> reads in the <EM>terminfo</EM>  database,  initializing  the  <EM>terminfo</EM>
+       structures,  but  does  not set up the output virtualization structures
+       used by <EM>curses</EM>.  Its parameters follow.
 
           <EM>term</EM> is the terminal type, a character string.  If <EM>term</EM> is null, the
-               environment variable <STRONG>TERM</STRONG> is used.
+               environment variable <EM>TERM</EM> is read.
 
           <EM>filedes</EM>
-               is the file descriptor used for all output.
+               is  the  file  descriptor used for getting and setting terminal
+               I/O modes.
+
+               Higher-level applications use  <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>  to  initialize  the
+               terminal,  passing  an  output <EM>stream</EM> rather than a <EM>descriptor</EM>.
+               In  <EM>curses</EM>,  the  two  are  the  same  because  <STRONG>newterm</STRONG>   calls
+               <STRONG>setupterm</STRONG>,  passing the file descriptor derived from its output
+               stream parameter.
 
           <EM>errret</EM>
-               points to an optional location where an error status can be re-
-               turned  to  the  caller.  If <EM>errret</EM> is not null, then <STRONG>setupterm</STRONG>
+               points to an optional location where an  error  status  can  be
+               returned  to the caller.  If <EM>errret</EM> is not null, then <STRONG>setupterm</STRONG>
                returns <STRONG>OK</STRONG> or <STRONG>ERR</STRONG> and stores a  status  value  in  the  integer
-               pointed  to by <EM>errret</EM>.  A return value of <STRONG>OK</STRONG> combined with sta-
-               tus of <STRONG>1</STRONG> in <EM>errret</EM> is normal.
+               pointed  to  by  <EM>errret</EM>.   A  return  value of <STRONG>OK</STRONG> combined with
+               status of <STRONG>1</STRONG> in <EM>errret</EM> is normal.
 
-               If <STRONG>ERR</STRONG> is returned, examine <EM>errret</EM>:
+               If <STRONG>ERR</STRONG> is returned, examine <EM>errret:</EM>
 
-               <STRONG>1</STRONG>    means that the terminal is hardcopy, cannot  be  used  for
-                    curses applications.
+               <STRONG>1</STRONG>    means that the terminal is hardcopy, and  cannot  be  used
+                    for <EM>curses</EM> applications.
 
                     <STRONG>setupterm</STRONG>  determines  if  the entry is a hardcopy type by
-                    checking the <STRONG>hc</STRONG> (<STRONG>hardcopy</STRONG>) capability.
+                    checking the <STRONG>hardcopy</STRONG> (<STRONG>hc</STRONG>) capability.
 
                <STRONG>0</STRONG>    means that the terminal could not be found, or that it  is
-                    a  generic  type, having too little information for curses
+                    a  generic  type, having too little information for <EM>curses</EM>
                     applications to run.
 
                     <STRONG>setupterm</STRONG> determines if the entry is  a  generic  type  by
-                    checking the <STRONG>gn</STRONG> (<STRONG>generic</STRONG>) capability.
+                    checking the <STRONG>generic_type</STRONG> (<STRONG>gn</STRONG>) capability.
 
-               <STRONG>-1</STRONG>   means that the <STRONG>terminfo</STRONG> database could not be found.
+               <STRONG>-1</STRONG>   means that the <EM>terminfo</EM> database could not be found.
 
-               If <EM>errret</EM> is null, <STRONG>setupterm</STRONG> prints an error message upon find-
-               ing an error and exits.  Thus, the simplest call is:
+               If  <EM>errret</EM>  is  null,  <STRONG>setupterm</STRONG>  reports an error message upon
+               finding an error and exits.  Thus, the simplest call is:
 
-                     <STRONG>setupterm((char</STRONG> <STRONG>*)0,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0);</STRONG>,
+                      setupterm((char *)0, 1, (int *)0);
 
                which uses all the defaults and sends the output to <STRONG>stdout</STRONG>.
 
 
 </PRE><H3><a name="h3-The-Terminal-State">The Terminal State</a></H3><PRE>
-       The <STRONG>setupterm</STRONG> routine stores its information about the  terminal  in  a
-       <STRONG>TERMINAL</STRONG>  structure  pointed to by the global variable <STRONG>cur_term</STRONG>.  If it
-       detects an error, or decides that the terminal is unsuitable  (hardcopy
-       or  generic),  it discards this information, making it not available to
+       <STRONG>setupterm</STRONG> stores its information  about  the  terminal  in  a  <EM>TERMINAL</EM>
+       structure pointed to by the global variable <STRONG>cur_term</STRONG>.  If it detects an
+       error,  or  decides  that  the  terminal  is  unsuitable  (hardcopy  or
+       generic),  it  discards  this  information,  making it not available to
        applications.
 
        If <STRONG>setupterm</STRONG> is called repeatedly for the same terminal type,  it  will
-       reuse  the  information.   It maintains only one copy of a given termi-
-       nal's capabilities in memory.  If it is called for  different  terminal
-       types,  <STRONG>setupterm</STRONG>  allocates new storage for each set of terminal capa-
-       bilities.
-
-       The <STRONG>set_curterm</STRONG> routine sets <STRONG>cur_term</STRONG> to <EM>nterm</EM>, and makes  all  of  the
-       <STRONG>terminfo</STRONG>  boolean,  numeric,  and  string variables use the values from
-       <EM>nterm</EM>.  It returns the old value of <STRONG>cur_term</STRONG>.
-
-       The <STRONG>del_curterm</STRONG> routine frees the space pointed to by <EM>oterm</EM>  and  makes
-       it available for further use.  If <EM>oterm</EM> is the same as <STRONG>cur_term</STRONG>, refer-
-       ences to any of the <STRONG>terminfo</STRONG> boolean,  numeric,  and  string  variables
-       thereafter  may  refer  to  invalid  memory locations until another <STRONG>se-</STRONG>
-       <STRONG>tupterm</STRONG> has been called.
-
-       The <STRONG>restartterm</STRONG> routine is similar to  <STRONG>setupterm</STRONG>  and  <STRONG>initscr</STRONG>,  except
-       that it is called after restoring memory to a previous state (for exam-
-       ple, when reloading a game saved as a core  image  dump).   <STRONG>restartterm</STRONG>
-       assumes  that the windows and the input and output options are the same
-       as when memory was saved, but the terminal type and baud  rate  may  be
-       different.   Accordingly,  <STRONG>restartterm</STRONG>  saves  various  tty state bits,
-       calls <STRONG>setupterm</STRONG>, and then restores the bits.
+       reuse  the  information.   It  maintains  only  one  copy  of  a  given
+       terminal's capabilities in memory.   If  it  is  called  for  different
+       terminal  types,  <STRONG>setupterm</STRONG>  allocates  new  storage  for  each  set of
+       terminal capabilities.
+
+       <STRONG>set_curterm</STRONG> sets <STRONG>cur_term</STRONG> to <EM>nterm</EM>,  and  makes  all  of  the  <EM>terminfo</EM>
+       Boolean,  numeric,  and string variables use the values from <EM>nterm</EM>.  It
+       returns the old value of <STRONG>cur_term</STRONG>.
+
+       <STRONG>del_curterm</STRONG> frees the space pointed to by <EM>oterm</EM> and makes it  available
+       for  further  use.  If <EM>oterm</EM> is the same as <STRONG>cur_term</STRONG>, references to any
+       of the <EM>terminfo</EM> Boolean, numeric, and string variables  thereafter  may
+       refer  to  invalid  memory  locations  until another <STRONG>setupterm</STRONG> has been
+       called.
+
+       <STRONG>restartterm</STRONG> is similar to <STRONG>setupterm</STRONG> and  <STRONG>initscr</STRONG>,  except  that  it  is
+       called  after  restoring  memory to a previous state (for example, when
+       reloading a game saved as a core image dump).  <STRONG>restartterm</STRONG> assumes that
+       the  windows  and  the  input  and  output options are the same as when
+       memory was saved, but the terminal type and baud rate may be different.
+       Accordingly,  <STRONG>restartterm</STRONG>  saves  various  terminal  state  bits, calls
+       <STRONG>setupterm</STRONG>, and then restores the bits.
 
 
 </PRE><H3><a name="h3-Formatting-Output">Formatting Output</a></H3><PRE>
-       The <STRONG>tparm</STRONG> routine instantiates the string <EM>str</EM> with  parameters  <EM>pi</EM>.   A
-       pointer  is  returned to the result of <EM>str</EM> with the parameters applied.
-       Application developers should keep in mind these quirks of  the  inter-
-       face:
+       <STRONG>tparm</STRONG> instantiates the string <EM>str</EM> with parameters  <EM>pi</EM>.   A  pointer  is
+       returned to the result of <EM>str</EM> with the parameters applied.  Application
+       developers should keep in mind these quirks of the interface:
 
-       <STRONG>o</STRONG>   Although  <STRONG>tparm</STRONG>'s actual parameters may be integers or strings, the
-           prototype expects <STRONG>long</STRONG> (integer) values.
+       <STRONG>o</STRONG>   Although <STRONG>tparm</STRONG>'s actual parameters may be integers or strings,  the
+           prototype expects <EM>long</EM> (integer) values.
 
-       <STRONG>o</STRONG>   Aside from the <STRONG>set_attributes</STRONG> (<STRONG>sgr</STRONG>) capability, most terminal capa-
-           bilities require no more than one or two parameters.
+       <STRONG>o</STRONG>   Aside  from  the  <STRONG>set_attributes</STRONG>  (<STRONG>sgr</STRONG>)  capability,  most terminal
+           capabilities require no more than one or two parameters.
 
-       <STRONG>o</STRONG>   Padding  information  is  ignored  by  <STRONG>tparm</STRONG>;  it is interpreted by
+       <STRONG>o</STRONG>   Padding information is ignored  by  <STRONG>tparm</STRONG>;  it  is  interpreted  by
            <STRONG>tputs</STRONG>.
 
-       <STRONG>o</STRONG>   The capability string is  null-terminated.   Use  "\200"  where  an
+       <STRONG>o</STRONG>   The  capability  string  is  null-terminated.   Use "\200" where an
            ASCII NUL is needed in the output.
 
-       <STRONG>tiparm</STRONG>  is  a  newer  form of <STRONG>tparm</STRONG> which uses <EM>&lt;stdarg.h&gt;</EM> rather than a
-       fixed-parameter list.  Its numeric parameters are integers (int) rather
-       than longs.
+       <STRONG>tiparm</STRONG> is a newer form of <STRONG>tparm</STRONG>  which  uses  <EM>stdarg.h</EM>  rather  than  a
+       fixed-parameter  list.   Its  numeric  parameters  are <EM>int</EM>s rather than
+       <EM>long</EM>s.
+
+       Both <STRONG>tparm</STRONG> and <STRONG>tiparm</STRONG> assume that  the  application  passes  parameters
+       consistent  with the terminal description.  Two extensions are provided
+       as alternatives to deal with untrusted data.
+
+       <STRONG>o</STRONG>   <STRONG>tiparm_s</STRONG> is an extension which is a safer formatting function  than
+           <STRONG>tparm</STRONG> or <STRONG>tiparm</STRONG>, because it allows the developer to tell the <EM>curses</EM>
+           library how many parameters to expect in the  parameter  list,  and
+           which may be string parameters.
+
+           The  <EM>mask</EM>  parameter has one bit set for each of the parameters (up
+           to 9) passed as <EM>char</EM> pointers rather than numbers.
+
+       <STRONG>o</STRONG>   The  extension  <STRONG>tiscan_s</STRONG>  allows  the  application  to  inspect   a
+           formatting capability to see what the <EM>curses</EM> library would assume.
 
 
 </PRE><H3><a name="h3-Output-Functions">Output Functions</a></H3><PRE>
-       The  <STRONG>tputs</STRONG>  routine  applies padding information (i.e., by interpreting
-       marker embedded in the terminfo capability such as  "$&lt;5&gt;"  as  5  mil-
-       liseconds) to the string <EM>str</EM> and outputs it:
+       String  capabilities  can  contain  padding  information,  a time delay
+       (accommodating performance limitations of hardware terminals) expressed
+       as <STRONG>$&lt;</STRONG><EM>n</EM><STRONG>&gt;</STRONG>, where <EM>n</EM> is a nonnegative integral count of milliseconds.  If <EM>n</EM>
+       exceeds 30,000 (thirty seconds), it is capped at that value.
 
-       <STRONG>o</STRONG>   The  <EM>str</EM> parameter must be a terminfo string variable or the return
-           value from <STRONG>tparm</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tgetstr</STRONG>, or <STRONG>tgoto</STRONG>.
+       <STRONG>tputs</STRONG> interprets time-delay information in the string <EM>str</EM>  and  outputs
+       it, executing the delays:
+
+       <STRONG>o</STRONG>   The  <EM>str</EM> parameter must be a <EM>terminfo</EM> string variable or the return
+           value of <STRONG>tparm</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tgetstr</STRONG>, or <STRONG>tgoto</STRONG>.
 
            The <STRONG>tgetstr</STRONG> and <STRONG>tgoto</STRONG> functions are part of the <EM>termcap</EM>  interface,
-           which  happens to share this function name with the <EM>terminfo</EM> inter-
-           face.
+           which happens to share these function names with the <EM>terminfo</EM> API.
 
-       <STRONG>o</STRONG>   <EM>affcnt</EM> is the number of lines affected, or 1 if not applicable.
+       <STRONG>o</STRONG>   <EM>affcnt</EM> is the number of lines affected, or <STRONG>1</STRONG> if not applicable.
 
-       <STRONG>o</STRONG>   <EM>putc</EM> is a <STRONG>putchar</STRONG>-like routine to which the characters are  passed,
+       <STRONG>o</STRONG>   <EM>putc</EM> is a <EM>putchar</EM>-like function to which the characters are passed,
            one at a time.
 
-       The  <STRONG>putp</STRONG> routine calls <STRONG>tputs(</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>putchar)</STRONG>.  The output of <STRONG>putp</STRONG> al-
-       ways goes to <STRONG>stdout</STRONG>, rather than the <EM>filedes</EM> specified in <STRONG>setupterm</STRONG>.
+           If <STRONG>tputs</STRONG> processes  a  time-delay,  it  uses  the  <STRONG><A HREF="curs_util.3x.html">delay_output(3x)</A></STRONG>
+           function,  routing  any  resulting  padding characters through this
+           function.
+
+       <STRONG>putp</STRONG> calls "<STRONG>tputs(</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>putchar)</STRONG>".  The output of <STRONG>putp</STRONG> always goes to
+       <STRONG>stdout</STRONG>, rather than the <EM>filedes</EM> specified in <STRONG>setupterm</STRONG>.
 
-       The <STRONG>vidputs</STRONG> routine displays the string on the terminal  in  the  video
-       attribute mode <EM>attrs</EM>, which is any combination of the attributes listed
-       in <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.  The characters are passed to the  <STRONG>putchar</STRONG>-like  routine
-       <EM>putc</EM>.
+       <STRONG>vidputs</STRONG> displays the string on the terminal in the video attribute mode
+       <EM>attrs</EM>, which is any combination of the attributes listed in <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
+       The characters are passed to the <EM>putchar</EM>-like function <EM>putc</EM>.
 
-       The <STRONG>vidattr</STRONG> routine is like the <STRONG>vidputs</STRONG> routine, except that it outputs
-       through <STRONG>putchar</STRONG>.
+       <STRONG>vidattr</STRONG> is like <STRONG>vidputs</STRONG>, except that it outputs through <STRONG>putchar(3)</STRONG>.
 
-       The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines correspond to vidattr  and  vidputs,
-       respectively.   They  use a set of arguments for representing the video
-       attributes plus color, i.e.,
+       <STRONG>vid_attr</STRONG>  and <STRONG>vid_puts</STRONG> correspond to <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG>, respectively.
+       They use multiple parameters to represent the character attributes  and
+       color; namely,
 
-       <STRONG>o</STRONG>   <EM>attrs</EM> of type <STRONG>attr_t</STRONG> for the attributes and
+       <STRONG>o</STRONG>   <EM>attrs</EM>, of type <EM>attr</EM><STRONG>_</STRONG><EM>t</EM>, for the attributes and
 
-       <STRONG>o</STRONG>   <EM>pair</EM> of type <STRONG>short</STRONG> for the color-pair number.
+       <STRONG>o</STRONG>   <EM>pair</EM>, of type <EM>short</EM>, for the color pair number.
 
-       The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines are designed to  use  the  attribute
-       constants with the <STRONG>WA_</STRONG> prefix.
+       Use  the  attribute  constants  prefixed  with  "<STRONG>WA_</STRONG>" with <STRONG>vid_attr</STRONG> and
+       <STRONG>vid_puts</STRONG>.
 
-       X/Open  Curses  reserves  the <EM>opts</EM> argument for future use, saying that
-       applications must provide a null pointer for that argument.  As an  ex-
-       tension,  this  implementation  allows  <EM>opts</EM> to be used as a pointer to
-       <STRONG>int</STRONG>, which overrides the <EM>pair</EM> (<STRONG>short</STRONG>) argument.
+       X/Open Curses reserves the <EM>opts</EM> argument for future  use,  saying  that
+       applications  must  provide  a  null pointer for that argument; but see
+       section "EXTENSIONS" below.
 
-       The <STRONG>mvcur</STRONG> routine provides low-level cursor motion.   It  takes  effect
-       immediately (rather than at the next refresh).
+       <STRONG>mvcur</STRONG> provides low-level cursor motion.  It  takes  effect  immediately
+       (rather  than  at the next refresh).  Unlike the other low-level output
+       functions, which either write to the standard output or pass an  output
+       function  parameter,  <STRONG>mvcur</STRONG> uses an output file descriptor derived from
+       the output stream parameter of <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>.
 
-       While <STRONG>putp</STRONG> and <STRONG>mvcur</STRONG> are low-level functions which do not use the high-
-       level curses state, they are declared in <STRONG>&lt;curses.h&gt;</STRONG> because SystemV did
-       this (see <EM>HISTORY</EM>).
+       While <STRONG>putp</STRONG> and <STRONG>mvcur</STRONG> are low-level functions that do not use high-level
+       <EM>curses</EM>  state,  <EM>ncurses</EM>  declares them in <EM>curses.h</EM> because System V did
+       this (see section "HISTORY" below).
 
 
 </PRE><H3><a name="h3-Terminal-Capability-Functions">Terminal Capability Functions</a></H3><PRE>
-       The  <STRONG>tigetflag</STRONG>,  <STRONG>tigetnum</STRONG> and <STRONG>tigetstr</STRONG> routines return the value of the
-       capability corresponding to the <STRONG>terminfo</STRONG> <EM>capname</EM> passed to  them,  such
-       as  <STRONG>xenl</STRONG>.  The <EM>capname</EM> for each capability is given in the table column
-       entitled <EM>capname</EM> code in the capabilities section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+       <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG>, and <STRONG>tigetstr</STRONG> return the value  of  the  capability
+       corresponding  to  the <EM>terminfo</EM> <EM>cap-code</EM>, such as <STRONG>xenl</STRONG>, passed to them.
+       The <EM>cap-code</EM> for each capability is given in the table column  entitled
+       <EM>cap-code</EM> code in the capabilities section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       These routines return special values to denote errors.
+       These functions return special values to denote errors.
 
-       The <STRONG>tigetflag</STRONG> routine returns
+       <STRONG>tigetflag</STRONG> returns
 
-       <STRONG>-1</STRONG>     if <EM>capname</EM> is not a boolean capability, or
+       <STRONG>-1</STRONG>     if <EM>cap-code</EM> is not a Boolean capability, or
 
        <STRONG>0</STRONG>      if it is canceled or absent from the terminal description.
 
-       The <STRONG>tigetnum</STRONG> routine returns
+       <STRONG>tigetnum</STRONG> returns
 
-       <STRONG>-2</STRONG>     if <EM>capname</EM> is not a numeric capability, or
+       <STRONG>-2</STRONG>     if <EM>cap-code</EM> is not a numeric capability, or
 
        <STRONG>-1</STRONG>     if it is canceled or absent from the terminal description.
 
-       The <STRONG>tigetstr</STRONG> routine returns
+       <STRONG>tigetstr</STRONG> returns
 
        <STRONG>(char</STRONG> <STRONG>*)-1</STRONG>
-              if <EM>capname</EM> is not a string capability, or
+              if <EM>cap-code</EM> is not a string capability, or
 
        <STRONG>0</STRONG>      if it is canceled or absent from the terminal description.
 
 </PRE><H3><a name="h3-Terminal-Capability-Names">Terminal Capability Names</a></H3><PRE>
        These null-terminated arrays contain
 
-       <STRONG>o</STRONG>   the short terminfo names ("codes"),
+       <STRONG>o</STRONG>   the short <EM>terminfo</EM> names ("codes"),
 
-       <STRONG>o</STRONG>   the <STRONG>termcap</STRONG> names ("names"), and
+       <STRONG>o</STRONG>   the <EM>termcap</EM> names ("names"), and
 
-       <STRONG>o</STRONG>   the long terminfo names ("fnames")
+       <STRONG>o</STRONG>   the long <EM>terminfo</EM> names ("fnames")
 
-       for each of the predefined <STRONG>terminfo</STRONG> variables:
+       for each of the predefined <EM>terminfo</EM> variables:
 
               <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*boolnames[]</STRONG>, <STRONG>*boolcodes[]</STRONG>, <STRONG>*boolfnames[]</STRONG>
               <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*numnames[]</STRONG>, <STRONG>*numcodes[]</STRONG>, <STRONG>*numfnames[]</STRONG>
 
 </PRE><H3><a name="h3-Releasing-Memory">Releasing Memory</a></H3><PRE>
        Each successful call to <STRONG>setupterm</STRONG> allocates memory to hold the terminal
-       description.  As a side-effect, it sets <STRONG>cur_term</STRONG> to point to this memo-
-       ry.  If an application calls
+       description.  As a side effect, it  sets  <STRONG>cur_term</STRONG>  to  point  to  this
+       memory.  If an application calls
 
-            <STRONG>del_curterm(cur_term);</STRONG>
+              del_curterm(cur_term);
 
        the memory will be freed.
 
-       The formatting functions <STRONG>tparm</STRONG> and <STRONG>tiparm</STRONG> extend the storage  allocated
-       by <STRONG>setupterm</STRONG>:
+       The  formatting functions <STRONG>tparm</STRONG> and <STRONG>tiparm</STRONG> extend the storage allocated
+       by <STRONG>setupterm</STRONG> as follows.
 
-       <STRONG>o</STRONG>   the  "static"  terminfo variables [a-z].  Before ncurses 6.3, those
-           were shared by all screens.  With ncurses 6.3, those are  allocated
-           per screen.  See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details.
+       <STRONG>o</STRONG>   They add the "static" <EM>terminfo</EM>  variables  [a-z].   Before  <EM>ncurses</EM>
+           6.3, those were shared by all screens.  With <EM>ncurses</EM> 6.3, those are
+           allocated per screen.  See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       <STRONG>o</STRONG>   to  improve performance, ncurses 6.3 caches the result of analyzing
-           terminfo strings for their parameter types.  That is  stored  as  a
-           binary tree referenced from the <STRONG>TERMINAL</STRONG> structure.
+       <STRONG>o</STRONG>   To improve performance, <EM>ncurses</EM> 6.3 caches the result of  analyzing
+           <EM>terminfo</EM>  strings  for  their parameter types.  That is stored as a
+           binary tree referenced from the <EM>TERMINAL</EM> structure.
 
        The higher-level <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> functions use <STRONG>setupterm</STRONG>.  Normally
-       they do not free this memory, but it is possible to do that  using  the
+       they  do  not free this memory, but it is possible to do that using the
        <STRONG><A HREF="curs_initscr.3x.html">delscreen(3x)</A></STRONG> function.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       Routines  that  return  an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4
-       only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful  com-
-       pletion, unless otherwise noted in the preceding routine descriptions.
+       X/Open Curses defines no failure conditions.  In <EM>ncurses</EM>,
 
-       Routines that return pointers always return <STRONG>NULL</STRONG> on error.
+       <STRONG>del_curtem</STRONG>
+            fails if its terminal parameter is null.
 
-       X/Open defines no error conditions.  In this implementation
+       <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error codes.
 
-          <STRONG>del_curterm</STRONG>
-               returns an error if its terminal parameter is null.
+       <STRONG>restartterm</STRONG>
+            fails if the associated call to <STRONG>setupterm</STRONG> returns an error.
 
-          <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error-codes.
+       <STRONG>setupterm</STRONG>
+            fails if it cannot allocate enough memory, or create  the  initial
+            windows  (<STRONG>stdscr</STRONG>,  <STRONG>curscr</STRONG>,  and <STRONG>newscr</STRONG>) Other error conditions are
+            documented above.
 
-          <STRONG>restartterm</STRONG>
-               returns an error if the associated call to <STRONG>setupterm</STRONG> returns an
-               error.
+       <STRONG>tparm</STRONG>
+            returns a null pointer if the capability would require  unexpected
+            parameters;  that  is,  too  many,  too  few,  or  incorrect types
+            (strings where integers are expected, or vice versa).
 
-          <STRONG>setupterm</STRONG>
-               returns an error if it cannot allocate enough memory, or create
-               the initial windows (stdscr, curscr, newscr).  Other error con-
-               ditions are documented above.
+       <STRONG>tputs</STRONG>
+            fails if the string parameter is null.  It  does  not  detect  I/O
+            errors:  X/Open  Curses states that <STRONG>tputs</STRONG> ignores the return value
+            of the output function <EM>putc</EM>.
 
-          <STRONG>tputs</STRONG>
-               returns an error if the string parameter is null.  It does  not
-               detect  I/O errors: X/Open states that <STRONG>tputs</STRONG> ignores the return
-               value of the output function <EM>putc</EM>.
 
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       The <STRONG>vid_attr</STRONG> function in <EM>ncurses</EM> is a special case.  It was  originally
+       implemented based on a draft of X/Open Curses, as a macro, before other
+       parts of the <EM>ncurses</EM> wide-character API were developed, and unlike  the
+       other  wide-character  functions,  is  also  provided  in the non-wide-
+       character configuration.
 
-</PRE><H3><a name="h3-Compatibility-macros">Compatibility macros</a></H3><PRE>
-       This implementation provides a few macros for compatibility  with  sys-
-       tems  before  SVr4  (see  <EM>HISTORY</EM>).   Those  include  <STRONG>crmode</STRONG>,  <STRONG>fixterm</STRONG>,
-       <STRONG>gettmode</STRONG>, <STRONG>nocrmode</STRONG>, <STRONG>resetterm</STRONG>, <STRONG>saveterm</STRONG>, and <STRONG>setterm</STRONG>.
 
-       In SVr4, those are found in <STRONG>&lt;curses.h&gt;</STRONG>, but  except  for  <STRONG>setterm</STRONG>,  are
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       The functions marked as extensions were designed for <EM>ncurses</EM>,  and  are
+       not  found  in SVr4 <EM>curses</EM>, 4.4BSD <EM>curses</EM>, or any other previous <EM>curses</EM>
+       implementation.
+
+       <EM>ncurses</EM> allows <EM>opts</EM> to be a pointer to <EM>int</EM>, which  overrides  the  <EM>pair</EM>
+       (<EM>short</EM>) argument.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       <STRONG>setterm</STRONG> is not described by X/Open and must be considered non-portable.
+       All other functions are as described by X/Open.
+
+
+</PRE><H3><a name="h3-Compatibility-Macros">Compatibility Macros</a></H3><PRE>
+       This implementation  provides  a  few  macros  for  compatibility  with
+       systems  before  SVr4  (see  section  "HISTORY"  below).   They include
+       <STRONG>Bcrmode</STRONG>, <STRONG>Bfixterm</STRONG>, <STRONG>Bgettmode</STRONG>,  <STRONG>Bnocrmode</STRONG>,  <STRONG>Bresetterm</STRONG>,  <STRONG>Bsaveterm</STRONG>,  and
+       <STRONG>Bsetterm</STRONG>.
+
+       In  SVr4,  these  are  found  in  <EM>curses.h</EM>, but except for <STRONG>setterm</STRONG>, are
        likewise macros.  The one function, <STRONG>setterm</STRONG>, is mentioned in the manual
-       page.  The manual page notes that the <STRONG>setterm</STRONG> routine was  replaced  by
-       <STRONG>setupterm</STRONG>, stating that the call:
+       page.  It further notes that <STRONG>setterm</STRONG> was replaced by <STRONG>setupterm</STRONG>, stating
+       that the call
+              setupterm(<EM>term</EM>, 1, (int *)0)
+       provides the same  functionality  as  <STRONG>setterm(</STRONG><EM>term</EM><STRONG>)</STRONG>,  discouraging  the
+       latter  for  new programs.  <EM>ncurses</EM> implements each of these symbols as
+       macros for BSD <EM>curses</EM> compatibility.
 
-             <STRONG>setupterm(</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0)</STRONG>
 
-       provides the same functionality as <STRONG>setterm(</STRONG><EM>term</EM><STRONG>)</STRONG>, and is not recommend-
-       ed for new programs.  This implementation provides each of  those  sym-
-       bols as macros for BSD compatibility,
+</PRE><H3><a name="h3-Legacy-Data">Legacy Data</a></H3><PRE>
+       <STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>.  This  is  not
+       part of X/Open Curses, but is assumed by some applications.
 
+       Other  implementions  may not declare the capability name arrays.  Some
+       provide them without declaring them.  X/Open Curses  does  not  specify
+       them.
 
-</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       SVr2 introduced the terminfo feature.  Its programming manual mentioned
-       these low-level functions:
+       Extended  terminal  capability  names,  as defined by "<STRONG>tic</STRONG> <STRONG>-x</STRONG>", are not
+       stored in the arrays described here.
 
-       <STRONG>Function</STRONG>    <STRONG>Description</STRONG>
-       ------------------------------------------------------------
-       fixterm     restore tty to "in curses" state
-       gettmode    establish current tty modes
-       mvcur       low level cursor motion
-       putp        utility function that uses <STRONG>tputs</STRONG> to send  char-
-                   acters via <STRONG>putchar</STRONG>.
-       resetterm   set tty modes to "out of curses" state
-       resetty     reset tty flags to stored value
-       saveterm    save current modes as "in curses" state
-       savetty     store current tty flags
-       setterm     establish terminal with given type
-       setupterm   establish terminal with given type
-       tparm       instantiate a string expression with parameters
-       tputs       apply padding information to a string
-       vidattr     like <STRONG>vidputs</STRONG>, but outputs through <STRONG>putchar</STRONG>
-       vidputs     output  a string to put terminal in a specified
-                   video attribute mode
-
-       The programming manual also mentioned functions  provided  for  termcap
-       compatibility (commenting that they "may go away at a later date"):
 
-       <STRONG>Function</STRONG>   <STRONG>Description</STRONG>
-       ------------------------------------------------
-       tgetent    look up termcap entry for given <EM>name</EM>
-       tgetflag   get boolean entry for given <EM>id</EM>
-       tgetnum    get numeric entry for given <EM>id</EM>
-       tgetstr    get string entry for given <EM>id</EM>
-       tgoto      apply parameters to given capability
-       tputs      apply padding to capability, calling
-                  a function to put characters
-
-       Early terminfo programs obtained capability values  from  the  <STRONG>TERMINAL</STRONG>
-       structure initialized by <STRONG>setupterm</STRONG>.
+</PRE><H3><a name="h3-Output-Buffering">Output Buffering</a></H3><PRE>
+       Older versions of <EM>ncurses</EM> assumed that the file  descriptor  passed  to
+       <STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses buffered I/O, and would write to
+       the corresponding stream.  In  addition  to  the  limitation  that  the
+       terminal  was  left  in  block-buffered  mode  on  exit  (like System V
+       <EM>curses</EM>), it was problematic because <EM>ncurses</EM> did not  allow  a  reliable
+       way to clean up on receiving <STRONG>SIGTSTP</STRONG>.
+
+       The  current version (ncurses6) uses output buffers managed directly by
+       <EM>ncurses</EM>.  Some of the low-level functions described in this manual page
+       write  to  the  standard  output.  They are not signal-safe.  The high-
+       level functions in <EM>ncurses</EM> employ alternate versions of these functions
+       using the more reliable buffering scheme.
+
+
+</PRE><H3><a name="h3-Function-Prototypes">Function Prototypes</a></H3><PRE>
+       The  X/Open  Curses  prototypes  are  based  on  the SVr4 <EM>curses</EM> header
+       declarations, which were defined at the same time the  C  language  was
+       first standardized in the late 1980s.
+
+       <STRONG>o</STRONG>   X/Open  Curses  uses  <EM>const</EM>  less  effectively  than a later design
+           might, sometimes applying it needlessly to values that are  already
+           constant,  and  in  most cases overlooking parameters that normally
+           would use <EM>const</EM>.  Passing <EM>const</EM>-qualified parameters  to  functions
+           that  do  not  declare  them  <EM>const</EM>  may  prevent  the program from
+           compiling.   On  the  other  hand,  "writable   strings"   are   an
+           obsolescent feature.
 
-       SVr3  extended terminfo by adding functions to retrieve capability val-
-       ues (like the termcap interface), and reusing tgoto and tputs:
+           As  an  extension,  this implementation can be configured to change
+           the function prototypes to use the <EM>const</EM> keyword.  The <EM>ncurses</EM>  ABI
+           6 enables this feature by default.
 
-       <STRONG>Function</STRONG>    <STRONG>Description</STRONG>
-       -------------------------------------------
-       tigetflag   get boolean entry for given <EM>id</EM>
+       <STRONG>o</STRONG>   X/Open  Curses  prototypes <STRONG>tparm</STRONG> with a fixed number of parameters,
+           rather than a variable argument list.
 
-       tigetnum    get numeric entry for given <EM>id</EM>
-       tigetstr    get string entry for given <EM>id</EM>
+           This implementation uses a  variable  argument  list,  but  can  be
+           configured  to use the fixed-parameter list.  Portable applications
+           should provide nine parameters after the format;  zeroes  are  fine
+           for this purpose.
 
-       SVr3 also replaced several of the SVr2 terminfo functions which had  no
-       counterpart in the termcap interface, documenting them as obsolete:
+           In  response  to review comments by Thomas E. Dickey, X/Open Curses
+           Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
 
-       <STRONG>Function</STRONG>    <STRONG>Replaced</STRONG> <STRONG>by</STRONG>
-       -----------------------------
-       crmode      cbreak
-       fixterm     reset_prog_mode
-       gettmode    N/A
-       nocrmode    nocbreak
-       resetterm   reset_shell_mode
-       saveterm    def_prog_mode
-       setterm     setupterm
+           While <STRONG>tiparm</STRONG> is always provided in <EM>ncurses</EM>, the older form is  only
+           available  as  a build-time configuration option.  If not specially
+           configured, <STRONG>tparm</STRONG> is the same as <STRONG>tiparm</STRONG>.
 
-       SVr3  kept  the  <STRONG>mvcur</STRONG>, <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> functions, along with <STRONG>putp</STRONG>,
-       <STRONG>tparm</STRONG> and <STRONG>tputs</STRONG>.  The latter were needed to support padding,  and  han-
-       dling  functions  such as <STRONG>vidattr</STRONG> (which used more than the two parame-
-       ters supported by <STRONG>tgoto</STRONG>).
+       Both forms of <STRONG>tparm</STRONG> have drawbacks:
 
-       SVr3 introduced the functions for switching between  terminal  descrip-
-       tions, e.g., <STRONG>set_curterm</STRONG>.  Some of that was incremental improvements to
-       the SVr2 library:
+       <STRONG>o</STRONG>   Most of the calls to <STRONG>tparm</STRONG> use only one or two parameters.  Passing
+           nine on each call is awkward.
 
-       <STRONG>o</STRONG>   The <STRONG>TERMINAL</STRONG> type definition was introduced  in  SVr3.01,  for  the
-           <STRONG>term</STRONG> structure provided in SVr2.
+           Using  <EM>long</EM>  for the numeric parameter type is a workaround to make
+           the parameter use the same amount of  stack  as  a  pointer.   That
+           approach  dates  back  to the mid-1980s, before C was standardized.
+           Since then, there is a standard (and pointers are not  required  to
+           fit in a <EM>long</EM>).
 
-       <STRONG>o</STRONG>   The  various  global  variables such as <STRONG>boolnames</STRONG> were mentioned in
-           the programming manual at this point,  though  the  variables  were
-           provided in SVr2.
+       <STRONG>o</STRONG>   Providing  the  right  number of parameters for a variadic function
+           such  as  <STRONG>tiparm</STRONG>  can  be  a  problem,  in  particular  for  string
+           parameters.   However,  only a few <EM>terminfo</EM> capabilities use string
+           parameters (for instance, the ones used for  programmable  function
+           keys).
 
-       SVr4 added the <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> functions.
+           The <EM>ncurses</EM> library checks usage of these capabilities, and returns
+           an error if the capability mishandles string  parameters.   But  it
+           cannot  check  if  a  calling program provides strings in the right
+           places for the <STRONG>tparm</STRONG> calls.
 
-       There are other low-level functions declared in the curses header files
-       on Unix systems, but none were documented.  The functions marked "obso-
-       lete" remained in use by the Unix <STRONG>vi(1)</STRONG> editor.
+           The <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> program checks its use of  these  capabilities  with  a
+           table, so that it calls <STRONG>tparm</STRONG> correctly.
 
+   <STRONG>Special</STRONG> <EM>TERM</EM> <STRONG>treatment</STRONG>
+       If configured to use the terminal driver, as with the MinGW port,
 
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       <STRONG>o</STRONG>   <STRONG>setupterm</STRONG>  interprets  a missing/empty <EM>TERM</EM> variable as the special
+           value "unknown".
 
-</PRE><H3><a name="h3-Legacy-functions">Legacy functions</a></H3><PRE>
-       X/Open notes that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros.
+           SVr4 <EM>curses</EM> uses the special value "dumb".
 
-       The  function <STRONG>setterm</STRONG> is not described by X/Open and must be considered
-       non-portable.  All other functions are as described by X/Open.
+           The difference  between  the  two  is  that  the  former  uses  the
+           <STRONG>generic_type</STRONG>  (<STRONG>gn</STRONG>)  <EM>terminfo</EM> capability, while the latter does not.
+           A generic terminal is unsuitable for full-screen applications.
 
+       <STRONG>o</STRONG>   <STRONG>setupterm</STRONG> allows explicit use of the the windows console driver  by
+           checking  if <STRONG>$TERM</STRONG> is set to "#win32con" or an abbreviation of that
+           string.
 
-</PRE><H3><a name="h3-Legacy-data">Legacy data</a></H3><PRE>
-       <STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>.  This  is  not
-       part of X/Open Curses, but is assumed by some applications.
 
-       Other  implementions  may not declare the capability name arrays.  Some
-       provide them without declaring them.  X/Open does not specify them.
+</PRE><H3><a name="h3-Other-Portability-Issues">Other Portability Issues</a></H3><PRE>
+       In SVr4, <STRONG>set_curterm</STRONG> returns an <EM>int</EM>, <STRONG>OK</STRONG> or  <STRONG>ERR</STRONG>.   We  have  chosen  to
+       implement the X/Open Curses semantics.
 
-       Extended terminal capability names, e.g., as defined by <STRONG>tic</STRONG> <STRONG>-x</STRONG>, are not
-       stored in the arrays described here.
+       In SVr4, the third argument of <STRONG>tputs</STRONG> has the type "<STRONG>int</STRONG> <STRONG>(*putc)(char)</STRONG>".
 
+       At  least one implementation of X/Open Curses (Solaris) returns a value
+       other than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG> from <STRONG>tputs</STRONG>.  It instead returns the length of  the
+       string, and does no error checking.
 
-</PRE><H3><a name="h3-Output-buffering">Output buffering</a></H3><PRE>
-       Older  versions  of  <STRONG>ncurses</STRONG> assumed that the file descriptor passed to
-       <STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses buffered I/O, and would write to
-       the  corresponding stream.  In addition to the limitation that the ter-
-       minal was left in block-buffered mode on exit (like System  V  curses),
-       it  was  problematic  because  <STRONG>ncurses</STRONG>  did not allow a reliable way to
-       cleanup on receiving SIGTSTP.
-
-       The current version (ncurses6) uses output buffers managed directly  by
-       <STRONG>ncurses</STRONG>.  Some of the low-level functions described in this manual page
-       write to the standard output.  They are not signal-safe.  The high-lev-
-       el functions in <STRONG>ncurses</STRONG> use alternate versions of these functions using
-       the more reliable buffering scheme.
-
-
-</PRE><H3><a name="h3-Function-prototypes">Function prototypes</a></H3><PRE>
-       The X/Open Curses prototypes are based on the SVr4 curses header decla-
-       rations,  which  were defined at the same time the C language was first
-       standardized in the late 1980s.
-
-       <STRONG>o</STRONG>   X/Open Curses uses <STRONG>const</STRONG>  less  effectively  than  a  later  design
-           might,  in  some cases applying it needlessly to values are already
-           constant, and in most cases overlooking parameters  which  normally
-           would  use <STRONG>const</STRONG>.  Using constant parameters for functions which do
-           not use <STRONG>const</STRONG> may prevent the program from compiling.  On the other
-           hand, <EM>writable</EM> <EM>strings</EM> are an obsolescent feature.
+       X/Open  Curses notes that after calling <STRONG>mvcur</STRONG>, the <EM>curses</EM> state may not
+       match the actual terminal state, and that an application  should  touch
+       and  refresh  the  window  before  resuming  normal <EM>curses</EM> calls.  Both
+       <EM>ncurses</EM> and SVr4 <EM>curses</EM> implement <STRONG>mvcur</STRONG> using the <EM>SCREEN</EM> data allocated
+       in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.  So though it is documented as a <EM>terminfo</EM>
+       function, <STRONG>mvcur</STRONG> is really a <EM>curses</EM> function that is not well specified.
 
-           As  an  extension,  this implementation can be configured to change
-           the function prototypes to use the <STRONG>const</STRONG> keyword.  The ncurses  ABI
-           6 enables this feature by default.
+       X/Open Curses states that the old location must be given for  <STRONG>mvcur</STRONG>  to
+       accommodate  terminals  that lack absolute cursor positioning.  <EM>ncurses</EM>
+       allows the caller to use -1 for either or both old coordinates.  The -1
+       tells  <EM>ncurses</EM>  that  the old location is unknown, and that it must use
+       only absolute motion, as  with  the  <STRONG>cursor_address</STRONG>  (<STRONG>cup</STRONG>)  capability,
+       rather  than  the  least  costly  combination  of absolute and relative
+       motion.
 
-       <STRONG>o</STRONG>   X/Open  Curses  prototypes <STRONG>tparm</STRONG> with a fixed number of parameters,
-           rather than a variable argument list.
 
-           This implementation uses a variable argument list, but can be  con-
-           figured  to  use  the  fixed-parameter list.  Portable applications
-           should provide 9 parameters after the format; zeroes are  fine  for
-           this purpose.
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       SVr2 (1984) introduced the <EM>terminfo</EM> feature.   Its  programming  manual
+       mentioned the following low-level functions.
 
-           In  response  to review comments by Thomas E. Dickey, X/Open Curses
-           Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
+       <STRONG>Function</STRONG>    <STRONG>Description</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>fixterm</STRONG>     restore terminal to "in <EM>curses</EM>" state
+       <STRONG>gettmode</STRONG>    establish current terminal modes
+       <STRONG>mvcur</STRONG>       low level cursor motion
+       <STRONG>putp</STRONG>        use <STRONG>tputs</STRONG> to send characters via <EM>putchar</EM>
+       <STRONG>resetterm</STRONG>   set terminal modes to "out of <EM>curses</EM>" state
+
+       <STRONG>resetty</STRONG>     reset terminal flags to stored value
+       <STRONG>saveterm</STRONG>    save current modes as "in <EM>curses</EM>" state
+       <STRONG>savetty</STRONG>     store current terminal flags
+       <STRONG>setterm</STRONG>     establish terminal with given type
+       <STRONG>setupterm</STRONG>   establish terminal with given type
+       <STRONG>tparm</STRONG>       interpolate parameters into string capability
+       <STRONG>tputs</STRONG>       apply padding information to a string
+       <STRONG>vidattr</STRONG>     like <STRONG>vidputs</STRONG>, but output through <EM>putchar</EM>
+       <STRONG>vidputs</STRONG>     write string to terminal, applying specified attributes
+
+       The  programming  manual  also mentioned functions provided for <EM>termcap</EM>
+       compatibility (commenting that they "may go away at a later date").
 
+       <STRONG>Function</STRONG>   <STRONG>Description</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>tgetent</STRONG>    look up <EM>termcap</EM> entry for given <EM>name</EM>
+       <STRONG>tgetflag</STRONG>   get Boolean entry for given <EM>id</EM>
+       <STRONG>tgetnum</STRONG>    get numeric entry for given <EM>id</EM>
+       <STRONG>tgetstr</STRONG>    get string entry for given <EM>id</EM>
+       <STRONG>tgoto</STRONG>      apply parameters to given capability
+       <STRONG>tputs</STRONG>      write characters via a function parameter, applying padding
+
+       Early <EM>terminfo</EM> programs obtained capability values  from  the  <EM>TERMINAL</EM>
+       structure initialized by <STRONG>setupterm</STRONG>.
 
-</PRE><H3><a name="h3-Special-TERM-treatment">Special TERM treatment</a></H3><PRE>
-       If configured to use the terminal-driver, e.g., for the MinGW port,
+       SVr3   (1987)   extended  <EM>terminfo</EM>  by  adding  functions  to  retrieve
+       capability values (like the <EM>termcap</EM> interface), and reusing  <STRONG>tgoto</STRONG>  and
+       <STRONG>tputs</STRONG>.
 
-       <STRONG>o</STRONG>   <STRONG>setupterm</STRONG> interprets a missing/empty TERM variable as  the  special
-           value "unknown".
+       <STRONG>Function</STRONG>    <STRONG>Description</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>tigetflag</STRONG>   get Boolean entry for given <EM>id</EM>
+       <STRONG>tigetnum</STRONG>    get numeric entry for given <EM>id</EM>
+       <STRONG>tigetstr</STRONG>    get string entry for given <EM>id</EM>
 
-       <STRONG>o</STRONG>   <STRONG>setupterm</STRONG>  allows explicit use of the the windows console driver by
-           checking if $TERM is set to "#win32con" or an abbreviation of  that
-           string.
+       SVr3  also  replaced several of the SVr2 <EM>terminfo</EM> functions that had no
+       counterpart in the <EM>termcap</EM> interface, documenting them as obsolete.
 
+       <STRONG>Function</STRONG>    <STRONG>Replaced</STRONG> <STRONG>by</STRONG>
+       ------------------------------------------------------------------------
+       crmode      cbreak
+       fixterm     reset_prog_mode
+       gettmode    <EM>n/a</EM>
+       nocrmode    nocbreak
+       resetterm   reset_shell_mode
+       saveterm    def_prog_mode
+       setterm     setupterm
 
-</PRE><H3><a name="h3-Other-portability-issues">Other portability issues</a></H3><PRE>
-       In  System  V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return type and returns
-       <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.  We have chosen to implement the X/Open Curses semantics.
+       SVr3 kept the <STRONG>mvcur</STRONG>, <STRONG>vidattr</STRONG>, and <STRONG>vidputs</STRONG> functions, along  with  <STRONG>putp</STRONG>,
+       <STRONG>tparm</STRONG>,  and  <STRONG>tputs</STRONG>.   The latter were needed to support padding, and to
+       handle capabilities accessed by functions such as <STRONG>vidattr</STRONG>  (which  used
+       more than the two parameters supported by <STRONG>tgoto</STRONG>).
 
-       In System V Release 4, the third argument of <STRONG>tputs</STRONG>  has  the  type  <STRONG>int</STRONG>
-       <STRONG>(*putc)(char)</STRONG>.
+       SVr3   introduced   the   functions   for  switching  between  terminal
+       descriptions;  for  example,  <STRONG>set_curterm</STRONG>.   Some   changes   reflected
+       incremental improvements to the SVr2 library.
 
-       At  least one implementation of X/Open Curses (Solaris) returns a value
-       other than <STRONG>OK</STRONG>/<STRONG>ERR</STRONG> from <STRONG>tputs</STRONG>.  That returns the length of  the  string,
-       and does no error-checking.
+       <STRONG>o</STRONG>   The  <EM>TERMINAL</EM>  type  definition  was introduced in SVr3.01, for the
+           <EM>term</EM> structure provided in SVr2.
 
-       X/Open  notes  that after calling <STRONG>mvcur</STRONG>, the curses state may not match
-       the actual terminal state, and that an application should touch and re-
-       fresh the window before resuming normal curses calls.  Both <STRONG>ncurses</STRONG> and
-       System V Release 4 curses implement <STRONG>mvcur</STRONG> using the SCREEN  data  allo-
-       cated  in  either  <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.  So though it is documented as a
-       terminfo function, <STRONG>mvcur</STRONG> is really a curses function which is not  well
-       specified.
+       <STRONG>o</STRONG>   Various global variables such as <STRONG>boolnames</STRONG> were  mentioned  in  the
+           programming  manual  at  this  point, though the variables had been
+           provided in SVr2.
 
-       X/Open  states that the old location must be given for <STRONG>mvcur</STRONG>.  This im-
-       plementation allows the caller to use -1's for the old  ordinates.   In
-       that case, the old location is unknown.
+       SVr4 (1989) added the <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> functions.
+
+       Other low-level functions are declared in the <EM>curses</EM>  header  files  of
+       Unix  systems,  but  none are documented.  Those noted as "obsolete" by
+       SVr3 remained in use by System V's <STRONG>vi(1)</STRONG> editor.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,   <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,   <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>, <STRONG>ter-</STRONG>
-       <STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG>
+       <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,   <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,   <STRONG>putc(3)</STRONG>,  <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>,
+       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
-                                                             <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+ncurses 6.5                       2024-04-13                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h3-Releasing-Memory">Releasing Memory</a></li>
 </ul>
 </li>
-<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a>
-<ul>
-<li><a href="#h3-Compatibility-macros">Compatibility macros</a></li>
-</ul>
-</li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a>
 <ul>
-<li><a href="#h3-Legacy-functions">Legacy functions</a></li>
-<li><a href="#h3-Legacy-data">Legacy data</a></li>
-<li><a href="#h3-Output-buffering">Output buffering</a></li>
-<li><a href="#h3-Function-prototypes">Function prototypes</a></li>
-<li><a href="#h3-Special-TERM-treatment">Special TERM treatment</a></li>
-<li><a href="#h3-Other-portability-issues">Other portability issues</a></li>
+<li><a href="#h3-Compatibility-Macros">Compatibility Macros</a></li>
+<li><a href="#h3-Legacy-Data">Legacy Data</a></li>
+<li><a href="#h3-Output-Buffering">Output Buffering</a></li>
+<li><a href="#h3-Function-Prototypes">Function Prototypes</a></li>
+<li><a href="#h3-Other-Portability-Issues">Other Portability Issues</a></li>
 </ul>
 </li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 001c86f0fd0a3d36a5d8f345c3a757aa219472bd..8681a8fe8305a1fd29d3e22234cebbc21aa11ca4 100644 (file)
@@ -1,6 +1,7 @@
 <!--
+  * t
   ****************************************************************************
-  * Copyright 2021,2022 Thomas E. Dickey                                     *
+  * Copyright 2021-2023,2024 Thomas E. Dickey                                *
   * Copyright 2008-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_threads.3x,v 1.31 2022/02/12 20:05:11 tom Exp @
-  * ***************************************************************************
-  * ***************************************************************************
+  * @Id: curs_threads.3x,v 1.56 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_threads 3x</TITLE>
+<TITLE>curs_threads 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_threads 3x</H1>
+<H1 class="no-header">curs_threads 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>                                              <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
+<STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>curs_threads</STRONG> - <STRONG>curses</STRONG> thread support
+       <EM>NCURSES</EM><STRONG>_</STRONG><EM>WINDOW</EM><STRONG>_</STRONG><EM>CB</EM>,   <EM>NCURSES</EM><STRONG>_</STRONG><EM>SCREEN</EM><STRONG>_</STRONG><EM>CB</EM>,   <STRONG>get_escdelay</STRONG>,   <STRONG>set_escdelay</STRONG>,
+       <STRONG>set_tabsize</STRONG>, <STRONG>use_screen</STRONG>, <STRONG>use_window</STRONG> - <EM>curses</EM> support for multi-threaded
+       applications
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
+       <EM>/*</EM> <EM>data</EM> <EM>types</EM> <EM>*/</EM>
        <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_WINDOW_CB)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
        <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_SCREEN_CB)(SCREEN</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
 
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This  implementation  can  be configured to provide rudimentary support
-       for multi-threaded applications.  This makes a  different  set  of  li-
-       braries, e.g., <STRONG>libncursest</STRONG> since the binary interfaces are different.
-
-       Rather  than  modify  the interfaces to pass a thread specifier to each
-       function, it adds a few functions which can be used in  any  configura-
-       tion  which  hide  the  mutex's needed to prevent concurrent use of the
-       global variables when configured for threading.
-
-       In addition to forcing access to members of the <STRONG>WINDOW</STRONG> structure to  be
-       via  functions  (see <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>), it makes functions of the common
-       global variables, e.g., COLORS,  COLOR_PAIRS,  COLS,  ESCDELAY,  LINES,
-       TABSIZE  curscr, newscr and ttytype.  Those variables are maintained as
-       read-only values, stored in the <STRONG>SCREEN</STRONG> structure.
-
-       Even this is not enough to make a thread-safe application using curses.
-       A multi-threaded application would be expected to have threads updating
-       separate windows (within the same  device),  or  updating  on  separate
-       screens  (on  different  devices).  Also, a few of the global variables
-       are considered writable by some applications.  The functions  described
-       here address these special situations.
-
-       The ESCDELAY and TABSIZE global variables are modified by some applica-
-       tions.  To modify them in any configuration, use  the  <STRONG>set_escdelay</STRONG>  or
-       <STRONG>set_tabsize</STRONG> functions.  Other global variables are not modifiable.
-
-       The <STRONG>get_escdelay</STRONG> function returns the value for ESCDELAY.
-
-       The  <STRONG>use_window</STRONG> and <STRONG>use_screen</STRONG> functions provide coarse granularity mu-
-       texes for their respective <STRONG>WINDOW</STRONG> and <STRONG>SCREEN</STRONG> parameters, and call a us-
-       er-supplied  function,  passing  it a <EM>data</EM> parameter, and returning the
-       value from the user-supplied function to the application.
-
-
-</PRE><H3><a name="h3-USAGE">USAGE</a></H3><PRE>
-       All of the ncurses library functions assume that the locale is not  al-
-       tered during operation.  In addition, they use data which is maintained
-       within a hierarchy of scopes.
-
-          <STRONG>o</STRONG>   global data, e.g., used in the low-level terminfo or termcap in-
-              terfaces.
-
-          <STRONG>o</STRONG>   terminal data, e.g., associated with a call to <STRONG>set_curterm</STRONG>.  The
-              terminal data are initialized when screens are created.
-
-          <STRONG>o</STRONG>   screen data, e.g., associated with a call to <STRONG>newterm</STRONG> or <STRONG>initscr</STRONG>.
-
-          <STRONG>o</STRONG>   window data, e.g., associated with a call to <STRONG>newwin</STRONG>  or  <STRONG>subwin</STRONG>.
-              Windows  are  associated with screens.  Pads are not necessarily
-              associated with a particular screen.
-
-              Most curses applications operate on one or more windows within a
-              single screen.
-
-          <STRONG>o</STRONG>   reentrant, i.e., it uses only the data passed as parameters.
-
-       This  table lists the scope of data used for each symbol in the ncurses
-       library when it is configured to support threading:
-
-            Symbol                  Scope
-            -------------------------------------------------------------
-            BC                      global
-            COLORS                  screen (readonly)
-            COLOR_PAIR              reentrant
-            COLOR_PAIRS             screen (readonly)
-            COLS                    screen (readonly)
-            ESCDELAY                screen (readonly, see <STRONG>set_escdelay</STRONG>)
-            LINES                   screen (readonly)
-            PAIR_NUMBER             reentrant
-            PC                      global
-            SP                      global
-            TABSIZE                 screen (readonly)
-            UP                      global
-            acs_map                 screen (readonly)
-            add_wch                 window (stdscr)
-            add_wchnstr             window (stdscr)
-            add_wchstr              window (stdscr)
-            addch                   window (stdscr)
-            addchnstr               window (stdscr)
-            addchstr                window (stdscr)
-            addnstr                 window (stdscr)
-            addnwstr                window (stdscr)
-            addstr                  window (stdscr)
-            addwstr                 window (stdscr)
-            assume_default_colors   screen
-            attr_get                window (stdscr)
-            attr_off                window (stdscr)
-            attr_on                 window (stdscr)
-            attr_set                window (stdscr)
-            attroff                 window (stdscr)
-            attron                  window (stdscr)
-            attrset                 window (stdscr)
-            baudrate                screen
-            beep                    screen
-            bkgd                    window (stdscr)
-            bkgdset                 window (stdscr)
-            bkgrnd                  window (stdscr)
-            bkgrndset               window (stdscr)
-            boolcodes               global (readonly)
-            boolfnames              global (readonly)
-            boolnames               global (readonly)
-            border                  window (stdscr)
-            border_set              window (stdscr)
-            box                     window (stdscr)
-            box_set                 window (stdscr)
-            can_change_color        terminal
-            cbreak                  screen
-            chgat                   window (stdscr)
-            clear                   window (stdscr)
-            clearok                 window
-            clrtobot                window (stdscr)
-            clrtoeol                window (stdscr)
-            color_content           screen
-
-            color_set               window (stdscr)
-            copywin                 window locks(source, target)
-            cur_term                terminal
-            curs_set                screen
-            curscr                  screen (readonly)
-            curses_version          global (readonly)
-            def_prog_mode           terminal
-            def_shell_mode          terminal
-            define_key              screen
-            del_curterm             screen
-            delay_output            screen
-            delch                   window (stdscr)
-            deleteln                window (stdscr)
-            delscreen               global locks(screenlist, screen)
-            delwin                  global locks(windowlist)
-            derwin                  screen
-            doupdate                screen
-            dupwin                  screen locks(window)
-            echo                    screen
-            echo_wchar              window (stdscr)
-            echochar                window (stdscr)
-            endwin                  screen
-            erase                   window (stdscr)
-            erasechar               window (stdscr)
-            erasewchar              window (stdscr)
-            filter                  global
-            flash                   terminal
-            flushinp                screen
-            get_wch                 screen (input-operation)
-            get_wstr                screen (input-operation)
-            getattrs                window
-            getbegx                 window
-            getbegy                 window
-            getbkgd                 window
-            getbkgrnd               window
-            getcchar                reentrant
-            getch                   screen (input-operation)
-            getcurx                 window
-            getcury                 window
-            getmaxx                 window
-            getmaxy                 window
-            getmouse                screen (input-operation)
-            getn_wstr               screen (input-operation)
-            getnstr                 screen (input-operation)
-            getparx                 window
-            getpary                 window
-            getstr                  screen (input-operation)
-            getwin                  screen (input-operation)
-            halfdelay               screen
-            has_colors              terminal
-            has_ic                  terminal
-            has_il                  terminal
-            has_key                 screen
-            hline                   window (stdscr)
-            hline_set               window (stdscr)
-            idcok                   window
-            idlok                   window
-            immedok                 window
-            in_wch                  window (stdscr)
-            in_wchnstr              window (stdscr)
-            in_wchstr               window (stdscr)
-            inch                    window (stdscr)
-            inchnstr                window (stdscr)
-            inchstr                 window (stdscr)
-            init_color              screen
-            init_pair               screen
-
-            initscr                 global locks(screenlist)
-            innstr                  window (stdscr)
-            innwstr                 window (stdscr)
-            ins_nwstr               window (stdscr)
-            ins_wch                 window (stdscr)
-            ins_wstr                window (stdscr)
-            insch                   window (stdscr)
-            insdelln                window (stdscr)
-            insertln                window (stdscr)
-            insnstr                 window (stdscr)
-            insstr                  window (stdscr)
-            instr                   window (stdscr)
-            intrflush               terminal
-            inwstr                  window (stdscr)
-            is_cleared              window
-            is_idcok                window
-            is_idlok                window
-            is_immedok              window
-            is_keypad               window
-            is_leaveok              window
-            is_linetouched          window
-            is_nodelay              window
-            is_notimeout            window
-            is_scrollok             window
-            is_syncok               window
-            is_term_resized         terminal
-            is_wintouched           window
-            isendwin                screen
-            key_defined             screen
-            key_name                global (static data)
-            keybound                screen
-            keyname                 global (static data)
-            keyok                   screen
-            keypad                  window
-            killchar                terminal
-            killwchar               terminal
-            leaveok                 window
-            longname                screen
-            mcprint                 terminal
-            meta                    screen
-            mouse_trafo             window (stdscr)
-            mouseinterval           screen
-            mousemask               screen
-            move                    window (stdscr)
-            mvadd_wch               window (stdscr)
-            mvadd_wchnstr           window (stdscr)
-            mvadd_wchstr            window (stdscr)
-            mvaddch                 window (stdscr)
-            mvaddchnstr             window (stdscr)
-            mvaddchstr              window (stdscr)
-            mvaddnstr               window (stdscr)
-            mvaddnwstr              window (stdscr)
-            mvaddstr                window (stdscr)
-            mvaddwstr               window (stdscr)
-            mvchgat                 window (stdscr)
-            mvcur                   screen
-            mvdelch                 window (stdscr)
-            mvderwin                window (stdscr)
-            mvget_wch               screen (input-operation)
-            mvget_wstr              screen (input-operation)
-            mvgetch                 screen (input-operation)
-            mvgetn_wstr             screen (input-operation)
-            mvgetnstr               screen (input-operation)
-            mvgetstr                screen (input-operation)
-            mvhline                 window (stdscr)
-            mvhline_set             window (stdscr)
-
-            mvin_wch                window (stdscr)
-            mvin_wchnstr            window (stdscr)
-            mvin_wchstr             window (stdscr)
-            mvinch                  window (stdscr)
-            mvinchnstr              window (stdscr)
-            mvinchstr               window (stdscr)
-            mvinnstr                window (stdscr)
-            mvinnwstr               window (stdscr)
-            mvins_nwstr             window (stdscr)
-            mvins_wch               window (stdscr)
-            mvins_wstr              window (stdscr)
-            mvinsch                 window (stdscr)
-            mvinsnstr               window (stdscr)
-            mvinsstr                window (stdscr)
-            mvinstr                 window (stdscr)
-            mvinwstr                window (stdscr)
-            mvprintw                window (stdscr)
-            mvscanw                 screen
-            mvvline                 window (stdscr)
-            mvvline_set             window (stdscr)
-            mvwadd_wch              window
-            mvwadd_wchnstr          window
-            mvwadd_wchstr           window
-            mvwaddch                window
-            mvwaddchnstr            window
-            mvwaddchstr             window
-            mvwaddnstr              window
-            mvwaddnwstr             window
-            mvwaddstr               window
-            mvwaddwstr              window
-            mvwchgat                window
-            mvwdelch                window
-            mvwget_wch              screen (input-operation)
-            mvwget_wstr             screen (input-operation)
-            mvwgetch                screen (input-operation)
-            mvwgetn_wstr            screen (input-operation)
-            mvwgetnstr              screen (input-operation)
-            mvwgetstr               screen (input-operation)
-            mvwhline                window
-            mvwhline_set            window
-            mvwin                   window
-            mvwin_wch               window
-            mvwin_wchnstr           window
-            mvwin_wchstr            window
-            mvwinch                 window
-            mvwinchnstr             window
-            mvwinchstr              window
-            mvwinnstr               window
-            mvwinnwstr              window
-            mvwins_nwstr            window
-            mvwins_wch              window
-            mvwins_wstr             window
-            mvwinsch                window
-            mvwinsnstr              window
-            mvwinsstr               window
-            mvwinstr                window
-            mvwinwstr               window
-            mvwprintw               window
-            mvwscanw                screen
-            mvwvline                window
-            mvwvline_set            window
-            napms                   reentrant
-            newpad                  global locks(windowlist)
-            newscr                  screen (readonly)
-            newterm                 global locks(screenlist)
-            newwin                  global locks(windowlist)
-
-            nl                      screen
-            nocbreak                screen
-            nodelay                 window
-            noecho                  screen
-            nofilter                global
-            nonl                    screen
-            noqiflush               terminal
-            noraw                   screen
-            notimeout               window
-            numcodes                global (readonly)
-            numfnames               global (readonly)
-            numnames                global (readonly)
-            ospeed                  global
-            overlay                 window locks(source, target)
-            overwrite               window locks(source, target)
-            pair_content            screen
-            pecho_wchar             screen
-            pechochar               screen
-            pnoutrefresh            screen
-            prefresh                screen
-            printw                  window
-            putp                    global
-            putwin                  window
-            qiflush                 terminal
-            raw                     screen
-            redrawwin               window
-            refresh                 screen
-            reset_prog_mode         screen
-            reset_shell_mode        screen
-            resetty                 terminal
-            resize_term             screen locks(windowlist)
-            resizeterm              screen
-            restartterm             screen
-            ripoffline              global (static data)
-            savetty                 terminal
-            scanw                   screen
-            scr_dump                screen
-            scr_init                screen
-            scr_restore             screen
-            scr_set                 screen
-            scrl                    window (stdscr)
-            scroll                  window
-            scrollok                window
-            set_curterm             screen
-            set_escdelay            screen
-            set_tabsize             screen
-            set_term                global locks(screenlist, screen)
-            setcchar                reentrant
-            setscrreg               window (stdscr)
-            setupterm               global
-            slk_attr                screen
-            slk_attr_off            screen
-            slk_attr_on             screen
-            slk_attr_set            screen
-            slk_attroff             screen
-            slk_attron              screen
-            slk_attrset             screen
-            slk_clear               screen
-            slk_color               screen
-            slk_init                screen
-            slk_label               screen
-            slk_noutrefresh         screen
-            slk_refresh             screen
-            slk_restore             screen
-            slk_set                 screen
-            slk_touch               screen
-
-            slk_wset                screen
-            standend                window
-            standout                window
-            start_color             screen
-            stdscr                  screen (readonly)
-            strcodes                global (readonly)
-            strfnames               global (readonly)
-            strnames                global (readonly)
-            subpad                  window
-            subwin                  window
-            syncok                  window
-            term_attrs              screen
-            termattrs               screen
-            termname                terminal
-            tgetent                 global
-            tgetflag                global
-            tgetnum                 global
-            tgetstr                 global
-            tgoto                   global
-            tigetflag               terminal
-            tigetnum                terminal
-            tigetstr                terminal
-            timeout                 window (stdscr)
-            touchline               window
-            touchwin                window
-            tparm                   global (static data)
-            tputs                   screen
-            trace                   global (static data)
-            ttytype                 screen (readonly)
-            typeahead               screen
-            unctrl                  screen
-            unget_wch               screen (input-operation)
-            ungetch                 screen (input-operation)
-            ungetmouse              screen (input-operation)
-            untouchwin              window
-            use_default_colors      screen
-            use_env                 global (static data)
-            use_extended_names      global (static data)
-            use_legacy_coding       screen
-            use_screen              global locks(screenlist, screen)
-            use_window              global locks(windowlist, window)
-            vid_attr                screen
-            vid_puts                screen
-            vidattr                 screen
-            vidputs                 screen
-            vline                   window (stdscr)
-            vline_set               window (stdscr)
-            vw_printw               window
-            vw_scanw                screen
-            vwprintw                window
-            vwscanw                 screen
-            wadd_wch                window
-            wadd_wchnstr            window
-            wadd_wchstr             window
-            waddch                  window
-            waddchnstr              window
-            waddchstr               window
-            waddnstr                window
-            waddnwstr               window
-            waddstr                 window
-            waddwstr                window
-            wattr_get               window
-            wattr_off               window
-            wattr_on                window
-            wattr_set               window
-            wattroff                window
-
-            wattron                 window
-            wattrset                window
-            wbkgd                   window
-            wbkgdset                window
-            wbkgrnd                 window
-            wbkgrndset              window
-            wborder                 window
-            wborder_set             window
-            wchgat                  window
-            wclear                  window
-            wclrtobot               window
-            wclrtoeol               window
-            wcolor_set              window
-            wcursyncup              screen (affects window plus parents)
-            wdelch                  window
-            wdeleteln               window
-            wecho_wchar             window
-            wechochar               window
-            wenclose                window
-            werase                  window
-            wget_wch                screen (input-operation)
-            wget_wstr               screen (input-operation)
-            wgetbkgrnd              window
-            wgetch                  screen (input-operation)
-            wgetdelay               window
-            wgetn_wstr              screen (input-operation)
-            wgetnstr                screen (input-operation)
-            wgetparent              window
-            wgetscrreg              window
-            wgetstr                 screen (input-operation)
-            whline                  window
-            whline_set              window
-            win_wch                 window
-            win_wchnstr             window
-            win_wchstr              window
-            winch                   window
-            winchnstr               window
-            winchstr                window
-            winnstr                 window
-            winnwstr                window
-            wins_nwstr              window
-            wins_wch                window
-            wins_wstr               window
-            winsch                  window
-            winsdelln               window
-            winsertln               window
-            winsnstr                window
-            winsstr                 window
-            winstr                  window
-            winwstr                 window
-            wmouse_trafo            window
-            wmove                   window
-            wnoutrefresh            screen
-            wprintw                 window
-            wredrawln               window
-            wrefresh                screen
-            wresize                 window locks(windowlist)
-            wscanw                  screen
-            wscrl                   window
-            wsetscrreg              window
-            wstandend               window
-            wstandout               window
-            wsyncdown               screen (affects window plus parents)
-            wsyncup                 screen (affects window plus parents)
-            wtimeout                window
-            wtouchln                window
-
-            wunctrl                 global (static data)
-            wvline                  window
-            wvline_set              window
+       The  <EM>ncurses</EM>  library  can  be  configured  to  support  multi-threaded
+       applications in a  rudimentary  way.   Such  configuration  produces  a
+       different set of libraries, named <EM>libncursest</EM>, for example, since doing
+       so alters <EM>ncurses</EM>'s application binary interface (ABI).
+
+       Instead of modifying the programming interface (API)  to  make  <EM>ncurses</EM>
+       functions  expect  an  additional  argument  specifying  a  thread, the
+       library adds functions, usable in  any  configuration,  that  hide  the
+       <EM>mutexes</EM> (mutual exclusion locks) needed to prevent concurrent access to
+       variables shared by multiple threads of execution.
+
+       <EM>ncurses</EM> threading support requires  the  use  of  functions  to  access
+       members  of  the  <EM>WINDOW</EM>  structure  (see <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>).  It further
+       makes functions of the common  global  variables  <STRONG>COLORS</STRONG>,  <STRONG>COLOR_PAIRS</STRONG>,
+       <STRONG>COLS</STRONG>,   <STRONG>ESCDELAY</STRONG>,   <STRONG>LINES</STRONG>,   <STRONG>TABSIZE</STRONG>,   <STRONG>curscr</STRONG>,  <STRONG>newscr</STRONG>,  and  <STRONG>ttytype</STRONG>,
+       maintaining them as as read-only values in the <EM>SCREEN</EM> structure.
+
+       Even this is not enough to make an  application  using  <EM>curses</EM>  thread-
+       safe.   We  would  expect  a multi-threaded application to have threads
+       updating separate windows (on the same device),  and  separate  screens
+       (on  different  devices).   Further,  applications  expect a few of the
+       global variables to be writable.  The functions described here  address
+       these special situations.
+
+       The  <STRONG>ESCDELAY</STRONG>  and  <STRONG>TABSIZE</STRONG>  global  variables  are  modified  by  some
+       applications.   To  modify  them  in   any   configuration,   use   the
+       <STRONG>set_escdelay</STRONG>  or <STRONG>set_tabsize</STRONG> functions.  Other global variables are not
+       modifiable.  <STRONG>get_escdelay</STRONG> retrieves <STRONG>ESCDELAY</STRONG>'s value.
+
+       The <STRONG>use_window</STRONG> and <STRONG>use_screen</STRONG> functions provide coarse-grained  mutexes
+       for  their  respective  <EM>WINDOW</EM> and <EM>SCREEN</EM> parameters; they call a user-
+       supplied function, pass it a <EM>data</EM> parameter, and return the value  from
+       the user-supplied function to the application.
+
+
+</PRE><H3><a name="h3-Usage">Usage</a></H3><PRE>
+       All  <EM>ncurses</EM>  library  functions  assume that the locale is not altered
+       during operation.  In addition, they use data that is maintained within
+       a hierarchy of scopes.
+
+       <STRONG>o</STRONG>   global data used in the low-level <EM>terminfo</EM> or <EM>termcap</EM> interfaces
+
+       <STRONG>o</STRONG>   terminal data associated with a call to <STRONG><A HREF="curs_terminfo.3x.html">set_curterm(3x)</A></STRONG>
+
+           Terminal data are initialized when screens are created.
+
+       <STRONG>o</STRONG>   screen data associated with a call to <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG> or <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>
+
+       <STRONG>o</STRONG>   window data associated with a call to <STRONG><A HREF="curs_window.3x.html">newwin(3x)</A></STRONG> or <STRONG><A HREF="subwin.3x.html">subwin(3x)</A></STRONG>
+
+           Windows  are  associated  with  screens.   Pads are not necessarily
+           associated with any particular screen.
+
+           Most <EM>curses</EM> applications operate on one or more  windows  within  a
+           single screen.
+
+       <STRONG>o</STRONG>   reentrant  data  associated  with  "pure"  functions  that alter no
+           shared variables
+
+       The following table lists the scope  of  each  symbol  in  the  <EM>ncurses</EM>
+       library when configured to support multi-threaded applications.
+
+       <STRONG>Symbol</STRONG>                 <STRONG>Scope</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>BC</STRONG>                     global
+       <STRONG>COLORS</STRONG>                 screen (read-only)
+       <STRONG>COLOR_PAIR</STRONG>             reentrant
+       <STRONG>COLOR_PAIRS</STRONG>            screen (read-only)
+       <STRONG>COLS</STRONG>                   screen (read-only)
+       <STRONG>ESCDELAY</STRONG>               screen (read-only; see <STRONG>set_escdelay</STRONG>)
+       <STRONG>LINES</STRONG>                  screen (read-only)
+       <STRONG>PAIR_NUMBER</STRONG>            reentrant
+       <STRONG>PC</STRONG>                     global
+       <STRONG>SP</STRONG>                     global
+       <STRONG>TABSIZE</STRONG>                screen (read-only; see <STRONG>set_tabsize</STRONG>)
+       <STRONG>UP</STRONG>                     global
+       <STRONG>acs_map</STRONG>                screen (read-only)
+       <STRONG>add_wch</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>add_wchnstr</STRONG>            window (<STRONG>stdscr</STRONG>)
+       <STRONG>add_wchstr</STRONG>             window (<STRONG>stdscr</STRONG>)
+       <STRONG>addch</STRONG>                  window (<STRONG>stdscr</STRONG>)
+       <STRONG>addchnstr</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>addchstr</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>addnstr</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>addnwstr</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>addstr</STRONG>                 window (<STRONG>stdscr</STRONG>)
+       <STRONG>addwstr</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>assume_default_colors</STRONG>  screen
+       <STRONG>attr_get</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>attr_off</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>attr_on</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>attr_set</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>attroff</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>attron</STRONG>                 window (<STRONG>stdscr</STRONG>)
+       <STRONG>attrset</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>baudrate</STRONG>               screen
+       <STRONG>beep</STRONG>                   screen
+       <STRONG>bkgd</STRONG>                   window (<STRONG>stdscr</STRONG>)
+       <STRONG>bkgdset</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>bkgrnd</STRONG>                 window (<STRONG>stdscr</STRONG>)
+       <STRONG>bkgrndset</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>boolcodes</STRONG>              global (read-only)
+       <STRONG>boolfnames</STRONG>             global (read-only)
+       <STRONG>boolnames</STRONG>              global (read-only)
+       <STRONG>border</STRONG>                 window (<STRONG>stdscr</STRONG>)
+       <STRONG>border_set</STRONG>             window (<STRONG>stdscr</STRONG>)
+       <STRONG>box</STRONG>                    window (<STRONG>stdscr</STRONG>)
+       <STRONG>box_set</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>can_change_color</STRONG>       terminal
+       <STRONG>cbreak</STRONG>                 screen
+
+       <STRONG>chgat</STRONG>                  window (<STRONG>stdscr</STRONG>)
+       <STRONG>clear</STRONG>                  window (<STRONG>stdscr</STRONG>)
+       <STRONG>clearok</STRONG>                window
+       <STRONG>clrtobot</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>clrtoeol</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>color_content</STRONG>          screen
+       <STRONG>color_set</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>copywin</STRONG>                window (locks source, target)
+       <STRONG>cur_term</STRONG>               terminal
+       <STRONG>curs_set</STRONG>               screen
+       <STRONG>curscr</STRONG>                 screen (read-only)
+       <STRONG>curses_version</STRONG>         global (read-only)
+       <STRONG>def_prog_mode</STRONG>          terminal
+       <STRONG>def_shell_mode</STRONG>         terminal
+       <STRONG>define_key</STRONG>             screen
+       <STRONG>del_curterm</STRONG>            screen
+       <STRONG>delay_output</STRONG>           screen
+       <STRONG>delch</STRONG>                  window (<STRONG>stdscr</STRONG>)
+       <STRONG>deleteln</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>delscreen</STRONG>              global (locks screen list, screen)
+       <STRONG>delwin</STRONG>                 global (locks window list)
+       <STRONG>derwin</STRONG>                 screen
+       <STRONG>doupdate</STRONG>               screen
+       <STRONG>dupwin</STRONG>                 screen (locks window)
+       <STRONG>echo</STRONG>                   screen
+       <STRONG>echo_wchar</STRONG>             window (<STRONG>stdscr</STRONG>)
+       <STRONG>echochar</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>endwin</STRONG>                 screen
+       <STRONG>erase</STRONG>                  window (<STRONG>stdscr</STRONG>)
+       <STRONG>erasechar</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>erasewchar</STRONG>             window (<STRONG>stdscr</STRONG>)
+       <STRONG>filter</STRONG>                 global
+       <STRONG>flash</STRONG>                  terminal
+       <STRONG>flushinp</STRONG>               screen
+       <STRONG>get_wch</STRONG>                screen (input operation)
+       <STRONG>get_wstr</STRONG>               screen (input operation)
+       <STRONG>getattrs</STRONG>               window
+       <STRONG>getbegx</STRONG>                window
+       <STRONG>getbegy</STRONG>                window
+       <STRONG>getbkgd</STRONG>                window
+       <STRONG>getbkgrnd</STRONG>              window
+       <STRONG>getcchar</STRONG>               reentrant
+       <STRONG>getch</STRONG>                  screen (input operation)
+       <STRONG>getcurx</STRONG>                window
+       <STRONG>getcury</STRONG>                window
+       <STRONG>getmaxx</STRONG>                window
+       <STRONG>getmaxy</STRONG>                window
+       <STRONG>getmouse</STRONG>               screen (input operation)
+       <STRONG>getn_wstr</STRONG>              screen (input operation)
+       <STRONG>getnstr</STRONG>                screen (input operation)
+       <STRONG>getparx</STRONG>                window
+       <STRONG>getpary</STRONG>                window
+       <STRONG>getstr</STRONG>                 screen (input operation)
+       <STRONG>getwin</STRONG>                 screen (input operation)
+       <STRONG>halfdelay</STRONG>              screen
+       <STRONG>has_colors</STRONG>             terminal
+       <STRONG>has_ic</STRONG>                 terminal
+       <STRONG>has_il</STRONG>                 terminal
+       <STRONG>has_key</STRONG>                screen
+       <STRONG>hline</STRONG>                  window (<STRONG>stdscr</STRONG>)
+       <STRONG>hline_set</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>idcok</STRONG>                  window
+       <STRONG>idlok</STRONG>                  window
+       <STRONG>immedok</STRONG>                window
+       <STRONG>in_wch</STRONG>                 window (<STRONG>stdscr</STRONG>)
+       <STRONG>in_wchnstr</STRONG>             window (<STRONG>stdscr</STRONG>)
+
+       <STRONG>in_wchstr</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>inch</STRONG>                   window (<STRONG>stdscr</STRONG>)
+       <STRONG>inchnstr</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>inchstr</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>init_color</STRONG>             screen
+       <STRONG>init_pair</STRONG>              screen
+       <STRONG>initscr</STRONG>                global (locks screen list)
+       <STRONG>innstr</STRONG>                 window (<STRONG>stdscr</STRONG>)
+       <STRONG>innwstr</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>ins_nwstr</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>ins_wch</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>ins_wstr</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>insch</STRONG>                  window (<STRONG>stdscr</STRONG>)
+       <STRONG>insdelln</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>insertln</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>insnstr</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>insstr</STRONG>                 window (<STRONG>stdscr</STRONG>)
+       <STRONG>instr</STRONG>                  window (<STRONG>stdscr</STRONG>)
+       <STRONG>intrflush</STRONG>              terminal
+       <STRONG>inwstr</STRONG>                 window (<STRONG>stdscr</STRONG>)
+       <STRONG>is_cleared</STRONG>             window
+       <STRONG>is_idcok</STRONG>               window
+       <STRONG>is_idlok</STRONG>               window
+       <STRONG>is_immedok</STRONG>             window
+       <STRONG>is_keypad</STRONG>              window
+       <STRONG>is_leaveok</STRONG>             window
+       <STRONG>is_linetouched</STRONG>         window
+       <STRONG>is_nodelay</STRONG>             window
+       <STRONG>is_notimeout</STRONG>           window
+       <STRONG>is_scrollok</STRONG>            window
+       <STRONG>is_syncok</STRONG>              window
+       <STRONG>is_term_resized</STRONG>        terminal
+       <STRONG>is_wintouched</STRONG>          window
+       <STRONG>isendwin</STRONG>               screen
+       <STRONG>key_defined</STRONG>            screen
+       <STRONG>key_name</STRONG>               global (static data)
+       <STRONG>keybound</STRONG>               screen
+       <STRONG>keyname</STRONG>                global (static data)
+       <STRONG>keyok</STRONG>                  screen
+       <STRONG>keypad</STRONG>                 window
+       <STRONG>killchar</STRONG>               terminal
+       <STRONG>killwchar</STRONG>              terminal
+       <STRONG>leaveok</STRONG>                window
+       <STRONG>longname</STRONG>               screen
+       <STRONG>mcprint</STRONG>                terminal
+       <STRONG>meta</STRONG>                   screen
+       <STRONG>mouse_trafo</STRONG>            window (<STRONG>stdscr</STRONG>)
+       <STRONG>mouseinterval</STRONG>          screen
+       <STRONG>mousemask</STRONG>              screen
+       <STRONG>move</STRONG>                   window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvadd_wch</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvadd_wchnstr</STRONG>          window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvadd_wchstr</STRONG>           window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvaddch</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvaddchnstr</STRONG>            window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvaddchstr</STRONG>             window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvaddnstr</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvaddnwstr</STRONG>             window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvaddstr</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvaddwstr</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvchgat</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvcur</STRONG>                  screen
+       <STRONG>mvdelch</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvderwin</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvget_wch</STRONG>              screen (input operation)
+       <STRONG>mvget_wstr</STRONG>             screen (input operation)
+
+       <STRONG>mvgetch</STRONG>                screen (input operation)
+       <STRONG>mvgetn_wstr</STRONG>            screen (input operation)
+       <STRONG>mvgetnstr</STRONG>              screen (input operation)
+       <STRONG>mvgetstr</STRONG>               screen (input operation)
+       <STRONG>mvhline</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvhline_set</STRONG>            window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvin_wch</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvin_wchnstr</STRONG>           window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvin_wchstr</STRONG>            window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvinch</STRONG>                 window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvinchnstr</STRONG>             window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvinchstr</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvinnstr</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvinnwstr</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvins_nwstr</STRONG>            window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvins_wch</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvins_wstr</STRONG>             window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvinsch</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvinsnstr</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvinsstr</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvinstr</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvinwstr</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvprintw</STRONG>               window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvscanw</STRONG>                screen
+       <STRONG>mvvline</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvvline_set</STRONG>            window (<STRONG>stdscr</STRONG>)
+       <STRONG>mvwadd_wch</STRONG>             window
+       <STRONG>mvwadd_wchnstr</STRONG>         window
+       <STRONG>mvwadd_wchstr</STRONG>          window
+       <STRONG>mvwaddch</STRONG>               window
+       <STRONG>mvwaddchnstr</STRONG>           window
+       <STRONG>mvwaddchstr</STRONG>            window
+       <STRONG>mvwaddnstr</STRONG>             window
+       <STRONG>mvwaddnwstr</STRONG>            window
+       <STRONG>mvwaddstr</STRONG>              window
+       <STRONG>mvwaddwstr</STRONG>             window
+       <STRONG>mvwchgat</STRONG>               window
+       <STRONG>mvwdelch</STRONG>               window
+       <STRONG>mvwget_wch</STRONG>             screen (input operation)
+       <STRONG>mvwget_wstr</STRONG>            screen (input operation)
+       <STRONG>mvwgetch</STRONG>               screen (input operation)
+       <STRONG>mvwgetn_wstr</STRONG>           screen (input operation)
+       <STRONG>mvwgetnstr</STRONG>             screen (input operation)
+       <STRONG>mvwgetstr</STRONG>              screen (input operation)
+       <STRONG>mvwhline</STRONG>               window
+       <STRONG>mvwhline_set</STRONG>           window
+       <STRONG>mvwin</STRONG>                  window
+       <STRONG>mvwin_wch</STRONG>              window
+       <STRONG>mvwin_wchnstr</STRONG>          window
+       <STRONG>mvwin_wchstr</STRONG>           window
+       <STRONG>mvwinch</STRONG>                window
+       <STRONG>mvwinchnstr</STRONG>            window
+       <STRONG>mvwinchstr</STRONG>             window
+       <STRONG>mvwinnstr</STRONG>              window
+       <STRONG>mvwinnwstr</STRONG>             window
+       <STRONG>mvwins_nwstr</STRONG>           window
+       <STRONG>mvwins_wch</STRONG>             window
+       <STRONG>mvwins_wstr</STRONG>            window
+       <STRONG>mvwinsch</STRONG>               window
+       <STRONG>mvwinsnstr</STRONG>             window
+       <STRONG>mvwinsstr</STRONG>              window
+       <STRONG>mvwinstr</STRONG>               window
+       <STRONG>mvwinwstr</STRONG>              window
+       <STRONG>mvwprintw</STRONG>              window
+       <STRONG>mvwscanw</STRONG>               screen
+       <STRONG>mvwvline</STRONG>               window
+
+       <STRONG>mvwvline_set</STRONG>           window
+       <STRONG>napms</STRONG>                  reentrant
+       <STRONG>newpad</STRONG>                 global (locks window list)
+       <STRONG>newscr</STRONG>                 screen (read-only)
+       <STRONG>newterm</STRONG>                global (locks screen list)
+       <STRONG>newwin</STRONG>                 global (locks window list)
+       <STRONG>nl</STRONG>                     screen
+       <STRONG>nocbreak</STRONG>               screen
+       <STRONG>nodelay</STRONG>                window
+       <STRONG>noecho</STRONG>                 screen
+       <STRONG>nofilter</STRONG>               global
+       <STRONG>nonl</STRONG>                   screen
+       <STRONG>noqiflush</STRONG>              terminal
+       <STRONG>noraw</STRONG>                  screen
+       <STRONG>notimeout</STRONG>              window
+       <STRONG>numcodes</STRONG>               global (read-only)
+       <STRONG>numfnames</STRONG>              global (read-only)
+       <STRONG>numnames</STRONG>               global (read-only)
+       <STRONG>ospeed</STRONG>                 global
+       <STRONG>overlay</STRONG>                window (locks source, target)
+       <STRONG>overwrite</STRONG>              window (locks source, target)
+       <STRONG>pair_content</STRONG>           screen
+       <STRONG>pecho_wchar</STRONG>            screen
+       <STRONG>pechochar</STRONG>              screen
+       <STRONG>pnoutrefresh</STRONG>           screen
+       <STRONG>prefresh</STRONG>               screen
+       <STRONG>printw</STRONG>                 window
+       <STRONG>putp</STRONG>                   global
+       <STRONG>putwin</STRONG>                 window
+       <STRONG>qiflush</STRONG>                terminal
+       <STRONG>raw</STRONG>                    screen
+       <STRONG>redrawwin</STRONG>              window
+       <STRONG>refresh</STRONG>                screen
+       <STRONG>reset_prog_mode</STRONG>        screen
+       <STRONG>reset_shell_mode</STRONG>       screen
+       <STRONG>resetty</STRONG>                terminal
+       <STRONG>resize_term</STRONG>            screen (locks window list)
+       <STRONG>resizeterm</STRONG>             screen
+       <STRONG>restartterm</STRONG>            screen
+       <STRONG>ripoffline</STRONG>             global (static data)
+       <STRONG>savetty</STRONG>                terminal
+       <STRONG>scanw</STRONG>                  screen
+       <STRONG>scr_dump</STRONG>               screen
+       <STRONG>scr_init</STRONG>               screen
+       <STRONG>scr_restore</STRONG>            screen
+       <STRONG>scr_set</STRONG>                screen
+       <STRONG>scrl</STRONG>                   window (<STRONG>stdscr</STRONG>)
+       <STRONG>scroll</STRONG>                 window
+       <STRONG>scrollok</STRONG>               window
+       <STRONG>set_curterm</STRONG>            screen
+       <STRONG>set_escdelay</STRONG>           screen
+       <STRONG>set_tabsize</STRONG>            screen
+       <STRONG>set_term</STRONG>               global (locks screen list, screen)
+       <STRONG>setcchar</STRONG>               reentrant
+       <STRONG>setscrreg</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>setupterm</STRONG>              global
+       <STRONG>slk_attr</STRONG>               screen
+       <STRONG>slk_attr_off</STRONG>           screen
+       <STRONG>slk_attr_on</STRONG>            screen
+       <STRONG>slk_attr_set</STRONG>           screen
+       <STRONG>slk_attroff</STRONG>            screen
+       <STRONG>slk_attron</STRONG>             screen
+       <STRONG>slk_attrset</STRONG>            screen
+       <STRONG>slk_clear</STRONG>              screen
+       <STRONG>slk_color</STRONG>              screen
+       <STRONG>slk_init</STRONG>               screen
+
+       <STRONG>slk_label</STRONG>              screen
+       <STRONG>slk_noutrefresh</STRONG>        screen
+       <STRONG>slk_refresh</STRONG>            screen
+       <STRONG>slk_restore</STRONG>            screen
+       <STRONG>slk_set</STRONG>                screen
+       <STRONG>slk_touch</STRONG>              screen
+       <STRONG>slk_wset</STRONG>               screen
+       <STRONG>standend</STRONG>               window
+       <STRONG>standout</STRONG>               window
+       <STRONG>start_color</STRONG>            screen
+       <STRONG>stdscr</STRONG>                 screen (read-only)
+       <STRONG>strcodes</STRONG>               global (read-only)
+       <STRONG>strfnames</STRONG>              global (read-only)
+       <STRONG>strnames</STRONG>               global (read-only)
+       <STRONG>subpad</STRONG>                 window
+       <STRONG>subwin</STRONG>                 window
+       <STRONG>syncok</STRONG>                 window
+       <STRONG>term_attrs</STRONG>             screen
+       <STRONG>termattrs</STRONG>              screen
+       <STRONG>termname</STRONG>               terminal
+       <STRONG>tgetent</STRONG>                global
+       <STRONG>tgetflag</STRONG>               global
+       <STRONG>tgetnum</STRONG>                global
+       <STRONG>tgetstr</STRONG>                global
+       <STRONG>tgoto</STRONG>                  global
+       <STRONG>tigetflag</STRONG>              terminal
+       <STRONG>tigetnum</STRONG>               terminal
+       <STRONG>tigetstr</STRONG>               terminal
+       <STRONG>timeout</STRONG>                window (<STRONG>stdscr</STRONG>)
+       <STRONG>touchline</STRONG>              window
+       <STRONG>touchwin</STRONG>               window
+       <STRONG>tparm</STRONG>                  global (static data)
+       <STRONG>tputs</STRONG>                  screen
+       <STRONG>trace</STRONG>                  global (static data)
+       <STRONG>ttytype</STRONG>                screen (read-only)
+       <STRONG>typeahead</STRONG>              screen
+       <STRONG>unctrl</STRONG>                 screen
+       <STRONG>unget_wch</STRONG>              screen (input operation)
+       <STRONG>ungetch</STRONG>                screen (input operation)
+       <STRONG>ungetmouse</STRONG>             screen (input operation)
+       <STRONG>untouchwin</STRONG>             window
+       <STRONG>use_default_colors</STRONG>     screen
+       <STRONG>use_env</STRONG>                global (static data)
+       <STRONG>use_extended_names</STRONG>     global (static data)
+       <STRONG>use_legacy_coding</STRONG>      screen
+       <STRONG>use_screen</STRONG>             global (locks screen list, screen)
+       <STRONG>use_window</STRONG>             global (locks window list, window)
+       <STRONG>vid_attr</STRONG>               screen
+       <STRONG>vid_puts</STRONG>               screen
+       <STRONG>vidattr</STRONG>                screen
+       <STRONG>vidputs</STRONG>                screen
+       <STRONG>vline</STRONG>                  window (<STRONG>stdscr</STRONG>)
+       <STRONG>vline_set</STRONG>              window (<STRONG>stdscr</STRONG>)
+       <STRONG>vw_printw</STRONG>              window
+       <STRONG>vw_scanw</STRONG>               screen
+       <STRONG>vwprintw</STRONG>               window
+       <STRONG>vwscanw</STRONG>                screen
+       <STRONG>wadd_wch</STRONG>               window
+       <STRONG>wadd_wchnstr</STRONG>           window
+       <STRONG>wadd_wchstr</STRONG>            window
+       <STRONG>waddch</STRONG>                 window
+       <STRONG>waddchnstr</STRONG>             window
+       <STRONG>waddchstr</STRONG>              window
+       <STRONG>waddnstr</STRONG>               window
+       <STRONG>waddnwstr</STRONG>              window
+       <STRONG>waddstr</STRONG>                window
+
+       <STRONG>waddwstr</STRONG>               window
+       <STRONG>wattr_get</STRONG>              window
+       <STRONG>wattr_off</STRONG>              window
+       <STRONG>wattr_on</STRONG>               window
+       <STRONG>wattr_set</STRONG>              window
+       <STRONG>wattroff</STRONG>               window
+       <STRONG>wattron</STRONG>                window
+       <STRONG>wattrset</STRONG>               window
+       <STRONG>wbkgd</STRONG>                  window
+       <STRONG>wbkgdset</STRONG>               window
+       <STRONG>wbkgrnd</STRONG>                window
+       <STRONG>wbkgrndset</STRONG>             window
+       <STRONG>wborder</STRONG>                window
+       <STRONG>wborder_set</STRONG>            window
+       <STRONG>wchgat</STRONG>                 window
+       <STRONG>wclear</STRONG>                 window
+       <STRONG>wclrtobot</STRONG>              window
+       <STRONG>wclrtoeol</STRONG>              window
+       <STRONG>wcolor_set</STRONG>             window
+       <STRONG>wcursyncup</STRONG>             screen (affects window plus parents)
+       <STRONG>wdelch</STRONG>                 window
+       <STRONG>wdeleteln</STRONG>              window
+       <STRONG>wecho_wchar</STRONG>            window
+       <STRONG>wechochar</STRONG>              window
+       <STRONG>wenclose</STRONG>               window
+       <STRONG>werase</STRONG>                 window
+       <STRONG>wget_wch</STRONG>               screen (input operation)
+       <STRONG>wget_wstr</STRONG>              screen (input operation)
+       <STRONG>wgetbkgrnd</STRONG>             window
+       <STRONG>wgetch</STRONG>                 screen (input operation)
+       <STRONG>wgetdelay</STRONG>              window
+       <STRONG>wgetn_wstr</STRONG>             screen (input operation)
+       <STRONG>wgetnstr</STRONG>               screen (input operation)
+       <STRONG>wgetparent</STRONG>             window
+       <STRONG>wgetscrreg</STRONG>             window
+       <STRONG>wgetstr</STRONG>                screen (input operation)
+       <STRONG>whline</STRONG>                 window
+       <STRONG>whline_set</STRONG>             window
+       <STRONG>win_wch</STRONG>                window
+       <STRONG>win_wchnstr</STRONG>            window
+       <STRONG>win_wchstr</STRONG>             window
+       <STRONG>winch</STRONG>                  window
+       <STRONG>winchnstr</STRONG>              window
+       <STRONG>winchstr</STRONG>               window
+       <STRONG>winnstr</STRONG>                window
+       <STRONG>winnwstr</STRONG>               window
+       <STRONG>wins_nwstr</STRONG>             window
+       <STRONG>wins_wch</STRONG>               window
+       <STRONG>wins_wstr</STRONG>              window
+       <STRONG>winsch</STRONG>                 window
+       <STRONG>winsdelln</STRONG>              window
+       <STRONG>winsertln</STRONG>              window
+       <STRONG>winsnstr</STRONG>               window
+       <STRONG>winsstr</STRONG>                window
+       <STRONG>winstr</STRONG>                 window
+       <STRONG>winwstr</STRONG>                window
+       <STRONG>wmouse_trafo</STRONG>           window
+       <STRONG>wmove</STRONG>                  window
+       <STRONG>wnoutrefresh</STRONG>           screen
+       <STRONG>wprintw</STRONG>                window
+       <STRONG>wredrawln</STRONG>              window
+       <STRONG>wrefresh</STRONG>               screen
+       <STRONG>wresize</STRONG>                window (locks window list)
+       <STRONG>wscanw</STRONG>                 screen
+       <STRONG>wscrl</STRONG>                  window
+       <STRONG>wsetscrreg</STRONG>             window
+
+       <STRONG>wstandend</STRONG>              window
+       <STRONG>wstandout</STRONG>              window
+       <STRONG>wsyncdown</STRONG>              screen (affects window plus parents)
+       <STRONG>wsyncup</STRONG>                screen (affects window plus parents)
+       <STRONG>wtimeout</STRONG>               window
+       <STRONG>wtouchln</STRONG>               window
+       <STRONG>wunctrl</STRONG>                global (static data)
+       <STRONG>wvline</STRONG>                 window
+       <STRONG>wvline_set</STRONG>             window
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       These functions all return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, except as noted.
+       <STRONG>get_escdelay</STRONG>   returns   the   value  of  <STRONG>ESCDELAY</STRONG>.   <STRONG>set_escdelay</STRONG>  and
+       <STRONG>set_tabsize</STRONG> return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon successful  completion.
+       <STRONG>use_screen</STRONG>  and <STRONG>use_window</STRONG> return the <EM>int</EM> returned by the user-supplied
+       function they are called with.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Both a macro and a function are provided for each name.
+       <EM>ncurses</EM> provides both a C function and a preprocessor  macro  for  each
+       function documented in this page.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines are specific to ncurses.  They  were  not  supported  on
+       These  routines  are  specific  to <EM>ncurses</EM>.  They were not supported on
        Version 7, BSD or System V implementations.  It is recommended that any
-       code depending on ncurses extensions be conditioned using  NCURSES_VER-
-       SION.
+       code   depending   on   <EM>ncurses</EM>   extensions   be   conditioned   using
+       <STRONG>NCURSES_VERSION</STRONG>.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                              <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                  <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-USAGE">USAGE</a></li>
+<li><a href="#h3-Usage">Usage</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
index 4c63cb988a444c879db7b56683b915603303b8b2..50717662864c2c004e623825be3ae186b659dc78 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_touch.3x,v 1.26 2022/02/12 20:05:11 tom Exp @
+  * @Id: curs_touch.3x,v 1.47 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_touch 3x</TITLE>
+<TITLE>curs_touch 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_touch 3x</H1>
+<H1 class="no-header">curs_touch 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
+<STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>touchwin</STRONG>, <STRONG>touchline</STRONG>, <STRONG>untouchwin</STRONG>, <STRONG>wtouchln</STRONG>, <STRONG>is_linetouched</STRONG>,
-       <STRONG>is_wintouched</STRONG> - <STRONG>curses</STRONG> refresh control routines
+       <STRONG>touchwin</STRONG>,     <STRONG>touchline</STRONG>,    <STRONG>untouchwin</STRONG>,    <STRONG>wtouchln</STRONG>,    <STRONG>is_linetouched</STRONG>,
+       <STRONG>is_wintouched</STRONG> - control terminal output refresh in a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The <STRONG>touchwin</STRONG> and <STRONG>touchline</STRONG> routines throw away all optimization  infor-
-       mation about which parts of the window have been touched, by pretending
-       that the entire window has been drawn on.  This is sometimes  necessary
-       when  using  overlapping  windows, since a change to one window affects
-       the other window, but the records of which lines have been  changed  in
-       the other window do not reflect the change.  The routine <STRONG>touchline</STRONG> only
-       pretends that <EM>count</EM> lines have been changed, beginning with line <EM>start</EM>.
+       The  <STRONG>touchwin</STRONG>  and  <STRONG>touchline</STRONG>  routines  throw  away  all  optimization
+       information  about  which  parts  of  the  window have been touched, by
+       pretending that the entire window has been drawn on.  This is sometimes
+       necessary  when using overlapping windows, since a change to one window
+       affects the other window, but the records  of  which  lines  have  been
+       changed  in  the  other  window do not reflect the change.  The routine
+       <STRONG>touchline</STRONG> only pretends that <EM>count</EM> lines have been  changed,  beginning
+       with line <EM>start</EM>.
 
        The <STRONG>untouchwin</STRONG> routine marks all lines in the window as unchanged since
        the last call to <STRONG>wrefresh</STRONG>.
 
-       The  <STRONG>wtouchln</STRONG>  routine makes <EM>n</EM> lines in the window, starting at line <EM>y</EM>,
-       look as if they have (<EM>changed</EM><STRONG>=1</STRONG>) or have not (<EM>changed</EM><STRONG>=0</STRONG>)  been  changed
+       The <STRONG>wtouchln</STRONG> routine makes <EM>n</EM> lines in the window, starting at  line  <EM>y</EM>,
+       look  as  if they have (<EM>changed</EM><STRONG>=1</STRONG>) or have not (<EM>changed</EM><STRONG>=0</STRONG>) been changed
        since the last call to <STRONG>wrefresh</STRONG>.
 
-       The <STRONG>is_linetouched</STRONG> and <STRONG>is_wintouched</STRONG> routines return <STRONG>TRUE</STRONG> if the speci-
-       fied line/window was modified since the last call to  <STRONG>wrefresh</STRONG>;  other-
-       wise  they  return  <STRONG>FALSE</STRONG>.   In addition, <STRONG>is_linetouched</STRONG> returns <STRONG>ERR</STRONG> if
-       <EM>line</EM> is not valid for the given window.
+       The <STRONG>is_linetouched</STRONG>  and  <STRONG>is_wintouched</STRONG>  routines  return  <STRONG>TRUE</STRONG>  if  the
+       specified  line/window  was  modified  since the last call to <STRONG>wrefresh</STRONG>;
+       otherwise they return <STRONG>FALSE</STRONG>.  In addition, <STRONG>is_linetouched</STRONG>  returns  <STRONG>ERR</STRONG>
+       if <EM>line</EM> is not valid for the given window.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and an  integer  value
-       other  than  <STRONG>ERR</STRONG>  upon successful completion, unless otherwise noted in
+       All  routines  return the integer <STRONG>ERR</STRONG> upon failure and an integer value
+       other than <STRONG>ERR</STRONG> upon successful completion, unless  otherwise  noted  in
        the preceding routine descriptions.
 
-       X/Open does not define any error conditions.  In this implementation
+       X/Open   Curses  does  not  specify  any  error  conditions.   In  this
+       implementation
 
           <STRONG>is_linetouched</STRONG>
                returns an error if the window pointer is null, or if the  line
-               number is outside the window.
+               number is outside the window boundaries.
 
                The constant <STRONG>ERR</STRONG> is distinct from <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG>, which are the
                normal return values of this function.   Because  the  function
 
           <STRONG>wtouchln</STRONG>
                returns an error if the window pointer is null, or if the  line
-               number is outside the window.
+               number is outside the window boundaries.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       All of these routines except <STRONG>wtouchln</STRONG> may be macros.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  functions  were  introduced  by SVr4.  The Solaris curses header
+       These  functions  were  introduced  by SVr4.  The Solaris <EM>curses</EM> header
        file, for instance, defines both an actual function and macro for each.
-       The  macros  give the same result as the actual functions.  SVr4 curses
+       The  macros  give the same result as the actual functions.  SVr4 <EM>curses</EM>
        does not check the window parameter <EM>win</EM> to ensure that it is not  <STRONG>NULL</STRONG>;
        otherwise this implementation behaves the same as SVr4.
 
-       The XSI Curses standard, Issue 4 describes these functions, but defines
-       no error conditions.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       All of these routines except <STRONG>wtouchln</STRONG> may be macros.
+       X/Open  Curses, Issue 4 describes these functions, but defines no error
+       conditions.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                                <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index f670c86cea51f3190966d58cf9063130abb4280a..c1ea937fd64b6c077e56fab5333385dc21aea9fd 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2000-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_trace.3x,v 1.25 2022/02/12 20:06:41 tom Exp @
+  * @Id: curs_trace.3x,v 1.50 2024/04/20 21:24:19 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_trace 3x</TITLE>
+<TITLE>curs_trace 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_trace 3x</H1>
+<H1 class="no-header">curs_trace 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>                                                  <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>
+<STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>curses_trace</STRONG>, <STRONG>trace</STRONG>, <STRONG>_tracef</STRONG>, <STRONG>_traceattr</STRONG>, <STRONG>_traceattr2</STRONG>, <STRONG>_tracecchar_t</STRONG>,
+       <STRONG>curses_trace</STRONG>,  <STRONG>trace</STRONG>,  <STRONG>_tracef</STRONG>, <STRONG>_traceattr</STRONG>, <STRONG>_traceattr2</STRONG>, <STRONG>_tracecchar_t</STRONG>,
        <STRONG>_tracecchar_t2</STRONG>, <STRONG>_tracechar</STRONG>, <STRONG>_tracechtype</STRONG>, <STRONG>_tracechtype2</STRONG>, <STRONG>_nc_tracebits</STRONG>,
-       <STRONG>_tracedump</STRONG>, <STRONG>_tracemouse</STRONG> - <STRONG>curses</STRONG> debugging routines
+       <STRONG>_tracedump</STRONG>, <STRONG>_tracemouse</STRONG> - <EM>curses</EM> debugging routines
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>unsigned</STRONG> <STRONG>curses_trace(const</STRONG> <STRONG>unsigned</STRONG> <EM>param</EM><STRONG>);</STRONG>
+       <STRONG>unsigned</STRONG> <STRONG>curses_trace(const</STRONG> <STRONG>unsigned</STRONG> <EM>trace-mask</EM><STRONG>);</STRONG>
 
        <STRONG>void</STRONG> <STRONG>_tracef(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>format</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
 
@@ -63,7 +63,7 @@
        <STRONG>char</STRONG> <STRONG>*_traceattr2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
        <STRONG>char</STRONG> <STRONG>*_tracecchar_t(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>string</EM><STRONG>);</STRONG>
        <STRONG>char</STRONG> <STRONG>*_tracecchar_t2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>string</EM><STRONG>);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*_tracechar(int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*_tracechar(int</STRONG> <EM>c</EM><STRONG>);</STRONG>
        <STRONG>char</STRONG> <STRONG>*_tracechtype(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
        <STRONG>char</STRONG> <STRONG>*_tracechtype2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
 
        <STRONG>char</STRONG> <STRONG>*_nc_tracebits(void);</STRONG>
        <STRONG>char</STRONG> <STRONG>*_tracemouse(const</STRONG> <STRONG>MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
 
-       /* deprecated */
-       <STRONG>void</STRONG> <STRONG>trace(const</STRONG> <STRONG>unsigned</STRONG> <STRONG>int</STRONG> <EM>param</EM><STRONG>);</STRONG>
+       <EM>/*</EM> <EM>deprecated</EM> <EM>*/</EM>
+       <STRONG>void</STRONG> <STRONG>trace(const</STRONG> <STRONG>unsigned</STRONG> <STRONG>int</STRONG> <EM>trace-mask</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The <EM>curses</EM> <EM>trace</EM> routines are used for debugging the ncurses libraries,
-       as well as applications which use the ncurses libraries.  Some  limita-
-       tions apply:
+       The <EM>curses</EM> <EM>trace</EM> routines are used for debugging the <EM>ncurses</EM> libraries,
+       as  well  as  applications  which  use  the  <EM>ncurses</EM>  libraries.   Some
+       limitations apply:
 
        <STRONG>o</STRONG>   Aside from <STRONG>curses_trace</STRONG>, the other functions are normally available
            only with the debugging library e.g., <STRONG>libncurses_g.a</STRONG>.
@@ -98,9 +98,9 @@
 
        <STRONG>o</STRONG>   <STRONG>_tracef</STRONG>, which writes formatted data to the <EM>trace</EM> file.
 
-           The other functions either return a pointer to a string-area (allo-
-           cated by the corresponding function), or return no value  (such  as
-           <STRONG>_tracedump</STRONG>,  which  implements  the  screen dump for <STRONG>TRACE_UPDATE</STRONG>).
+           The  other  functions  either  return  a  pointer  to a string-area
+           (allocated by the corresponding function), or return no value (such
+           as  <STRONG>_tracedump</STRONG>, which implements the screen dump for <STRONG>TRACE_UPDATE</STRONG>).
            The caller should not free these strings, since the  allocation  is
            reused on successive calls.  To work around the problem of a single
            string-area per  function,  some  use  a  buffer-number  parameter,
        The <STRONG>curses_trace</STRONG> function is always available, whether or not the other
        trace functions are available:
 
-       <STRONG>o</STRONG>   If tracing is available, calling <STRONG>curses_trace</STRONG> with a nonzero param-
-           eter updates the trace mask, and returns the previous trace mask.
+       <STRONG>o</STRONG>   If tracing  is  available,  calling  <STRONG>curses_trace</STRONG>  with  a  nonzero
+           parameter  updates  the  trace mask, and returns the previous trace
+           mask.
 
-           When the trace mask is nonzero, ncurses creates the file "trace" in
-           the current directory for output.  If the file already  exists,  no
+           When the trace mask is nonzero, <EM>ncurses</EM> creates the file "trace" in
+           the  current  directory for output.  If the file already exists, no
            tracing is done.
 
        <STRONG>o</STRONG>   If tracing is not available, <STRONG>curses_trace</STRONG> returns zero (0).
 
 
 </PRE><H3><a name="h3-Trace-Parameter">Trace Parameter</a></H3><PRE>
-       The  trace  parameter  is  formed  by  OR'ing  values  from the list of
+       The trace parameter is  formed  by  OR'ing  values  from  the  list  of
        <STRONG>TRACE_</STRONG><EM>xxx</EM> definitions in <STRONG>&lt;curses.h&gt;</STRONG>.  These include:
 
        <STRONG>TRACE_DISABLE</STRONG>
             turn off tracing by passing a zero parameter.
 
-            The library flushes the output file, but retains an open  file-de-
-            scriptor  to the trace file so that it can resume tracing later if
-            a nonzero parameter is passed to the <STRONG>curses_trace</STRONG> function.
+            The  library  flushes  the  output file, but retains an open file-
+            descriptor to the trace file so that it can resume  tracing  later
+            if a nonzero parameter is passed to the <STRONG>curses_trace</STRONG> function.
 
        <STRONG>TRACE_TIMES</STRONG>
             trace user and system times of updates.
             trace all character outputs.
 
        <STRONG>TRACE_ORDINARY</STRONG>
-            trace all update actions.  The old and  new  screen  contents  are
+            trace  all  update  actions.   The old and new screen contents are
             written to the trace file for each refresh.
 
        <STRONG>TRACE_CALLS</STRONG>
-            trace  all curses calls.  The parameters for each call are traced,
+            trace all curses calls.  The parameters for each call are  traced,
             as well as return values.
 
        <STRONG>TRACE_VIRTPUT</STRONG>
        <STRONG>TRACE_MAXIMUM</STRONG>
             maximum trace level, enables all of the separate trace features.
 
-       Some tracing features are enabled whenever the  <STRONG>curses_trace</STRONG>  parameter
-       is  nonzero.   Some features overlap.  The specific names are used as a
+       Some  tracing  features are enabled whenever the <STRONG>curses_trace</STRONG> parameter
+       is nonzero.  Some features overlap.  The specific names are used  as  a
        guideline.
 
 
-</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
-       These functions check the <STRONG>NCURSES_TRACE</STRONG> environment  variable,  to  set
-       the tracing feature as if <STRONG>curses_trace</STRONG> was called:
-
-           filter, initscr, new_prescr, newterm, nofilter, restartterm,
-           ripoffline, setupterm, slk_init, tgetent, use_env,
-           use_extended_names, use_tioctl
-
-
 </PRE><H3><a name="h3-Command-line-Utilities">Command-line Utilities</a></H3><PRE>
        The  command-line  utilities  such  as  <STRONG><A HREF="tic.1m.html">tic(1)</A></STRONG> provide a verbose option
-       which extends the set of messages written using the <STRONG>curses_trace</STRONG>  func-
-       tion.   Both  of  these  (<STRONG>-v</STRONG>  and  <STRONG>curses_trace</STRONG>)  use the same variable
+       which extends the  set  of  messages  written  using  the  <STRONG>curses_trace</STRONG>
+       function.   Both  of  these (<STRONG>-v</STRONG> and <STRONG>curses_trace</STRONG>) use the same variable
        (<STRONG>_nc_tracing</STRONG>), which determines the messages which are written.
 
        Because the command-line utilities may  call  initialization  functions
-       such  as <STRONG>setupterm</STRONG>, <STRONG>tgetent</STRONG> or <STRONG>use_extended_names</STRONG>, some of their debug-
-       ging output may be directed to the <EM>trace</EM> file if the <STRONG>NCURSES_TRACE</STRONG>  en-
-       vironment variable is set:
+       such  as  <STRONG>setupterm</STRONG>,  <STRONG>tgetent</STRONG>  or  <STRONG>use_extended_names</STRONG>,  some  of  their
+       debugging output may be directed to the <EM>trace</EM> file if the <EM>NCURSES</EM><STRONG>_</STRONG><EM>TRACE</EM>
+       environment variable is set:
 
        <STRONG>o</STRONG>   messages produced in the utility are written to the standard error.
 
        <STRONG>o</STRONG>   messages produced by the underlying library are written to <EM>trace</EM>.
 
-       If  ncurses  is built without tracing, none of the latter are produced,
+       If  <EM>ncurses</EM>  is built without tracing, none of the latter are produced,
        and fewer diagnostics are provided by the command-line utilities.
 
 
        the <STRONG>_tracef</STRONG> routine.
 
 
+</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
+
+</PRE><H3><a name="h3-NCURSES_TRACE">NCURSES_TRACE</a></H3><PRE>
+       A  positive integral value stored in this variable causes the following
+       functions to enable the tracing feature as if <STRONG>curses_trace</STRONG> were called.
+
+           <STRONG>filter</STRONG>, <STRONG>initscr</STRONG>, <STRONG>new_prescr</STRONG>, <STRONG>newterm</STRONG>, <STRONG>nofilter</STRONG>, <STRONG>restartterm</STRONG>,
+           <STRONG>ripoffline</STRONG>, <STRONG>setupterm</STRONG>, <STRONG>slk_init</STRONG>, <STRONG>tgetent</STRONG>, <STRONG>use_env</STRONG>,
+           <STRONG>use_extended_names</STRONG>, <STRONG>use_tioctl</STRONG>
+
+
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  functions  are not part of the XSI interface.  Some other curses
-       implementations are known to have similar features, but  they  are  not
-       compatible with ncurses:
+       These functions are not part of  the  X/Open  Curses  interface.   Some
+       other  curses  implementations  are known to have similar features, but
+       they are not compatible with <EM>ncurses</EM>:
 
-       <STRONG>o</STRONG>   SVr4  provided  <STRONG>traceon</STRONG>  and <STRONG>traceoff</STRONG>, to control whether debugging
-           information was written to the "trace" file.  While  the  functions
-           were  always  available, this feature was only enabled if <STRONG>DEBUG</STRONG> was
+       <STRONG>o</STRONG>   SVr4 provided <STRONG>traceon</STRONG> and <STRONG>traceoff</STRONG>, to  control  whether  debugging
+           information  was  written to the "trace" file.  While the functions
+           were always available, this feature was only enabled if  <STRONG>DEBUG</STRONG>  was
            defined when building the library.
 
            The SVr4 tracing feature is undocumented.
 
-       <STRONG>o</STRONG>   PDCurses provides <STRONG>traceon</STRONG> and <STRONG>traceoff</STRONG>, which (like SVr4)  are  al-
-           ways  available, and enable tracing to the "trace" file only when a
-           debug-library is built.
+       <STRONG>o</STRONG>   PDCurses  provides  <STRONG>traceon</STRONG>  and  <STRONG>traceoff</STRONG>,  which  (like SVr4) are
+           always available, and enable tracing to the "trace" file only  when
+           debug-library is built.
 
-           PDCurses has a short description of these functions,  with  a  note
-           that  they are not present in X/Open Curses, ncurses or NetBSD.  It
-           does not mention SVr4, but the functions'  inclusion  in  a  header
+           PDCurses  has  a  short description of these functions, with a note
+           that they are not present in X/Open Curses, <EM>ncurses</EM> or NetBSD.   It
+           does  not  mention  SVr4,  but the functions' inclusion in a header
            file section labeled "Quasi-standard" hints at the origin.
 
-       <STRONG>o</STRONG>   NetBSD  does  not  provide functions for enabling/disabling traces.
-           It  uses  environment   variables   <STRONG>CURSES_TRACE_MASK</STRONG>   and   <STRONG>CURS-</STRONG>
-           <STRONG>ES_TRACE_FILE</STRONG>  to  determine  what is traced, and where the results
-           are written.  This is available only when a debug-library is built.
+       <STRONG>o</STRONG>   NetBSD does not provide functions  for  enabling/disabling  traces.
+           It     uses    environment    variables    <EM>CURSES</EM><STRONG>_</STRONG><EM>TRACE</EM><STRONG>_</STRONG><EM>MASK</EM>    and
+           <EM>CURSES</EM><STRONG>_</STRONG><EM>TRACE</EM><STRONG>_</STRONG><EM>FILE</EM> to  determine  what  is  traced,  and  where  the
+           results  are  written.  This is available only when a debug-library
+           is built.
 
            The NetBSD tracing feature is undocumented.
 
-       A few ncurses functions are not  provided  when  symbol  versioning  is
+       A few <EM>ncurses</EM> functions are not  provided  when  symbol  versioning  is
        used:
 
            _nc_tracebits, _tracedump, _tracemouse
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
 
 
 
-                                                                <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                    <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <ul>
 <li><a href="#h3-Functions">Functions</a></li>
 <li><a href="#h3-Trace-Parameter">Trace Parameter</a></li>
-<li><a href="#h3-Initialization">Initialization</a></li>
 <li><a href="#h3-Command-line-Utilities">Command-line Utilities</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a>
+<ul>
+<li><a href="#h3-NCURSES_TRACE">NCURSES_TRACE</a></li>
+</ul>
+</li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
index cd4fefd093cc161b0d12d81aa6bf23bdc42d2d29..6160a2cad552bffd401c3ed3752a8b6cc5fb732e 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_util.3x,v 1.65 2022/02/12 20:06:41 tom Exp @
+  * @Id: curs_util.3x,v 1.101 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_util 3x</TITLE>
+<TITLE>curs_util 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_util 3x</H1>
+<H1 class="no-header">curs_util 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>                                                    <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+<STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>delay_output</STRONG>, <STRONG>filter</STRONG>, <STRONG>flushinp</STRONG>, <STRONG>getwin</STRONG>, <STRONG>key_name</STRONG>, <STRONG>keyname</STRONG>, <STRONG>nofilter</STRONG>,
-       <STRONG>putwin</STRONG>, <STRONG>unctrl</STRONG>, <STRONG>use_env</STRONG>, <STRONG>use_tioctl</STRONG>, <STRONG>wunctrl</STRONG> - miscellaneous <STRONG>curses</STRONG>
+       <STRONG>delay_output</STRONG>,  <STRONG>filter</STRONG>,  <STRONG>flushinp</STRONG>,  <STRONG>getwin</STRONG>, <STRONG>key_name</STRONG>, <STRONG>keyname</STRONG>, <STRONG>nofilter</STRONG>,
+       <STRONG>putwin</STRONG>, <STRONG>unctrl</STRONG>, <STRONG>use_env</STRONG>, <STRONG>use_tioctl</STRONG>,  <STRONG>wunctrl</STRONG>  -  miscellaneous  <EM>curses</EM>
        utility routines
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*unctrl(chtype</STRONG> <EM>c</EM><STRONG>);</STRONG>
-       <STRONG>wchar_t</STRONG> <STRONG>*wunctrl(cchar_t</STRONG> <STRONG>*</STRONG><EM>c</EM><STRONG>);</STRONG>
+       <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*unctrl(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>wchar_t</STRONG> <STRONG>*wunctrl(cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*keyname(int</STRONG> <EM>c</EM><STRONG>);</STRONG>
-       <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*key_name(wchar_t</STRONG> <EM>w</EM><STRONG>);</STRONG>
+       <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*key_name(wchar_t</STRONG> <EM>wc</EM><STRONG>);</STRONG>
 
        <STRONG>void</STRONG> <STRONG>filter(void);</STRONG>
-       <STRONG>void</STRONG> <STRONG>nofilter(void);</STRONG>
 
        <STRONG>void</STRONG> <STRONG>use_env(bool</STRONG> <EM>f</EM><STRONG>);</STRONG>
-       <STRONG>void</STRONG> <STRONG>use_tioctl(bool</STRONG> <EM>f</EM><STRONG>);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>putwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>filep</EM><STRONG>);</STRONG>
        <STRONG>WINDOW</STRONG> <STRONG>*getwin(FILE</STRONG> <STRONG>*</STRONG><EM>filep</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>delay_output(int</STRONG> <EM>ms</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>flushinp(void);</STRONG>
 
+       <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM>
+       <STRONG>void</STRONG> <STRONG>nofilter(void);</STRONG>
+       <STRONG>void</STRONG> <STRONG>use_tioctl(bool</STRONG> <EM>f</EM><STRONG>);</STRONG>
+
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
 </PRE><H3><a name="h3-unctrl">unctrl</a></H3><PRE>
-       The <STRONG>unctrl</STRONG> routine returns a character string which is a printable rep-
-       resentation of the character <EM>c</EM>, ignoring attributes.   Control  charac-
-       ters  are  displayed  in the <STRONG>^</STRONG><EM>X</EM> notation.  Printing characters are dis-
-       played as is.  The corresponding <STRONG>wunctrl</STRONG> returns a printable  represen-
-       tation of a wide character.
-
+       The  <STRONG>unctrl</STRONG>  routine  returns  a  character string which is a printable
+       representation of the character <EM>ch</EM>:
 
-</PRE><H3><a name="h3-keyname_key_name">keyname/key_name</a></H3><PRE>
-       The <STRONG>keyname</STRONG> routine returns a character string corresponding to the key
-       <EM>c</EM>:
-
-       <STRONG>o</STRONG>   Printable characters are displayed as themselves, e.g., a one-char-
-           acter string containing the key.
+       <STRONG>o</STRONG>   Printable characters are displayed  as  themselves,  e.g.,  a  one-
+           character string containing the key.
 
        <STRONG>o</STRONG>   Control characters are displayed in the <STRONG>^</STRONG><EM>X</EM> notation.
 
+       <STRONG>o</STRONG>   Printing characters are displayed as is.
+
        <STRONG>o</STRONG>   DEL (character 127) is displayed as <STRONG>^?</STRONG>.
 
        <STRONG>o</STRONG>   Values  above 128 are either meta characters (if the screen has not
-           been initialized, or if <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> has been called with a <STRONG>TRUE</STRONG> param-
-           eter),  shown  in the <STRONG>M-</STRONG><EM>X</EM> notation, or are displayed as themselves.
-           In the latter case, the values may not be printable;  this  follows
-           the X/Open specification.
+           been initialized, or if  <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG>  has  been  called  with  a  <STRONG>TRUE</STRONG>
+           parameter),  shown  in  the  <STRONG>M-</STRONG><EM>X</EM>  notation,  or  are  displayed  as
+           themselves.  In the latter case, the values may not  be  printable;
+           this follows the X/Open specification.
+
+       The  corresponding  <STRONG>wunctrl</STRONG>  returns  a  printable  representation of a
+       complex character <EM>wch</EM>.
+
+       In both <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG> the attributes and color associated with the
+       character parameter are ignored.
+
+
+</PRE><H3><a name="h3-keyname_key_name">keyname, key_name</a></H3><PRE>
+       The <STRONG>keyname</STRONG> routine returns a character string corresponding to the key
+       <EM>c</EM>.  Key codes are different from character codes.
+
+       <STRONG>o</STRONG>   Key codes below 256  are  characters.   They  are  displayed  using
+           <STRONG>unctrl</STRONG>.
+
+       <STRONG>o</STRONG>   Values  above 256 may be the codes for function keys.  The function
+           key name is displayed.
+
+       <STRONG>o</STRONG>   Otherwise (if there is no corresponding name and the key is  not  a
+           character)  the  function returns null, to denote an error.  X/Open
+           also  lists   an   "UNKNOWN   KEY"   return   value,   which   some
+           implementations return rather than null.
 
-       <STRONG>o</STRONG>   Values above 256 may be the names of the names of function keys.
+       The   corresponding  <STRONG>key_name</STRONG>  returns  a  multibyte  character  string
+       corresponding  to  the  wide-character  value  <EM>w</EM>.   The  two  functions
+       (<STRONG>keyname</STRONG> and <STRONG>key_name</STRONG>) do not return the same set of strings:
 
-       <STRONG>o</STRONG>   Otherwise  (if there is no corresponding name) the function returns
-           null, to denote an error.  X/Open also lists an "UNKNOWN  KEY"  re-
-           turn value, which some implementations return rather than null.
+       <STRONG>o</STRONG>   <STRONG>keyname</STRONG> returns null where <STRONG>key_name</STRONG> would display a meta character.
 
-       The  corresponding <STRONG>key_name</STRONG> returns a character string corresponding to
-       the wide-character value <EM>w</EM>.  The two functions do not return  the  same
-       set  of strings; the latter returns null where the former would display
-       a meta character.
+       <STRONG>o</STRONG>   <STRONG>key_name</STRONG> does not return the name of a function key.
 
 
-</PRE><H3><a name="h3-filter_nofilter">filter/nofilter</a></H3><PRE>
-       The <STRONG>filter</STRONG> routine, if used, must be called before <STRONG>initscr</STRONG>  or  <STRONG>newterm</STRONG>
+</PRE><H3><a name="h3-filter_nofilter">filternofilter</a></H3><PRE>
+       The  <STRONG>filter</STRONG>  routine, if used, must be called before <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>
        are called.  Calling <STRONG>filter</STRONG> causes these changes in initialization:
 
        <STRONG>o</STRONG>   <STRONG>LINES</STRONG> is set to 1;
 
-       <STRONG>o</STRONG>   the  capabilities  <STRONG>clear</STRONG>,  <STRONG>cud1</STRONG>,  <STRONG>cud</STRONG>, <STRONG>cup</STRONG>, <STRONG>cuu1</STRONG>, <STRONG>cuu</STRONG>, <STRONG>vpa</STRONG> are dis-
-           abled;
+       <STRONG>o</STRONG>   the  capabilities  <STRONG>clear</STRONG>,  <STRONG>cud1</STRONG>,  <STRONG>cud</STRONG>,  <STRONG>cup</STRONG>,  <STRONG>cuu1</STRONG>,  <STRONG>cuu</STRONG>,  <STRONG>vpa</STRONG>  are
+           disabled;
 
        <STRONG>o</STRONG>   the capability <STRONG>ed</STRONG> is disabled if <STRONG>bce</STRONG> is set;
 
        <STRONG>o</STRONG>   and the <STRONG>home</STRONG> string is set to the value of <STRONG>cr</STRONG>.
 
-       The <STRONG>nofilter</STRONG> routine cancels the effect of  a  preceding  <STRONG>filter</STRONG>  call.
-       That  allows  the  caller to initialize a screen on a different device,
-       using a different value of <STRONG>$TERM</STRONG>.  The limitation  arises  because  the
+       The  <STRONG>nofilter</STRONG>  routine  cancels  the effect of a preceding <STRONG>filter</STRONG> call.
+       That allows the caller to initialize a screen on  a  different  device,
+       using  a  different  value of <STRONG>$TERM</STRONG>.  The limitation arises because the
        <STRONG>filter</STRONG> routine modifies the in-memory copy of the terminal information.
 
 
 </PRE><H3><a name="h3-use_env">use_env</a></H3><PRE>
-       The  <STRONG>use_env</STRONG>  routine,  if  used,  should  be  called before <STRONG>initscr</STRONG> or
-       <STRONG>newterm</STRONG> are called (because those compute the screen size).   It  modi-
-       fies  the way <STRONG>ncurses</STRONG> treats environment variables when determining the
-       screen size.
+       The <STRONG>use_env</STRONG> routine, if  used,  should  be  called  before  <STRONG>initscr</STRONG>  or
+       <STRONG>newterm</STRONG>  are  called  (because  those  compute  the  screen  size).  It
+       modifies the way <EM>ncurses</EM> treats environment variables when  determining
+       the screen size.
 
-       <STRONG>o</STRONG>   Normally <STRONG>ncurses</STRONG> looks first  at  the  terminal  database  for  the
+       <STRONG>o</STRONG>   Normally  <EM>ncurses</EM>  looks  first  at  the  terminal database for the
            screen size.
 
-           If  <STRONG>use_env</STRONG>  was called with <STRONG>FALSE</STRONG> for parameter, it stops here un-
-           less <STRONG>use_tioctl</STRONG> was also called with <STRONG>TRUE</STRONG> for parameter.
+           If <STRONG>use_env</STRONG> was called with  <STRONG>FALSE</STRONG>  for  parameter,  it  stops  here
+           unless <STRONG>use_tioctl</STRONG> was also called with <STRONG>TRUE</STRONG> for parameter.
 
-       <STRONG>o</STRONG>   Then it asks for the screen size via operating  system  calls.   If
+       <STRONG>o</STRONG>   Then  it  asks  for the screen size via operating system calls.  If
            successful, it overrides the values from the terminal database.
 
-       <STRONG>o</STRONG>   Finally  (unless  <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG> parameter), <STRONG>ncurses</STRONG>
-           examines the <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> environment variables, using a  value
-           in  those to override the results from the operating system or ter-
-           minal database.
+       <STRONG>o</STRONG>   Finally (unless <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG>  parameter),  <EM>ncurses</EM>
+           examines  the <EM>LINES</EM> or <EM>COLUMNS</EM> environment variables, using a value
+           in those to override the  results  from  the  operating  system  or
+           terminal database.
 
-           <STRONG>Ncurses</STRONG> also updates the screen size in response to  <STRONG>SIGWINCH</STRONG>,  un-
-           less overridden by the <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> environment variables,
+           <EM>curses</EM> also updates the screen size in response to <STRONG>SIGWINCH</STRONG>, unless
+           overridden by the <EM>LINES</EM> or <EM>COLUMNS</EM> environment variables,
 
 
 </PRE><H3><a name="h3-use_tioctl">use_tioctl</a></H3><PRE>
-       The  <STRONG>use_tioctl</STRONG>  routine,  if  used, should be called before <STRONG>initscr</STRONG> or
-       <STRONG>newterm</STRONG> are called (because those  compute  the  screen  size).   After
-       <STRONG>use_tioctl</STRONG>  is  called  with  <STRONG>TRUE</STRONG> as an argument, <STRONG>ncurses</STRONG> modifies the
+       The <STRONG>use_tioctl</STRONG> routine, if used, should be  called  before  <STRONG>initscr</STRONG>  or
+       <STRONG>newterm</STRONG>  are  called  (because  those  compute the screen size).  After
+       <STRONG>use_tioctl</STRONG> is called with <STRONG>TRUE</STRONG> as an  argument,  <EM>ncurses</EM>  modifies  the
        last step in its computation of screen size as follows:
 
-       <STRONG>o</STRONG>   checks if the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables are set to  a
+       <STRONG>o</STRONG>   checks  if the <EM>LINES</EM> and <EM>COLUMNS</EM> environment variables are set to a
            number greater than zero.
 
-       <STRONG>o</STRONG>   for  each,  <STRONG>ncurses</STRONG>  updates the corresponding environment variable
-           with the value that it has obtained via operating  system  call  or
+       <STRONG>o</STRONG>   for each, <EM>ncurses</EM> updates the  corresponding  environment  variable
+           with  the  value  that it has obtained via operating system call or
            from the terminal database.
 
-       <STRONG>o</STRONG>   <STRONG>ncurses</STRONG>  re-fetches  the value of the environment variables so that
+       <STRONG>o</STRONG>   <EM>ncurses</EM> re-fetches the value of the environment variables  so  that
            it is still the environment variables which set the screen size.
 
-       The <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> routines combine as summarized here:
+       The <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> routines combine as follows.
 
-           <STRONG>use_env</STRONG>   <STRONG>use_tioctl</STRONG>   <STRONG>Summary</STRONG>
-           ----------------------------------------------------------------
-           TRUE      FALSE        This is the default  behavior.   <STRONG>ncurses</STRONG>
-                                  uses operating system calls unless over-
-                                  ridden by $LINES or $COLUMNS environment
-                                  variables.
+              <STRONG>use_env</STRONG>   <STRONG>use_tioctl</STRONG>   <STRONG>Summary</STRONG>
+              -----------------------------------------------------------------
+              <STRONG>TRUE</STRONG>      <STRONG>FALSE</STRONG>        This  is  the  default behavior.  <EM>ncurses</EM>
+                                     uses  operating   system   calls   unless
+                                     overridden    by    <EM>LINES</EM>    or   <EM>COLUMNS</EM>
+                                     environment variables; default.
+              <STRONG>TRUE</STRONG>      <STRONG>TRUE</STRONG>         <EM>ncurses</EM> updates <EM>LINES</EM> and  <EM>COLUMNS</EM>  based
+                                     on operating system calls.
+              <STRONG>FALSE</STRONG>     <STRONG>TRUE</STRONG>         <EM>ncurses</EM>  ignores <EM>LINES</EM> and <EM>COLUMNS</EM>, using
+                                     operating system calls to obtain size.
 
-           TRUE      TRUE         <STRONG>ncurses</STRONG>   updates  $LINES  and  $COLUMNS
-                                  based on operating system calls.
-           FALSE     TRUE         <STRONG>ncurses</STRONG> ignores $LINES and $COLUMNS, us-
-                                  es  operating  system  calls  to  obtain
-                                  size.
-           FALSE     FALSE        <STRONG>ncurses</STRONG> relies on the terminal  database
-                                  to determine size.
 
+</PRE><H3><a name="h3-putwin_getwin">putwin, getwin</a></H3><PRE>
+       The <STRONG>putwin</STRONG> routine writes all data associated with window (or pad)  <EM>win</EM>
+       into  the  file  to  which <EM>filep</EM> points.  This information can be later
+       retrieved using the <STRONG>getwin</STRONG> function.
 
-</PRE><H3><a name="h3-putwin_getwin">putwin/getwin</a></H3><PRE>
-       The  <STRONG>putwin</STRONG> routine writes all data associated with window (or pad) <EM>win</EM>
-       into the file to which <EM>filep</EM> points.  This information can be later re-
-       trieved using the <STRONG>getwin</STRONG> function.
-
-       The  <STRONG>getwin</STRONG>  routine  reads  window  related data stored in the file by
-       <STRONG>putwin</STRONG>.  The routine then creates and initializes a  new  window  using
-       that  data.   It  returns a pointer to the new window.  There are a few
+       The <STRONG>getwin</STRONG> routine reads window related data  stored  in  the  file  by
+       <STRONG>putwin</STRONG>.   The  routine  then creates and initializes a new window using
+       that data.  It returns a pointer to the new window.  There  are  a  few
        caveats:
 
-       <STRONG>o</STRONG>   the data written is a copy of the <STRONG>WINDOW</STRONG> structure, and its associ-
-           ated  character cells.  The format differs between the wide-charac-
-           ter (<STRONG>ncursesw</STRONG>) and non-wide (<STRONG>ncurses</STRONG>) libraries.  You can  transfer
-           data between the two, however.
+       <STRONG>o</STRONG>   the  data  written  is  a  copy  of  the  <EM>WINDOW</EM> structure, and its
+           associated character cells.  The format differs between  the  wide-
+           character  (<EM>ncursesw</EM>)  and  non-wide  (<EM>ncurses</EM>) libraries.  You can
+           transfer data between the two, however.
 
-       <STRONG>o</STRONG>   the  retrieved  window  is always created as a top-level window (or
+       <STRONG>o</STRONG>   the retrieved window is always created as a  top-level  window  (or
            pad), rather than a subwindow.
 
-       <STRONG>o</STRONG>   the window's character cells contain the color pair <EM>value</EM>, but  not
-           the  actual  color  <EM>numbers</EM>.   If cells in the retrieved window use
-           color pairs which have not been created in  the  application  using
+       <STRONG>o</STRONG>   the  window's character cells contain the color pair <EM>value</EM>, but not
+           the actual color <EM>numbers</EM>.  If cells in  the  retrieved  window  use
+           color  pairs  which  have not been created in the application using
            <STRONG>init_pair</STRONG>, they will not be colored when the window is refreshed.
 
 
 </PRE><H3><a name="h3-delay_output">delay_output</a></H3><PRE>
-       The  <STRONG>delay_output</STRONG>  routine  inserts  an <EM>ms</EM> millisecond pause in output.
-       This routine should not be used extensively because padding  characters
-       are  used  rather  than a CPU pause.  If no padding character is speci-
-       fied, this uses <STRONG>napms</STRONG> to perform the delay.
+       The <STRONG>delay_output</STRONG> routine inserts an <EM>ms</EM>  millisecond  pause  in  output.
+       Employ  this  function  judiciously  when terminal output uses padding,
+       because <EM>ncurses</EM>  transmits  null  characters  (consuming  CPU  and  I/O
+       resources)  instead  of  sleeping  and  requesting  resumption from the
+       operating system.  Padding is used unless:
+
+       <STRONG>o</STRONG>   the terminal description has <STRONG>npc</STRONG> (<STRONG>no_pad_char</STRONG>) capability, or
+
+       <STRONG>o</STRONG>   the environment variable <STRONG>NCURSES_NO_PADDING</STRONG> is set.
+
+       If padding is not in use, <EM>ncurses</EM> uses <STRONG>napms</STRONG> to perform the delay.   If
+       the  value  of <EM>ms</EM> exceeds 30,000 (thirty seconds), it is capped at that
+       value.
 
 
 </PRE><H3><a name="h3-flushinp">flushinp</a></H3><PRE>
 
        Routines that return pointers return <STRONG>NULL</STRONG> on error.
 
-       X/Open does not define any error conditions.  In this implementation
+       X/Open   Curses  does  not  specify  any  error  conditions.   In  this
+       implementation
 
           <STRONG>flushinp</STRONG>
                returns an error if the terminal was not initialized.
 
           <STRONG>putwin</STRONG>
-               returns  an  error if the associated <STRONG>fwrite</STRONG> calls return an er-
-               ror.
+               returns an error if  the  associated  <STRONG>fwrite</STRONG>  calls  return  an
+               error.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
 
 </PRE><H3><a name="h3-filter">filter</a></H3><PRE>
-       The SVr4 documentation describes the  action  of  <STRONG>filter</STRONG>  only  in  the
-       vaguest  terms.   The  description  here is adapted from the XSI Curses
-       standard (which erroneously fails to describe the disabling of <STRONG>cuu</STRONG>).
+       The  SVr4  documentation  describes  the  action  of <STRONG>filter</STRONG> only in the
+       vaguest terms.  The description here  is  adapted  from  X/Open  Curses
+       (which erroneously fails to describe the disabling of <STRONG>cuu</STRONG>).
+
+
+</PRE><H3><a name="h3-delay_output-padding">delay_output padding</a></H3><PRE>
+       The  limitation  to  30  seconds and the use of <STRONG>napms</STRONG> differ from other
+       implementations.
+
+       <STRONG>o</STRONG>   SVr4 curses does not delay if no padding character is available.
+
+       <STRONG>o</STRONG>   NetBSD curses uses <STRONG>napms</STRONG> when no padding  character  is  available,
+           but  does  not  take  timing  into  account  when using the padding
+           character.
+
+       Neither limits the delay.
 
 
 </PRE><H3><a name="h3-keyname">keyname</a></H3><PRE>
-       The <STRONG>keyname</STRONG> function may return the names of user-defined string  capa-
-       bilities  which  are defined in the terminfo entry via the <STRONG>-x</STRONG> option of
-       <STRONG>tic</STRONG>.  This implementation automatically assigns at run-time keycodes to
-       user-defined  strings  which  begin  with  "k".   The keycodes start at
+       The <STRONG>keyname</STRONG> function  may  return  the  names  of  user-defined  string
+       capabilities  which are defined in the terminfo entry via the <STRONG>-x</STRONG> option
+       of <STRONG>tic</STRONG>.  This implementation automatically assigns at run-time keycodes
+       to  user-defined  strings  which begin with "k".  The keycodes start at
        KEY_MAX, but are not guaranteed to be the same value for different runs
        because  user-defined  codes  are merged from all terminal descriptions
        which have been loaded.  The <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG>  function  controls
        the library.
 
 
-</PRE><H3><a name="h3-nofilter_use_tioctl">nofilter/use_tioctl</a></H3><PRE>
-       The <STRONG>nofilter</STRONG> and <STRONG>use_tioctl</STRONG> routines are  specific  to  <STRONG>ncurses</STRONG>.   They
+</PRE><H3><a name="h3-nofilter_use_tioctl">nofilteruse_tioctl</a></H3><PRE>
+       The <STRONG>nofilter</STRONG> and <STRONG>use_tioctl</STRONG> routines are  specific  to  <EM>ncurses</EM>.   They
        were  not  supported on Version 7, BSD or System V implementations.  It
-       is recommended that any code depending on <STRONG>ncurses</STRONG> extensions be  condi-
-       tioned using NCURSES_VERSION.
+       is recommended  that  any  code  depending  on  <EM>ncurses</EM>  extensions  be
+       conditioned using <STRONG>NCURSES_VERSION</STRONG>.
 
 
 </PRE><H3><a name="h3-putwin_getwin-file-format">putwin/getwin file-format</a></H3><PRE>
        The <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG> functions have several issues with portability:
 
-       <STRONG>o</STRONG>   The  files  written  and read by these functions use an implementa-
-           tion-specific format.  Although the format is an obvious target for
-           standardization, it has been overlooked.
+       <STRONG>o</STRONG>   The   files   written   and   read   by   these  functions  use  an
+           implementation-specific format.  Although the format is an  obvious
+           target for standardization, it has been overlooked.
 
            Interestingly  enough,  according to the copyright dates in Solaris
            source, the functions (along with <STRONG>scr_init</STRONG>, etc.)  originated  with
            1988) incorporated into SVr4.  Oddly, there are no  such  functions
            in the 4.3BSD curses sources.
 
-       <STRONG>o</STRONG>   Most implementations simply dump the binary <STRONG>WINDOW</STRONG> structure to the
+       <STRONG>o</STRONG>   Most implementations simply dump the binary <EM>WINDOW</EM> structure to the
            file.  These include SVr4 curses, NetBSD and PDCurses, as  well  as
-           older <STRONG>ncurses</STRONG> versions.  This implementation (as well as the X/Open
+           older <EM>ncurses</EM> versions.  This implementation (as well as the X/Open
            variant of Solaris curses, dated 1995) uses textual dumps.
 
            The implementations which  use  binary  dumps  use  block-I/O  (the
            file written using mixed schemes may not be successful.
 
 
-</PRE><H3><a name="h3-unctrl_wunctrl">unctrl/wunctrl</a></H3><PRE>
-       The XSI Curses standard, Issue 4 describes these functions.  It  states
-       that <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG> will return a null pointer if unsuccessful, but
-       does not define any error conditions.  This implementation  checks  for
-       three cases:
+</PRE><H3><a name="h3-unctrl_wunctrl">unctrlwunctrl</a></H3><PRE>
+       X/Open Curses, Issue 4  describes  these  functions.   It  states  that
+       <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG> will return a null pointer if unsuccessful, but does
+       not define any error conditions.  This implementation checks for  three
+       cases:
 
        <STRONG>o</STRONG>   the  parameter  is  a  7-bit  US-ASCII code.  This is the case that
            X/Open Curses documented.
 
        <STRONG>o</STRONG>   the parameter is in the range 128-159, i.e., a C1 control code.  If
            <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG>  has  been  called with a <STRONG>2</STRONG> parameter, <STRONG>unctrl</STRONG>
-           returns the parameter, i.e., a one-character string with the param-
-           eter  as  the  first  character.  Otherwise, it returns "~@", "~A",
-           etc., analogous to "^@", "^A", C0 controls.
+           returns the  parameter,  i.e.,  a  one-character  string  with  the
+           parameter  as  the  first  character.   Otherwise, it returns "~@",
+           "~A", etc., analogous to "^@", "^A", C0 controls.
 
            X/Open Curses does not document whether <STRONG>unctrl</STRONG> can be called before
            initializing curses.  This implementation permits that, and returns
 
        The strings returned by <STRONG>unctrl</STRONG> in this implementation are determined at
        compile time, showing C1 controls from the upper-128 codes with  a  "~"
-       prefix  rather  than "^".  Other implementations have different conven-
-       tions.  For example, they may show both sets of control characters with
-       "^", and strip the parameter to 7 bits.  Or they may ignore C1 controls
-       and treat all of the upper-128 codes as printable.  This implementation
-       uses  8  bits  but  does  not modify the string to reflect locale.  The
-       <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG> function allows the caller to change  the  output
-       of <STRONG>unctrl</STRONG>.
+       prefix   rather   than   "^".   Other  implementations  have  different
+       conventions.   For  example,  they  may  show  both  sets  of   control
+       characters  with  "^",  and strip the parameter to 7 bits.  Or they may
+       ignore C1 controls and treat all of the upper-128 codes  as  printable.
+       This  implementation  uses  8  bits  but  does not modify the string to
+       reflect locale.  The <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG> function allows  the  caller
+       to change the output of <STRONG>unctrl</STRONG>.
 
        Likewise,  the <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> function allows the caller to change the output
        of <STRONG>keyname</STRONG>, i.e., it determines whether to  use  the  "M-"  prefix  for
-       "meta"  keys  (codes  in  the  range 128 to 255).  Both <STRONG>use_legacy_cod-</STRONG>
-       <STRONG><A HREF="use_legacy_coding.3x.html">ing(3x)</A></STRONG> and <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> succeed only after curses is initialized.   X/Open
-       Curses  does  not  document  the  treatment  of codes 128 to 159.  When
-       treating them as "meta" keys (or if <STRONG>keyname</STRONG> is called before initializ-
-       ing curses), this implementation returns strings "M-^@", "M-^A", etc.
-
-       X/Open Curses documents <STRONG>unctrl</STRONG> as declared in <STRONG>&lt;unctrl.h&gt;</STRONG>, which <STRONG>ncurses</STRONG>
-       does.  However, <STRONG>ncurses</STRONG>' <STRONG>&lt;curses.h&gt;</STRONG> includes <STRONG>&lt;unctrl.h&gt;</STRONG>,  matching  the
+       "meta"    keys    (codes    in   the   range   128   to   255).    Both
+       <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG>  and  <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG>  succeed  only  after  curses   is
+       initialized.   X/Open  Curses  does not document the treatment of codes
+       128 to 159.  When treating them as "meta" keys (or if <STRONG>keyname</STRONG> is called
+       before   initializing  curses),  this  implementation  returns  strings
+       "M-^@", "M-^A", etc.
+
+       X/Open Curses documents <STRONG>unctrl</STRONG> as declared in <STRONG>&lt;unctrl.h&gt;</STRONG>, which <EM>ncurses</EM>
+       does.   However,  <EM>ncurses</EM>' <STRONG>&lt;curses.h&gt;</STRONG> includes <STRONG>&lt;unctrl.h&gt;</STRONG>, matching the
        behavior of SVr4 curses.  Other implementations may not do that.
 
 
-</PRE><H3><a name="h3-use_env_use_tioctl">use_env/use_tioctl</a></H3><PRE>
-       If  <STRONG>ncurses</STRONG>  is  configured  to provide the sp-functions extension, the
-       state of <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> may be  updated  before  creating  each
-       <EM>screen</EM>  rather  than  once  only  (<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>).  This feature of
-       <STRONG>use_env</STRONG> is not provided by other implementation of curses.
+</PRE><H3><a name="h3-use_env_use_tioctl">use_envuse_tioctl</a></H3><PRE>
+       If <EM>ncurses</EM> is configured to provide  the  sp-functions  extension,  the
+       state  of  <STRONG>use_env</STRONG>  and  <STRONG>use_tioctl</STRONG> may be updated before creating each
+       <EM>screen</EM> rather than once  only  (<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>).   This  feature  of
+       <STRONG>use_env</STRONG> is not provided by other implementations of curses.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,    <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,    <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>,  <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>,  <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>legacy_cod-</STRONG>
-       <STRONG><A HREF="legacy_coding.3x.html">ing(3x)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,    <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,    <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,   <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>,        <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>,        <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
+       <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
 
 
 
-                                                                 <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                     <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
 <li><a href="#h3-unctrl">unctrl</a></li>
-<li><a href="#h3-keyname_key_name">keyname/key_name</a></li>
-<li><a href="#h3-filter_nofilter">filter/nofilter</a></li>
+<li><a href="#h3-keyname_key_name">keynamekey_name</a></li>
+<li><a href="#h3-filter_nofilter">filternofilter</a></li>
 <li><a href="#h3-use_env">use_env</a></li>
 <li><a href="#h3-use_tioctl">use_tioctl</a></li>
-<li><a href="#h3-putwin_getwin">putwin/getwin</a></li>
+<li><a href="#h3-putwin_getwin">putwingetwin</a></li>
 <li><a href="#h3-delay_output">delay_output</a></li>
 <li><a href="#h3-flushinp">flushinp</a></li>
 </ul>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a>
 <ul>
 <li><a href="#h3-filter">filter</a></li>
+<li><a href="#h3-delay_output-padding">delay_output padding</a></li>
 <li><a href="#h3-keyname">keyname</a></li>
-<li><a href="#h3-nofilter_use_tioctl">nofilter/use_tioctl</a></li>
+<li><a href="#h3-nofilter_use_tioctl">nofilteruse_tioctl</a></li>
 <li><a href="#h3-putwin_getwin-file-format">putwin/getwin file-format</a></li>
-<li><a href="#h3-unctrl_wunctrl">unctrl/wunctrl</a></li>
-<li><a href="#h3-use_env_use_tioctl">use_env/use_tioctl</a></li>
+<li><a href="#h3-unctrl_wunctrl">unctrlwunctrl</a></li>
+<li><a href="#h3-use_env_use_tioctl">use_envuse_tioctl</a></li>
 </ul>
 </li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
index 1dd822f865f81aeecac993b5e508f1c10544438e..92ae9851fdf21a36d5ddd143ee32aa2c1f725f46 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2010-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_variables.3x,v 1.17 2021/12/25 21:49:32 tom Exp @
+  * @Id: curs_variables.3x,v 1.47 2024/04/13 22:37:35 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_variables 3x</TITLE>
+<TITLE>curs_variables 3x 2024-04-13 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_variables 3x</H1>
+<H1 class="no-header">curs_variables 3x 2024-04-13 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>                                          <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
+<STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>               Library calls              <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>COLORS</STRONG>, <STRONG>COLOR_PAIRS</STRONG>, <STRONG>COLS</STRONG>, <STRONG>ESCDELAY</STRONG>, <STRONG>LINES</STRONG>, <STRONG>TABSIZE</STRONG>, <STRONG>curscr</STRONG>, <STRONG>newscr</STRONG>,
-       <STRONG>stdscr</STRONG> - <STRONG>curses</STRONG> global variables
+       <EM>bool</EM>,  <EM>chtype</EM>,  <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>,  <EM>attr</EM><STRONG>_</STRONG><EM>t</EM>, <EM>SCREEN</EM>, <EM>WINDOW</EM>, <STRONG>TRUE</STRONG>, <STRONG>FALSE</STRONG>, <STRONG>ERR</STRONG>, <STRONG>OK</STRONG>,
+       <STRONG>curscr</STRONG>, <STRONG>newscr</STRONG>, <STRONG>stdscr</STRONG>, <STRONG>COLORS</STRONG>,  <STRONG>COLOR_PAIRS</STRONG>,  <STRONG>COLS</STRONG>,  <STRONG>LINES</STRONG>,  <STRONG>ESCDELAY</STRONG>,
+       <STRONG>TABSIZE</STRONG> - <EM>curses</EM> data types, constants, and global variables
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>COLOR_PAIRS;</STRONG>
+       <EM>/*</EM> <EM>data</EM> <EM>types</EM> <EM>*/</EM>
+       <STRONG>typedef</STRONG> <EM>/*</EM> <STRONG>...</STRONG> <EM>*/</EM> <STRONG>bool;</STRONG>
+       <STRONG>typedef</STRONG> <EM>/*</EM> <STRONG>...</STRONG> <EM>*/</EM> <STRONG>chtype;</STRONG>
+       <STRONG>typedef</STRONG> <EM>/*</EM> <STRONG>...</STRONG> <EM>*/</EM> <STRONG>cchar_t;</STRONG>
+       <STRONG>typedef</STRONG> <EM>/*</EM> <STRONG>...</STRONG> <EM>*/</EM> <STRONG>attr_t;</STRONG>
+       <STRONG>typedef</STRONG> <EM>/*</EM> <STRONG>...</STRONG> <EM>*/</EM> <STRONG>SCREEN;</STRONG>
+       <STRONG>typedef</STRONG> <EM>/*</EM> <STRONG>...</STRONG> <EM>*/</EM> <STRONG>WINDOW;</STRONG>
+
+       <EM>/*</EM> <EM>constants</EM> <EM>*/</EM>
+       <STRONG>const</STRONG> <STRONG>bool</STRONG> <STRONG>TRUE;</STRONG>
+       <STRONG>const</STRONG> <STRONG>bool</STRONG> <STRONG>FALSE;</STRONG>
+
+       <STRONG>const</STRONG> <EM>/*</EM> <STRONG>...</STRONG> <EM>*/</EM> <STRONG>ERR;</STRONG>
+       <STRONG>const</STRONG> <EM>/*</EM> <STRONG>...</STRONG> <EM>*/</EM> <STRONG>OK;</STRONG>
+
+       <EM>/*</EM> <EM>variables</EM> <EM>*/</EM>
        <STRONG>int</STRONG> <STRONG>COLORS;</STRONG>
+       <STRONG>int</STRONG> <STRONG>COLOR_PAIRS;</STRONG>
        <STRONG>int</STRONG> <STRONG>COLS;</STRONG>
-       <STRONG>int</STRONG> <STRONG>ESCDELAY;</STRONG>
        <STRONG>int</STRONG> <STRONG>LINES;</STRONG>
-       <STRONG>int</STRONG> <STRONG>TABSIZE;</STRONG>
        <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>curscr;</STRONG>
-       <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>newscr;</STRONG>
        <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>stdscr;</STRONG>
 
+       <EM>/*</EM> <EM>extensions</EM> <EM>*/</EM>
+       <STRONG>int</STRONG> <STRONG>ESCDELAY;</STRONG>
+       <STRONG>int</STRONG> <STRONG>TABSIZE;</STRONG>
+       <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>newscr;</STRONG>
+
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This page summarizes variables provided by the <STRONG>curses</STRONG> library.  A  more
-       complete description is given in the <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> manual page.
+       This  page  summarizes data types, constants, and variables provided by
+       the <EM>curses</EM> library.  Locate further discussion in <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
 
-       Depending  on  the  configuration,  these  may  be actual variables, or
-       macros (see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> and <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>) which  provide  read-
-       only  access  to  <EM>curses</EM>'s  state.  In either case, applications should
-       treat them as read-only to avoid confusing the library.
+       Depending on <EM>ncurses</EM>'s  build-time  configuration,  the  variables  may
+       instead  be  macros  (see  <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>  and  <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>) that
+       provide read-only access to  the  library's  state.   In  either  case,
+       applications  should  treat  them  as  read-only to avoid confusing the
+       library.
 
 
-</PRE><H3><a name="h3-COLOR_PAIRS">COLOR_PAIRS</a></H3><PRE>
-       After initializing curses, this variable contains the number  of  color
-       pairs  which  the  terminal  can  support.  Usually the number of color
-       pairs will be the product <STRONG>COLORS</STRONG>*<STRONG>COLORS</STRONG>, however  this  is  not  always
-       true:
+</PRE><H2><a name="h2-CONSTANTS">CONSTANTS</a></H2><PRE>
 
-       <STRONG>o</STRONG>   a few terminals use HLS colors, which do not follow this rule
+</PRE><H3><a name="h3-TRUE_FALSE">TRUE, FALSE</a></H3><PRE>
+       The <EM>curses</EM> library defines <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG> to represent  the  values  of
+       the Boolean data type.
 
-       <STRONG>o</STRONG>   terminals  supporting  a  large number of colors are limited by the
-           number of color pairs that can be represented  in  a  <EM>signed</EM>  <EM>short</EM>
-           value.
 
+</PRE><H3><a name="h3-ERR_OK">ERR, OK</a></H3><PRE>
+       <EM>curses</EM>  and <EM>terminfo</EM> routines frequently return these constant integral
+       values indicating failure and success, respectively.
 
-</PRE><H3><a name="h3-COLORS">COLORS</a></H3><PRE>
-       After  initializing curses, this variable contains the number of colors
-       which the terminal can support.
 
+</PRE><H2><a name="h2-PREDEFINED-TYPES">PREDEFINED TYPES</a></H2><PRE>
 
-</PRE><H3><a name="h3-COLS">COLS</a></H3><PRE>
-       After initializing curses, this variable  contains  the  width  of  the
-       screen, i.e., the number of columns.
+</PRE><H3><a name="h3-bool"><EM>bool</EM></a></H3><PRE>
+       X/Open Issue 4 <EM>curses</EM>  (1996)  preceded  the  ISO  C99  and  ISO  C++98
+       standards,  each of which also defined a Boolean data type.  The <EM>curses</EM>
+       library requires an integral type <EM>bool</EM>.
 
+       <STRONG>ncurses</STRONG>' configure script attempts to discover the data  type  used  by
+       the system's C and C++ compilers, to reuse for the <EM>curses</EM> <EM>bool</EM>.
 
-</PRE><H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE>
-       This variable holds the number of milliseconds to wait after reading an
-       escape character, to distinguish between an individual escape character
-       entered on the keyboard from escape sequences sent by cursor- and func-
-       tion-keys (see <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>).
 
+</PRE><H3><a name="h3-chtype"><EM>chtype</EM></a></H3><PRE>
+       The  <EM>chtype</EM>  integral  type combines a ("narrow", 8-bit) character with
+       attributes encoding the character's <EM>rendition</EM>, such as the  styling  of
+       its  typeface  and/or  foreground  and  background  colors.   See,  for
+       example, <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">attron(3x)</A></STRONG>, and <STRONG><A HREF="curs_inch.3x.html">inch(3x)</A></STRONG>.
 
-</PRE><H3><a name="h3-LINES">LINES</a></H3><PRE>
-       After initializing curses, this variable contains  the  height  of  the
-       screen, i.e., the number of lines.
 
+</PRE><H3><a name="h3-cchar_t_attr_t"><EM>cchar_t,</EM> attr_t</a></H3><PRE>
+       <EM>chtype</EM> is too small for the standard C library's  wide-character  type,
+       <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM>.   <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>  is a type that can accommodate an <EM>attr</EM><STRONG>_</STRONG><EM>t</EM> and enough
+       wide characters to store what  Unicode  terms  a  <EM>grapheme</EM>  <EM>cluster</EM>  (a
+       "user-perceived  character"  [UAX  #29], which may nevertheless require
+       several character encoding units to represent).  <EM>attr</EM><STRONG>_</STRONG><EM>t</EM> is an  integral
+       type  storing  "wide"  attributes  that  apply  to  <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>s.  See, for
+       example, <STRONG><A HREF="curs_add_wch.3x.html">add_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">attr_on(3x)</A></STRONG>, and <STRONG><A HREF="curs_in_wch.3x.html">in_wch(3x)</A></STRONG>.
 
-</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
-       This  variable  holds  the number of columns used by the <EM>curses</EM> library
-       when converting a tab character to spaces as it adds the tab to a  win-
-       dow (see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>.
+
+</PRE><H3><a name="h3-SCREEN"><EM>SCREEN</EM></a></H3><PRE>
+       <EM>curses</EM>  manages  a  terminal  device  with  this  structure  type;  see
+       <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>.
 
 
-</PRE><H3><a name="h3-The-Current-Screen">The Current Screen</a></H3><PRE>
-       This  implementation  of  curses uses a special window <STRONG>curscr</STRONG> to record
-       its updates to the terminal screen.
+</PRE><H3><a name="h3-WINDOW"><EM>WINDOW</EM></a></H3><PRE>
+       <EM>curses</EM>  represents rectangular portions of the terminal screen with the
+       <EM>WINDOW</EM> structure type; see subsection "Overview" of <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
 
-       This is referred to as the "physical screen"  in  the  <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
-       and <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> manual pages.
 
+</PRE><H2><a name="h2-VARIABLES">VARIABLES</a></H2><PRE>
 
-</PRE><H3><a name="h3-The-New-Screen">The New Screen</a></H3><PRE>
-       This  implementation of curses uses a special window <STRONG>newscr</STRONG> to hold up-
-       dates to the terminal screen before applying them to <STRONG>curscr</STRONG>.
+</PRE><H3><a name="h3-curscr_stdscr_newscr">curscr, stdscr, newscr</a></H3><PRE>
+       The library records updates to the terminal screen in  a  window  named
+       <STRONG>curscr</STRONG>.   This  object  is  referred  to  as  the  "physical screen" in
+       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> and <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>.
 
-       This is referred to as the "virtual  screen"  in  the  <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> and <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> manual pages.
+       <EM>ncurses</EM> collects pending updates to the terminal  screen  in  a  window
+       named  <STRONG>newscr</STRONG>.   This  object is referred to as the "virtual screen" in
+       the <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, and <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>.  When  the
+       screen  is  refreshed, <EM>curses</EM> determines a minimal set of updates using
+       the terminal's capabilities to make <STRONG>curscr</STRONG> look like <STRONG>newscr</STRONG>.
 
+       Once <EM>curses</EM> is initialized, it creates a window named  <STRONG>stdscr</STRONG>.   It  is
+       the  same size as the terminal screen and is the default window used by
+       routines that do not take a parameter  identifying  one.   Many  <EM>curses</EM>
+       functions use this window.
 
-</PRE><H3><a name="h3-The-Standard-Screen">The Standard Screen</a></H3><PRE>
-       Upon  initializing curses, a default window called <STRONG>stdscr</STRONG>, which is the
-       size of the terminal screen, is created.   Many  curses  functions  use
-       this window.
+
+</PRE><H3><a name="h3-COLORS">COLORS</a></H3><PRE>
+       Once  <EM>curses</EM>  is  initialized,  <STRONG>COLORS</STRONG>  contains  the  number of colors
+       supported by the terminal; see <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>.
+
+
+</PRE><H3><a name="h3-COLOR_PAIRS">COLOR_PAIRS</a></H3><PRE>
+       Once <EM>curses</EM> is initialized, <STRONG>COLOR_PAIRS</STRONG> contains the  number  of  color
+       pairs supported by the terminal; see <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>.
+
+
+</PRE><H3><a name="h3-COLS_LINES">COLS, LINES</a></H3><PRE>
+       Once  <EM>curses</EM>  is initialized, <STRONG>COLS</STRONG> and <STRONG>LINES</STRONG> contain the screen's width
+       and height in character cells, respectively; that  is,  the  number  of
+       columns and lines.
+
+
+</PRE><H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE>
+       For  <EM>curses</EM>  to  distinguish  the ESC character resulting from a user's
+       press of the "Escape" key on the input device  from  one  beginning  an
+       <EM>escape</EM> <EM>sequence</EM> (as commonly produced by function keys), it waits after
+       the escape character to see if further characters are available on  the
+       input stream within a short interval.  <STRONG>ESCDELAY</STRONG> stores this interval in
+       milliseconds.
+
+       If <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG> is disabled for the  <EM>curses</EM>  window  receiving  input,  a
+       program must disambiguate escape sequences itself.
+
+
+</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
+       The <EM>curses</EM> library converts a tab character to this number of spaces as
+       it adds a tab to a window; see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The   curses  library  is  initialized  using  either  <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>,  or
-       <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>.
+       Either <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG> or <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG> initializes <EM>curses</EM>.
 
-       If <STRONG>curses</STRONG> is configured to use separate curses/terminfo libraries, most
-       of these variables reside in the curses library.
+       If  <EM>ncurses</EM>  is  configured  to  provide  separate  <EM>curses</EM>  and   <EM>tinfo</EM>
+       libraries, most of these variables reside in the former.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       <STRONG>TABSIZE</STRONG>  is  a feature of SVr4 curses which is not documented by X/Open
-       curses.
+       The  X/Open  Curses  standard  documents all of the foregoing types and
+       symbols except for <STRONG>newscr</STRONG>, <STRONG>TABSIZE</STRONG>, and <STRONG>ESCDELAY</STRONG>.
+
+       X/Open Curses describes <STRONG>curscr</STRONG> only as "an  internal  data  structure";
+       SVr4   gave  more  details,  noting  its  use  "for  certain  low-level
+       operations like clearing and redrawing a  screen  containing  garbage".
+       Neither specified its interaction with the rest of the interface beyond
+       use as an argument to <STRONG><A HREF="curs_outopts.3x.html">clearok(3x)</A></STRONG> and <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG>.
+
+       <STRONG>newscr</STRONG> is a feature of SVr4 <EM>curses</EM>.  When refreshing the screen, it  is
+       used  as  a  working area for combining the standard window <STRONG>stdscr</STRONG> with
+       any others the application may have created with <STRONG><A HREF="curs_window.3x.html">newwin(3x)</A></STRONG>.  When  the
+       update of <STRONG>newscr</STRONG> is complete, <EM>curses</EM> modifies <STRONG>curscr</STRONG> to match <STRONG>newscr</STRONG>.
 
-       <STRONG>o</STRONG>   In SVr4 curses, <STRONG>TABSIZE</STRONG> is initially set from the terminal descrip-
-           tion's  <STRONG>init_tabs</STRONG> capability.  After that, it can be altered by the
-           applications using SVr4 curses.
+       <STRONG>TABSIZE</STRONG> is a feature of SVr4 <EM>curses</EM>.
 
-           SVr4 curses uses the current value of <STRONG>TABSIZE</STRONG> to compute the  posi-
-           tion  of  tabstops  for  updating both the virtual screen with <STRONG>add-</STRONG>
-           <STRONG><A HREF="addch.3x.html">ch(3x)</A></STRONG> as well as the physical screen with <STRONG><A HREF="curs_terminfo.3x.html">mvcur(3x)</A></STRONG>.
+       <STRONG>o</STRONG>   SVr4   initially  sets  <STRONG>TABSIZE</STRONG>  from  the  terminal  description's
+           <STRONG>init_tabs</STRONG>  capability.   After  that,  it   can   be   altered   by
+           applications using SVr4 <EM>curses</EM>.
 
-       <STRONG>o</STRONG>   This implementation uses the current value of <STRONG>TABSIZE</STRONG> only for  up-
-           dating  the  virtual screen.  It uses the terminal description's <STRONG>it</STRONG>
-           (<STRONG>init_tabs</STRONG>) capability for computing hardware tabs (i.e., tab stops
-           on the physical screen).
+       <STRONG>o</STRONG>   SVr4  <EM>curses</EM>  uses  the value of <STRONG>TABSIZE</STRONG> to compute the position of
+           tab stops when updating both the virtual screen with <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>  and
+           the physical screen with <STRONG><A HREF="curs_terminfo.3x.html">mvcur(3x)</A></STRONG>.
 
-       <STRONG>o</STRONG>   Other  implementations  differ.  For instance, NetBSD curses allows
-           <STRONG>TABSIZE</STRONG> to be set through an environment variable.  This  implemen-
-           tation does not.
+       <STRONG>o</STRONG>   <EM>ncurses</EM>  uses  the  value  of  <STRONG>TABSIZE</STRONG>  only  to update the virtual
+           screen.   It  uses  the  terminal  description's  "<STRONG>it</STRONG>"  (<STRONG>init_tabs</STRONG>)
+           capability  for  computing hardware tabs (that is, tab stops on the
+           physical screen).
 
-           NetBSD curses does not support hardware tabs; it uses the <STRONG>init_tabs</STRONG>
-           capability and the <STRONG>TABSIZE</STRONG> variable only for updating  the  virtual
+       <STRONG>o</STRONG>   Other implementations differ.  For instance, NetBSD  <EM>curses</EM>  allows
+           <STRONG>TABSIZE</STRONG>  to  be  set through an environment variable.  <EM>ncurses</EM> does
+           not.
+
+           NetBSD <EM>curses</EM> does not support hardware tabs; it uses the <STRONG>init_tabs</STRONG>
+           capability  and  the <STRONG>TABSIZE</STRONG> variable only for updating the virtual
            screen.
 
-       <STRONG>ESCDELAY</STRONG> is an extension in AIX curses:
+       <STRONG>ESCDELAY</STRONG> is a feature of AIX <EM>curses</EM>.
 
-       <STRONG>o</STRONG>   In AIX, the units for <STRONG>ESCDELAY</STRONG> are <EM>fifths</EM> of a millisecond.
+       <STRONG>o</STRONG>   In AIX, the units for <STRONG>ESCDELAY</STRONG> are <EM>fifths</EM> of milliseconds.
 
-       <STRONG>o</STRONG>   The default value for AIX's <STRONG>ESCDELAY</STRONG> is 0.1 seconds.
+       <STRONG>o</STRONG>   The default value for AIX's <STRONG>ESCDELAY</STRONG> equals 0.1 seconds.
 
-       <STRONG>o</STRONG>   AIX  also enforces a limit of 10,000 seconds for <STRONG>ESCDELAY</STRONG>; this im-
-           plementation currently has no upper limit.
+       <STRONG>o</STRONG>   AIX also enforces a limit of 10,000 seconds for  <STRONG>ESCDELAY</STRONG>;  <EM>ncurses</EM>
+           does not enforce any upper limit.
 
-       This implementation has long used <STRONG>ESCDELAY</STRONG> with units of  milliseconds,
-       making  it  impossible to be completely compatible with AIX.  Likewise,
-       most users have either decided to override the value, or rely upon  its
-       default value.
+       <EM>ncurses</EM>  has  long  used <STRONG>ESCDELAY</STRONG> with units of milliseconds, making it
+       impossible to be completely compatible with  AIX.   Consequently,  most
+       users  have  decided  either to override the value, or to rely upon its
+       default.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>,   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,   <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>,
-       <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>,    <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>,    <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+
+       [UAX  #29]  "Unicode  Standard  Annex  #29: Unicode Text Segmentation";
+       &lt;https://unicode.org/reports/tr29/&gt;
 
 
 
-                                                            <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
+ncurses 6.5                       2024-04-13                <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
-<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-CONSTANTS">CONSTANTS</a>
 <ul>
-<li><a href="#h3-COLOR_PAIRS">COLOR_PAIRS</a></li>
+<li><a href="#h3-TRUE_FALSE">TRUE, FALSE</a></li>
+<li><a href="#h3-ERR_OK">ERR, OK</a></li>
+</ul>
+</li>
+<li><a href="#h2-PREDEFINED-TYPES">PREDEFINED TYPES</a>
+<ul>
+<li><a href="#h3-bool">bool</a></li>
+<li><a href="#h3-chtype">chtype</a></li>
+<li><a href="#h3-cchar_t_attr_t">cchar_t, attr_t</a></li>
+<li><a href="#h3-SCREEN">SCREEN</a></li>
+<li><a href="#h3-WINDOW">WINDOW</a></li>
+</ul>
+</li>
+<li><a href="#h2-VARIABLES">VARIABLES</a>
+<ul>
+<li><a href="#h3-curscr_stdscr_newscr">curscr, stdscr, newscr</a></li>
 <li><a href="#h3-COLORS">COLORS</a></li>
-<li><a href="#h3-COLS">COLS</a></li>
+<li><a href="#h3-COLOR_PAIRS">COLOR_PAIRS</a></li>
+<li><a href="#h3-COLS_LINES">COLS, LINES</a></li>
 <li><a href="#h3-ESCDELAY">ESCDELAY</a></li>
-<li><a href="#h3-LINES">LINES</a></li>
 <li><a href="#h3-TABSIZE">TABSIZE</a></li>
-<li><a href="#h3-The-Current-Screen">The Current Screen</a></li>
-<li><a href="#h3-The-New-Screen">The New Screen</a></li>
-<li><a href="#h3-The-Standard-Screen">The Standard Screen</a></li>
 </ul>
 </li>
 <li><a href="#h2-NOTES">NOTES</a></li>
index 660ed566fd72c60357778012cd8a8069effebfe5..ea99659ecf629fbed9dd7690d1af01f0ed9ba12d 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2020-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2020-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_window.3x,v 1.28 2022/08/13 23:24:22 tom Exp @
+  * @Id: curs_window.3x,v 1.48 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_window 3x</TITLE>
+<TITLE>curs_window 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_window 3x</H1>
+<H1 class="no-header">curs_window 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>                                                <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
+<STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>newwin</STRONG>, <STRONG>delwin</STRONG>, <STRONG>mvwin</STRONG>, <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>dupwin</STRONG>, <STRONG>wsyncup</STRONG>,
-       <STRONG>syncok</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>wsyncdown</STRONG> - create <STRONG>curses</STRONG> windows
+       <STRONG>newwin</STRONG>,  <STRONG>delwin</STRONG>,  <STRONG>mvwin</STRONG>,  <STRONG>subwin</STRONG>,  <STRONG>derwin</STRONG>,  <STRONG>mvderwin</STRONG>,  <STRONG>dupwin</STRONG>, <STRONG>wsyncup</STRONG>,
+       <STRONG>syncok</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>wsyncdown</STRONG> - create and manipulate <EM>curses</EM> windows
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        all of the window modes are initialized to the default  values.   These
        functions set window modes after a window is created:
 
-              idcok, idlok, immedok, keypad, leaveok, nodelay, scrollok,
-              setscrreg, syncok, wbkgdset, wbkgrndset, and wtimeout
+              <STRONG>idcok</STRONG>  <STRONG>idlok</STRONG>  <STRONG>immedok</STRONG>  <STRONG>keypad</STRONG> <STRONG>leaveok</STRONG> <STRONG>nodelay</STRONG> <STRONG>scrollok</STRONG> <STRONG>setscrreg</STRONG>
+              <STRONG>syncok</STRONG> <STRONG>wbkgdset</STRONG> <STRONG>wbkgrndset</STRONG> and <STRONG>wtimeout</STRONG>.
 
 
 </PRE><H3><a name="h3-delwin">delwin</a></H3><PRE>
        Calling <STRONG>delwin</STRONG> deletes the named window, freeing all memory  associated
-       with  it  (it does not actually erase the window's screen image).  Sub-
-       windows must be deleted before the main window can be deleted.
+       with  it  (it  does  not  actually  erase  the  window's screen image).
+       Subwindows must be deleted before the main window can be deleted.
 
 
 </PRE><H3><a name="h3-mvwin">mvwin</a></H3><PRE>
        Calling  <STRONG>subwin</STRONG>  creates and returns a pointer to a new window with the
        given number of lines, <EM>nlines</EM>, and columns, <EM>ncols</EM>.  The  window  is  at
        position (<EM>begin</EM>_<EM>y</EM>, <EM>begin</EM>_<EM>x</EM>) on the screen.  The subwindow shares memory
-       with the window <EM>orig</EM>, so that changes made to one  window  will  affect
-       both  windows.  When using this routine, it is necessary to call <STRONG>touch-</STRONG>
-       <STRONG>win</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> before calling <STRONG>wrefresh</STRONG> on the subwindow.
+       with the window <EM>orig</EM>, its <EM>ancestor</EM>, so that changes made to one  window
+       will  affect both windows.  When using this routine, it is necessary to
+       call <STRONG>touchwin</STRONG> or <STRONG>touchline</STRONG> on  <EM>orig</EM>  before  calling  <STRONG>wrefresh</STRONG>  on  the
+       subwindow.
 
 
 </PRE><H3><a name="h3-derwin">derwin</a></H3><PRE>
-       Calling <STRONG>derwin</STRONG> is the same as calling <STRONG>subwin,</STRONG> except that  <EM>begin</EM>_<EM>y</EM>  and
-       <EM>begin</EM>_<EM>x</EM>  are  relative to the origin of the window <EM>orig</EM> rather than the
-       screen.  There is no difference between the subwindows and the  derived
+       Calling  <STRONG>derwin</STRONG>  is the same as calling <STRONG>subwin,</STRONG> except that <EM>begin</EM>_<EM>y</EM> and
+       <EM>begin</EM>_<EM>x</EM> are relative to the origin of the window <EM>orig</EM> rather  than  the
+       screen.   There is no difference between the subwindows and the derived
        windows.
 
-       Calling  <STRONG>mvderwin</STRONG> moves a derived window (or subwindow) inside its par-
-       ent window.  The screen-relative  parameters  of  the  window  are  not
+
+</PRE><H3><a name="h3-mvderwin">mvderwin</a></H3><PRE>
+       Calling <STRONG>mvderwin</STRONG> moves a  derived  window  (or  subwindow)  inside  its
+       parent  window.   The  screen-relative parameters of the window are not
        changed.  This routine is used to display different parts of the parent
        window at the same physical position on the screen.
 
 
 
 </PRE><H3><a name="h3-wsyncup">wsyncup</a></H3><PRE>
-       Calling <STRONG>wsyncup</STRONG> touches all locations in  ancestors  of  <EM>win</EM>  that  are
-       changed  in  <EM>win</EM>.   If  <STRONG>syncok</STRONG> is called with second argument <STRONG>TRUE</STRONG> then
-       <STRONG>wsyncup</STRONG> is called automatically whenever there is a change in the  win-
-       dow.
+       Calling  <STRONG>wsyncup</STRONG>  touches  all  locations  in ancestors of <EM>win</EM> that are
+       changed in <EM>win</EM>.  If <STRONG>syncok</STRONG> is called with  second  argument  <STRONG>TRUE</STRONG>  then
+       <STRONG>wsyncup</STRONG>  is  called  automatically  whenever  there  is a change in the
+       window.
 
 
 </PRE><H3><a name="h3-wsyncdown">wsyncdown</a></H3><PRE>
-       The  <STRONG>wsyncdown</STRONG>  routine  touches  each  location  in  <EM>win</EM> that has been
-       touched in any of its ancestor windows.  This routine is called by <STRONG>wre-</STRONG>
-       <STRONG>fresh</STRONG>, so it should almost never be necessary to call it manually.
+       The <STRONG>wsyncdown</STRONG> routine touches  each  location  in  <EM>win</EM>  that  has  been
+       touched  in  any  of  its  ancestor windows.  This routine is called by
+       <STRONG>wrefresh</STRONG>, so it should almost never be necessary to call it manually.
 
 
 </PRE><H3><a name="h3-wcursyncup">wcursyncup</a></H3><PRE>
-       The  routine  <STRONG>wcursyncup</STRONG> updates the current cursor position of all the
-       ancestors of the window to reflect the current cursor position  of  the
+       The routine <STRONG>wcursyncup</STRONG> updates the current cursor position of  all  the
+       ancestors  of  the window to reflect the current cursor position of the
        window.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines that return an integer return the integer <STRONG>ERR</STRONG> upon failure and
-       <STRONG>OK</STRONG> (SVr4 only specifies "an integer value other than  <STRONG>ERR</STRONG>")  upon  suc-
-       cessful completion.
+       <STRONG>OK</STRONG>  (SVr4  only  specifies  "an  integer  value  other  than <STRONG>ERR</STRONG>") upon
+       successful completion.
 
        Routines that return pointers return <STRONG>NULL</STRONG> on error.
 
        X/Open defines no error conditions.  In this implementation
 
        <STRONG>delwin</STRONG>
-            returns  an  error if the window pointer is null, or if the window
+            returns an error if the window pointer is null, or if  the  window
             is the parent of another window.
 
        <STRONG>derwin</STRONG>
-            returns an error if the parent window pointer is null, or  if  any
-            of  its  ordinates  or dimensions is negative, or if the resulting
+            returns  an  error if the parent window pointer is null, or if any
+            of its ordinates or dimensions is negative, or  if  the  resulting
             window does not fit inside the parent window.
 
        <STRONG>dupwin</STRONG>
             returns an error if the window pointer is null.
 
-            This implementation also maintains a list of windows,  and  checks
-            that  the pointer passed to <STRONG>delwin</STRONG> is one that it created, return-
-            ing an error if it was not..
+            This  implementation  also maintains a list of windows, and checks
+            that the  pointer  passed  to  <STRONG>delwin</STRONG>  is  one  that  it  created,
+            returning an error if it was not..
 
        <STRONG>mvderwin</STRONG>
             returns an error if the window pointer is null, or if some part of
             the window would be placed off-screen.
 
        <STRONG>mvwin</STRONG>
-            returns  an  error if the window pointer is null, or if the window
-            is really a pad, or if some part of the  window  would  be  placed
+            returns an error if the window pointer is null, or if  the  window
+            is  really  a  pad,  or if some part of the window would be placed
             off-screen.
 
        <STRONG>newwin</STRONG>
-            will  fail if either of its beginning ordinates is negative, or if
+            will fail if either of its beginning ordinates is negative, or  if
             either the number of lines or columns is negative.
 
        <STRONG>syncok</STRONG>
             returns an error if the window pointer is null.
 
        <STRONG>subwin</STRONG>
-            returns an error if the parent window pointer is null, or  if  any
-            of  its  ordinates  or dimensions is negative, or if the resulting
+            returns  an  error if the parent window pointer is null, or if any
+            of its ordinates or dimensions is negative, or  if  the  resulting
             window does not fit inside the parent window.
 
-       The functions which return a window pointer may also fail if  there  is
-       insufficient  memory  for  its data structures.  Any of these functions
+       The  functions  which return a window pointer may also fail if there is
+       insufficient memory for its data structures.  Any  of  these  functions
        will fail if the screen has not been initialized, i.e., with <STRONG>initscr</STRONG> or
        <STRONG>newterm</STRONG>.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       If  many small changes are made to the window, the <STRONG>wsyncup</STRONG> option could
+       If many small changes are made to the window, the <STRONG>wsyncup</STRONG> option  could
        degrade performance.
 
        Note that <STRONG>syncok</STRONG> may be a macro.
 
 
-</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
-       The subwindow functions (<STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>wsyncup</STRONG>,  <STRONG>wsyncdown</STRONG>,
-       <STRONG>wcursyncup</STRONG>,  <STRONG>syncok</STRONG>)  are flaky, incompletely implemented, and not well
-       tested.
-
-       The System V curses documentation is very unclear  about  what  <STRONG>wsyncup</STRONG>
-       and  <STRONG>wsyncdown</STRONG>  actually do.  It seems to imply that they are only sup-
-       posed to touch exactly  those  lines  that  are  affected  by  ancestor
-       changes.  The language here, and the behavior of the <STRONG>curses</STRONG> implementa-
-       tion, is patterned on the XPG4 curses standard.  The weaker  XPG4  spec
-       may result in slower updates.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The XSI Curses standard, Issue 4 describes these functions.
+       X/Open Curses, Issue 4 describes these functions.
 
        X/Open Curses states regarding <STRONG>delwin</STRONG>:
 
            if the curses library keeps a list of the subwindows.  SVr4  curses
            kept  a  count  of the number of subwindows rather than a list.  It
            simply returned <STRONG>ERR</STRONG> when asked  to  delete  a  subwindow.   Solaris
-           X/Open curses does not even make that check, and will delete a par-
-           ent window which still has subwindows.
+           X/Open  curses  does  not  even  make that check, and will delete a
+           parent window which still has subwindows.
 
-       <STRONG>o</STRONG>   Since release 4.0 (1996), ncurses maintains a list of  windows  for
-           each  screen,  to ensure that a window has no subwindows before al-
-           lowing deletion.
+       <STRONG>o</STRONG>   Since release 4.0 (1996), <EM>ncurses</EM> maintains a list of  windows  for
+           each  screen,  to  ensure  that  a  window has no subwindows before
+           allowing deletion.
 
-       <STRONG>o</STRONG>   NetBSD copied this feature of ncurses in 2003.
+       <STRONG>o</STRONG>   NetBSD copied this feature of <EM>ncurses</EM> in 2003.
            PDCurses follows the scheme used in Solaris X/Open curses.
 
 
+</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
+       The subwindow functions <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>,  <STRONG>wsyncup</STRONG>,  <STRONG>wsyncdown</STRONG>,
+       <STRONG>wcursyncup</STRONG>,  and  <STRONG>syncok</STRONG>  are  flaky, incompletely implemented, and not
+       well tested.
+
+       System V's <EM>curses</EM> documentation  is  unclear  about  what  <STRONG>wsyncup</STRONG>  and
+       <STRONG>wsyncdown</STRONG>  actually  do.   It  seems to imply that they are supposed to
+       touch only those lines that are  affected  by  changes  to  a  window's
+       ancestors.  The language here, and behavior of <EM>ncurses</EM>, is patterned on
+       the X/Open Curses standard; this approach may result in slower updates.
+
+
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,    <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,    <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>,
        <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                               <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h3-mvwin">mvwin</a></li>
 <li><a href="#h3-subwin">subwin</a></li>
 <li><a href="#h3-derwin">derwin</a></li>
+<li><a href="#h3-mvderwin">mvderwin</a></li>
 <li><a href="#h3-dupwin">dupwin</a></li>
 <li><a href="#h3-wsyncup">wsyncup</a></li>
 <li><a href="#h3-wsyncdown">wsyncdown</a></li>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
-<li><a href="#h2-BUGS">BUGS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 9614eecf16d88ce1f0d531fc974a13ef3e2d32c0..14a0f8e36507ea1e7c871c223266639e116b8005 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2000-2011,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1997,1999,2000,2005
-  * @Id: default_colors.3x,v 1.35 2022/02/12 20:03:40 tom Exp @
+  * @Id: default_colors.3x,v 1.52 2024/04/13 22:17:22 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>default_colors 3x</TITLE>
+<TITLE>default_colors 3x 2024-04-13 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">default_colors 3x</H1>
+<H1 class="no-header">default_colors 3x 2024-04-13 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>                                          <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
+<STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>               Library calls              <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>use_default_colors</STRONG>,  <STRONG>assume_default_colors</STRONG>  -  use  terminal's  default
-       colors
+       colors in <EM>curses</EM>
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
               <EM>use</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors();</EM>
               <EM>assume</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors(-1,-1);</EM>
 
-       These are ncurses extensions.  For other curses implementations,  color
-       number  -1  does  not  mean  anything,  just  as  for  ncurses before a
+       These are <EM>ncurses</EM> extensions.  For other curses implementations,  color
+       number  -1  does  not  mean  anything,  just  as  for  <EM>ncurses</EM> before a
        successful call of <STRONG>use_default_colors</STRONG> or <STRONG>assume_default_colors</STRONG>.
 
        Other curses implementations do not  allow  an  application  to  modify
        color  pair  0.  They assume that the background is COLOR_BLACK, but do
        not ensure that the color pair 0 is painted to  match  the  assumption.
        If   your   application  does  not  use  either  <STRONG>use_default_colors</STRONG>  or
-       <STRONG>assume_default_colors</STRONG> ncurses will paint a white foreground (text) with
+       <STRONG>assume_default_colors</STRONG> <EM>ncurses</EM> will paint a white foreground (text) with
        black background for color pair 0.
 
 
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines are specific to ncurses.  They  were  not  supported  on
+       These routines are specific to <EM>ncurses</EM>.  They  were  not  supported  on
        Version 7, BSD or System V implementations.  It is recommended that any
        code depending on them be conditioned using NCURSES_VERSION.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG>ded(1)</STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Thomas Dickey (from an analysis of the requirements for color xterm for
        XFree86 3.1.2C, February 1996).
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG>ded(1)</STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
+
+
 
-                                                            <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
+ncurses 6.5                       2024-04-13                <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index 4ab7c78db170171a46d5f821f8ab012264f7087c..d135e3109948ee7d376808ba98fb6bfd02673626 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1997
-  * @Id: define_key.3x,v 1.21 2022/02/12 20:03:40 tom Exp @
+  * @Id: define_key.3x,v 1.42 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>define_key 3x</TITLE>
+<TITLE>define_key 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">define_key 3x</H1>
+<H1 class="no-header">define_key 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>                                                  <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
+<STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>define_key</STRONG> - define a keycode
+       <STRONG>define_key</STRONG> - define a <EM>curses</EM> keycode
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This  is an extension to the curses library.  It permits an application
+       This  is an extension to the <EM>curses</EM> library.  It permits an application
        to define keycodes with their corresponding control  strings,  so  that
-       the ncurses library will interpret them just as it would the predefined
+       the <EM>ncurses</EM> library will interpret them just as it would the predefined
        codes in the terminfo database.
 
-       If the given string is null, any existing definition for the keycode is
-       removed.   Similarly,  if  the  given  keycode is negative or zero, any
-       existing string for the given definition is removed.
+       If <EM>definition</EM> is <STRONG>NULL</STRONG>, any existing one for  the  keycode  is  removed.
+       Similarly,  if  the  given  keycode  is  negative or zero, any existing
+       string for the given definition is removed.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       The keycode must  be  greater  than  zero,  and  the  string  non-null,
-       otherwise  <STRONG>ERR</STRONG>  is  returned.   <STRONG>ERR</STRONG>  may  also  be returned if there is
+       Either <EM>keycode</EM> must be greater than zero, or <EM>definition</EM>  must  be  non-
+       <STRONG>NULL</STRONG>,  otherwise <STRONG>ERR</STRONG> is returned.  <STRONG>ERR</STRONG> may also be returned if there is
        insufficient memory to allocate the data to store the  definition.   If
        no error is detected, <STRONG>OK</STRONG> is returned.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  are  specific  to ncurses.  They were not supported on
+       These  routines  are  specific  to <EM>ncurses</EM>.  They were not supported on
        Version 7, BSD or System V implementations.  It is recommended that any
-       code depending on them be conditioned using NCURSES_VERSION.
+       code depending on them be conditioned using <STRONG>NCURSES_VERSION</STRONG>.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>, <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Thomas Dickey
 
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Thomas Dickey.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>, <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
 
 
 
-                                                                <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                    <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
@@ -99,8 +99,8 @@
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index 422171c8107f18680eff9276e83837e72c0e502e..fcdb7af1f5a70b17f7b5144fb440503f42a8ba11 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form.3x,v 1.38 2021/12/25 21:49:32 tom Exp @
+  * @Id: form.3x,v 1.54 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form 3x</TITLE>
+<TITLE>form 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form 3x</H1>
+<H1 class="no-header">form 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>                                                              <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+<STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>                         Library calls                        <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
 
 
 
@@ -85,8 +85,8 @@
 
 </PRE><H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE>
        The  following table lists each <STRONG>form</STRONG> routine and the name of the manual
-       page on which it is described.  Routines flagged with "*" are  ncurses-
-       specific, not present in SVr4.
+       page  on  which  it  is  described.   Routines  flagged  with  "*"  are
+       <EM>ncurses</EM>-specific, not present in SVr4.
 
        <STRONG>curses</STRONG> Routine Name     Manual Page Name
        --------------------------------------------------
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  files
-       <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>.
-
-       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
-       would give you a link error when using static libraries).
+       The header file <EM>form.h</EM> itself includes <EM>curses.h</EM>.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  forms library.  They were not
+       These routines emulate the System  V  forms  library.   They  were  not
        supported on Version 7 or BSD versions.
 
-       The menu facility was documented in SVr4.2 in <EM>Character</EM> <EM>User</EM>  <EM>Interface</EM>
-       <EM>Programming</EM> <EM>(UNIX</EM> <EM>SVR4.2)</EM>.
+       A  form  facility  was  documented in SVr4.2's <EM>Character</EM> <EM>User</EM> <EM>Interface</EM>
+       <EM>Programming</EM> document.
 
        It is not part of X/Open Curses.
 
-       Aside from ncurses, there are few implementations:
+       Aside from <EM>ncurses</EM>, there are few implementations:
 
        <STRONG>o</STRONG>   systems based on SVr4 source code, e.g., Solaris.
 
        <STRONG>o</STRONG>   NetBSD curses.
 
-       A  few  functions  in  this  implementation  are  extensions  added for
-       ncurses,   but   not   provided   by   other   implementations,   e.g.,
+       A few  functions  in  this  implementation  are  extensions  added  for
+       <EM>ncurses</EM>,   but   not   provided   by   other   implementations,   e.g.,
        <STRONG>form_driver_w</STRONG>, <STRONG>unfocus_current_field</STRONG>.
 
 
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
-       Juergen  Pfeifer.   Manual  pages and adaptation for ncurses by Eric S.
+       Juergen Pfeifer.  Manual pages and adaptation for <EM>ncurses</EM>  by  Eric  S.
        Raymond.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names  begin  "form_"  for  detailed
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
        descriptions of the entry points.
 
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
-
 
 
-                                                                      <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                          <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 5aecefc5752280a901d6e43dbeeb47a81ff4d0de..5844dd58d9d25d6e10c555c85ec6cad0f5ca292e 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_cursor.3x,v 1.17 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_cursor.3x,v 1.31 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_cursor 3x</TITLE>
+<TITLE>form_cursor 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_cursor 3x</H1>
+<H1 class="no-header">form_cursor 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>                                                <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
+<STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  forms library.  They were not
+       These routines emulate the System  V  forms  library.   They  were  not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                               <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                   <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 3c42b4682f0b9c188e1358a3804d516d8c8645c3..2f1dc3b9016cd3393d45308327b1c1d492e69c8b 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_data.3x,v 1.18 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_data.3x,v 1.32 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_data 3x</TITLE>
+<TITLE>form_data 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_data 3x</H1>
+<H1 class="no-header">form_data 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>                                                    <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
+<STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
 
 
 
        in the given form.  It returns TRUE (1) or FALSE (0).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the System  V  forms  library.   They  were  not
+       These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index b6420bc31e7e0fd2eacccdfa50131764bc75ec8b..859c291a77bb22a40d3bf95614c33d0d71d016f4 100644 (file)
@@ -1,6 +1,7 @@
 <!--
+  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_driver.3x,v 1.39 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_driver.3x,v 1.61 2024/04/20 18:55:09 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_driver 3x</TITLE>
+<TITLE>form_driver 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_driver 3x</H1>
+<H1 class="no-header">form_driver 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>                                                <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
+<STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
 
 
 
@@ -54,7 +55,7 @@
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>form_driver(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>form_driver_w(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <EM>wch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>form_driver_w(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <EM>wc</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        character or a request.
 
 
-</PRE><H3><a name="h3-Form-driver-requests">Form-driver requests</a></H3><PRE>
+</PRE><H3><a name="h3-Form-Driver-Requests">Form Driver Requests</a></H3><PRE>
        The form driver requests are as follows:
 
        <STRONG>Name</STRONG>               <STRONG>Description</STRONG>
-       ---------------------------------------------------------------------
-       REQ_BEG_FIELD      Move to the beginning of the field.
-       REQ_BEG_LINE       Move to the beginning of the line.
-       REQ_CLR_EOF        Clear to end of field from cursor.
-       REQ_CLR_EOL        Clear to end of line from cursor.
-       REQ_CLR_FIELD      Clear the entire field.
-       REQ_DEL_CHAR       Delete character at the cursor.
-       REQ_DEL_LINE       Delete line at the cursor.
-       REQ_DEL_PREV       Delete character before the cursor.
-       REQ_DEL_WORD       Delete blank-delimited word at the cursor.
-       REQ_DOWN_CHAR      Move down in the field.
-       REQ_DOWN_FIELD     Move down to a field.
-       REQ_END_FIELD      Move to the end of the field.
-       REQ_END_LINE       Move to the end of the line.
-       REQ_FIRST_FIELD    Move to the first field.
-       REQ_FIRST_PAGE     Move to the first page.
-       REQ_INS_CHAR       Insert a blank at the cursor.
-       REQ_INS_LINE       Insert a blank line at the cursor.
-       REQ_INS_MODE       Enter insert mode.
-       REQ_LAST_FIELD     Move to the last field.
-       REQ_LAST_PAGE      Move to the last field.
-       REQ_LEFT_CHAR      Move left in the field.
-       REQ_LEFT_FIELD     Move left to a field.
-       REQ_NEW_LINE       Insert or overlay a new line.
-       REQ_NEXT_CHAR      Move to the next char.
-
-       REQ_NEXT_CHOICE    Display next field choice.
-       REQ_NEXT_FIELD     Move to the next field.
-       REQ_NEXT_LINE      Move to the next line.
-       REQ_NEXT_PAGE      Move to the next page.
-       REQ_NEXT_PAGE      Move to the next page.
-       REQ_NEXT_WORD      Move to the next word.
-       REQ_OVL_MODE       Enter overlay mode.
-       REQ_PREV_CHAR      Move to the previous char.
-       REQ_PREV_CHOICE    Display previous field choice.
-       REQ_PREV_FIELD     Move to the previous field.
-       REQ_PREV_LINE      Move to the previous line.
-       REQ_PREV_PAGE      Move to the previous page.
-       REQ_PREV_WORD      Move to the previous word.
-       REQ_RIGHT_CHAR     Move right in the field.
-       REQ_RIGHT_FIELD    Move right to a field.
-       REQ_SCR_BCHAR      Scroll the field backward a character.
-       REQ_SCR_BHPAGE     Scroll the field backward half a page.
-       REQ_SCR_BLINE      Scroll the field backward a line.
-       REQ_SCR_BPAGE      Scroll the field backward a page.
-       REQ_SCR_FCHAR      Scroll the field forward a character.
-       REQ_SCR_FHPAGE     Scroll the field forward half a page.
-       REQ_SCR_FLINE      Scroll the field forward a line.
-       REQ_SCR_FPAGE      Scroll the field forward a page.
-       REQ_SCR_HBHALF     Horizontal scroll the field backward half a line.
-       REQ_SCR_HBLINE     Horizontal scroll the field backward a line.
-       REQ_SCR_HFHALF     Horizontal scroll the field forward half a line.
-       REQ_SCR_HFLINE     Horizontal scroll the field forward a line.
-       REQ_SFIRST_FIELD   Move to the sorted first field.
-       REQ_SLAST_FIELD    Move to the sorted last field.
-       REQ_SNEXT_FIELD    Move to the sorted next field.
-       REQ_SPREV_FIELD    Move to the sorted previous field.
-       REQ_UP_CHAR        Move up in the field.
-       REQ_UP_FIELD       Move up to a field.
-       REQ_VALIDATION     Validate field.
+       ------------------------------------------------------------------------
+       <STRONG>REQ_BEG_FIELD</STRONG>      Move to beginning of field.
+       <STRONG>REQ_BEG_LINE</STRONG>       Move to beginning of the line.
+       <STRONG>REQ_CLR_EOF</STRONG>        Clear to end of field from cursor.
+       <STRONG>REQ_CLR_EOL</STRONG>        Clear to end of line from cursor.
+       <STRONG>REQ_CLR_FIELD</STRONG>      Clear the entire field.
+       <STRONG>REQ_DEL_CHAR</STRONG>       Delete character at the cursor.
+       <STRONG>REQ_DEL_LINE</STRONG>       Delete line at the cursor.
+       <STRONG>REQ_DEL_PREV</STRONG>       Delete character before the cursor.
+       <STRONG>REQ_DEL_WORD</STRONG>       Delete blank-delimited word at cursor.
+       <STRONG>REQ_DOWN_CHAR</STRONG>      Move down in field.
+       <STRONG>REQ_DOWN_FIELD</STRONG>     Move down to a field.
+       <STRONG>REQ_END_FIELD</STRONG>      Move to the end of field.
+       <STRONG>REQ_END_LINE</STRONG>       Move to the end of the line.
+       <STRONG>REQ_FIRST_FIELD</STRONG>    Move to the first field.
+       <STRONG>REQ_FIRST_PAGE</STRONG>     Move to the first page.
+       <STRONG>REQ_INS_CHAR</STRONG>       Insert a blank at the cursor.
+       <STRONG>REQ_INS_LINE</STRONG>       Insert a blank line at the cursor.
+       <STRONG>REQ_INS_MODE</STRONG>       Enter insert mode.
+       <STRONG>REQ_LAST_FIELD</STRONG>     Move to the last field.
+       <STRONG>REQ_LAST_PAGE</STRONG>      Move to the last field.
+       <STRONG>REQ_LEFT_CHAR</STRONG>      Move left in field.
+       <STRONG>REQ_LEFT_FIELD</STRONG>     Move left to a field.
+       <STRONG>REQ_NEW_LINE</STRONG>       Insert or overlay a new line.
+       <STRONG>REQ_NEXT_CHAR</STRONG>      Move to the next char.
+
+       <STRONG>REQ_NEXT_CHOICE</STRONG>    Display next field choice.
+       <STRONG>REQ_NEXT_FIELD</STRONG>     Move to the next field.
+       <STRONG>REQ_NEXT_LINE</STRONG>      Move to the next line.
+       <STRONG>REQ_NEXT_PAGE</STRONG>      Move to the next page.
+       <STRONG>REQ_NEXT_PAGE</STRONG>      Move to the next page.
+       <STRONG>REQ_NEXT_WORD</STRONG>      Move to the next word.
+       <STRONG>REQ_OVL_MODE</STRONG>       Enter overlay mode.
+       <STRONG>REQ_PREV_CHAR</STRONG>      Move to the previous char.
+       <STRONG>REQ_PREV_CHOICE</STRONG>    Display previous field choice.
+       <STRONG>REQ_PREV_FIELD</STRONG>     Move to the previous field.
+       <STRONG>REQ_PREV_LINE</STRONG>      Move to the previous line.
+       <STRONG>REQ_PREV_PAGE</STRONG>      Move to the previous page.
+       <STRONG>REQ_PREV_WORD</STRONG>      Move to the previous word.
+       <STRONG>REQ_RIGHT_CHAR</STRONG>     Move right in field.
+       <STRONG>REQ_RIGHT_FIELD</STRONG>    Move right to a field.
+       <STRONG>REQ_SCR_BCHAR</STRONG>      Scroll field backward 1 character.
+       <STRONG>REQ_SCR_BHPAGE</STRONG>     Scroll field backward 1/2 page.
+       <STRONG>REQ_SCR_BLINE</STRONG>      Scroll field backward 1 line.
+       <STRONG>REQ_SCR_BPAGE</STRONG>      Scroll field backward 1 page.
+       <STRONG>REQ_SCR_FCHAR</STRONG>      Scroll field forward 1 character.
+       <STRONG>REQ_SCR_FHPAGE</STRONG>     Scroll field forward 1/2 page.
+       <STRONG>REQ_SCR_FLINE</STRONG>      Scroll field forward 1 line.
+       <STRONG>REQ_SCR_FPAGE</STRONG>      Scroll field forward 1 page.
+       <STRONG>REQ_SCR_HBHALF</STRONG>     Horizontal scroll field backward 1/2 line.
+       <STRONG>REQ_SCR_HBLINE</STRONG>     Horizontal scroll field backward 1 line.
+       <STRONG>REQ_SCR_HFHALF</STRONG>     Horizontal scroll field forward 1/2 line.
+       <STRONG>REQ_SCR_HFLINE</STRONG>     Horizontal scroll field forward 1 line.
+       <STRONG>REQ_SFIRST_FIELD</STRONG>   Move to the sorted first field.
+       <STRONG>REQ_SLAST_FIELD</STRONG>    Move to the sorted last field.
+       <STRONG>REQ_SNEXT_FIELD</STRONG>    Move to the sorted next field.
+       <STRONG>REQ_SPREV_FIELD</STRONG>    Move to the sorted previous field.
+       <STRONG>REQ_UP_CHAR</STRONG>        Move up in field.
+       <STRONG>REQ_UP_FIELD</STRONG>       Move up to a field.
+       <STRONG>REQ_VALIDATION</STRONG>     Validate field.
 
        If  the  second argument is a printable character, the driver places it
        in the current position in the current field.  If  it  is  one  of  the
        forms requests listed above, that request is executed.
 
 
-</PRE><H3><a name="h3-Field-validation">Field validation</a></H3><PRE>
+</PRE><H3><a name="h3-Field-Validation">Field Validation</a></H3><PRE>
        The  form  library  makes  updates  to  the window associated with form
        fields rather than directly to the field buffers.
 
        data from the window associated with the field to the field buffer.
 
 
-</PRE><H3><a name="h3-Mouse-handling">Mouse handling</a></H3><PRE>
+</PRE><H3><a name="h3-Mouse-Handling">Mouse Handling</a></H3><PRE>
        If the second argument is the KEY_MOUSE  special  key,  the  associated
        mouse  event  is translated into one of the above pre-defined requests.
        Currently only clicks in the user window (e.g., inside the form display
        translated into a form request an <STRONG>E_REQUEST_DENIED</STRONG> is returned.
 
 
-</PRE><H3><a name="h3-Application-defined-commands">Application-defined commands</a></H3><PRE>
+</PRE><H3><a name="h3-Application-defined-Commands">Application-defined Commands</a></H3><PRE>
        If the second argument is neither printable nor one of the  above  pre-
        defined form requests, the driver assumes it is an application-specific
        command and returns  <STRONG>E_UNKNOWN_COMMAND</STRONG>.   Application-defined  commands
             The form driver code saw an unknown request code.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>,   <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>,    <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>,
-       <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header files
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System  V  forms  library.   They  were  not
        supported on Version 7 or BSD versions.
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>,   <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>,    <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>,
+       <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>
+
 
-                                                               <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
+
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <ul>
 <li><a href="#h3-form_driver">form_driver</a></li>
 <li><a href="#h3-form_driver_w">form_driver_w</a></li>
-<li><a href="#h3-Form-driver-requests">Form-driver requests</a></li>
-<li><a href="#h3-Field-validation">Field validation</a></li>
-<li><a href="#h3-Mouse-handling">Mouse handling</a></li>
-<li><a href="#h3-Application-defined-commands">Application-defined commands</a></li>
+<li><a href="#h3-Form-Driver-Requests">Form Driver Requests</a></li>
+<li><a href="#h3-Field-Validation">Field Validation</a></li>
+<li><a href="#h3-Mouse-Handling">Mouse Handling</a></li>
+<li><a href="#h3-Application-defined-Commands">Application-defined Commands</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 0f51ef5ae2d02c1bf6dcbeba47802d93b4e76d5b..8eb58d4c62a2562989103a790dc3b74d81f99b33 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2012 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field.3x,v 1.20 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_field.3x,v 1.34 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_field 3x</TITLE>
+<TITLE>form_field 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_field 3x</H1>
+<H1 class="no-header">form_field 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>                                                  <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
+<STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the System  V  forms  library.   They  were  not
+       These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
 
-       The  SVr4  forms  library documentation specifies the <STRONG>field_count</STRONG> error
+       The SVr4 forms library documentation specifies  the  <STRONG>field_count</STRONG>  error
        value as -1 (which is the value of <STRONG>ERR</STRONG>).
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                                <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                    <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 7996122b57d96d7c1cf8703275840cd8f0daee16..22afdc67971d80fdac1d41269aab7f80b23a15e2 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_attributes.3x,v 1.21 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_field_attributes.3x,v 1.35 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_field_attributes 3x</TITLE>
+<TITLE>form_field_attributes 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_field_attributes 3x</H1>
+<H1 class="no-header">form_field_attributes 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>                            <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
+<STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>        Library calls       <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
-       descriptions of the entry points.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
+       descriptions of the entry points.
+
 
-                                                     <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
+
+ncurses 6.5                       2024-03-16         <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 1bc00e3044af47e90b5cd76fdbceb7b57a6bf5ef..47d6c8b3e42158869317f35e6b2300c7036be019 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_buffer.3x,v 1.30 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_field_buffer.3x,v 1.45 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_field_buffer 3x</TITLE>
+<TITLE>form_field_buffer 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_field_buffer 3x</H1>
+<H1 class="no-header">form_field_buffer 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>                                    <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
+<STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>            Library calls           <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
 
 
 
             Routine detected an incorrect or out-of-range argument.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
-       descriptions of the entry points.
-
-
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file
-
-       When configured for wide characters, <STRONG>field_buffer</STRONG> returns a pointer  to
-       temporary   storage   (allocated   and  freed  by  the  library).   The
+       When  configured for wide characters, <STRONG>field_buffer</STRONG> returns a pointer to
+       temporary  storage  (allocated  and  freed  by   the   library).    The
        application should not attempt to modify the data.  It will be freed on
-       the next call to <STRONG>field_buffer</STRONG> to return the same buffer.  <STRONG>&lt;curses.h&gt;</STRONG>.
+       the next call to <STRONG>field_buffer</STRONG> to return the same buffer.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  forms library.  They were not
+       These routines emulate the System  V  forms  library.   They  were  not
        supported on Version 7 or BSD versions.
 
-       The  <STRONG>set_max_field</STRONG>   function   checks   for   an   ncurses   extension
-       <STRONG>O_INPUT_FIELD</STRONG>  which  allows a dynamic field to shrink if the new limit
+       The   <STRONG>set_max_field</STRONG>   function   checks   for   an   <EM>ncurses</EM>  extension
+       <STRONG>O_INPUT_FIELD</STRONG> which allows a dynamic field to shrink if the  new  limit
        is smaller than the current field size.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names  begin  "form_"  for  detailed
+       descriptions of the entry points.
+
+
 
-                                                         <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16             <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index a4852126a62b454fc7a3a6b36c871074035ece09..2090ab669cede7fd859350f0f5441dd2b2ec4225 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_info.3x,v 1.21 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_field_info.3x,v 1.32 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_field_info 3x</TITLE>
+<TITLE>form_field_info 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_field_info 3x</H1>
+<H1 class="no-header">form_field_info 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>                                        <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
+<STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>              Library calls             <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
 
 
 
             Routine detected an incorrect or out-of-range argument.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
-       descriptions of the entry points.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
+       descriptions of the entry points.
+
 
-                                                           <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
+
+ncurses 6.5                       2024-03-16               <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index c40c6b2a2c217fcd42a186c6330c9d1f9b540b32..f0bc457faf240bac409a7387ae1e9eb1e8a37157 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_just.3x,v 1.21 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_field_just.3x,v 1.35 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_field_just 3x</TITLE>
+<TITLE>form_field_just 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_field_just 3x</H1>
+<H1 class="no-header">form_field_just 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>                                        <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
+<STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>              Library calls             <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
 
 
 
             Routine detected an incorrect or out-of-range argument.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
-       descriptions of the entry points.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
+       descriptions of the entry points.
+
 
-                                                           <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
+
+ncurses 6.5                       2024-03-16               <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index d52ee9ed5069f5a69fb29665d1cbd1daaef05033..c7bedd9a214c982a6364a104205dedf645d628df 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_new.3x,v 1.27 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_field_new.3x,v 1.41 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_field_new 3x</TITLE>
+<TITLE>form_field_new 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_field_new 3x</H1>
+<H1 class="no-header">form_field_new 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>                                          <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
+<STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>               Library calls              <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
 
 
 
             field is connected.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the System  V  forms  library.   They  were  not
+       These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
 
-       It  may be unwise to count on the set of attributes copied by <STRONG>dup_field</STRONG>
-       being portable; the System V  forms  library  documents  are  not  very
+       It may be unwise to count on the set of attributes copied by  <STRONG>dup_field</STRONG>
+       being  portable;  the  System  V  forms  library documents are not very
        explicit about what gets copied and what does not.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                            <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 71bc188b2ae9a8b206fe295592a6758645179335..52fca0a5a333c19fb89337dca72384c9d47312c2 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2014,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_opts.3x,v 1.30 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_field_opts.3x,v 1.44 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_field_opts 3x</TITLE>
+<TITLE>form_field_opts 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_field_opts 3x</H1>
+<H1 class="no-header">form_field_opts 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>                                        <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
+<STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>              Library calls             <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.  <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the System  V  forms  library.   They  were  not
+       These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
+
+
 
-                                                           <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16               <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index bdf4b9f55d7193115e2e9f15f962fe5bf6658543..128698edb249d0c57e38ccfb9496676691290480 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_userptr.3x,v 1.19 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_field_userptr.3x,v 1.30 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_field_userptr 3x</TITLE>
+<TITLE>form_field_userptr 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_field_userptr 3x</H1>
+<H1 class="no-header">form_field_userptr 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>                                  <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
+<STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>           Library calls          <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
 
 
 
        The function <STRONG>set_field_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the System  V  forms  library.   They  were  not
+       These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
 
        The user pointer is a void pointer.  We chose not to leave it as a char
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                        <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16            <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index c0a0f9e3523b893ca520adb333d45df879f0c41f..e66d71c2646231366c29747b215d4907da2f1f64 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_validation.3x,v 1.36 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_field_validation.3x,v 1.53 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_field_validation 3x</TITLE>
+<TITLE>form_field_validation 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_field_validation 3x</H1>
+<H1 class="no-header">form_field_validation 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>                            <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
+<STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>        Library calls       <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
 
 
 
@@ -57,7 +57,7 @@
        <STRONG>FIELDTYPE</STRONG> <STRONG>*field_type(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>set_field_type(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG><EM>type</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
 
-       /* predefined field types */
+       <EM>/*</EM> <EM>predefined</EM> <EM>field</EM> <EM>types</EM> <EM>*/</EM>
        <STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_ALNUM;</STRONG>
        <STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_ALPHA;</STRONG>
        <STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_ENUM;</STRONG>
@@ -92,7 +92,7 @@
        Several field types are predefined by the form library.
 
 
-</PRE><H3><a name="h3-Predefined-types">Predefined types</a></H3><PRE>
+</PRE><H2><a name="h2-PREDEFINED-TYPES">PREDEFINED TYPES</a></H2><PRE>
        It is possible to set up new  programmer-defined  field  types.   Field
        types  are implemented via the <STRONG>FIELDTYPE</STRONG> data structure, which contains
        several pointers to functions.
 
        The predefined types are as follows:
 
-       TYPE_ALNUM
-            Alphanumeric data.  Required parameter:
 
-            <STRONG>o</STRONG>   a third <STRONG>int</STRONG> argument, a minimum field width.
+</PRE><H3><a name="h3-TYPE_ALNUM">TYPE_ALNUM</a></H3><PRE>
+       Alphanumeric data.  Required parameter:
 
-       TYPE_ALPHA
-            Character data.  Required parameter:
+       <STRONG>o</STRONG>   a third <STRONG>int</STRONG> argument, a minimum field width.
 
-            <STRONG>o</STRONG>   a third <STRONG>int</STRONG> argument, a minimum field width.
 
-       TYPE_ENUM
-            Accept one of a specified set of strings.  Required parameters:
+</PRE><H3><a name="h3-TYPE_ALPHA">TYPE_ALPHA</a></H3><PRE>
+       Character data.  Required parameter:
 
-            <STRONG>o</STRONG>   a third <STRONG>(char</STRONG> <STRONG>**)</STRONG> argument pointing to a string list;
+       <STRONG>o</STRONG>   a third <STRONG>int</STRONG> argument, a minimum field width.
 
-            <STRONG>o</STRONG>   a fourth <STRONG>int</STRONG> flag argument to enable case-sensitivity;
 
-            <STRONG>o</STRONG>   a  fifth  <STRONG>int</STRONG> 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.
+</PRE><H3><a name="h3-TYPE_ENUM">TYPE_ENUM</a></H3><PRE>
+       Accept one of a specified set of strings.  Required parameters:
 
-            The library copies the string list, so you may  use  a  list  that
-            lives in automatic variables on the stack.
+       <STRONG>o</STRONG>   a third <STRONG>(char</STRONG> <STRONG>**)</STRONG> argument pointing to a string list;
 
-       TYPE_INTEGER
-            Integer  data,  parsable  to  an  integer  by  <STRONG>atoi(3)</STRONG>.   Required
-            parameters:
+       <STRONG>o</STRONG>   a fourth <STRONG>int</STRONG> flag argument to enable case-sensitivity;
 
-            <STRONG>o</STRONG>   a third <STRONG>int</STRONG> argument controlling the precision,
+       <STRONG>o</STRONG>   a  fifth  <STRONG>int</STRONG> 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.
 
-            <STRONG>o</STRONG>   a fourth <STRONG>long</STRONG> argument constraining minimum value,
+       The library copies the string list, so you may use a list that lives in
+       automatic variables on the stack.
 
-            <STRONG>o</STRONG>   a fifth <STRONG>long</STRONG> 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  <STRONG>printf</STRONG>
-            format  specification  ".*ld",  where  the  "*" is replaced by the
-            precision argument.
+</PRE><H3><a name="h3-TYPE_INTEGER">TYPE_INTEGER</a></H3><PRE>
+       Integer data, parsable to an integer by <STRONG>atoi(3)</STRONG>.  Required parameters:
 
-            For details of the precision handling see <STRONG>printf(3)</STRONG>.
+       <STRONG>o</STRONG>   a third <STRONG>int</STRONG> argument controlling the precision,
 
-       TYPE_NUMERIC
-            Numeric  data  (may  have   a   decimal-point   part).    Required
-            parameters:
+       <STRONG>o</STRONG>   a fourth <STRONG>long</STRONG> argument constraining minimum value,
 
-            <STRONG>o</STRONG>   a third <STRONG>int</STRONG> argument controlling the precision,
+       <STRONG>o</STRONG>   a fifth <STRONG>long</STRONG> constraining maximum value.  If the maximum  value  is
+           less  than  or  equal  to  the  minimum  value, the range is simply
+           ignored.
 
-            <STRONG>o</STRONG>   a fourth <STRONG>double</STRONG> argument constraining minimum value,
+       On return, the field buffer is formatted according to the <STRONG>printf</STRONG> format
+       specification  ".*ld",  where  the  "*"  is  replaced  by the precision
+       argument.
 
-            <STRONG>o</STRONG>   and a fifth <STRONG>double</STRONG> 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
-                or equal to the minimum value, the range is simply ignored.
+       For details of the precision handling see <STRONG>printf(3)</STRONG>.
 
-            On return, the field buffer is formatted according to  the  <STRONG>printf</STRONG>
-            format  specification  ".*f",  where  the  "*"  is replaced by the
-            precision argument.
 
-            For details of the precision handling see <STRONG>printf(3)</STRONG>.
+</PRE><H3><a name="h3-TYPE_NUMERIC">TYPE_NUMERIC</a></H3><PRE>
+       Numeric data (may have a decimal-point part).  Required parameters:
 
-       TYPE_REGEXP
-            Regular expression data.  Required parameter:
+       <STRONG>o</STRONG>   a third <STRONG>int</STRONG> argument controlling the precision,
 
-            <STRONG>o</STRONG>   a third argument, a regular expression <STRONG>(char</STRONG> <STRONG>*)</STRONG>  string.   The
-                data is valid if the regular expression matches it.
+       <STRONG>o</STRONG>   a fourth <STRONG>double</STRONG> argument constraining minimum value,
 
-            Regular expressions are in the format of <STRONG>regcomp</STRONG> and <STRONG>regexec</STRONG>.
+       <STRONG>o</STRONG>   and a fifth <STRONG>double</STRONG> 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  or
+           equal to the minimum value, the range is simply ignored.
 
-            The  regular  expression  must match the whole field.  If you have
-            for example, an eight character wide field, a  regular  expression
-            "^[0-9]*$"  always means that you have to fill all eight positions
-            with digits.  If you want to allow fewer digits, you may  use  for
-            example  "^[0-9]*  *$" which is good for trailing spaces (up to an
-            empty field), or "^ *[0-9]* *$" which  is  good  for  leading  and
-            trailing spaces around the digits.
+       On return, the field buffer is formatted according to the <STRONG>printf</STRONG> format
+       specification ".*f",  where  the  "*"  is  replaced  by  the  precision
+       argument.
 
-       TYPE_IPV4
-            An Internet Protocol Version 4 address.  Required parameter:
+       For details of the precision handling see <STRONG>printf(3)</STRONG>.
 
-            <STRONG>o</STRONG>   none
 
-            The  form  library  checks  whether or not the buffer has the form
-            <EM>a.b.c.d</EM>, where <EM>a</EM>, <EM>b</EM>, <EM>c</EM>, and <EM>d</EM> are numbers in the range 0  to  255.
-            Trailing  blanks in the buffer are ignored.  The address itself is
-            not validated.
+</PRE><H3><a name="h3-TYPE_REGEXP">TYPE_REGEXP</a></H3><PRE>
+       Regular expression data.  Required parameter:
 
-            This is an ncurses extension; this field type may not be available
-            in other curses implementations.
+       <STRONG>o</STRONG>   a  third  argument, a regular expression <STRONG>(char</STRONG> <STRONG>*)</STRONG> string.  The data
+           is valid if the regular expression matches it.
+
+       Regular expressions are in the format of <STRONG>regcomp</STRONG> and <STRONG>regexec</STRONG>.
+
+       The regular expression must match the whole field.   If  you  have  for
+       example, an eight character wide field, a regular expression "^[0-9]*$"
+       always means that you have to fill all eight positions with digits.  If
+       you  want  to  allow fewer digits, you may use for example "^[0-9]* *$"
+       which is good for trailing spaces (up to an empty field), or "^ *[0-9]*
+       *$" which is good for leading and trailing spaces around the digits.
+
+
+</PRE><H3><a name="h3-TYPE_IPV4">TYPE_IPV4</a></H3><PRE>
+       An Internet Protocol Version 4 address.  Required parameter:
+
+       <STRONG>o</STRONG>   none
+
+       The form library checks whether or not the buffer has the form <EM>a.b.c.d</EM>,
+       where <EM>a</EM>, <EM>b</EM>, <EM>c</EM>, and <EM>d</EM> are numbers in  the  range  0  to  255.   Trailing
+       blanks in the buffer are ignored.  The address itself is not validated.
+
+       This  is  an <EM>ncurses</EM> extension; this field type may not be available in
+       other curses implementations.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       The  functions  <STRONG>field_type</STRONG>  and  <STRONG>field_arg</STRONG>  return  <STRONG>NULL</STRONG> on error.  The
+       The functions <STRONG>field_type</STRONG> and  <STRONG>field_arg</STRONG>  return  <STRONG>NULL</STRONG>  on  error.   The
        function <STRONG>set_field_type</STRONG> returns one of the following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
+
+
 
-                                                     <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16         <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h3-field_arg">field_arg</a></li>
 <li><a href="#h3-field_type">field_type</a></li>
 <li><a href="#h3-set_field_type">set_field_type</a></li>
-<li><a href="#h3-Predefined-types">Predefined types</a></li>
+</ul>
+</li>
+<li><a href="#h2-PREDEFINED-TYPES">PREDEFINED TYPES</a>
+<ul>
+<li><a href="#h3-TYPE_ALNUM">TYPE_ALNUM</a></li>
+<li><a href="#h3-TYPE_ALPHA">TYPE_ALPHA</a></li>
+<li><a href="#h3-TYPE_ENUM">TYPE_ENUM</a></li>
+<li><a href="#h3-TYPE_INTEGER">TYPE_INTEGER</a></li>
+<li><a href="#h3-TYPE_NUMERIC">TYPE_NUMERIC</a></li>
+<li><a href="#h3-TYPE_REGEXP">TYPE_REGEXP</a></li>
+<li><a href="#h3-TYPE_IPV4">TYPE_IPV4</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 5e6755355efa5368375acb3d146a8c6f6d45ad74..369f25c5fc11982d5c1ba96fd0d31bc5e456843e 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_fieldtype.3x,v 1.31 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_fieldtype.3x,v 1.46 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_fieldtype 3x</TITLE>
+<TITLE>form_fieldtype 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_fieldtype 3x</H1>
+<H1 class="no-header">form_fieldtype 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>                                          <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
+<STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>               Library calls              <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  forms library.  They were not
+       These routines emulate the System  V  forms  library.   They  were  not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
+
+
 
-                                                            <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index decd850e05f7b885b53b202b14acc626dbaf39df..4845771f8112460b543bd5ec3c4ba7bec989132d 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2007,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_hook.3x,v 1.19 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_hook.3x,v 1.37 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_hook 3x</TITLE>
+<TITLE>form_hook 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_hook 3x</H1>
+<H1 class="no-header">form_hook 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>                                                    <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+<STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
 
 
 
        various points in the automatic processing  of  input  event  codes  by
        <STRONG>form_driver</STRONG>.
 
-       The  function <STRONG>set_field_init</STRONG> sets a hook to be called at form-post time
-       and  each  time  the  selected  field  changes  (after   the   change).
-       <STRONG>field_init</STRONG>  returns  the current field init hook, if any (<STRONG>NULL</STRONG> if there
-       is no such hook).
 
-       The function <STRONG>set_field_term</STRONG> sets a hook to  be  called  at  form-unpost
-       time  and  each  time  the  selected field changes (before the change).
-       <STRONG>field_term</STRONG> returns the current field term hook, if any (<STRONG>NULL</STRONG>  if  there
-       is no such hook).
+</PRE><H3><a name="h3-set_field_init">set_field_init</a></H3><PRE>
+       sets  a  hook to be called at form-post time and each time the selected
+       field changes (after the change).
 
-       The  function  <STRONG>set_form_init</STRONG> sets a hook to be called at form-post time
-       and just after a page change once it is posted.  <STRONG>form_init</STRONG> returns  the
-       current form init hook, if any (<STRONG>NULL</STRONG> if there is no such hook).
 
-       The function <STRONG>set_form_term</STRONG> sets a hook to be called at form-unpost time
-       and just before a page change once it is posted.  <STRONG>form_init</STRONG> returns the
-       current form term hook, if any (<STRONG>NULL</STRONG> if there is no such hook).
+</PRE><H3><a name="h3-field_init">field_init</a></H3><PRE>
+       returns the current field init hook, if any (<STRONG>NULL</STRONG> if there is  no  such
+       hook).
+
+
+</PRE><H3><a name="h3-set_field_term">set_field_term</a></H3><PRE>
+       sets a hook to be called at form-unpost time and each time the selected
+       field changes (before the change).
+
+
+</PRE><H3><a name="h3-field_term">field_term</a></H3><PRE>
+       returns the current field term hook, if any (<STRONG>NULL</STRONG> if there is  no  such
+       hook).
+
+
+</PRE><H3><a name="h3-set_form_init">set_form_init</a></H3><PRE>
+       sets a hook to be called at form-post time and just after a page change
+       once it is posted.
+
+
+</PRE><H3><a name="h3-form_init">form_init</a></H3><PRE>
+       returns the current form init hook, if any (<STRONG>NULL</STRONG> if there  is  no  such
+       hook).
+
+
+</PRE><H3><a name="h3-set_form_term">set_form_term</a></H3><PRE>
+       sets  a  hook  to  be called at form-unpost time and just before a page
+       change once it is posted.
+
+
+</PRE><H3><a name="h3-form_term">form_term</a></H3><PRE>
+       returns the current form term hook, if any (<STRONG>NULL</STRONG> if there  is  no  such
+       hook).
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  forms library.  They were not
+       These routines emulate the System  V  forms  library.   They  were  not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
-<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-set_field_init">set_field_init</a></li>
+<li><a href="#h3-field_init">field_init</a></li>
+<li><a href="#h3-set_field_term">set_field_term</a></li>
+<li><a href="#h3-field_term">field_term</a></li>
+<li><a href="#h3-set_form_init">set_form_init</a></li>
+<li><a href="#h3-form_init">form_init</a></li>
+<li><a href="#h3-set_form_term">set_form_term</a></li>
+<li><a href="#h3-form_term">form_term</a></li>
+</ul>
+</li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 1246c4273a16d9f2fb01b54c3c32331835b3e6b5..7a1877cad84de28426c2f05185c06f53750ceb61 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_new.3x,v 1.18 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_new.3x,v 1.32 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_new 3x</TITLE>
+<TITLE>form_new 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_new 3x</H1>
+<H1 class="no-header">form_new 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>                                                      <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
+<STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>                     Library calls                    <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
 
 
 
             The form has already been posted.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  forms library.  They were not
+       These routines emulate the System  V  forms  library.   They  were  not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                                  <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                      <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 0db3ac7eed13b4f3d7dc386fdaad66502b060354..e8a18df4ff0f0bc1e0ab9a2936bdc7da38a5aab1 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_new_page.3x,v 1.20 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_new_page.3x,v 1.34 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_new_page 3x</TITLE>
+<TITLE>form_new_page 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_new_page 3x</H1>
+<H1 class="no-header">form_new_page 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>                                            <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
+<STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>                Library calls               <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
 
 
 
             The given field is already connected to a form.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
-       descriptions of the entry points.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
+       descriptions of the entry points.
+
 
-                                                             <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
+
+ncurses 6.5                       2024-03-16                 <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 9fda7453b15227c336f6ef9ba9b96b0dbde613ea..63a9437fc873be675bacabdb73f100d799f84bae 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_opts.3x,v 1.20 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_opts.3x,v 1.34 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_opts 3x</TITLE>
+<TITLE>form_opts 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_opts 3x</H1>
+<H1 class="no-header">form_opts 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>                                                    <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
+<STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the System  V  forms  library.   They  were  not
+       These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index b0ab37d82a8a1b8ae2c58e339ffd004716979f8f..b882db2beb490fa95f213b1bd1e6ca2d554a9384 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_page.3x,v 1.22 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_page.3x,v 1.37 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_page 3x</TITLE>
+<TITLE>form_page 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_page 3x</H1>
+<H1 class="no-header">form_page 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>                                                    <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+<STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the System  V  forms  library.   They  were  not
+       These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
 
-       The <STRONG>unfocus_current_field</STRONG> function is an ncurses extension.
+       The <STRONG>unfocus_current_field</STRONG> function is an <EM>ncurses</EM> extension.
 
 
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index ebb2f01f146d62ba910eb240958512c4ccfd163a..9f97d3e5e8dad673458f67a77c00ddad1e4d4b33 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_post.3x,v 1.19 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_post.3x,v 1.33 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_post 3x</TITLE>
+<TITLE>form_post 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_post 3x</H1>
+<H1 class="no-header">form_post 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>                                                    <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
+<STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the System  V  forms  library.   They  were  not
+       These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 37122c6d22f3f900bf0e2f2e8c0c2433e82a34fc..ecb5992d428a546d7fc0ce28b8162da23f81f879 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_requestname.3x,v 1.19 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_requestname.3x,v 1.35 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_requestname 3x</TITLE>
+<TITLE>form_requestname 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_requestname 3x</H1>
+<H1 class="no-header">form_requestname 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>                                      <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
+<STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>             Library calls            <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
 
 
 
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-
-</PRE><H3><a name="h3-form_request_name">form_request_name</a></H3><PRE>
        The function <STRONG>form_request_name</STRONG> returns the printable  name  of  a  form
-       request code.
-
-
-</PRE><H3><a name="h3-form_request_name_by_name">form_request_name_by_name</a></H3><PRE>
-       The  function  <STRONG>form_request_by_name</STRONG>  searches  in  the name-table for a
-       request with the given name and returns its  request  code.   Otherwise
-       E_NO_MATCH is returned.
+       request  code.  The function <STRONG>form_request_by_name</STRONG> searches in the name-
+       table for a request with the given name and returns its  request  code.
+       Otherwise E_NO_MATCH is returned.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        <STRONG>errno</STRONG>.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines are specific to ncurses.  They  were  not  supported  on
+       These  routines  are  specific  to <EM>ncurses</EM>.  They were not supported on
        Version 7, BSD or System V implementations.  It is recommended that any
        code depending on them be conditioned using NCURSES_VERSION.
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
 
-                                                          <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
+
+ncurses 6.5                       2024-03-16              <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
-<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
-<ul>
-<li><a href="#h3-form_request_name">form_request_name</a></li>
-<li><a href="#h3-form_request_name_by_name">form_request_name_by_name</a></li>
-</ul>
-</li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index a5033f79f476a350e7f034552aedd77c06bfcbf2..db79de2022cb18d324ff834b9416b75130e4135a 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_userptr.3x,v 1.22 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_userptr.3x,v 1.36 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_userptr 3x</TITLE>
+<TITLE>form_userptr 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_userptr 3x</H1>
+<H1 class="no-header">form_userptr 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>                                              <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
+<STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
 
 
 
        The function <STRONG>set_form_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the System  V  forms  library.   They  were  not
+       These  routines  emulate  the  System  V  forms library.  They were not
        supported on Version 7 or BSD versions.
 
        The user pointer is a void pointer.  We chose not to leave it as a char
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                              <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                  <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 93d0a06203d565084673910cb1471e42647023e2..68c8e5635c553676d7310cea2e381a562c5891a3 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2020,2021 Thomas E. Dickey                                     *
+  * Copyright 2020-2023,2024 Thomas E. Dickey                                *
   * Copyright 2010-2013,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_variables.3x,v 1.9 2021/12/25 21:50:36 tom Exp @
+  * @Id: form_variables.3x,v 1.18 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_variables 3x</TITLE>
+<TITLE>form_variables 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_variables 3x</H1>
+<H1 class="no-header">form_variables 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>                                          <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
+<STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>               Library calls              <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>TYPE_ALNUM</STRONG>, <STRONG>TYPE_ALPHA</STRONG>, <STRONG>TYPE_ENUM</STRONG>, <STRONG>TYPE_INTEGER</STRONG>, <STRONG>TYPE_IPV4</STRONG>,
+       <STRONG>TYPE_ALNUM</STRONG>,    <STRONG>TYPE_ALPHA</STRONG>,    <STRONG>TYPE_ENUM</STRONG>,    <STRONG>TYPE_INTEGER</STRONG>,    <STRONG>TYPE_IPV4</STRONG>,
        <STRONG>TYPE_NUMERIC</STRONG>, <STRONG>TYPE_REGEXP</STRONG> - form system global variables
 
 
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The  <STRONG>TYPE_IPV4</STRONG> variable is an extension not provided by older implemen-
-       tations of the form library.
+       The   <STRONG>TYPE_IPV4</STRONG>   variable  is  an  extension  not  provided  by  older
+       implementations of the form library.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
+       <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
 
 
 
-                                                            <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 1baf01264517cb494f2756474da2e91651255a7b..976ef2714ed00371784f17720e37687ee46be0da 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_win.3x,v 1.21 2022/02/12 20:03:40 tom Exp @
+  * @Id: form_win.3x,v 1.35 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>form_win 3x</TITLE>
+<TITLE>form_win 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">form_win 3x</H1>
+<H1 class="no-header">form_win 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>                                                      <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
+<STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>                     Library calls                    <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
 
 
 
             No items are connected to the form.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;form.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  forms library.  They were not
+       These routines emulate the System  V  forms  library.   They  were  not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
+
+
 
-                                                                  <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                      <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 81b95ac584d69bbfc9d1af5a11162c695fb8ba0f..44cb12fb7122ba8c05caaa7dd880a44d75c13ee0 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: infocmp.1m,v 1.81 2022/02/12 20:02:20 tom Exp @
+  * @Id: infocmp.1m,v 1.109 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>infocmp 1m</TITLE>
+<TITLE>infocmp 1m 2024-03-16 ncurses 6.5 User commands</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">infocmp 1m</H1>
+<H1 class="no-header">infocmp 1m 2024-03-16 ncurses 6.5 User commands</H1>
 <PRE>
-<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>                                                        <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
+<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>                      User commands                     <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
 
 
 
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>infocmp</STRONG> [<STRONG>-1CDEFGIKLTUVWcdegilnpqrtux</STRONG>]
+       <STRONG>infocmp</STRONG> [<STRONG>-1cCdDeEFgGiIKlLnpqrtTuUVWx</STRONG>]
              [<STRONG>-v</STRONG> <EM>n</EM>] [<STRONG>-s</STRONG> <STRONG>d</STRONG>| <STRONG>i</STRONG>| <STRONG>l</STRONG>| <STRONG>c</STRONG>] [<STRONG>-Q</STRONG> <EM>n</EM>] [<STRONG>-R</STRONG> <STRONG>subset</STRONG>]
              [<STRONG>-w</STRONG> <EM>width</EM>] [<STRONG>-A</STRONG> <EM>directory</EM>] [<STRONG>-B</STRONG> <EM>directory</EM>]
-             [<EM>termname</EM>...]
+             [<EM>terminal-type</EM> ...]
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        <STRONG>infocmp</STRONG>  can  be  used  to  compare  a binary <STRONG>terminfo</STRONG> entry with other
        terminfo entries, rewrite a <STRONG>terminfo</STRONG> description to take  advantage  of
        the  <STRONG>use=</STRONG>  terminfo field, or print out a <STRONG>terminfo</STRONG> description from the
-       binary file (<STRONG>term</STRONG>) in a variety of formats.  In all cases, the  boolean
+       binary file (<STRONG>term</STRONG>) in a variety of formats.  In all cases, the  Boolean
        fields  will be printed first, followed by the numeric fields, followed
        by the string fields.
 
 
 </PRE><H3><a name="h3-Default-Options">Default Options</a></H3><PRE>
-       If no options are specified and zero or one  <EM>termnames</EM>  are  specified,
-       the <STRONG>-I</STRONG> option will be assumed.  If more than one <EM>termname</EM> is specified,
-       the <STRONG>-d</STRONG> option will be assumed.
+       If no  options  are  specified  and  zero  or  one  <EM>terminal-types</EM>  are
+       specified,  the  <STRONG>-I</STRONG> option will be assumed.  If more than one <EM>terminal-</EM>
+       <EM>type</EM> is specified, the <STRONG>-d</STRONG> option will be assumed.
 
 
-</PRE><H3><a name="h3-Comparison-Options-_-d_-_-c_-_-n_">Comparison Options [-d] [-c] [-n]</a></H3><PRE>
+</PRE><H3><a name="h3-Comparison-Options_d_c_n_">Comparison Options [-d] [-c] [-n]</a></H3><PRE>
        <STRONG>infocmp</STRONG>  compares  the  <STRONG>terminfo</STRONG>  description  of  the  first  terminal
-       <EM>termname</EM>  with  each  of  the descriptions given by the entries for the
-       other terminal's <EM>termnames</EM>.  If a capability is defined for only one of
-       the   terminals,  the  value  returned  depends  on  the  type  of  the
-       capability:
+       <EM>terminal-type</EM>  with  each  of the descriptions given by the entries for
+       the other terminal's <EM>terminal-types</EM>.  If a capability  is  defined  for
+       only  one  of  the terminals, the value returned depends on the type of
+       the capability:
 
-       <STRONG>o</STRONG>   <STRONG>F</STRONG> for missing boolean variables
+       <STRONG>o</STRONG>   <STRONG>F</STRONG> for missing Boolean variables
 
        <STRONG>o</STRONG>   <STRONG>NULL</STRONG> for missing integer or string variables
 
             option to add the BSD-compatibility capabilities  (names  prefixed
             with "OT").
 
-            If  no  <EM>termnames</EM> are given, <STRONG>infocmp</STRONG> uses the environment variable
-            <STRONG>TERM</STRONG> for each of the <EM>termnames</EM>.
+            If  no  <EM>terminal-types</EM>  are  given,  <STRONG>infocmp</STRONG>  uses the environment
+            variable <EM>TERM</EM> for each of the <EM>terminal-types</EM>.
 
 
-</PRE><H3><a name="h3-Source-Listing-Options-_-I_-_-L_-_-C_-_-r_">Source Listing Options [-I] [-L] [-C] [-r]</a></H3><PRE>
+</PRE><H3><a name="h3-Source-Listing-Options_I_L_C_r_">Source Listing Options [-I] [-L] [-C] [-r]</a></H3><PRE>
        The <STRONG>-I</STRONG>, <STRONG>-L</STRONG>, and <STRONG>-C</STRONG> options will  produce  a  source  listing  for  each
        terminal named.
 
-            <STRONG>-I</STRONG>   use the <STRONG>terminfo</STRONG> names
-            <STRONG>-L</STRONG>   use the long C variable name listed in &lt;<STRONG>term.h</STRONG>&gt;
-            <STRONG>-C</STRONG>   use the <STRONG>termcap</STRONG> names
-            <STRONG>-r</STRONG>   when using <STRONG>-C</STRONG>, put out all capabilities in <STRONG>termcap</STRONG> form
-            <STRONG>-K</STRONG>   modifies the <STRONG>-C</STRONG> option, improving BSD-compatibility.
+                   <STRONG>-I</STRONG>   use <EM>terminfo</EM> capability codes
+                   <STRONG>-L</STRONG>   use "long" capability names
+                   <STRONG>-C</STRONG>   use <EM>termcap</EM> capability codes
+                   <STRONG>-r</STRONG>   with <STRONG>-C</STRONG>, include nonstandard capabilities
+                   <STRONG>-K</STRONG>   with <STRONG>-C</STRONG>, improve BSD compatibility
 
-       If  no  <EM>termnames</EM> are given, the environment variable <STRONG>TERM</STRONG> will be used
-       for the terminal name.
+       If  no  <EM>terminal-types</EM> are given, the environment variable <EM>TERM</EM> will be
+       used for the terminal name.
 
        The source produced by the <STRONG>-C</STRONG> option may be used directly as a  <STRONG>termcap</STRONG>
        entry,  but not all parameterized strings can be changed to the <STRONG>termcap</STRONG>
        Some  common  <STRONG>terminfo</STRONG>  parameter sequences, their <STRONG>termcap</STRONG> equivalents,
        and some terminal types which commonly have such sequences, are:
 
-           <STRONG>terminfo</STRONG>                    <STRONG>termcap</STRONG>   Representative Terminals
-           ---------------------------------------------------------------
-           <STRONG>%p1%c</STRONG>                       <STRONG>%.</STRONG>        adm
-           <STRONG>%p1%d</STRONG>                       <STRONG>%d</STRONG>        hp, ANSI standard, vt100
-           <STRONG>%p1%'x'%+%c</STRONG>                 <STRONG>%+x</STRONG>       concept
-           <STRONG>%i</STRONG>                          <STRONG>%i</STRONG>q       ANSI standard, vt100
-           <STRONG>%p1%?%'x'%&gt;%t%p1%'y'%+%;</STRONG>    <STRONG>%&gt;xy</STRONG>      concept
-           <STRONG>%p2</STRONG> is printed before <STRONG>%p1</STRONG>   <STRONG>%r</STRONG>        hp
+                 <STRONG><EM>terminfo</EM></STRONG>                   <STRONG><EM>termcap</EM></STRONG>   Terminal Types
+                 ----------------------------------------------------
+                 <STRONG>%p1%c</STRONG>                      <STRONG>%.</STRONG>        ansi-m
+                 <STRONG>%p1%d</STRONG>                      <STRONG>%d</STRONG>        ansi, vt100
+                 <STRONG>%p1%'</STRONG> <STRONG>'%+%c</STRONG>                <STRONG>%+x</STRONG>       vt52
+                 <STRONG>%i</STRONG>                         <STRONG>%iq</STRONG>       ansi, vt100
+                 <STRONG>%p1%?%'x'%&gt;%t%p1%'y'%+%;</STRONG>   <STRONG>%&gt;xy</STRONG>      annarbor4080
+                 <STRONG>%p2</STRONG>...<STRONG>%p1</STRONG>                  <STRONG>%r</STRONG>        hpgeneric
 
 
-</PRE><H3><a name="h3-Use_-Option-_-u_">Use= Option [-u]</a></H3><PRE>
+</PRE><H3><a name="h3-Use_Option_u_">Use= Option [-u]</a></H3><PRE>
        The <STRONG>-u</STRONG> option produces a  <STRONG>terminfo</STRONG>  source  description  of  the  first
-       terminal  <EM>termname</EM>  which  is  relative  to the sum of the descriptions
-       given by the entries for the other terminals <EM>termnames</EM>.  It  does  this
-       by  analyzing  the differences between the first <EM>termname</EM> and the other
-       <EM>termnames</EM> and producing a description with <STRONG>use=</STRONG> fields  for  the  other
-       terminals.  In this manner, it is possible to retrofit generic terminfo
-       entries into a terminal's description.  Or, if  two  similar  terminals
-       exist, but were coded at different times or by different people so that
-       each description is a full description, using <STRONG>infocmp</STRONG>  will  show  what
-       can be done to change one description to be relative to the other.
+       terminal <EM>terminal-type</EM> which is relative to the sum of the descriptions
+       given by the entries for the other <EM>terminal-types</EM>.   It  does  this  by
+       analyzing  the  differences  between  the  first <EM>terminal-types</EM> and the
+       other <EM>terminal-types</EM> and producing a description with <STRONG>use=</STRONG>  fields  for
+       the  other  terminals.   In  this  manner,  it  is possible to retrofit
+       generic terminfo entries into a terminal's  description.   Or,  if  two
+       similar  terminals  exist,  but  were  coded  at  different times or by
+       different people so that each description is a full description,  using
+       <STRONG>infocmp</STRONG>  will  show  what  can  be done to change one description to be
+       relative to the other.
 
        A capability will be printed with an at-sign (@) if it no longer exists
-       in the first <EM>termname</EM>, but one of the other <EM>termname</EM> entries contains a
-       value for it.  A capability's value will be printed if the value in the
-       first <EM>termname</EM> is not found in any of the other <EM>termname</EM> entries, or if
-       the  first of the other <EM>termname</EM> entries that has this capability gives
-       a different value for the capability than that in the first <EM>termname</EM>.
-
-       The order of the other <EM>termname</EM>  entries  is  significant.   Since  the
+       in  the first <EM>terminal-type</EM>, but one of the other <EM>terminal-type</EM> entries
+       contains a value for it.  A capability's value will be printed  if  the
+       value  in  the  first  <EM>terminal-type</EM>  is  not found in any of the other
+       <EM>terminal-type</EM> entries, or if  the  first  of  the  other  <EM>terminal-type</EM>
+       entries  that  has  this  capability  gives  a  different value for the
+       capability than that in the first <EM>terminal-type</EM>.
+
+       The order of the other <EM>terminal-type</EM> entries is significant.  Since the
        terminfo  compiler  <STRONG>tic</STRONG>  does a left-to-right scan of the capabilities,
        specifying two <STRONG>use=</STRONG> entries that contain differing entries for the same
        capabilities will produce different results depending on the order that
        the entries are given in.  <STRONG>infocmp</STRONG> will flag any  such  inconsistencies
-       between the other <EM>termname</EM> entries as they are found.
+       between the other <EM>terminal-type</EM> entries as they are found.
 
        Alternatively, specifying a capability <EM>after</EM> a <STRONG>use=</STRONG> entry that contains
        that capability will cause the  second  specification  to  be  ignored.
 
        Another  error  that  does not cause incorrect compiled files, but will
        slow down the compilation time, is specifying extra  <STRONG>use=</STRONG>  fields  that
-       are superfluous.  <STRONG>infocmp</STRONG> will flag any other <EM>termname</EM> <EM>use=</EM> fields that
-       were not needed.
+       are superfluous.  <STRONG>infocmp</STRONG> will flag any other <EM>terminal-type</EM> <EM>use=</EM> fields
+       that were not needed.
 
    <STRONG>Changing</STRONG> <STRONG>Databases</STRONG> <STRONG>[-A</STRONG> <EM>directory</EM>] [-B <EM>directory</EM>]
-       Like  other  <STRONG>ncurses</STRONG>  utilities,  <STRONG>infocmp</STRONG>  looks   for   the   terminal
-       descriptions   in  several  places.   You  can  use  the  <STRONG>TERMINFO</STRONG>  and
-       <STRONG>TERMINFO_DIRS</STRONG> environment variables to override the compiled-in default
-       list of places to search (see <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> for details).
+       Like  other  <EM>ncurses</EM>  utilities,  <STRONG>infocmp</STRONG>  looks   for   the   terminal
+       descriptions   in  several  places.   You  can  use  the  <EM>TERMINFO</EM>  and
+       <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> environment variables to override the compiled-in default
+       list  of  places  to  search.   See <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, as well as the <EM>Fetching</EM>
+       <EM>Compiled</EM> <EM>Descriptions</EM> section in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       You  can  also use the options <STRONG>-A</STRONG> and <STRONG>-B</STRONG> to override the list of places
+       You can also use the options <STRONG>-A</STRONG> and <STRONG>-B</STRONG> to override the list  of  places
        to search when comparing terminal descriptions:
 
-       <STRONG>o</STRONG>   The <STRONG>-A</STRONG> option sets the location for the first <EM>termname</EM>
+       <STRONG>o</STRONG>   The <STRONG>-A</STRONG> option sets the location for the first <EM>terminal-type</EM>
 
-       <STRONG>o</STRONG>   The <STRONG>-B</STRONG> option sets the location for the other <EM>termnames</EM>.
+       <STRONG>o</STRONG>   The <STRONG>-B</STRONG> option sets the location for the other <EM>terminal-types</EM>.
 
-       Using these options, it is  possible  to  compare  descriptions  for  a
-       terminal  with  the  same name located in two different databases.  For
-       instance, you can use this feature for comparing descriptions  for  the
+       Using  these  options,  it  is  possible  to compare descriptions for a
+       terminal with the same name located in two  different  databases.   For
+       instance,  you  can use this feature for comparing descriptions for the
        same terminal created by different people.
 
 
        <STRONG>-0</STRONG>   causes the fields to be printed on one line, without wrapping.
 
        <STRONG>-1</STRONG>   causes the fields to be printed out one to a line.  Otherwise, the
-            fields will be printed several to a line to a maximum width of  60
+            fields  will be printed several to a line to a maximum width of 60
             characters.
 
-       <STRONG>-a</STRONG>   tells  <STRONG>infocmp</STRONG>  to  retain  commented-out capabilities rather than
-            discarding them.  Capabilities are  commented  by  prefixing  them
+       <STRONG>-a</STRONG>   tells <STRONG>infocmp</STRONG> to retain  commented-out  capabilities  rather  than
+            discarding  them.   Capabilities  are  commented by prefixing them
             with a period.
 
        <STRONG>-D</STRONG>   tells <STRONG>infocmp</STRONG> to print the database locations that it knows about,
             and exit.
 
-       <STRONG>-E</STRONG>   Dump the capabilities of the given terminal as tables,  needed  in
-            the   C   initializer  for  a  TERMTYPE  structure  (the  terminal
-            capability structure in the <STRONG>&lt;term.h&gt;</STRONG>).  This option is useful  for
-            preparing  versions  of  the  curses library hardwired for a given
-            terminal type.  The tables are all declared static, and are  named
-            according  to  the type and the name of the corresponding terminal
+       <STRONG>-E</STRONG>   Dump  the  capabilities of the given terminal as tables, needed in
+            the  C  initializer  for  a  TERMTYPE  structure   (the   terminal
+            capability  structure in the <STRONG>&lt;term.h&gt;</STRONG>).  This option is useful for
+            preparing versions of the curses library  hardwired  for  a  given
+            terminal  type.  The tables are all declared static, and are named
+            according to the type and the name of the  corresponding  terminal
             entry.
 
-            Before ncurses 5.0, the split between the <STRONG>-e</STRONG> and  <STRONG>-E</STRONG>  options  was
-            not  needed;  but  support  for extended names required making the
-            arrays  of  terminal  capabilities  separate  from  the   TERMTYPE
+            Before  <EM>ncurses</EM>  5.0,  the split between the <STRONG>-e</STRONG> and <STRONG>-E</STRONG> options was
+            not needed; but support for extended  names  required  making  the
+            arrays   of  terminal  capabilities  separate  from  the  TERMTYPE
             structure.
 
        <STRONG>-e</STRONG>   Dump the capabilities of the given terminal as a C initializer for
-            a TERMTYPE structure (the terminal  capability  structure  in  the
-            <STRONG>&lt;term.h&gt;</STRONG>).   This  option  is useful for preparing versions of the
+            a  TERMTYPE  structure  (the  terminal capability structure in the
+            <STRONG>&lt;term.h&gt;</STRONG>).  This option is useful for preparing  versions  of  the
             curses library hardwired for a given terminal type.
 
        <STRONG>-F</STRONG>   compare terminfo files.  This assumes that two following arguments
-            are  filenames.   The  files  are  searched  for  pairwise matches
-            between entries, with two entries considered to match  if  any  of
-            their  names  do.   The  report  printed  to standard output lists
-            entries with no matches in the other file, and entries  with  more
-            than  one match.  For entries with exactly one match it includes a
-            difference report.  Normally, to reduce the volume of the  report,
-            use  references  are  not resolved before looking for differences,
+            are filenames.   The  files  are  searched  for  pairwise  matches
+            between  entries,  with  two entries considered to match if any of
+            their names do.  The  report  printed  to  standard  output  lists
+            entries  with  no matches in the other file, and entries with more
+            than one match.  For entries with exactly one match it includes  a
+            difference  report.  Normally, to reduce the volume of the report,
+            use references are not resolved before  looking  for  differences,
             but resolution can be forced by also specifying <STRONG>-r</STRONG>.
 
-       <STRONG>-f</STRONG>   Display complex terminfo strings which contain  if/then/else/endif
+       <STRONG>-f</STRONG>   Display  complex terminfo strings which contain if/then/else/endif
             expressions indented for readability.
 
-       <STRONG>-G</STRONG>   Display  constant  literals  in  decimal  form  rather  than their
+       <STRONG>-G</STRONG>   Display constant  literals  in  decimal  form  rather  than  their
             character equivalents.
 
-       <STRONG>-g</STRONG>   Display constant character literals in  quoted  form  rather  than
+       <STRONG>-g</STRONG>   Display  constant  character  literals  in quoted form rather than
             their decimal equivalents.
 
-       <STRONG>-i</STRONG>   Analyze  the  initialization (<STRONG>is1</STRONG>, <STRONG>is2</STRONG>, <STRONG>is3</STRONG>), and reset (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>,
-            <STRONG>rs3</STRONG>),  strings  in  the  entry,  as  well  as   those   used   for
-            starting/stopping  cursor-positioning  mode (<STRONG>smcup</STRONG>, <STRONG>rmcup</STRONG>) as well
+       <STRONG>-i</STRONG>   Analyze the initialization (<STRONG>is1</STRONG>, <STRONG>is2</STRONG>, <STRONG>is3</STRONG>), and reset  (<STRONG>rs1</STRONG>,  <STRONG>rs2</STRONG>,
+            <STRONG>rs3</STRONG>),   strings   in   the  entry,  as  well  as  those  used  for
+            starting/stopping cursor-positioning mode (<STRONG>smcup</STRONG>, <STRONG>rmcup</STRONG>)  as  well
             as starting/stopping keymap mode (<STRONG>smkx</STRONG>, <STRONG>rmkx</STRONG>).
 
-            For each string, the code tries to  analyze  it  into  actions  in
-            terms  of  the  other capabilities in the entry, certain X3.64/ISO
+            For  each  string,  the  code  tries to analyze it into actions in
+            terms of the other capabilities in the  entry,  certain  X3.64/ISO
             6429/ECMA-48 capabilities, and certain DEC VT-series private modes
-            (the  set  of  recognized  special sequences has been selected for
-            completeness over the existing terminfo  database).   Each  report
-            line  consists  of  the  capability  name, followed by a colon and
-            space, followed by a printable expansion of the capability  string
-            with   sections   matching   recognized  actions  translated  into
+            (the set of recognized special sequences  has  been  selected  for
+            completeness  over  the  existing terminfo database).  Each report
+            line consists of the capability name,  followed  by  a  colon  and
+            space,  followed by a printable expansion of the capability string
+            with  sections  matching  recognized   actions   translated   into
             {}-bracketed descriptions.
 
             Here is a list of the DEC/ANSI special sequences recognized:
 
-                         Action        Meaning
-                         -----------------------------------------
-                         RIS           full reset
-                         SC            save cursor
-                         RC            restore cursor
-                         LL            home-down
-                         RSR           reset scroll region
-                         -----------------------------------------
-                         DECSTR        soft reset (VT320)
-                         S7C1T         7-bit controls (VT220)
-                         -----------------------------------------
-
-                         ISO DEC G0    enable DEC graphics for G0
-                         ISO UK G0     enable UK chars for G0
-                         ISO US G0     enable US chars for G0
-                         ISO DEC G1    enable DEC graphics for G1
-                         ISO UK G1     enable UK chars for G1
-                         ISO US G1     enable US chars for G1
-                         -----------------------------------------
-                         DECPAM        application keypad mode
-                         DECPNM        normal keypad mode
-                         DECANSI       enter ANSI mode
-                         -----------------------------------------
-                         ECMA[+-]AM    keyboard action mode
-                         ECMA[+-]IRM   insert replace mode
-                         ECMA[+-]SRM   send receive mode
-                         ECMA[+-]LNM   linefeed mode
-                         -----------------------------------------
-                         DEC[+-]CKM    application cursor keys
-                         DEC[+-]ANM    set VT52 mode
-                         DEC[+-]COLM   132-column mode
-                         DEC[+-]SCLM   smooth scroll
-                         DEC[+-]SCNM   reverse video mode
-                         DEC[+-]OM     origin mode
-                         DEC[+-]AWM    wraparound mode
-                         DEC[+-]ARM    auto-repeat mode
-
-            It  also  recognizes  a  SGR  action  corresponding  to   ANSI/ISO
-            6429/ECMA  Set  Graphics  Rendition, with the values NORMAL, BOLD,
-            UNDERLINE, BLINK, and REVERSE.  All but  NORMAL  may  be  prefixed
-            with
-
-            <STRONG>o</STRONG>   "+" (turn on) or
-
-            <STRONG>o</STRONG>   "-" (turn off).
-
-            An  SGR0  designates  an  empty  highlight sequence (equivalent to
-            {SGR:NORMAL}).
+                      Action        Meaning
+                      -----------------------------------------
+                      RIS           full reset
+                      SC            save cursor
+                      RC            restore cursor
+                      LL            home-down
+                      RSR           reset scroll region
+                      -----------------------------------------
+
+                      DECSTR        soft reset (VT320)
+                      S7C1T         7-bit controls (VT220)
+                      -----------------------------------------
+                      ISO DEC G0    enable DEC graphics for G0
+                      ISO UK G0     enable UK chars for G0
+                      ISO US G0     enable US chars for G0
+                      ISO DEC G1    enable DEC graphics for G1
+                      ISO UK G1     enable UK chars for G1
+                      ISO US G1     enable US chars for G1
+                      -----------------------------------------
+                      DECPAM        application keypad mode
+                      DECPNM        normal keypad mode
+                      DECANSI       enter ANSI mode
+                      -----------------------------------------
+                      ECMA[+-]AM    keyboard action mode
+                      ECMA[+-]IRM   insert replace mode
+                      ECMA[+-]SRM   send receive mode
+                      ECMA[+-]LNM   linefeed mode
+                      -----------------------------------------
+                      DEC[+-]CKM    application cursor keys
+                      DEC[+-]ANM    set VT52 mode
+                      DEC[+-]COLM   132-column mode
+                      DEC[+-]SCLM   smooth scroll
+                      DEC[+-]SCNM   reverse video mode
+                      DEC[+-]OM     origin mode
+                      DEC[+-]AWM    wraparound mode
+                      DEC[+-]ARM    auto-repeat mode
+
+       It also recognizes a SGR action corresponding to ANSI/ISO 6429/ECMA Set
+       Graphics Rendition, with the values NORMAL, BOLD, UNDERLINE, BLINK, and
+       REVERSE.  All but NORMAL may be prefixed with
+
+              <STRONG>o</STRONG>   "+" (turn on) or
+
+              <STRONG>o</STRONG>   "-" (turn off).
+
+              An  SGR0  designates  an empty highlight sequence (equivalent to
+              {SGR:NORMAL}).
 
        <STRONG>-l</STRONG>   Set output format to terminfo.
 
                3  hexadecimal and base64
 
             For example, this prints the compiled terminfo value as  a  string
-            which could be assigned to the <STRONG>TERMINFO</STRONG> environment variable:
+            which could be assigned to the <EM>TERMINFO</EM> environment variable:
 
                 infocmp -0 -q -Q2
 
                 "AIX"; see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details.
 
             <STRONG>o</STRONG>   You  can  also  choose  the  subset  "BSD"  which selects only
-                capabilities with termcap equivalents  recognized  by  4.4BSD.
-                The <STRONG>-C</STRONG> option sets the "BSD" subset as a side-effect.
+                capabilities with termcap equivalents recognized by 4.4BSD.
+
+            <STRONG>o</STRONG>   If you select any other value for <STRONG>-R</STRONG>, it is  the  same  as  no
+                subset, i.e., all capabilities are used.
+
+            A  few  options  override the subset selected with <STRONG>-R</STRONG>, if they are
+            processed later in the command parameters:
+
+            <STRONG>-C</STRONG>   sets the "BSD" subset as a side-effect.
 
-            <STRONG>o</STRONG>   If  you  select  any  other value for <STRONG>-R</STRONG>, it is the same as no
-                subset, i.e.,  all  capabilities  are  used.   The  <STRONG>-I</STRONG>  option
-                likewise selects no subset as a side-effect.
+            <STRONG>-I</STRONG>   sets the subset to all capabilities.
+
+            <STRONG>-r</STRONG>   sets the subset to all capabilities.
 
        <STRONG>-s</STRONG> <EM>[d|i|l|c]</EM>
-            The  <STRONG>-s</STRONG>  option sorts the fields within each type according to the
+            The <STRONG>-s</STRONG> option sorts the fields within each type according  to  the
             argument below:
 
-            <STRONG>d</STRONG>    leave fields in  the  order  that  they  are  stored  in  the
+            <STRONG>d</STRONG>    leave  fields  in  the  order  that  they  are  stored in the
                  <EM>terminfo</EM> database.
 
             <STRONG>i</STRONG>    sort by <EM>terminfo</EM> name.
 
             <STRONG>c</STRONG>    sort by the <EM>termcap</EM> name.
 
-            If  the  <STRONG>-s</STRONG>  option  is  not given, the fields printed out will be
-            sorted alphabetically by  the  <STRONG>terminfo</STRONG>  name  within  each  type,
-            except  in  the  case of the <STRONG>-C</STRONG> or the <STRONG>-L</STRONG> options, which cause the
-            sorting to be done by the <STRONG>termcap</STRONG> name  or  the  long  C  variable
+            If the <STRONG>-s</STRONG> option is not given, the  fields  printed  out  will  be
+            sorted  alphabetically  by  the  <STRONG>terminfo</STRONG>  name  within each type,
+            except in the case of the <STRONG>-C</STRONG> or the <STRONG>-L</STRONG> options,  which  cause  the
+            sorting  to  be  done  by  the <STRONG>termcap</STRONG> name or the long C variable
             name, respectively.
 
-       <STRONG>-T</STRONG>   eliminates  size-restrictions  on  the  generated  text.   This is
+       <STRONG>-T</STRONG>   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
             terminfo).
 
-       <STRONG>-t</STRONG>   tells <STRONG>tic</STRONG> to discard commented-out  capabilities.   Normally  when
-            translating  from terminfo to termcap, untranslatable capabilities
+       <STRONG>-t</STRONG>   tells  <STRONG>tic</STRONG>  to  discard commented-out capabilities.  Normally when
+            translating from terminfo to termcap, untranslatable  capabilities
             are commented-out.
 
-       <STRONG>-U</STRONG>   tells <STRONG>infocmp</STRONG> to not  post-process  the  data  after  parsing  the
+       <STRONG>-U</STRONG>   tells  <STRONG>infocmp</STRONG>  to  not  post-process  the  data after parsing the
             source  file.   This  feature  helps  when  comparing  the  actual
-            contents of two source files, since  it  excludes  the  inferences
+            contents  of  two  source  files, since it excludes the inferences
             that <STRONG>infocmp</STRONG> makes to fill in missing data.
 
-       <STRONG>-V</STRONG>   reports the version of ncurses which was used in this program, and
+       <STRONG>-V</STRONG>   reports the version of <EM>ncurses</EM> which was used in this program, and
             exits.
 
-       <STRONG>-v</STRONG> <EM>n</EM> prints out tracing information on standard error  as  the  program
+       <STRONG>-v</STRONG> <EM>n</EM> prints  out  tracing  information on standard error as the program
             runs.
 
-            The  optional  parameter  <EM>n</EM>  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
+            The optional parameter <EM>n</EM> is a number  from  1  to  10,  inclusive,
+            indicating the desired level of detail of information.  If <EM>ncurses</EM>
+            is built  without  tracing  support,  the  optional  parameter  is
             ignored.
 
-       <STRONG>-W</STRONG>   By itself, the <STRONG>-w</STRONG>  option  will  not  force  long  strings  to  be
+       <STRONG>-W</STRONG>   By  itself,  the  <STRONG>-w</STRONG>  option  will  not  force  long strings to be
             wrapped.  Use the <STRONG>-W</STRONG> option to do this.
 
        <STRONG>-w</STRONG> <EM>width</EM>
             changes the output to <EM>width</EM> characters.
 
-       <STRONG>-x</STRONG>   print information for user-defined capabilities (see <STRONG>user_caps(5)</STRONG>.
-            These are extensions to  the  terminfo  repertoire  which  can  be
+       <STRONG>-x</STRONG>   print information for user-defined capabilities (see <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
+            These  are  extensions  to  the  terminfo  repertoire which can be
             loaded using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>.
 
 
 </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       /usr/share/terminfo Compiled terminal description database.
+       <EM>/usr/share/terminfo</EM>
+              compiled terminal description database
+
+
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       The <STRONG>-0</STRONG>, <STRONG>-1</STRONG>, <STRONG>-E</STRONG>, <STRONG>-F</STRONG>, <STRONG>-G</STRONG>, <STRONG>-Q</STRONG>, <STRONG>-R</STRONG>, <STRONG>-T</STRONG>, <STRONG>-V</STRONG>, <STRONG>-a</STRONG>, <STRONG>-e</STRONG>, <STRONG>-f</STRONG>, <STRONG>-g</STRONG>, <STRONG>-i</STRONG>, <STRONG>-l</STRONG>, <STRONG>-p</STRONG>,  <STRONG>-q</STRONG>
+       and <STRONG>-t</STRONG> options are not supported in SVr4 curses.
+
+       SVr4   infocmp  does  not  distinguish  between  absent  and  cancelled
+       capabilities.  Also, it shows missing integer capabilities as  <STRONG>-1</STRONG>  (the
+       internal   value   used   to   represent   missing   integers).    This
+       implementation shows those as  "NULL",  for  consistency  with  missing
+       strings.
+
+       The  <STRONG>-r</STRONG>  option's  notion of "termcap" capabilities is System V Release
+       4's.  Actual BSD curses versions will have a more restricted  set.   To
+       see only the 4.4BSD set, use <STRONG>-r</STRONG> <STRONG>-RBSD</STRONG>.
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       X/Open  Curses,  Issue  7 (2009) provides a description of <STRONG>infocmp</STRONG>.  It
+       does not mention the options used for converting to termcap format.
 
 
 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       Although  System  V  Release  2  provided a terminfo library, it had no
+       Although System V Release 2 provided a  terminfo  library,  it  had  no
        documented tool for decompiling the terminal descriptions.  Tony Hansen
        (AT&amp;T) wrote the first <STRONG>infocmp</STRONG> in early 1984, for System V Release 3.
 
-       Eric  Raymond  used  the  AT&amp;T  documentation  in  1995  to  provide an
-       equivalent <STRONG>infocmp</STRONG> for ncurses.   In  addition,  he  added  a  few  new
+       Eric Raymond  used  the  AT&amp;T  documentation  in  1995  to  provide  an
+       equivalent  <STRONG>infocmp</STRONG>  for  <EM>ncurses</EM>.   In  addition,  he  added a few new
        features such as:
 
-       <STRONG>o</STRONG>   the   <STRONG>-e</STRONG>   option,   to  support  <EM>fallback</EM>  (compiled-in)  terminal
+       <STRONG>o</STRONG>   the  <STRONG>-e</STRONG>  option,  to  support   <EM>fallback</EM>   (compiled-in)   terminal
            descriptions
 
        <STRONG>o</STRONG>   the <STRONG>-i</STRONG> option, to help with analysis
 
-       Later, Thomas Dickey added the <STRONG>-x</STRONG> (user-defined  capabilities)  option,
-       and  the  <STRONG>-E</STRONG>  option  to  support  fallback  entries  with user-defined
+       Later,  Thomas  Dickey added the <STRONG>-x</STRONG> (user-defined capabilities) option,
+       and the  <STRONG>-E</STRONG>  option  to  support  fallback  entries  with  user-defined
        capabilities.
 
        For a complete list, see the <EM>EXTENSIONS</EM> section.
 
-       In 2010, Roy Marples provided an <STRONG>infocmp</STRONG> program  for  NetBSD.   It  is
-       less  capable  than  the  SVr4  or ncurses versions (e.g., it lacks the
-       sorting options documented in X/Open), but does include the  <STRONG>-x</STRONG>  option
-       adapted from ncurses.
-
-
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       X/Open  Curses,  Issue  7 (2009) provides a description of <STRONG>infocmp</STRONG>.  It
-       does not mention the options used for converting to termcap format.
-
-
-</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
-       The <STRONG>-0</STRONG>, <STRONG>-1</STRONG>, <STRONG>-E</STRONG>, <STRONG>-F</STRONG>, <STRONG>-G</STRONG>, <STRONG>-Q</STRONG>, <STRONG>-R</STRONG>, <STRONG>-T</STRONG>, <STRONG>-V</STRONG>, <STRONG>-a</STRONG>, <STRONG>-e</STRONG>, <STRONG>-f</STRONG>, <STRONG>-g</STRONG>, <STRONG>-i</STRONG>, <STRONG>-l</STRONG>, <STRONG>-p</STRONG>,  <STRONG>-q</STRONG>
-       and <STRONG>-t</STRONG> options are not supported in SVr4 curses.
-
-       SVr4   infocmp  does  not  distinguish  between  absent  and  cancelled
-       capabilities.  Also, it shows missing integer capabilities as  <STRONG>-1</STRONG>  (the
-       internal   value   used   to   represent   missing   integers).    This
-       implementation shows those as  "NULL",  for  consistency  with  missing
-       strings.
-
-       The  <STRONG>-r</STRONG>  option's  notion of "termcap" capabilities is System V Release
-       4's.  Actual BSD curses versions will have a more restricted  set.   To
-       see only the 4.4BSD set, use <STRONG>-r</STRONG> <STRONG>-RBSD</STRONG>.
+       In  2010,  Roy  Marples  provided an <STRONG>infocmp</STRONG> program for NetBSD.  It is
+       less capable than the SVr4 or <EM>ncurses</EM>  versions  (e.g.,  it  lacks  the
+       sorting  options  documented in X/Open), but does include the <STRONG>-x</STRONG> option
+       adapted from <EM>ncurses</EM>.
 
 
 </PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
        The <STRONG>-F</STRONG> option of <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> should be a <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG> mode.
 
 
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
+       Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
+
+
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,    <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,    <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>,    <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,    <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
-       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.  <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
+       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
 
        https://invisible-island.net/ncurses/tctest.html
 
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
-
-
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
-       Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
 
 
-
-                                                                   <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
+ncurses 6.5                       2024-03-16                       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
 <li><a href="#h3-Default-Options">Default Options</a></li>
-<li><a href="#h3-Comparison-Options-_-d_-_-c_-_-n_">Comparison Options [-d] [-c] [-n]</a></li>
-<li><a href="#h3-Source-Listing-Options-_-I_-_-L_-_-C_-_-r_">Source Listing Options [-I] [-L] [-C] [-r]</a></li>
-<li><a href="#h3-Use_-Option-_-u_">Use= Option [-u]</a></li>
+<li><a href="#h3-Comparison-Options_d_c_n_">Comparison Options [-d] [-c] [-n]</a></li>
+<li><a href="#h3-Source-Listing-Options_I_L_C_r_">Source Listing Options [-I] [-L] [-C] [-r]</a></li>
+<li><a href="#h3-Use_Option_u_">Use= Option [-u]</a></li>
 <li><a href="#h3-Other-Options">Other Options</a></li>
 </ul>
 </li>
 <li><a href="#h2-FILES">FILES</a></li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
-<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index 1ea690cbe81226cd9198bbc44f25c37c169fca8b..4213f69428fe8574ef9f59471d01d06c3f0243c4 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1999-2010,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: infotocap.1m,v 1.20 2022/02/12 20:02:20 tom Exp @
+  * @Id: infotocap.1m,v 1.41 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>infotocap 1m</TITLE>
+<TITLE>infotocap 1m 2024-03-16 ncurses 6.5 User commands</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">infotocap 1m</H1>
+<H1 class="no-header">infotocap 1m 2024-03-16 ncurses 6.5 User commands</H1>
 <PRE>
-<STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>                                                    <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>
+<STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>                    User commands                   <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>
 
 
 
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>infotocap</STRONG> [<STRONG>-v</STRONG><EM>n</EM> <EM>width</EM>]  [<STRONG>-V</STRONG>] [<STRONG>-1</STRONG>] [<STRONG>-w</STRONG> <EM>width</EM>] <EM>file</EM> ...
+       <STRONG>infotocap</STRONG> [<EM>tic-option</EM>] <EM>file</EM> ...
 
+       <STRONG>infotocap</STRONG> <STRONG>-V</STRONG>
 
-</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       <STRONG>infotocap</STRONG> looks in each given text <EM>file</EM> for <STRONG>terminfo</STRONG> descriptions.  For
-       each terminfo description found, an equivalent <STRONG>termcap</STRONG>  description  is
-       written  to  standard output.  Terminfo <STRONG>use</STRONG> capabilities are translated
-       directly to termcap <STRONG>tc</STRONG> capabilities.
-
-       <STRONG>-v</STRONG>   print out tracing information on standard  error  as  the  program
-            runs.
 
-       <STRONG>-V</STRONG>   print  out the version of the program in use on standard error and
-            exit.
-
-       <STRONG>-1</STRONG>   cause the fields to print out  one  to  a  line.   Otherwise,  the
-            fields  will be printed several to a line to a maximum width of 60
-            characters.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       <STRONG>infotocap</STRONG>  translates  terminal  descriptions.   It looks in each given
+       text <EM>file</EM> for <EM>terminfo</EM> entries and, For each one found,  it  writes  an
+       analogous  <EM>termcap</EM> description to the standard output stream.  <EM>terminfo</EM>
+       "<STRONG>use</STRONG>" capabilities  translate  to  <EM>termcap</EM>  <STRONG>tc</STRONG>  capabilities.   Because
+       <EM>termcap</EM>  is  a  less expressive format than <EM>terminfo</EM>, some capabilities
+       cannot be translated.
 
-       <STRONG>-w</STRONG>   change the output to <EM>width</EM> characters.
+       This utility is implemented as a link to <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, with the latter's  <STRONG>-C</STRONG>
+       option  implied.  You can use other <STRONG>tic</STRONG> options such as <STRONG>-1</STRONG>, <STRONG>-f</STRONG>, <STRONG>-v</STRONG>, <STRONG>-w</STRONG>,
+       and <STRONG>-x</STRONG>.  The <STRONG>-V</STRONG> option reports the version of <EM>ncurses</EM>  associated  with
+       this program and exits with a successful status.
 
 
 </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       /usr/share/terminfo Compiled terminal description database.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       This utility is actually a link to <STRONG>tic</STRONG>, running in <EM>-C</EM>  mode.   You  can
-       use other <STRONG>tic</STRONG> options such as <STRONG>-f</STRONG> and  <STRONG>-x</STRONG>.
+       <EM>/usr/share/terminfo</EM>
+              compiled terminal description database
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       None  of  X/Open  Curses,  Issue 7 (2009), SVr4 or NetBSD document this
+       None  of  X/Open  Curses, Issue 7 (2009), SVr4, or NetBSD document this
        application.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
-
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
-
-
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
        Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-FILES">FILES</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index f39d3264ac44511a6d0b64ccd0d74db976786756..453decfdb758087d678431286f0f532f640523f3 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2003-2006,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 2003
-  * @Id: key_defined.3x,v 1.13 2022/02/12 20:03:40 tom Exp @
+  * @Id: key_defined.3x,v 1.34 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>key_defined 3x</TITLE>
+<TITLE>key_defined 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">key_defined 3x</H1>
+<H1 class="no-header">key_defined 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>                                                <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
+<STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>key_defined</STRONG> - check if a keycode is defined
+       <STRONG>key_defined</STRONG> - test whether a <EM>curses</EM> keycode is defined
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -58,7 +58,7 @@
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This  is an extension to the curses library.  It permits an application
+       This  is an extension to the <EM>curses</EM> library.  It permits an application
        to determine if a string is currently bound to any keycode.
 
 
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines are specific to ncurses.  They  were  not  supported  on
-       Version 7, BSD or System V implementations.  It is recommended that any
-       code depending on them be conditioned using NCURSES_VERSION.
+       This routine is specific to <EM>ncurses</EM>.  It was not supported  on  Version
+       7,  BSD  or  System V implementations.  It is recommended that any code
+       depending on them be conditioned using <STRONG>NCURSES_VERSION</STRONG>.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Thomas Dickey
 
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Thomas Dickey.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
 
 
 
-                                                               <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                   <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
@@ -92,8 +92,8 @@
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index f605c1b10caf6e9fb02112bb5dd96603e5b4979a..e926e77c6acb9cc16187ac48bf1af45d9575d77a 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1999-2008,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1999
-  * @Id: keybound.3x,v 1.14 2022/02/12 20:03:40 tom Exp @
+  * @Id: keybound.3x,v 1.36 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>keybound 3x</TITLE>
+<TITLE>keybound 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">keybound 3x</H1>
+<H1 class="no-header">keybound 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>                                                      <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>
+<STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>                     Library calls                    <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>keybound</STRONG> - return definition of keycode
+       <STRONG>keybound</STRONG> - get definition of <EM>curses</EM> keycode
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>keybound(int</STRONG> <EM>keycode</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>count);</EM>
+       <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>keybound(int</STRONG> <EM>keycode</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>count</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This  is an extension to the curses library.  It permits an application
+       This  is an extension to the <EM>curses</EM> library.  It permits an application
        to determine the string which is defined in the terminfo  for  specific
        keycodes.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       The <EM>keycode</EM> parameter must be greater than zero, else NULL is returned.
-       If it does not correspond to a defined key, then NULL is returned.  The
+       The <EM>keycode</EM> parameter must be greater than zero, else <STRONG>NULL</STRONG> is returned.
+       If it does not correspond to a defined key, then <STRONG>NULL</STRONG> is returned.  The
        <EM>count</EM>  parameter  is  used  to allow the application to iterate through
        multiple  definitions,  counting  from  zero.   When  successful,   the
        function returns a string which must be freed by the caller.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  are  specific  to ncurses.  They were not supported on
-       Version 7, BSD or System V implementations.  It is recommended that any
-       code depending on them be conditioned using NCURSES_VERSION.
+       This  routine  is specific to <EM>ncurses</EM>.  It was not supported on Version
+       7, BSD or System V implementations.  It is recommended  that  any  code
+       depending on them be conditioned using <STRONG>NCURSES_VERSION</STRONG>.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Thomas Dickey
 
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Thomas Dickey.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
 
 
 
-                                                                  <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                      <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
@@ -95,8 +95,8 @@
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index dbb3f0c1cca1d94d056d81801e032a61bc63ef9b..f94f82f49db10a6270efa9849a42725cfcc226aa 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1997
-  * @Id: keyok.3x,v 1.19 2022/02/12 20:03:40 tom Exp @
+  * @Id: keyok.3x,v 1.40 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>keyok 3x</TITLE>
+<TITLE>keyok 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">keyok 3x</H1>
+<H1 class="no-header">keyok 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>                                                            <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
+<STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>                        Library calls                       <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>keyok</STRONG> - enable or disable a keycode
+       <STRONG>keyok</STRONG> - enable or disable a <EM>curses</EM> keycode
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -58,7 +58,7 @@
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This  is an extension to the curses library.  It permits an application
+       This  is an extension to the <EM>curses</EM> library.  It permits an application
        to disable specific keycodes, rather than use the  <STRONG>keypad</STRONG>  function  to
        disable all keycodes.  Keys that have been disabled can be re-enabled.
 
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines are specific to ncurses.  They  were  not  supported  on
-       Version 7, BSD or System V implementations.  It is recommended that any
-       code depending on them be conditioned using NCURSES_VERSION.
+       This routine is specific to <EM>ncurses</EM>.  It was not supported  on  Version
+       7,  BSD  or  System V implementations.  It is recommended that any code
+       depending on them be conditioned using <STRONG>NCURSES_VERSION</STRONG>.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Thomas Dickey
 
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Thomas Dickey.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
 
 
 
-                                                                     <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                         <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
@@ -94,8 +94,8 @@
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index c4aa0965ad259f236e105db0e8f5eec20ddac5e2..f7b41ba9996bba9cf250c2b224a5a3c04b2d2332 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2020-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2020-2023,2024 Thomas E. Dickey                                *
   * Copyright 2005-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey
-  * @Id: legacy_coding.3x,v 1.11 2022/02/12 20:07:56 tom Exp @
+  * @Id: legacy_coding.3x,v 1.28 2024/04/20 19:13:50 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>legacy_coding 3x</TITLE>
+<TITLE>legacy_coding 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">legacy_coding 3x</H1>
+<H1 class="no-header">legacy_coding 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>                                            <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
+<STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>                Library calls               <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>use_legacy_coding</STRONG> - override locale-encoding checks
+       <STRONG>use_legacy_coding</STRONG> - override <EM>curses</EM> locale encoding checks
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The  <STRONG>use_legacy_coding</STRONG>  function is an extension to the curses library.
-       It allows the caller to change  the  result  of  <STRONG>unctrl</STRONG>,  and  suppress
-       related checks within the library that would normally cause nonprinting
-       characters to be rendered in visible form.   This  affects  only  8-bit
-       characters.
+       <STRONG>use_legacy_coding</STRONG> is an extension to the <EM>curses</EM> library.  It allows the
+       caller to change the result of <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>, suppressing <STRONG>isprint(3)</STRONG>-based
+       checks  within  the  library  that  would  normally  cause  nonprinting
+       characters to be rendered in visible form.  The alteration affects only
+       eight-bit characters.
 
-       The <EM>level</EM> parameter controls the result:
+       The <EM>level</EM> parameter controls the result.
 
-              0    the   library  functions  normally,  rendering  nonprinting
-                   characters as described in <STRONG>unctrl</STRONG>.
+              <STRONG>0</STRONG>    The   library  functions  normally,  rendering  nonprinting
+                   characters as described in <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>,
 
-              1    the  library  ignores  <STRONG>isprintf</STRONG>  for  codes  in  the  range
-                   160-255.
+              <STRONG>1</STRONG>    the library ignores <EM>isprint</EM> for codes in the range 160-255.
 
-              2    the  library  ignores  <STRONG>isprintf</STRONG>  for  codes  in  the  range
-                   128-255.  It also modifies the output  of  <STRONG>unctrl</STRONG>,  showing
-                   codes in the range 128-159 as is.
+              <STRONG>2</STRONG>    the library ignores <EM>isprint</EM> for codes in the range 128-255.
+                   It also modifies the output of <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>, showing codes in
+                   the range 128-159 as is.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       If  the  screen has not been initialized, or the <EM>level</EM> parameter is out
-       of range, the function returns <STRONG>ERR</STRONG>.  Otherwise, it returns the previous
-       level: <STRONG>0</STRONG>, <STRONG>1</STRONG> or <STRONG>2</STRONG>.
+       If the screen has not been initialized, or the <EM>level</EM> parameter  is  out
+       of  range,  <STRONG>use_legacy_coding</STRONG>  returns  <STRONG>ERR</STRONG>.  Otherwise, it returns the
+       previous level: <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG>.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       This  routine  is specific to ncurses.  It was not supported on Version
-       7, BSD or System V implementations.  It is recommended  that  any  code
-       depending on ncurses extensions be conditioned using NCURSES_VERSION.
+       <STRONG>use_legacy_coding</STRONG> is specific to <EM>ncurses</EM>.   It  was  not  supported  on
+       Version  7,  BSD  or  System V implementations.  Applications employing
+       <EM>ncurses</EM> extensions should condition their use on the visibility of  the
+       <STRONG>NCURSES_VERSION</STRONG> preprocessor macro.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Thomas Dickey (to support <STRONG>lynx(1)</STRONG>'s font-switching feature).
 
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Thomas Dickey (to support lynx's font-switching feature).
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>
 
 
 
-                                                             <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                 <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index a8f2c96175bcd0c10b688ee727d4bd6f86da4919..a499cf1adbd7a48fa83e68a34b2537c9ff993cda 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2014,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu.3x,v 1.29 2021/12/25 21:49:32 tom Exp @
+  * @Id: menu.3x,v 1.45 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu 3x</TITLE>
+<TITLE>menu 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu 3x</H1>
+<H1 class="no-header">menu 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>                                                              <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+<STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>                         Library calls                        <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
 
 
 
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  files
-       <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>.
-
-       In your library list, libmenu.a should be before libncurses.a; that is,
-       you should say "-lmenu -lncurses", not  the  other  way  around  (which
-       would give a link-error when using static libraries).
+       The header file <EM>menu.h</EM> itself includes the header file <EM>curses.h</EM>.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  menu  library.  They were not
+       These routines emulate the  System  V  menu  library.   They  were  not
        supported on Version 7 or BSD versions.
 
-       The menu facility was documented in SVr4.2 in <EM>Character</EM> <EM>User</EM>  <EM>Interface</EM>
-       <EM>Programming</EM> <EM>(UNIX</EM> <EM>SVR4.2)</EM>.
+       A  menu  facility  was  documented in SVr4.2's <EM>Character</EM> <EM>User</EM> <EM>Interface</EM>
+       <EM>Programming</EM> document.
 
        It is not part of X/Open Curses.
 
-       Aside from ncurses, there are few implementations:
+       Aside from <EM>ncurses</EM>, there are few implementations:
 
        <STRONG>o</STRONG>   systems based on SVr4 source code, e.g., Solaris.
 
 
 
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
-       Juergen  Pfeifer.   Manual  pages and adaptation for ncurses by Eric S.
+       Juergen Pfeifer.  Manual pages and adaptation for <EM>ncurses</EM>  by  Eric  S.
        Raymond.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names  begin  "menu_"  for  detailed
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "menu_" for detailed
        descriptions of the entry points.
 
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
-
 
 
-                                                                      <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                          <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
index 62252e0a8789e586fac977c103b7a428986b0a22..3b3f6ea5e2e8b39a15c8b0adcc08c323bf959413 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_attributes.3x,v 1.22 2022/02/12 20:05:11 tom Exp @
+  * @Id: menu_attributes.3x,v 1.36 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_attributes 3x</TITLE>
+<TITLE>menu_attributes 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_attributes 3x</H1>
+<H1 class="no-header">menu_attributes 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>                                        <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
+<STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>              Library calls             <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
 
 
 
             Routine detected an incorrect or out-of-range argument.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "menu_" for detailed
-       descriptions of the entry points.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "menu_" for detailed
+       descriptions of the entry points.
+
 
-                                                           <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
+
+ncurses 6.5                       2024-03-16               <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 8f28ca1a3d6308655f8b5a1a7d32bbd6e6348bb7..0003bcdbd4b41929db636d9bb4cbb1abc711f3ad 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_cursor.3x,v 1.16 2022/02/12 20:05:11 tom Exp @
+  * @Id: menu_cursor.3x,v 1.30 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_cursor 3x</TITLE>
+<TITLE>menu_cursor 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_cursor 3x</H1>
+<H1 class="no-header">menu_cursor 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>                                                <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>
+<STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>
 
 
 
             The menu has not been posted.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  menu  library.  They were not
+       These routines emulate the  System  V  menu  library.   They  were  not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                               <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                   <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index df2fbe819c3b35c7e16a4b4f748f3bead58acfcb..d82a7f5cedeeb09c3ed44d1f51cf7620a3e3dc06 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_driver.3x,v 1.31 2022/02/12 20:05:11 tom Exp @
+  * @Id: menu_driver.3x,v 1.47 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_driver 3x</TITLE>
+<TITLE>menu_driver 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_driver 3x</H1>
+<H1 class="no-header">menu_driver 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>                                                <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>
+<STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>
 
 
 
        corresponding action is performed.
 
 
-</PRE><H3><a name="h3-MOUSE-HANDLING">MOUSE HANDLING</a></H3><PRE>
+</PRE><H3><a name="h3-Mouse-Handling">Mouse Handling</a></H3><PRE>
        If  the  second  argument  is the KEY_MOUSE special key, the associated
        mouse event is translated into one of the above  pre-defined  requests.
        Currently only clicks in the user window (e.g., inside the menu display
        translated into a menu request an <STRONG>E_REQUEST_DENIED</STRONG> is returned.
 
 
-</PRE><H3><a name="h3-APPLICATION-DEFINED-COMMANDS">APPLICATION-DEFINED COMMANDS</a></H3><PRE>
+</PRE><H3><a name="h3-Application-defined-Commands">Application-defined Commands</a></H3><PRE>
        If the second argument is neither printable nor one of the  above  pre-
        defined  menu  requests  or  KEY_MOUSE,  the  drive  assumes  it  is an
        application-specific    command    and    returns    <STRONG>E_UNKNOWN_COMMAND</STRONG>.
             The menu driver could not process the request.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  files
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  menu  library.  They were not
-       supported on Version 7 or BSD versions.  The support for  mouse  events
-       is ncurses specific.
+       These routines emulate the  System  V  menu  library.   They  were  not
+       supported  on  Version 7 or BSD versions.  The support for mouse events
+       is <EM>ncurses</EM> specific.
 
 
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                               <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                   <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-MOUSE-HANDLING">MOUSE HANDLING</a></li>
-<li><a href="#h3-APPLICATION-DEFINED-COMMANDS">APPLICATION-DEFINED COMMANDS</a></li>
+<li><a href="#h3-Mouse-Handling">Mouse Handling</a></li>
+<li><a href="#h3-Application-defined-Commands">Application-defined Commands</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 8b70d01328465fdeef1bf3090984716d41399d1e..ddd934cfbfbde755865609164a5d219803133384 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_format.3x,v 1.21 2022/02/12 20:05:11 tom Exp @
+  * @Id: menu_format.3x,v 1.35 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_format 3x</TITLE>
+<TITLE>menu_format 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_format 3x</H1>
+<H1 class="no-header">menu_format 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>                                                <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>
+<STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>
 
 
 
             No items are connected to the menu.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                               <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                   <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 88bb67d40bdeab22e3fe86330ddabb8659a8043d..ca1810c27ea938d90745b649c209d8a9a2920dca 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2007,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_hook.3x,v 1.18 2022/02/12 20:05:11 tom Exp @
+  * @Id: menu_hook.3x,v 1.32 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_hook 3x</TITLE>
+<TITLE>menu_hook 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_hook 3x</H1>
+<H1 class="no-header">menu_hook 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>                                                    <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>
+<STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>
 
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>set_item_init(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func);</EM>
-       <STRONG>Menu_Hook</STRONG> <STRONG>item_init(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu);</EM>
+       <STRONG>int</STRONG> <STRONG>set_item_init(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func</EM><STRONG>);</STRONG>
+       <STRONG>Menu_Hook</STRONG> <STRONG>item_init(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>set_item_term(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func);</EM>
-       <STRONG>Menu_Hook</STRONG> <STRONG>item_term(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu);</EM>
+       <STRONG>int</STRONG> <STRONG>set_item_term(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func</EM><STRONG>);</STRONG>
+       <STRONG>Menu_Hook</STRONG> <STRONG>item_term(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>set_menu_init(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func);</EM>
-       <STRONG>Menu_Hook</STRONG> <STRONG>menu_init(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu);</EM>
+       <STRONG>int</STRONG> <STRONG>set_menu_init(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func</EM><STRONG>);</STRONG>
+       <STRONG>Menu_Hook</STRONG> <STRONG>menu_init(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>set_menu_term(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func);</EM>
-       <STRONG>Menu_Hook</STRONG> <STRONG>menu_term(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu);</EM>
+       <STRONG>int</STRONG> <STRONG>set_menu_term(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func</EM><STRONG>);</STRONG>
+       <STRONG>Menu_Hook</STRONG> <STRONG>menu_term(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  menu  library.  They were not
+       These routines emulate the  System  V  menu  library.   They  were  not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 3e9791a1f988ccc2361dc2422a5270415a0b45a0..7f1c08249ccee50c5ca2df965762abe74074803b 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2012,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_items.3x,v 1.20 2022/02/12 20:05:11 tom Exp @
+  * @Id: menu_items.3x,v 1.34 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_items 3x</TITLE>
+<TITLE>menu_items 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_items 3x</H1>
+<H1 class="no-header">menu_items 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>                                                  <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>
+<STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  menu  library.  They were not
+       These routines emulate the  System  V  menu  library.   They  were  not
        supported on Version 7 or BSD versions.
 
-       The SVr4 menu library  documentation  specifies  the  <STRONG>item_count</STRONG>  error
+       The  SVr4  menu  library  documentation  specifies the <STRONG>item_count</STRONG> error
        value as -1 (which is the value of <STRONG>ERR</STRONG>).
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                                <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                    <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 996069ad8785b7164b4471a1a1bbf734e014489a..1cdb2b051b10981189f55ee744f0cc7a3c948739 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_mark.3x,v 1.21 2022/02/12 20:02:20 tom Exp @
+  * @Id: menu_mark.3x,v 1.35 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_mark 3x</TITLE>
+<TITLE>menu_mark 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_mark 3x</H1>
+<H1 class="no-header">menu_mark 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>                                                    <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>
+<STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index ad6a2b97bcd56713bbca19ffb391e2d0d58a1c9c..e53eacb65c44998f13a43ed9eb80bc04270999d4 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_new.3x,v 1.21 2022/02/12 20:02:20 tom Exp @
+  * @Id: menu_new.3x,v 1.35 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_new 3x</TITLE>
+<TITLE>menu_new 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_new 3x</H1>
+<H1 class="no-header">menu_new 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>                                                      <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>
+<STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>                     Library calls                    <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>
 
 
 
             The menu has already been posted.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  menu  library.  They were not
+       These routines emulate the  System  V  menu  library.   They  were  not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                                  <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                      <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 208bd6367515c84bd54209f987ce6a58a6a478ca..453526ab206b7c5cde881485d38d179dc3e59088 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_opts.3x,v 1.21 2022/02/12 20:02:20 tom Exp @
+  * @Id: menu_opts.3x,v 1.35 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_opts 3x</TITLE>
+<TITLE>menu_opts 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_opts 3x</H1>
+<H1 class="no-header">menu_opts 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>                                                    <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
+<STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
 
 
 
             The menu is already posted.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index cf2f296bf43ea57461486f9a9919e37ce90d58e3..34d6f98d2cb8f0a23eae378c1581ab5736c86629 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_pattern.3x,v 1.24 2022/02/12 20:02:20 tom Exp @
+  * @Id: menu_pattern.3x,v 1.38 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_pattern 3x</TITLE>
+<TITLE>menu_pattern 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_pattern 3x</H1>
+<H1 class="no-header">menu_pattern 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>                                              <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
+<STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                              <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                  <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index cc2274bdc3cc8a1d58ce5779a2bd0266881318f6..6d48f77b05a7cc6bd94b7ee034a351b18c4f232c 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_post.3x,v 1.22 2022/02/12 20:02:20 tom Exp @
+  * @Id: menu_post.3x,v 1.36 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_post 3x</TITLE>
+<TITLE>menu_post 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_post 3x</H1>
+<H1 class="no-header">menu_post 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>                                                    <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>
+<STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>
 
 
 
             No items are connected to the menu.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index ab12977c30aca8a8dad0c1d8f4261c8b5f752a53..0a06ada495bd9291f15f0748d99da29dd502a069 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_requestname.3x,v 1.18 2022/02/12 20:02:20 tom Exp @
+  * @Id: menu_requestname.3x,v 1.33 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_requestname 3x</TITLE>
+<TITLE>menu_requestname 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_requestname 3x</H1>
+<H1 class="no-header">menu_requestname 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>                                      <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
+<STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>             Library calls            <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
 
 
 
        <STRONG>errno</STRONG>.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines are specific to ncurses.  They  were  not  supported  on
+       These  routines  are  specific  to <EM>ncurses</EM>.  They were not supported on
        Version 7, BSD or System V implementations.  It is recommended that any
        code depending on them be conditioned using NCURSES_VERSION.
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                          <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16              <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 45bbabd45f044ef6036676a051dd99485fc49148..5526b4dea54fee3ebcf77aee221948f515be4cf8 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_spacing.3x,v 1.20 2022/02/12 20:02:20 tom Exp @
+  * @Id: menu_spacing.3x,v 1.37 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_spacing 3x</TITLE>
+<TITLE>menu_spacing 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_spacing 3x</H1>
+<H1 class="no-header">menu_spacing 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>                                              <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
+<STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The function <STRONG>set_menu_spacing</STRONG> sets  the  spacing  information  for  the
-       menu.   Its  parameter  <STRONG>spc_description</STRONG>  controls  the number of spaces
-       between an item name and an item description.  It must  not  be  larger
-       than  <STRONG>TABSIZE</STRONG>.  The menu system puts in the middle of this spacing area
-       the pad character.  The remaining parts are filled  with  spaces.   The
-       <STRONG>spc_rows</STRONG>  parameter  controls  the  number of rows that are used for an
-       item.  It must not be larger than 3.  The menu system inserts the blank
-       lines  between item rows, these lines will contain the pad character in
-       the appropriate positions.   The  <STRONG>spc_columns</STRONG>  parameter  controls  the
-       number  of blanks between columns of items.  It must not be larger than
-       <STRONG>TABSIZE</STRONG>.  A value of 0 for all the spacing values resets  them  to  the
-       default, which is 1 for all of them.
-       The  function  <STRONG>menu_spacing</STRONG>  passes back the spacing info for the menu.
-       If a pointer is NULL, this specific info is simply not returned.
+       menu.  Its parameters provide the description and the size (in rows and
+       columns).
 
+       <EM>spc</EM><STRONG>_</STRONG><EM>description</EM>
+              controls the number of spaces between an item name and  an  item
+              description.   It  must  not  be  larger than <STRONG>TABSIZE</STRONG>.  The menu
+              system  puts  in  the  middle  of  this  spacing  area  the  pad
+              character.  The remaining parts are filled with spaces.
 
-</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       Both routines return <STRONG>E_OK</STRONG>  on  success.   <STRONG>set_menu_spacing</STRONG>  may  return
-       <STRONG>E_POSTED</STRONG> if the menu is posted, or <STRONG>E_BAD_ARGUMENT</STRONG> if one of the spacing
-       values is out of range.
+       <EM>spc</EM><STRONG>_</STRONG><EM>rows</EM>
+              controls  the number of rows that are used for an item.  It must
+              not be larger than 3.  The menu system inserts the  blank  lines
+              between item rows, these lines will contain the pad character in
+              the appropriate positions.
 
+       <EM>spc</EM><STRONG>_</STRONG><EM>columns</EM>
+              controls the number of blanks between columns of items.  It must
+              not  be  larger  than <STRONG>TABSIZE</STRONG>.  A value of 0 for all the spacing
+              values resets them to the default, which is 1 for all of them.
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
+       The function <STRONG>menu_spacing</STRONG> returns the spacing information for the menu.
+       If  a  pointer  is  NULL,  the  corresponding information is simply not
+       returned.
 
 
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Both routines return <STRONG>E_OK</STRONG>  on  success.   <STRONG>set_menu_spacing</STRONG>  may  return
+       <STRONG>E_POSTED</STRONG> if the menu is posted, or <STRONG>E_BAD_ARGUMENT</STRONG> if one of the spacing
+       values is out of range.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  are  specific  to ncurses.  They were not supported on
+       These routines are specific to <EM>ncurses</EM>.  They  were  not  supported  on
        Version 7, BSD or System V implementations.  It is recommended that any
        code depending on them be conditioned using NCURSES_VERSION.
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
 
-                                                              <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
+
+ncurses 6.5                       2024-03-16                  <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index cc6873c208ad471e4f784a853eb5c72b64023c97..d2b52f1df4edf02c507a29edfb20c013c08d86b2 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_userptr.3x,v 1.19 2022/02/12 20:02:20 tom Exp @
+  * @Id: menu_userptr.3x,v 1.33 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_userptr 3x</TITLE>
+<TITLE>menu_userptr 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_userptr 3x</H1>
+<H1 class="no-header">menu_userptr 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>                                              <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>
+<STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>                 Library calls                <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>
 
 
 
        <STRONG>set_menu_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
        The user pointer is a void pointer.  We chose not to leave it as a char
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                              <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                  <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 12849d70d85b04b5ae5de4588fde0407116ea7b6..9688e0f506ce1af12c74fa017d51b80d899722c9 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_win.3x,v 1.18 2022/02/12 20:02:20 tom Exp @
+  * @Id: menu_win.3x,v 1.32 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>menu_win 3x</TITLE>
+<TITLE>menu_win 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">menu_win 3x</H1>
+<H1 class="no-header">menu_win 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>                                                      <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>
+<STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>                     Library calls                    <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>
 
 
 
@@ -60,7 +59,7 @@
        <STRONG>int</STRONG> <STRONG>set_menu_sub(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>sub</EM><STRONG>);</STRONG>
        <STRONG>WINDOW</STRONG> <STRONG>*menu_sub(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>scale_menu(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu,</EM> <EM>int</EM> <EM>*rows</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>columns);</EM>
+       <STRONG>int</STRONG> <STRONG>scale_menu(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>rows</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>columns</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
             No items are connected to the menu.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  menu  library.  They were not
+       These routines emulate the  System  V  menu  library.   They  were  not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                                  <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                      <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 1e438427910beb821ad70c9c6a5a373cdb94d191..ea8a33f7ddc96226eef1854105e7221d50ff2dae 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_current.3x,v 1.23 2022/02/12 20:02:20 tom Exp @
+  * @Id: mitem_current.3x,v 1.37 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>mitem_current 3x</TITLE>
+<TITLE>mitem_current 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">mitem_current 3x</H1>
+<H1 class="no-header">mitem_current 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>                                            <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>
+<STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>                Library calls               <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  menu  library.  They were not
+       These routines emulate the  System  V  menu  library.   They  were  not
        supported on Version 7 or BSD versions.
 
-       The  SVr4  menu  library  documentation  specifies  the   <STRONG>top_row</STRONG>   and
+       The   SVr4   menu  library  documentation  specifies  the  <STRONG>top_row</STRONG>  and
        <STRONG>index_item</STRONG> error value as -1 (which is the value of <STRONG>ERR</STRONG>).
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                             <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                 <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index af84f5511d4740988632fb8166681b39d77fe67c..1ff53c8a94370f2e84aeda87610e986ffd57bb6a 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_name.3x,v 1.17 2022/02/12 20:02:20 tom Exp @
+  * @Id: mitem_name.3x,v 1.31 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>mitem_name 3x</TITLE>
+<TITLE>mitem_name 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">mitem_name 3x</H1>
+<H1 class="no-header">mitem_name 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>                                                  <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>
+<STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>
 
 
 
        <STRONG>errno</STRONG>.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                                <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                    <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 2e1dcde6219d96597f15667bd39522df1816bf86..b4ed66765bb707de1ffbcd9aa0fcd2c2fabf5a22 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_new.3x,v 1.22 2022/02/12 20:02:20 tom Exp @
+  * @Id: mitem_new.3x,v 1.36 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>mitem_new 3x</TITLE>
+<TITLE>mitem_new 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">mitem_new 3x</H1>
+<H1 class="no-header">mitem_new 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>                                                    <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>
+<STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>                    Library calls                   <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  emulate  the  System  V  menu  library.  They were not
+       These routines emulate the  System  V  menu  library.   They  were  not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                                 <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                     <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 0cd0ec6affadb5364ff7cd396251a6d5cf5a9897..537a91301e0f8cc7324848661b6273042d50335d 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_opts.3x,v 1.19 2022/02/12 20:02:20 tom Exp @
+  * @Id: mitem_opts.3x,v 1.33 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>mitem_opts 3x</TITLE>
+<TITLE>mitem_opts 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">mitem_opts 3x</H1>
+<H1 class="no-header">mitem_opts 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>                                                  <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>
+<STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>
 
 
 
             System error occurred (see <STRONG>errno(3)</STRONG>).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                                <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                    <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index ee8a3b8fc775c9bf8ce1b0c1e6a97ab4eee24368..afb442d81c638f670407127112bf5ed9f6f24c65 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_userptr.3x,v 1.20 2022/02/12 20:02:20 tom Exp @
+  * @Id: mitem_userptr.3x,v 1.34 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>mitem_userptr 3x</TITLE>
+<TITLE>mitem_userptr 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">mitem_userptr 3x</H1>
+<H1 class="no-header">mitem_userptr 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>                                            <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>
+<STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>                Library calls               <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>
 
 
 
        The <STRONG>set_item_userptr</STRONG> always returns <STRONG>E_OK</STRONG> (success).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
        The user pointer is a void pointer.  We chose not to leave it as a char
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                             <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                 <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 6e1e6ab7a5d49f703e68a8ac2df07e82ab1bfd90..01ce5d506a21d3d1c0c6d7166a4bec52713d54f4 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_value.3x,v 1.18 2022/02/12 20:02:20 tom Exp @
+  * @Id: mitem_value.3x,v 1.32 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>mitem_value 3x</TITLE>
+<TITLE>mitem_value 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">mitem_value 3x</H1>
+<H1 class="no-header">mitem_value 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>                                                <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>
+<STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>
 
 
 
             The menu driver could not process the request.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                               <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                   <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 9c8efbe619988fc40df4455c1d1e74b4c88ae11a..8224323f3282ae9b1f58fe86d2d515e481f6e5bc 100644 (file)
@@ -1,7 +1,6 @@
 <!--
-  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998,2010 Free Software Foundation, Inc.                       *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_visible.3x,v 1.13 2022/02/12 20:03:40 tom Exp @
+  * @Id: mitem_visible.3x,v 1.27 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>mitem_visible 3x</TITLE>
+<TITLE>mitem_visible 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">mitem_visible 3x</H1>
+<H1 class="no-header">mitem_visible 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>                                            <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>
+<STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>                Library calls               <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>mitem_visible</STRONG> - check visibility of a menu item
+       <STRONG>item_visible</STRONG> - check visibility of a menu item
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        this portion will be smaller than the whole menu).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
-
-
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       The  header  file  <STRONG>&lt;menu.h&gt;</STRONG>  automatically  includes  the  header  file
-       <STRONG>&lt;curses.h&gt;</STRONG>.
-
-
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These routines emulate the  System  V  menu  library.   They  were  not
+       These  routines  emulate  the  System  V  menu  library.  They were not
        supported on Version 7 or BSD versions.
 
 
        Raymond.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
+
+
 
-                                                             <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                 <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index ab2b69d136d0e7eba52ae0755a401649db60d9f8..9b061acba0e03839b970fcddd8a32571e3a1a096 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: ncurses.3x,v 1.156 2021/12/25 21:19:26 tom Exp @
+  * @Id: ncurses.3x,v 1.214 2024/04/27 17:55:43 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>ncurses 3x</TITLE>
+<TITLE>ncurses 3x 2024-04-27 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">ncurses 3x</H1>
+<H1 class="no-header">ncurses 3x 2024-04-27 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>                                                        <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
+<STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>                      Library calls                     <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>ncurses</STRONG> - CRT screen handling and optimization package
+       <STRONG>ncurses</STRONG> - character-cell terminal interface with optimized output
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The  <STRONG>ncurses</STRONG>  library  routines  give  the  user a terminal-independent
-       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 <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
-
-       The  <STRONG>ncurses</STRONG>  library emulates the curses library of System V Release 4
-       UNIX, and XPG4 (X/Open Portability Guide) curses  (also  known  as  XSI
-       curses).   XSI  stands  for  X/Open  System  Interfaces Extension.  The
-       <STRONG>ncurses</STRONG> library is freely redistributable in source form.   Differences
-       from   the   SVr4  curses  are  summarized  under  the  <EM>EXTENSIONS</EM>  and
-       <EM>PORTABILITY</EM> sections below and described in detail  in  the  respective
-       <EM>EXTENSIONS</EM>, <EM>PORTABILITY</EM> and <EM>BUGS</EM> sections of individual man pages.
-
-       The  <STRONG>ncurses</STRONG>  library  also  provides  many  useful  extensions,  i.e.,
-       features which cannot be implemented by a  simple  add-on  library  but
-       which require access to the internals of the library.
-
-       A  program  using  these  routines  must  be  linked with the <STRONG>-lncurses</STRONG>
-       option, or (if it  has  been  generated)  with  the  debugging  library
-       <STRONG>-lncurses_g</STRONG>.   (Your  system  integrator  may also have installed these
-       libraries under the names  <STRONG>-lcurses</STRONG>  and  <STRONG>-lcurses_g</STRONG>.)   The  ncurses_g
-       library  generates  trace logs (in a file called "trace" in the current
-       directory) that describe curses  actions.   See  also  the  section  on
-       <STRONG>ALTERNATE</STRONG> <STRONG>CONFIGURATIONS</STRONG>.
-
-       The   <STRONG>ncurses</STRONG>   package   supports:  overall  screen,  window  and  pad
-       manipulation; output to  windows  and  pads;  reading  terminal  input;
-       control  over terminal and <STRONG>curses</STRONG> input and output options; environment
-       query routines; color manipulation; use of soft  label  keys;  terminfo
-       capabilities; and access to low-level terminal-manipulation routines.
-
-
-</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
-       The  library uses the locale which the calling program has initialized.
-       That is normally done with <STRONG>setlocale(3)</STRONG>:
-
-           <STRONG>setlocale(LC_ALL,</STRONG> <STRONG>"");</STRONG>
-
-       If the locale is not initialized, the library assumes  that  characters
-       are  printable  as in ISO-8859-1, to work with certain legacy programs.
-       You should initialize the locale and not rely on  specific  details  of
-       the library when the locale has not been setup.
-
-       The  function  <STRONG>initscr</STRONG>  or  <STRONG>newterm</STRONG>  must  be  called to initialize the
-       library before any of the other routines that  deal  with  windows  and
-       screens  are  used.   The  routine  <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG>  must  be  called before
-       exiting.
-
-       To get character-at-a-time input  without  echoing  (most  interactive,
-       screen  oriented  programs want this), the following sequence should be
-       used:
-
-           <STRONG>initscr();</STRONG> <STRONG>cbreak();</STRONG> <STRONG>noecho();</STRONG>
-
-       Most programs would additionally use the sequence:
-
-           <STRONG>intrflush(stdscr,</STRONG> <STRONG>FALSE);</STRONG>
-           <STRONG>keypad(stdscr,</STRONG> <STRONG>TRUE);</STRONG>
-
-       Before a <STRONG>curses</STRONG> program is run, the tab stops of the terminal should be
-       set  and  its initialization strings, if defined, must be output.  This
-       can be done  by  executing  the  <STRONG>tput</STRONG>  <STRONG>init</STRONG>  command  after  the  shell
-       environment  variable  <STRONG>TERM</STRONG>  has  been  exported.   <STRONG>tset(1)</STRONG>  is usually
-       responsible for doing this.  [See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for further details.]
-
-
-</PRE><H3><a name="h3-Datatypes">Datatypes</a></H3><PRE>
-       The <STRONG>ncurses</STRONG> library permits manipulation  of  data  structures,  called
-       <EM>windows</EM>,   which  can  be  thought  of  as  two-dimensional  arrays  of
-       characters representing all or part of a CRT screen.  A default  window
-       called  <STRONG>stdscr</STRONG>,  which is the size of the terminal screen, is supplied.
-       Others may be created with <STRONG>newwin</STRONG>.
-
-       Note that <STRONG>curses</STRONG> does not handle overlapping windows,  that's  done  by
-       the  <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>  library.   This means that you can either use <STRONG>stdscr</STRONG> or
-       divide the screen into tiled windows  and  not  using  <STRONG>stdscr</STRONG>  at  all.
-       Mixing the two will result in unpredictable, and undesired, effects.
-
-       Windows  are referred to by variables declared as <STRONG>WINDOW</STRONG> <STRONG>*</STRONG>.  These data
-       structures are manipulated with routines described here  and  elsewhere
-       in  the <STRONG>ncurses</STRONG> manual pages.  Among those, the most basic routines are
-       <STRONG>move</STRONG> and <STRONG>addch</STRONG>.  More general versions of these routines  are  included
-       with  names  beginning  with  <STRONG>w</STRONG>, allowing the user to specify a window.
-       The routines not beginning with <STRONG>w</STRONG> affect <STRONG>stdscr</STRONG>.
-
-       After using routines to manipulate a  window,  <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>  is  called,
-       telling  <STRONG>curses</STRONG>  to  make  the user's CRT screen look like <STRONG>stdscr</STRONG>.  The
-       characters in a window are actually  of  type  <STRONG>chtype</STRONG>,  (character  and
-       attribute  data) so that other information about the character may also
-       be stored with each character.
+       The  "new  curses" library offers the programmer a terminal-independent
+       means of reading keyboard and mouse input and  updating  character-cell
+       terminals  with  output  optimized to minimize screen updates.  <EM>ncurses</EM>
+       replaces the <EM>curses</EM> libraries from System V Release 4 Unix ("SVr4") and
+       4.4BSD  Unix,  the  development  of  which  ceased  in the 1990s.  This
+       document describes <EM>ncurses</EM> version 6.5 (patch 20240427).
+
+       <EM>ncurses</EM> permits control of the terminal screen's contents;  abstraction
+       and  subdivision thereof with <EM>windows</EM> and <EM>pads</EM>; the reading of terminal
+       input; control of terminal input and output options; environment  query
+       routines;  color  manipulation;  the  definition  and use of <EM>soft</EM> <EM>label</EM>
+       keys; <EM>terminfo</EM> capability access; a  <EM>termcap</EM>  compatibility  interface;
+       and  an  abstraction  of the system's API for manipulating the terminal
+       (such as <STRONG>termios(3)</STRONG>).
+
+       <EM>ncurses</EM> implements the standard interface described  by  X/Open  Curses
+       Issue 7.   In  many  behavioral  details  not  standardized  by X/Open,
+       <EM>ncurses</EM> emulates the <EM>curses</EM>  library  of  SVr4  and  provides  numerous
+       useful extensions.
+
+       <EM>ncurses</EM>  man  pages employ several sections to clarify matters of usage
+       and interoperability with other <EM>curses</EM> implementations.
+
+       <STRONG>o</STRONG>   "NOTES" describes issues and caveats  of  which  any  user  of  the
+           <EM>ncurses</EM>  API should be aware, such as limitations on the size of an
+           underlying integral type or  the  availability  of  a  preprocessor
+           macro  exclusive  of  a  function  definition  (which  prevents its
+           address  from  being   taken).    This   section   also   describes
+           implementation  details  that will be significant to the programmer
+           but which are not standardized.
+
+       <STRONG>o</STRONG>   "EXTENSIONS" presents <EM>ncurses</EM> innovations beyond the X/Open  Curses
+           standard  and/or  the  SVr4 <EM>curses</EM> implementation.  They are termed
+           <EM>extensions</EM> to indicate that they cannot be  implemented  solely  by
+           using the library API, but require access to the library's internal
+           state.
+
+       <STRONG>o</STRONG>   "PORTABILITY" discusses matters (beyond the exercise of extensions)
+           that should be considered when writing to a <EM>curses</EM> standard, or for
+           multiple implementations.
+
+       <STRONG>o</STRONG>   "HISTORY" examines points of detail in  <EM>ncurses</EM>  and  other  <EM>curses</EM>
+           implementations over the decades of their development, particularly
+           where precedent or inertia have frustrated better design (and, in a
+           few cases, where such inertia has been overcome).
+
+       A <EM>curses</EM> application must be linked with the library; use the <STRONG>-lncurses</STRONG>
+       option to your compiler or linker.  A debugging version of the  library
+       may  be available; if so, link with it using <STRONG>-lncurses_g</STRONG>.  (Your system
+       integrator may have installed these libraries such that you can use the
+       options  <STRONG>-lcurses</STRONG> and <STRONG>-lcurses_g</STRONG>, respectively.)  The <EM>ncurses</EM><STRONG>_</STRONG><EM>g</EM> library
+       generates trace logs (in a file called <EM>trace</EM> in the current  directory)
+       that  describe <EM>ncurses</EM> actions.  See section "ALTERNATE CONFIGURATIONS"
+       below.
+
+
+</PRE><H3><a name="h3-Application-Structure">Application Structure</a></H3><PRE>
+       A  <EM>curses</EM>  application  uses  information  from  the   system   locale;
+       <STRONG>setlocale(3)</STRONG> prepares it for <EM>curses</EM> library calls.
+
+           setlocale(LC_ALL, "");
+
+       If  the  locale  is  not  thus  initialized,  the  library assumes that
+       characters are printable as in ISO 8859-1, to work with certain  legacy
+       programs.   You  should initialize the locale; do not expect consistent
+       behavior from the library when the locale has not been set up.
+
+       <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG> or <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG> must be called to initialize  <EM>curses</EM>  before
+       use of any functions that deal with windows and screens.
+
+       To  get  character-at-a-time  input  without echoing--most interactive,
+       screen-oriented programs want this--use the following sequence.
+
+           initscr(); cbreak(); noecho();
+
+       Most applications perform further setup as follows.
+
+           intrflush(stdscr, FALSE);
+           keypad(stdscr, TRUE);
+
+       A <EM>curses</EM> program then often enters an event loop of  some  sort.   Call
+       <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> before exiting.
+
+
+</PRE><H3><a name="h3-Overview">Overview</a></H3><PRE>
+       A  <EM>curses</EM>  library abstracts the terminal screen by representing all or
+       part of it as a <EM>WINDOW</EM> data structure.  A <EM>window</EM> is a rectangular  grid
+       of  character  cells,  addressed  by row and column coordinates (<EM>y</EM>, <EM>x</EM>),
+       with the upper left corner as (0, 0).  A window called <STRONG>stdscr</STRONG>, the same
+       size  as  the terminal screen, is always available.  Create others with
+       <STRONG><A HREF="curs_window.3x.html">newwin(3x)</A></STRONG>.
+
+       A <EM>curses</EM> library does not manage overlapping windows (but  see  below).
+       You  can either use <STRONG>stdscr</STRONG> to manage one screen-filling window, or tile
+       the screen into non-overlapping windows and  not  use  <STRONG>stdscr</STRONG>  at  all.
+       Mixing  the  two  approaches will result in unpredictable and undesired
+       effects.
+
+       Functions permit manipulation of a window and  the  <EM>cursor</EM>  identifying
+       the  cell  within  it  at  which  the next output operation will occur.
+       Among those, the most basic are <STRONG><A HREF="curs_move.3x.html">move(3x)</A></STRONG> and <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>: these place the
+       cursor and write a character to <STRONG>stdscr</STRONG>, respectively.
+
+       Frequent changes to the terminal screen can cause unpleasant flicker or
+       inefficient use of the communication channel  to  the  device,  so  the
+       library  does  not generally update it automatically.  Therefore, after
+       using <EM>curses</EM> functions to accumulate a set of desired updates that make
+       sense to present together, call <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> to tell the library to make
+       the user's screen look like <STRONG>stdscr</STRONG>.  The library <EM>optimizes</EM>  its  output
+       by  computing  a minimal number of operations to mutate the screen from
+       its  state  at  the  previous  refresh  to  the  new  one.    Effective
+       optimization  demands  accurate  information about the terminal device:
+       the management of such information is the province of the  <STRONG><A HREF="curs_terminfo.3x.html">terminfo(3x)</A></STRONG>
+       API, a feature of every standard <EM>curses</EM> implementation.
 
        Special windows called <EM>pads</EM> may also be manipulated.  These are windows
-       which  are not constrained to the size of the screen and whose contents
-       need  not  be  completely  displayed.   See   <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>   for   more
-       information.
+       that are not constrained to the size of the terminal screen  and  whose
+       contents need not be completely displayed.  See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>.
 
-       In  addition  to drawing characters on the screen, video attributes and
-       colors may be supported, causing the characters  to  show  up  in  such
+       In  addition  to drawing characters on the screen, rendering attributes
+       and colors may be supported, causing the characters to show up in  such
        modes  as  underlined,  in reverse video, or in color on terminals that
-       support such display enhancements.   Line  drawing  characters  may  be
-       specified  to  be  output.   On input, <STRONG>curses</STRONG> is also able to translate
-       arrow and function keys that  transmit  escape  sequences  into  single
-       values.   The  video  attributes,  line  drawing  characters, and input
-       values use names, defined in <STRONG>&lt;curses.h&gt;</STRONG>, such as <STRONG>A_REVERSE</STRONG>,  <STRONG>ACS_HLINE</STRONG>,
-       and <STRONG>KEY_LEFT</STRONG>.
-
-
-</PRE><H3><a name="h3-Environment-variables">Environment variables</a></H3><PRE>
-       If  the  environment  variables  <STRONG>LINES</STRONG>  and  <STRONG>COLUMNS</STRONG> are set, or if the
-       program  is  executing  in  a  window  environment,  line  and   column
-       information  in  the  environment  will  override  information  read by
-       <EM>terminfo</EM>.  This would affect a program running in an  AT&amp;T  630  layer,
-       for   example,   where   the  size  of  a  screen  is  changeable  (see
-       <STRONG>ENVIRONMENT</STRONG>).
-
-       If the environment variable <STRONG>TERMINFO</STRONG>  is  defined,  any  program  using
-       <STRONG>curses</STRONG>  checks  for  a local terminal definition before checking in the
-       standard place.  For example, if <STRONG>TERM</STRONG>  is  set  to  <STRONG>att4424</STRONG>,  then  the
-       compiled terminal definition is found in
-
-           <STRONG>/usr/share/terminfo/a/att4424</STRONG>.
-
-       (The  <STRONG>a</STRONG> is copied from the first letter of <STRONG>att4424</STRONG> to avoid creation of
-       huge directories.)  However,  if  <STRONG>TERMINFO</STRONG>  is  set  to  <STRONG>$HOME/myterms</STRONG>,
-       <STRONG>curses</STRONG> first checks
-
-           <STRONG>$HOME/myterms/a/att4424</STRONG>,
-
-       and if that fails, it then checks
-
-           <STRONG>/usr/share/terminfo/a/att4424</STRONG>.
-
-       This  is  useful  for developing experimental definitions or when write
-       permission in <STRONG>/usr/share/terminfo</STRONG> is not available.
-
-       The integer variables <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> are defined in <STRONG>&lt;curses.h&gt;</STRONG> and will
-       be  filled  in  by  <STRONG>initscr</STRONG> with the size of the screen.  The constants
-       <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG> have the values <STRONG>1</STRONG> and <STRONG>0</STRONG>, respectively.
-
-       The <STRONG>curses</STRONG> routines also define the <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> variable <STRONG>curscr</STRONG>  which  is
-       used  for  certain  low-level  operations like clearing and redrawing a
-       screen containing garbage.  The <STRONG>curscr</STRONG>  can  be  used  in  only  a  few
-       routines.
-
-
-</PRE><H3><a name="h3-Routine-and-Argument-Names">Routine and Argument Names</a></H3><PRE>
-       Many  <STRONG>curses</STRONG> routines have two or more versions.  The routines prefixed
-       with <EM>w</EM> require a window argument.  The routines prefixed with <EM>p</EM> require
-       a pad argument.  Those without a prefix generally use <STRONG>stdscr</STRONG>.
-
-       The  routines  prefixed with <STRONG>mv</STRONG> require a <EM>y</EM> and <EM>x</EM> coordinate to move to
-       before performing the appropriate action.  The <STRONG>mv</STRONG> routines imply a call
-       to  <STRONG>move</STRONG> before the call to the other routine.  The coordinate <EM>y</EM> always
-       refers to the row (of the window), and <EM>x</EM> always refers to  the  column.
-       The upper left-hand corner is always (0,0), not (1,1).
-
-       The  routines prefixed with <STRONG>mvw</STRONG> take both a window argument and <EM>x</EM> and <EM>y</EM>
-       coordinates.  The  window  argument  is  always  specified  before  the
-       coordinates.
-
-       In  each case, <EM>win</EM> is the window affected, and <EM>pad</EM> is the pad affected;
-       <EM>win</EM> and <EM>pad</EM> are always pointers to type <STRONG>WINDOW</STRONG>.
-
-       Option setting routines require a Boolean flag <EM>bf</EM> with the  value  <STRONG>TRUE</STRONG>
-       or  <STRONG>FALSE</STRONG>;  <EM>bf</EM>  is always of type <STRONG>bool</STRONG>.  Most of the data types used in
-       the library routines, such as <STRONG>WINDOW</STRONG>,  <STRONG>SCREEN</STRONG>,  <STRONG>bool</STRONG>,  and  <STRONG>chtype</STRONG>  are
-       defined  in  <STRONG>&lt;curses.h&gt;</STRONG>.   Types used for the terminfo routines such as
-       <STRONG>TERMINAL</STRONG> are defined in <STRONG>&lt;term.h&gt;</STRONG>.
-
-       This  manual  page  describes  functions  which  may  appear   in   any
-       configuration  of  the library.  There are two common configurations of
-       the library:
-
-          <EM>ncurses</EM>
-               the "normal" library,  which  handles  8-bit  characters.   The
-               normal   (8-bit)   library   stores  characters  combined  with
-               attributes in <STRONG>chtype</STRONG> data.
-
-               Attributes alone (no corresponding character) may be stored  in
-               <STRONG>chtype</STRONG> or the equivalent <STRONG>attr_t</STRONG> data.  In either case, the data
-               is stored in something like an integer.
-
-               Each cell (row and column) in a <STRONG>WINDOW</STRONG> is stored as a <STRONG>chtype</STRONG>.
-
-          <EM>ncursesw</EM>
-               the  so-called  "wide"   library,   which   handles   multibyte
-               characters  (see the section on <STRONG>ALTERNATE</STRONG> <STRONG>CONFIGURATIONS</STRONG>).  The
-               "wide" library includes all of  the  calls  from  the  "normal"
-               library.   It  adds about one third more calls using data types
-               which store multibyte characters:
-
-               <STRONG>cchar_t</STRONG>
-                    corresponds to <STRONG>chtype</STRONG>.  However it is a structure, because
-                    more  data  is  stored  than can fit into an integer.  The
-                    characters are large enough  to  require  a  full  integer
-                    value - and there may be more than one character per cell.
-                    The video attributes and  color  are  stored  in  separate
-                    fields of the structure.
-
-                    Each  cell  (row  and  column)  in a <STRONG>WINDOW</STRONG> is stored as a
-                    <STRONG>cchar_t</STRONG>.
-
-                    The <STRONG><A HREF="curs_getcchar.3x.html">setcchar(3x)</A></STRONG>  and  <STRONG><A HREF="curs_getcchar.3x.html">getcchar(3x)</A></STRONG>  functions  store  and
-                    retrieve the data from a <STRONG>cchar_t</STRONG> structure.
-
-               <STRONG>wchar_t</STRONG>
-                    stores  a  "wide"  character.  Like <STRONG>chtype</STRONG>, this may be an
-                    integer.
+       support such display enhancements.  See <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>.
 
-               <STRONG>wint_t</STRONG>
-                    stores a <STRONG>wchar_t</STRONG> or <STRONG>WEOF</STRONG> - not the same, though  both  may
-                    have the same size.
+       <EM>curses</EM> predefines constants for a small set of  forms-drawing  graphics
+       corresponding  to  the  DEC Alternate Character Set (ACS), a feature of
+       VT100 and other terminals.  See <STRONG><A HREF="curs_addch.3x.html">waddch(3x)</A></STRONG>.
 
-               The  "wide"  library provides new functions which are analogous
-               to functions in  the  "normal"  library.   There  is  a  naming
-               convention  which  relates  many of the normal/wide variants: a
-               "_w" is inserted into the name.  For  example,  <STRONG>waddch</STRONG>  becomes
-               <STRONG>wadd_wch</STRONG>.
+       <EM>curses</EM> is implemented using the  operating  system's  terminal  driver;
+       keystroke  events are received not as scan codes but as byte sequences.
+       Graphical keycaps (alphanumeric and punctuation keys,  and  the  space)
+       appear  as-is.   Everything  else,  including  the  tab,  enter/return,
+       keypad, arrow, and function keys, appears as a control character  or  a
+       multibyte  <EM>escape</EM>  <EM>sequence.</EM>   <EM>curses</EM>  translates these into unique <EM>key</EM>
+       <EM>codes.</EM>  See <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>.
 
+       <EM>ncurses</EM> provides reimplementations of the SVr4 <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, and
+       <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG> libraries to ease construction of user interfaces with <EM>curses</EM>.
 
-</PRE><H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE>
-       The  following table lists the <STRONG>curses</STRONG> routines provided in the "normal"
-       and "wide" libraries and the names of the manual pages  on  which  they
-       are  described.   Routines  flagged  with "*" are ncurses-specific, not
-       described by XPG4 or present in SVr4.
 
-                    <STRONG>curses</STRONG> Routine Name      Manual Page Name
+</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
+       The   selection  of  an  appropriate  value  of  <EM>TERM</EM>  in  the  process
+       environment  is  essential  to  correct  <EM>curses</EM>  and  <EM>terminfo</EM>  library
+       operation.   A  well-configured  system  selects  a  correct <EM>TERM</EM> value
+       automatically;  <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>  may   assist   with   troubleshooting   exotic
+       situations.
+
+       If  you  change the terminal type, export the <EM>TERM</EM> environment variable
+       in the shell, then  run  <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>  or  the  "<STRONG>tput</STRONG>  <STRONG>init</STRONG>"  command.   See
+       subsection "Tabs and Initialization" of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+
+       If  the  environment  variables  <EM>LINES</EM>  and  <EM>COLUMNS</EM> are set, or if the
+       <EM>curses</EM> program is executing in a graphical windowing  environment,  the
+       information  obtained  thence  overrides that obtained by <EM>terminfo</EM>.  An
+       <EM>ncurses</EM> extension supports resizable terminals; see <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
+
+       If the environment variable  <EM>TERMINFO</EM>  is  defined,  a  <EM>curses</EM>  program
+       checks  first  for  a  terminal  type  description  in  the location it
+       identifies.   <EM>TERMINFO</EM>  is  useful  for  developing  experimental  type
+       descriptions  or  when  write  permission to <EM>/usr/share/terminfo</EM> is not
+       available.
+
+       See section "ENVIRONMENT" below.
+
+
+</PRE><H3><a name="h3-Naming-Conventions">Naming Conventions</a></H3><PRE>
+       <EM>curses</EM> offers many functions in variant forms using a  regular  set  of
+       alternatives  to the name of an elemental one.  Those prefixed with "w"
+       require a <EM>WINDOW</EM> pointer argument;  those  with  a  "mv"  prefix  first
+       perform cursor movement using <STRONG><A HREF="curs_move.3x.html">wmove(3x)</A></STRONG>; a "mvw" prefix indicates both.
+       The "w" function is typically the elemental one; the  removal  of  this
+       prefix usually indicates operation on <STRONG>stdscr</STRONG>.
+
+       Four functions prefixed with "p" require a pad argument.
+
+       In  function  synopses,  <EM>ncurses</EM> man pages apply the following names to
+       parameters.
+
+                       <EM>bf</EM>    <EM>bool</EM> (<STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>)
+                       <EM>c</EM>     a <EM>char</EM> or <EM>int</EM>
+                       <EM>ch</EM>    a <EM>chtype</EM>
+                       <EM>wc</EM>    a <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM> or <EM>wint</EM><STRONG>_</STRONG><EM>t</EM>
+                       <EM>wch</EM>   a <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>
+                       <EM>win</EM>   pointer to a <EM>WINDOW</EM>
+                       <EM>pad</EM>   pointer to a <EM>WINDOW</EM> that is a pad
+
+
+</PRE><H3><a name="h3-Wide-and-Non-wide-Character-Configurations">Wide and Non-wide Character Configurations</a></H3><PRE>
+       This manual page describes functions that appear in  any  configuration
+       of  the  library.   There  are  two  common configurations; see section
+       "ALTERNATE CONFIGURATIONS" below.
+
+       <EM>ncurses</EM>   is the library in its "non-wide" configuration, handling only
+                 eight-bit  characters.   It  stores a character combined with
+                 attributes in a <EM>chtype</EM> datum, which is often an alias of <EM>int</EM>.
+
+                 Attributes alone (with no  corresponding  character)  can  be
+                 stored  in  variables  of  <EM>chtype</EM>  or <EM>attr</EM><STRONG>_</STRONG><EM>t</EM> type.  In either
+                 case, they are represented as an integral bit mask.
+
+                 Each cell of a <EM>WINDOW</EM> is stored as a <EM>chtype</EM>.
+
+       <EM>ncursesw</EM>  is the library in its  "wide"  configuration,  which  handles
+                 character encodings requiring a larger data type than <EM>char</EM> (a
+                 byte-sized type) can represent.  It adds about one third more
+                 calls  using  additional  data  types  that  can  store  such
+                 <EM>multibyte</EM> characters.
+
+                 <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>  corresponds to the non-wide configuration's  <EM>chtype</EM>.
+                          It  always  a structure type, because it stores more
+                          data than  fit  into  a  standard  scalar  type.   A
+                          character  code  may not be representable as a <EM>char</EM>,
+                          and moreover more than one character  may  occupy  a
+                          cell  (as  with  accent marks and other diacritics).
+                          Each  character  is  of  type  <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM>;  a   complex
+                          character contains one spacing character and zero or
+                          more non-spacing characters (see below).  Attributes
+                          and  color data are stored in separate fields of the
+                          structure, not combined as in <EM>chtype</EM>.
+
+                 Each cell of a <EM>WINDOW</EM> is stored as a <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>.
+
+                 <STRONG><A HREF="curs_getcchar.3x.html">setcchar(3x)</A></STRONG> and  <STRONG><A HREF="curs_getcchar.3x.html">getcchar(3x)</A></STRONG>  store  and  retrieve  <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>
+                 data.   The  wide  library API of <EM>ncurses</EM> depends on two data
+                 types standardized by ISO C95.
+
+                 <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM>  stores a wide character.  Like <EM>chtype</EM>, it may be  an
+                          alias  of <EM>int</EM>.  Depending on the character encoding,
+                          a wide character may be  <EM>spacing</EM>,  meaning  that  it
+                          occupies  a  character  cell by itself and typically
+                          accompanies  cursor  advancement,  or   <EM>non-spacing</EM>,
+                          meaning  that it occupies the same cell as a spacing
+                          character, is often regarded as a "modifier" of  the
+                          base  glyph  with  which  it combines, and typically
+                          does not advance the cursor.
+
+                 <EM>wint</EM><STRONG>_</STRONG><EM>t</EM>   can  store  a  <EM>wchar</EM><STRONG>_</STRONG><EM>t</EM>   or   the   constant   <STRONG>WEOF</STRONG>,
+                          analogously  to the <EM>int</EM>-sized character manipulation
+                          functions of ISO C and its constant <STRONG>EOF</STRONG>.
+
+                 The  wide  library   provides   additional   functions   that
+                 complement  those  in  the non-wide library where the size of
+                 the underlying character type  is  significant.   A  somewhat
+                 regular  naming  convention relates many of the wide variants
+                 to their non-wide counterparts;  where  a  non-wide  function
+                 name  contains  "ch"  or "str", prefix it with "_w" to obtain
+                 the wide counterpart.  For example, <STRONG>waddch</STRONG> becomes  <STRONG>wadd_wch</STRONG>.
+                 (Exceptions  that  add only "w" comprise <STRONG>addwstr</STRONG>, <STRONG>inwstr</STRONG>, and
+                 their variants.)
+
+                 This convention is inapplicable  to  some  non-wide  function
+                 names,  so  other  transformations  are  used  for  the  wide
+                 configuration:  the  window  background  management  function
+                 "bkgd"   becomes  "bkgrnd";  the  window  border-drawing  and
+                 -clearing functions are suffixed with "_set";  and  character
+                 attribute   manipulation   functions   like  "attron"  become
+                 "attr_on".
+
+
+</PRE><H3><a name="h3-Function-Name-Index">Function Name Index</a></H3><PRE>
+       The following table lists the <EM>curses</EM> functions provided in the non-wide
+       and  wide  APIs  and  the  corresponding  man pages that describe them.
+       Those flagged with  "*"  are  <EM>ncurses</EM>-specific,  neither  described  by
+       X/Open Curses nor present in SVr4.
+
+                    <STRONG><EM>curses</EM></STRONG> Function Name     Man Page
                     ---------------------------------------------
                     COLOR_PAIR               <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
-                    PAIR_NUMBER              <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+                    PAIR_NUMBER              <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
                     add_wch                  <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
                     add_wchnstr              <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
                     add_wchstr               <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
                     bkgrnd                   <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
                     bkgrndset                <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
                     border                   <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
-
                     border_set               <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
                     box                      <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
                     box_set                  <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
                     doupdate                 <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
                     dupwin                   <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
                     echo                     <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
+
                     echo_wchar               <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
                     echochar                 <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
                     endwin                   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
                     flash                    <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
                     flushinp                 <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
                     free_pair                <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>*
+                    get_escdelay             <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>*
                     get_wch                  <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
                     get_wstr                 <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
                     getattrs                 <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
                     getnstr                  <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
                     getparx                  <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
                     getpary                  <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>*
-
                     getparyx                 <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
                     getstr                   <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
                     getsyx                   <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
                     init_pair                <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
                     initscr                  <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
                     innstr                   <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
+
                     innwstr                  <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
                     ins_nwstr                <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
                     ins_wch                  <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
                     instr                    <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
                     intrflush                <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
                     inwstr                   <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
+                    is_cbreak                <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>*
                     is_cleared               <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+                    is_echo                  <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>*
                     is_idcok                 <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
                     is_idlok                 <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
                     is_immedok               <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
                     is_keypad                <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
                     is_leaveok               <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
                     is_linetouched           <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
+                    is_nl                    <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>*
                     is_nodelay               <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
                     is_notimeout             <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
                     is_pad                   <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+                    is_raw                   <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>*
                     is_scrollok              <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
                     is_subwin                <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
                     is_syncok                <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
                     killchar                 <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
                     killwchar                <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
                     leaveok                  <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
-
                     longname                 <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
                     mcprint                  <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>*
                     meta                     <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
                     mvget_wch                <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
                     mvget_wstr               <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
                     mvgetch                  <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+
                     mvgetn_wstr              <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
                     mvgetnstr                <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
                     mvgetstr                 <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
                     mvwget_wstr              <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
                     mvwgetch                 <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
                     mvwgetn_wstr             <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
-
                     mvwgetnstr               <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
                     mvwgetstr                <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
                     mvwhline                 <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
                     mvwprintw                <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
                     mvwscanw                 <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
                     mvwvline                 <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+
                     mvwvline_set             <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
                     napms                    <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
                     newpad                   <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
                     overlay                  <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
                     overwrite                <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
                     pair_content             <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
-                    pecho_wchar              <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>*
+                    pecho_wchar              <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
                     pechochar                <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
                     pnoutrefresh             <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
                     prefresh                 <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
                     scr_dump                 <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
                     scr_init                 <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
                     scr_restore              <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
-
                     scr_set                  <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
                     scrl                     <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
                     scroll                   <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
                     scrollok                 <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
                     set_curterm              <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+                    set_escdelay             <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>*
+                    set_tabsize              <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>*
                     set_term                 <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
                     setcchar                 <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
                     setscrreg                <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
                     slk_init                 <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
                     slk_label                <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
                     slk_noutrefresh          <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
+
                     slk_refresh              <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
                     slk_restore              <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
                     slk_set                  <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
                     slk_touch                <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
-                    slk_wset                 <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>*
+                    slk_wset                 <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
                     standend                 <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
                     standout                 <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
                     start_color              <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
                     tigetnum                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
                     tigetstr                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
                     timeout                  <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
-                    tiparm                   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>*
+                    tiparm                   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+                    tiparm_s                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>*
+                    tiscan_s                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>*
                     touchline                <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
                     touchwin                 <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
                     tparm                    <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
                     use_env                  <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
                     use_extended_names       <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>*
                     use_legacy_coding        <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>*
+                    use_screen               <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>*
                     use_tioctl               <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>*
+                    use_window               <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>*
                     vid_attr                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
                     vid_puts                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
-
                     vidattr                  <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
                     vidputs                  <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
                     vline                    <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
                     waddnwstr                <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
                     waddstr                  <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
                     waddwstr                 <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+
                     wattr_get                <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
                     wattr_off                <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
                     wattr_on                 <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
                     winnwstr                 <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
                     wins_nwstr               <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
                     wins_wch                 <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
-
                     wins_wstr                <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
                     winsch                   <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
                     winsdelln                <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
                     wscanw                   <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
                     wscrl                    <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
                     wsetscrreg               <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
+
                     wstandend                <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
                     wstandout                <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
                     wsyncdown                <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
                     wvline                   <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
                     wvline_set               <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
 
-       Depending on the configuration, additional sets  of  functions  may  be
-       available:
-
-          <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG> - curses memory-leak checking
-
-          <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> - curses screen-pointer extension
-
-          <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> - curses thread support
+       <EM>ncurses</EM>'s    <EM>screen-pointer</EM>   <EM>extension</EM>   adds   additional   functions
+       corresponding to many of the above, each  with  an  "_sp"  suffix;  see
+       <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>.
 
-          <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> - curses debugging routines
+       The  availability  of  some  extensions is configurable when <EM>ncurses</EM> is
+       compiled; see  sections  "ALTERNATE  CONFIGURATIONS"  and  "EXTENSIONS"
+       below.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       Routines  that return an integer return <STRONG>ERR</STRONG> upon failure and an integer
-       value other than <STRONG>ERR</STRONG> upon successful completion, unless otherwise noted
-       in the routine descriptions.
+       Unless  otherwise  noted, functions that return an integer return <STRONG>OK</STRONG> on
+       success and <STRONG>ERR</STRONG> on failure.  Functions that return pointers return <STRONG>NULL</STRONG>
+       on  failure.   Typically,  <EM>ncurses</EM>  treats  a  null pointer passed as a
+       function parameter as a failure.  Functions prefixed  with  "mv"  first
+       perform  cursor movement and fail if the position (<EM>y</EM>, <EM>x</EM>) is outside the
+       window boundaries.
 
-       As  a  general  rule,  routines  check  for  null  pointers  passed  as
-       parameters, and handle this as an error.
 
-       All macros return  the  value  of  the  <STRONG>w</STRONG>  version,  except  <STRONG>setscrreg</STRONG>,
-       <STRONG>wsetscrreg</STRONG>,  <STRONG>getyx</STRONG>,  <STRONG>getbegyx</STRONG>,  and  <STRONG>getmaxyx</STRONG>.   The  return  values of
-       <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>,  <STRONG>getbegyx</STRONG>,  and  <STRONG>getmaxyx</STRONG>  are  undefined
-       (i.e.,  these  should  not be used as the right-hand side of assignment
-       statements).
-
-       Functions with a "mv" prefix first  perform  a  cursor  movement  using
-       <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
-       the window pointer  is  null.   Most  "mv"-prefixed  functions  (except
-       variadic  functions  such  as <STRONG>mvprintw</STRONG>) are provided both as macros and
-       functions.
-
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.
+</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
+       The following  symbols  from  the  process  environment  customize  the
+       runtime   behavior   of  <EM>ncurses</EM>  applications.   The  library  may  be
+       configured  to  disregard  the   variables   <EM>TERMINFO</EM>,   <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM>,
+       <EM>TERMPATH</EM>,  and  <EM>HOME</EM>,  if  the  user  is  the  superuser (root), or the
+       application uses <STRONG>setuid(2)</STRONG> or <STRONG>setgid(2)</STRONG>.
 
 
-</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
-       The following  environment  symbols  are  useful  for  customizing  the
-       runtime  behavior of the <STRONG>ncurses</STRONG> library.  The most important ones have
-       been already discussed in detail.
+</PRE><H3><a name="h3-BAUDRATE"><EM>BAUDRATE</EM></a></H3><PRE>
+       The debugging library checks this variable  when  the  application  has
+       redirected  output  to a file.  Its integral value is used for the baud
+       rate.  If that value is absent or invalid,  <EM>ncurses</EM>  uses  9600.   This
+       feature  allows  testers  to  construct repeatable test cases that take
+       into account optimization decisions that depend on baud rate.
 
 
-</PRE><H3><a name="h3-CC-command-character">CC command-character</a></H3><PRE>
-       When set, change occurrences of the command_character (i.e., the  <STRONG>cmdch</STRONG>
-       capability)  of  the  loaded  terminfo  entries  to  the  value of this
-       variable.  Very few terminfo entries provide this feature.
+</PRE><H3><a name="h3-CC-_command-character_"><EM>CC</EM> (command character)</a></H3><PRE>
+       When set, the <STRONG>command_character</STRONG>  (<STRONG>cmdch</STRONG>)  capability  value  of  loaded
+       <EM>terminfo</EM> entries changes to the value of this variable.  Very few <EM>term-</EM>
+       <EM>info</EM> entries provide this feature.
 
        Because this name is also used in development environments to represent
-       the C compiler's name, <STRONG>ncurses</STRONG> ignores it if it does not happen to be a
-       single character.
-
-
-</PRE><H3><a name="h3-BAUDRATE">BAUDRATE</a></H3><PRE>
-       The  debugging  library  checks  this  environment  variable  when  the
-       application  has  redirected  output to a file.  The variable's numeric
-       value is used for the baudrate.  If no value  is  found,  <STRONG>ncurses</STRONG>  uses
-       9600.  This allows testers to construct repeatable test-cases that take
-       into account costs that depend on baudrate.
-
-
-</PRE><H3><a name="h3-COLUMNS">COLUMNS</a></H3><PRE>
-       Specify the width of the screen in characters.  Applications running in
-       a  windowing  environment  usually  are able to obtain the width of the
-       window in which they are executing.  If neither the <STRONG>COLUMNS</STRONG>  value  nor
-       the  terminal's  screen  size is available, <STRONG>ncurses</STRONG> uses the size which
-       may be specified in the terminfo database (i.e., the <STRONG>cols</STRONG> capability).
-
-       It is important that your  application  use  a  correct  size  for  the
-       screen.   This  is  not always possible because your application may be
-       running on a host which does not honor NAWS (Negotiations About  Window
-       Size),  or  because  you  are  temporarily  running  as  another  user.
-       However, setting <STRONG>COLUMNS</STRONG> and/or <STRONG>LINES</STRONG> overrides the  library's  use  of
-       the screen size obtained from the operating system.
-
-       Either  <STRONG>COLUMNS</STRONG>  or <STRONG>LINES</STRONG> symbols may be specified independently.  This
-       is  mainly  useful  to  circumvent  legacy  misfeatures   of   terminal
-       descriptions,  e.g.,  xterm  which commonly specifies a 65 line screen.
-       For best results, <STRONG>lines</STRONG> and <STRONG>cols</STRONG> should not be specified in a  terminal
-       description for terminals which are run as emulations.
-
-       Use  the  <STRONG>use_env</STRONG>  function  to disable all use of external environment
-       (but not including system calls) to determine the screen size.  Use the
-       <STRONG>use_tioctl</STRONG> function to update <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> to match the screen size
-       obtained from system calls or the terminal database.
-
-
-</PRE><H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE>
-       Specifies the total time, in milliseconds, for which ncurses will await
-       a  character  sequence,  e.g., a function key.  The default value, 1000
-       milliseconds, is enough for most uses.  However, it is made a  variable
-       to accommodate unusual applications.
+       the  C  compiler's  name,  <EM>ncurses</EM>  ignores  its value if it is not one
+       character in length.
+
+
+</PRE><H3><a name="h3-COLUMNS"><EM>COLUMNS</EM></a></H3><PRE>
+       This  variable  specifies  the  width  of  the  screen  in  characters.
+       Applications  running  in  a  windowing environment usually are able to
+       obtain the width of the window in which they are executing.  If <EM>COLUMNS</EM>
+       is not defined and the terminal's screen size is not available from the
+       terminal driver, <EM>ncurses</EM> uses the size specified by the <STRONG>columns</STRONG>  (<STRONG>cols</STRONG>)
+       capability  of  the  terminal type's entry in the <EM>terminfo</EM> database, if
+       any.
+
+       It is important that your application  use  the  correct  screen  size.
+       Automatic   detection   thereof  is  not  always  possible  because  an
+       application may  be  running  on  a  host  that  does  not  honor  NAWS
+       (Negotiations  About  Window  Size)  or as a different user ID than the
+       owner of the  terminal  device  file.   Setting  <EM>COLUMNS</EM>  and/or  <EM>LINES</EM>
+       overrides  the  library's  use  of  the  screen  size obtained from the
+       operating system.
+
+       The <EM>COLUMNS</EM> and <EM>LINES</EM> variables may be specified  independently.   This
+       property  is  useful  to circumvent misfeatures of legacy terminal type
+       descriptions; <STRONG>xterm(1)</STRONG>  descriptions  specifying  65  lines  were  once
+       notorious.    For   best  results,  avoid  specifying  <STRONG>cols</STRONG>  and  <STRONG>lines</STRONG>
+       capability codes in <EM>terminfo</EM> descriptions of terminal emulators.
+
+       <STRONG><A HREF="curs_util.3x.html">use_env(3x)</A></STRONG> can disable use of the process environment  in  determining
+       the  screen size.  <STRONG><A HREF="curs_util.3x.html">use_tioctl(3x)</A></STRONG> can update <EM>COLUMNS</EM> and <EM>LINES</EM> to match
+       the screen size obtained from system calls or the terminal database.
+
+
+</PRE><H3><a name="h3-ESCDELAY"><EM>ESCDELAY</EM></a></H3><PRE>
+       For <EM>curses</EM> to distinguish the ESC character  resulting  from  a  user's
+       press  of  the  "Escape"  key on the input device from one beginning an
+       <EM>escape</EM> <EM>sequence</EM> (as commonly produced by function keys), it waits after
+       receiving  the  escape  character  to  see  if  further  characters are
+       available on the input  stream  within  a  short  interval.   A  global
+       variable  <STRONG>ESCDELAY</STRONG>  stores  this interval in milliseconds.  The default
+       value of 1000 (one second) is adequate for most uses.  This environment
+       variable overrides it.
 
        The  most common instance where you may wish to change this value is to
-       work with slow hosts, e.g., running on a network.  If the  host  cannot
-       read  characters rapidly enough, it will have the same effect as if the
-       terminal did not send characters  rapidly  enough.   The  library  will
-       still see a timeout.
-
-       Note  that  xterm  mouse  events  are built up from character sequences
-       received from the xterm.   If  your  application  makes  heavy  use  of
-       multiple-clicking,  you may wish to lengthen this default value because
-       the timeout applies to the composed multi-click event as  well  as  the
-       individual clicks.
-
-       In addition to the environment variable, this implementation provides a
-       global variable with the same name.  Portable applications  should  not
-       rely  upon  the  presence  of  ESCDELAY in either form, but setting the
-       environment variable rather than the global variable  does  not  create
-       problems when compiling an application.
-
-
-</PRE><H3><a name="h3-HOME">HOME</a></H3><PRE>
-       Tells  <STRONG>ncurses</STRONG> where your home directory is.  That is where it may read
-       and write auxiliary terminal descriptions:
-
-           $HOME/.termcap
-           $HOME/.terminfo
-
-
-</PRE><H3><a name="h3-LINES">LINES</a></H3><PRE>
-       Like COLUMNS, specify the height of  the  screen  in  characters.   See
-       COLUMNS for a detailed description.
-
-
-</PRE><H3><a name="h3-MOUSE_BUTTONS_123">MOUSE_BUTTONS_123</a></H3><PRE>
-       This  applies  only  to  the  OS/2 EMX port.  It specifies the order of
-       buttons on the mouse.  OS/2 numbers  a  3-button  mouse  inconsistently
-       from other platforms:
-
-           1 = left
-           2 = right
-           3 = middle.
-
-       This variable lets you customize the mouse.  The variable must be three
-       numeric digits 1-3 in any order, e.g.,  123  or  321.   If  it  is  not
-       specified, <STRONG>ncurses</STRONG> uses 132.
-
-
-</PRE><H3><a name="h3-NCURSES_ASSUMED_COLORS">NCURSES_ASSUMED_COLORS</a></H3><PRE>
-       Override  the compiled-in assumption that the terminal's default colors
-       are  white-on-black  (see  <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>).   You   may   set   the
-       foreground  and  background color values with this environment variable
-       by proving a 2-element list: foreground,background.   For  example,  to
-       tell  ncurses  to  not  assume  anything  about the colors, set this to
-       "-1,-1".  To make it green-on-black, set it  to  "2,0".   Any  positive
-       value from zero to the terminfo <STRONG>max_colors</STRONG> value is allowed.
-
-
-</PRE><H3><a name="h3-NCURSES_CONSOLE2">NCURSES_CONSOLE2</a></H3><PRE>
-       This applies only to the MinGW port of ncurses.
-
-       The  <STRONG>Console2</STRONG>  program's  handling  of  the  Microsoft Console API call
-       <STRONG>CreateConsoleScreenBuffer</STRONG> is defective.  Applications  which  use  this
-       will hang.  However, it is possible to simulate the action of this call
-       by mapping coordinates, explicitly saving and  restoring  the  original
-       screen  contents.   Setting the environment variable <STRONG>NCGDB</STRONG> has the same
-       effect.
-
-
-</PRE><H3><a name="h3-NCURSES_GPM_TERMS">NCURSES_GPM_TERMS</a></H3><PRE>
-       This applies only to ncurses configured to use the GPM interface.
-
-       If present, the environment variable is a list of one or more  terminal
-       names  against which the <STRONG>TERM</STRONG> environment variable is matched.  Setting
-       it to an empty value disables the GPM  interface;  using  the  built-in
-       support for xterm, etc.
-
-       If the environment variable is absent, ncurses will attempt to open GPM
-       if <STRONG>TERM</STRONG> contains "linux".
-
-
-</PRE><H3><a name="h3-NCURSES_NO_HARD_TABS">NCURSES_NO_HARD_TABS</a></H3><PRE>
-       <STRONG>Ncurses</STRONG> may use tabs as part of the cursor movement  optimization.   In
-       some  cases,  your  terminal driver may not handle these properly.  Set
-       this environment variable to disable the feature.  You can also  adjust
-       your <STRONG>stty(1)</STRONG> settings to avoid the problem.
-
-
-</PRE><H3><a name="h3-NCURSES_NO_MAGIC_COOKIE">NCURSES_NO_MAGIC_COOKIE</a></H3><PRE>
-       Some  terminals  use  a  magic-cookie  feature  which  requires special
-       handling to  make  highlighting  and  other  video  attributes  display
-       properly.   You  can  suppress  the  highlighting  entirely  for  these
-       terminals by setting this environment variable.
-
-
-</PRE><H3><a name="h3-NCURSES_NO_PADDING">NCURSES_NO_PADDING</a></H3><PRE>
-       Most of the terminal descriptions in the terminfo database are  written
-       for  real  "hardware"  terminals.   Many  people use terminal emulators
-       which run in a windowing environment and use curses-based applications.
-       Terminal  emulators  can  duplicate  all  of the important aspects of a
-       hardware terminal, but they do not  have  the  same  limitations.   The
-       chief  limitation  of  a  hardware terminal from the standpoint of your
-       application is the management of  dataflow,  i.e.,  timing.   Unless  a
+       work with a remote host over a slow communication channel.  If the host
+       running  a  <EM>curses</EM>  application  does  not receive the characters of an
+       escape sequence in a timely manner, the library can interpret  them  as
+       multiple key stroke events.
+
+       <STRONG>xterm(1)</STRONG> mouse events are a form of escape sequence; therefore, if your
+       application makes heavy use  of  multiple-clicking,  you  may  wish  to
+       lengthen  the  default value because the delay applies to the composite
+       multi-click event as well as the individual clicks.
+
+       Portable applications should not rely upon the presence of <STRONG>ESCDELAY</STRONG>  in
+       either  form,  but  setting  the  environment  variable rather than the
+       global variable does not create problems when compiling an application.
+
+       If <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG> is disabled for the  <EM>curses</EM>  window  receiving  input,  a
+       program must disambiguate escape sequences itself.
+
+
+</PRE><H3><a name="h3-HOME"><EM>HOME</EM></a></H3><PRE>
+       <EM>ncurses</EM>  may read and write auxiliary terminal descriptions in <EM>.termcap</EM>
+       and <EM>.terminfo</EM> files in the user's home directory.
+
+
+</PRE><H3><a name="h3-LINES"><EM>LINES</EM></a></H3><PRE>
+       This counterpart to <EM>COLUMNS</EM> specifies  the  height  of  the  screen  in
+       characters.   The  corresponding <EM>terminfo</EM> capability and code is <STRONG>lines</STRONG>.
+       See the description of the <EM>COLUMNS</EM> variable above.
+
+
+</PRE><H3><a name="h3-MOUSE_BUTTONS_123"><EM>MOUSE_BUTTONS_123</EM></a></H3><PRE>
+       (OS/2 EMX port only) OS/2 numbers a three-button  mouse  inconsistently
+       with  other platforms, such that 1 is the left button, 2 the right, and
+       3 the middle.  This variable customizes  the  mouse  button  numbering.
+       Its  value  must be three digits 1-3 in any order.  By default, <EM>ncurses</EM>
+       assumes a numbering of "132".
+
+
+</PRE><H3><a name="h3-NCURSES_ASSUMED_COLORS"><EM>NCURSES_ASSUMED_COLORS</EM></a></H3><PRE>
+       If set, this  variable  overrides  the  <EM>ncurses</EM>  library's  compiled-in
+       assumption  that  the terminal's default colors are white on black; see
+       <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>.  Set the foreground  and  background  color  values
+       with  this  environment  variable  by  assigning  it two integer values
+       separated  by  a  comma,  indicating  foregound  and  background  color
+       numbers, respectively.
+
+       For  example,  to tell <EM>ncurses</EM> not to assume anything about the colors,
+       use a value of "-1,-1".  To make the  default  color  scheme  green  on
+       black,  use  "2,0".   <EM>ncurses</EM> accepts integral values from -1 up to the
+       value of the <EM>terminfo</EM> <STRONG>max_colors</STRONG> (<STRONG>colors</STRONG>) capability.
+
+
+</PRE><H3><a name="h3-NCURSES_CONSOLE2"><EM>NCURSES_CONSOLE2</EM></a></H3><PRE>
+       (MinGW  port  only)  The  <EM>Console2</EM>  program  defectively  handles   the
+       Microsoft  Console  API  call  <EM>CreateConsoleScreenBuffer</EM>.  Applications
+       that use it will hang.  However, it is possible to simulate the  action
+       of  this  call  by mapping coordinates, explicitly saving and restoring
+       the original screen contents.  Setting the environment  variable  <EM>NCGDB</EM>
+       has the same effect.
+
+
+</PRE><H3><a name="h3-NCURSES_GPM_TERMS"><EM>NCURSES_GPM_TERMS</EM></a></H3><PRE>
+       (Linux  only) When <EM>ncurses</EM> is configured to use the GPM interface, this
+       variable may list one or more terminal names  against  which  the  <EM>TERM</EM>
+       variable  (see  below)  is  matched.   An  empty value disables the GPM
+       interface,  using  <EM>ncurses</EM>'s  built-in  support  for   <STRONG>xterm(1)</STRONG>   mouse
+       protocols instead.  If the variable is absent, <EM>ncurses</EM> attempts to open
+       GPM if <EM>TERM</EM> contains "linux".
+
+
+</PRE><H3><a name="h3-NCURSES_NO_HARD_TABS"><EM>NCURSES_NO_HARD_TABS</EM></a></H3><PRE>
+       <EM>ncurses</EM> may use tab characters in  cursor  movement  optimization.   In
+       some  cases,  your  terminal  driver may not handle them properly.  Set
+       this environment variable to any value to disable the feature.  You can
+       also adjust your <STRONG>stty(1)</STRONG> settings to avoid the problem.
+
+
+</PRE><H3><a name="h3-NCURSES_NO_MAGIC_COOKIE"><EM>NCURSES_NO_MAGIC_COOKIE</EM></a></H3><PRE>
+       Many  terminals  store  video  attributes  as a property of a character
+       cell, as <EM>curses</EM> does.  Historically, some  recorded  changes  in  video
+       attributes  as  data  that  logically  <EM>occupies</EM>  character cells on the
+       display, switching attributes on or off, similarly to tags in a  markup
+       language;  these  are  termed "magic cookies", and must be subsequently
+       overprinted.  If the <EM>terminfo</EM> entry for your  terminal  type  does  not
+       adequately describe its handling of magic cookies, set this variable to
+       any value to instruct <EM>ncurses</EM> to disable attributes entirely.
+
+
+</PRE><H3><a name="h3-NCURSES_NO_PADDING"><EM>NCURSES_NO_PADDING</EM></a></H3><PRE>
+       Most  terminal  type  descriptions  in  the  <EM>terminfo</EM>  database  detail
+       hardware   devices.   Many  people  use  <EM>curses</EM>-based  applications  in
+       terminal emulator programs that run in a windowing environment.   These
+       programs  can  duplicate  all  of  the important features of a hardware
+       terminal, but often lack their limitations.  Chief among  these  absent
+       drawbacks is the problem of data flow management; that is, limiting the
+       speed of communication to what the hardware  could  handle.   Unless  a
        hardware  terminal  is  interfaced  into a terminal concentrator (which
-       does flow control), it (or  your  application)  must  manage  dataflow,
-       preventing  overruns.   The cheapest solution (no hardware cost) is for
-       your program to do this by pausing after operations that  the  terminal
-       does slowly, such as clearing the display.
-
-       As  a  result,  many  terminal  descriptions (including the vt100) have
-       delay times embedded.  You may wish to use these descriptions, but  not
-       want to pay the performance penalty.
-
-       Set  the  NCURSES_NO_PADDING  environment  variable  to disable all but
-       mandatory padding.  Mandatory padding is used  as  a  part  of  special
-       control sequences such as <STRONG>flash</STRONG>.
-
-
-</PRE><H3><a name="h3-NCURSES_NO_SETBUF">NCURSES_NO_SETBUF</a></H3><PRE>
-       This setting is obsolete.  Before changes
-
-          <STRONG>o</STRONG>   started with 5.9 patch 20120825 and
-
-          <STRONG>o</STRONG>   continued though 5.9 patch 20130126
-
-       <STRONG>ncurses</STRONG>  enabled  buffered output during terminal initialization.  This
-       was done (as in SVr4 curses)  for  performance  reasons.   For  testing
-       purposes,  both  of  <STRONG>ncurses</STRONG> and certain applications, this feature was
-       made optional.  Setting the NCURSES_NO_SETBUF variable disabled  output
-       buffering,  leaving  the output in the original (usually line buffered)
-       mode.
-
-       In the current implementation, ncurses performs its own  buffering  and
-       does  not require this workaround.  It does not modify the buffering of
-       the standard output.
-
-       The reason for the change was to make the behavior for  interrupts  and
-       other   signals   more   robust.    One   drawback   is   that  certain
-       nonconventional programs would mix ordinary stdio  calls  with  ncurses
-       calls  and (usually) work.  This is no longer possible since ncurses is
-       not using the buffered standard output but its own output (to the  same
-       file  descriptor).  As a special case, the low-level calls such as <STRONG>putp</STRONG>
-       still use the standard output.  But high-level curses calls do not.
-
-
-</PRE><H3><a name="h3-NCURSES_NO_UTF8_ACS">NCURSES_NO_UTF8_ACS</a></H3><PRE>
-       During initialization, the <STRONG>ncurses</STRONG> library  checks  for  special  cases
-       where VT100 line-drawing (and the corresponding alternate character set
-       capabilities) described in  the  terminfo  are  known  to  be  missing.
-       Specifically,  when  running  in  a  UTF-8  locale,  the  Linux console
-       emulator and the GNU screen program ignore these.  Ncurses  checks  the
-       <STRONG>TERM</STRONG>  environment  variable  for  these.   For other special cases, you
-       should set this environment variable.  Doing this tells ncurses to  use
-       Unicode values which correspond to the VT100 line-drawing glyphs.  That
-       works for the special cases cited, and is likely to work  for  terminal
-       emulators.
-
-       When  setting  this  variable,  you  should  set it to a nonzero value.
-       Setting it to zero (or to a nonnumber) disables the special  check  for
-       "linux" and "screen".
-
-       As  an  alternative  to the environment variable, ncurses checks for an
-       extended terminfo capability <STRONG>U8</STRONG>.  This is a  numeric  capability  which
-       can be compiled using <STRONG>tic</STRONG> <STRONG>-x</STRONG>.  For example
+       does flow control), an application must manage flow control  itself  to
+       prevent overruns and data loss.
+
+       A  solution  that  comes  at  no hardware cost is for an application to
+       pause after directing a  terminal  to  execute  an  operation  that  it
+       performs  slowly,  such  as  clearing  the display.  Many terminal type
+       descriptions, including that for the VT100, embed delay  specifications
+       in  capabilities.   You  may  wish  to  use these terminal descriptions
+       without paying the performance penalty.  Set <EM>NCURSES</EM><STRONG>_</STRONG><EM>NO</EM><STRONG>_</STRONG><EM>PADDING</EM> to  any
+       value  to disable all but mandatory padding.  Mandatory padding is used
+       by such terminal capabilities as <STRONG>flash_screen</STRONG> (<STRONG>flash</STRONG>).
+
+
+</PRE><H3><a name="h3-NCURSES_NO_SETBUF"><EM>NCURSES_NO_SETBUF</EM></a></H3><PRE>
+       (Obsolete) Prior to internal changes developed in <EM>ncurses</EM> 5.9  (patches
+       20120825  through 20130126), the library used <STRONG>setbuf(3)</STRONG> to enable fully
+       buffered output when initializing the terminal.  This was done,  as  in
+       SVr4  <EM>curses</EM>,  to  increase performance.  For testing purposes, both of
+       <EM>ncurses</EM> and of certain applications, this feature  was  made  optional.
+       Setting  this  variable  disabled  output buffering, leaving the output
+       stream in the original (usually line-buffered) mode.
+
+       Nowadays, <EM>ncurses</EM> performs its own buffering and does not require  this
+       workaround;  it  does  not  modify the buffering of the standard output
+       stream.  This approach makes signal handling, as for  interrupts,  more
+       robust.   A  drawback  is  that  certain  unconventional programs mixed
+       <STRONG>stdio(3)</STRONG> calls with <EM>ncurses</EM> calls and (usually) got the  behavior  they
+       expected.   This  is  no longer the case; <EM>ncurses</EM> does not write to the
+       standard output file descriptor through a <EM>stdio</EM>-buffered stream.
+
+       As a special case, low-level API calls such as <STRONG><A HREF="curs_terminfo.3x.html">putp(3x)</A></STRONG> still  use  the
+       standard  output stream.  High-level <EM>curses</EM> calls such as <STRONG><A HREF="curs_printw.3x.html">printw(3x)</A></STRONG> do
+       not.
+
+
+</PRE><H3><a name="h3-NCURSES_NO_UTF8_ACS"><EM>NCURSES_NO_UTF8_ACS</EM></a></H3><PRE>
+       At initialization, <EM>ncurses</EM> inspects the <EM>TERM</EM> environment  variable  for
+       special   cases   where   VT100   forms-drawing   characters  (and  the
+       corresponding alternate character set <EM>terminfo</EM> capabilities) are  known
+       to  be  unsupported  by  terminal  types  that  otherwise  claim  VT100
+       compatibility.  Specifically, when running in a UTF-8 locale, the Linux
+       virtual  console device and the GNU <STRONG>screen(1)</STRONG> program ignore them.  Set
+       this  variable  to  a  nonzero  value  to  instruct  <EM>ncurses</EM>  that  the
+       terminal's ACS support is broken; the library then outputs Unicode code
+       points that correspond to the forms-drawing characters.  Set it to zero
+       (or a non-integer) to disable the special check for terminal type names
+       matching "linux" or "screen", directing <EM>ncurses</EM> to assume that the  ACS
+       feature works if the terminal type description advertises it.
+
+       As  an  alternative  to  use  of  this  variable, <EM>ncurses</EM> checks for an
+       extended <EM>terminfo</EM> numeric capability <STRONG>U8</STRONG> that can be compiled using "<STRONG>tic</STRONG>
+       <STRONG>-x</STRONG>".  Examples follow.
 
           # linux console, if patched to provide working
           # VT100 shift-in/shift-out, with corresponding font.
           xterm-utf8|xterm relying on UTF-8 line-graphics,
                   U8#1, use=xterm,
 
-       The  name  "U8" is chosen to be two characters, to permit it to be used
-       by applications that use ncurses' termcap interface.
-
+       The  two-character name "U8" was chosen to permit its use via <EM>ncurses</EM>'s
+       <EM>termcap</EM> interface.
 
-</PRE><H3><a name="h3-NCURSES_TRACE">NCURSES_TRACE</a></H3><PRE>
-       During  initialization,  the  <STRONG>ncurses</STRONG>  debugging  library  checks   the
-       NCURSES_TRACE  environment  variable.   If  it is defined, to a numeric
-       value, <STRONG>ncurses</STRONG> calls the  <STRONG>trace</STRONG>  function,  using  that  value  as  the
-       argument.
 
-       The  argument  values,  which  are defined in <STRONG>curses.h</STRONG>, provide several
-       types  of  information.   When  running  with  traces   enabled,   your
-       application will write the file <STRONG>trace</STRONG> to the current directory.
+</PRE><H3><a name="h3-NCURSES_TRACE"><EM>NCURSES_TRACE</EM></a></H3><PRE>
+       At initialization, <EM>ncurses</EM> (in its debugging configuration) checks  for
+       this  variable's  presence.   If  defined  with  an integral value, the
+       library calls <STRONG><A HREF="curs_trace.3x.html">curses_trace(3x)</A></STRONG> with that value as the argument.
 
-       See <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> for more information.
 
+</PRE><H3><a name="h3-TERM"><EM>TERM</EM></a></H3><PRE>
+       The <EM>TERM</EM> variable denotes the terminal type.  Each is distinct,  though
+       many  are  similar.   It  is commonly set by terminal emulators to help
+       applications find a  workable  terminal  description.   Some  choose  a
+       popular  approximation  such as "ansi", "vt100", or "xterm" rather than
+       an exact fit to their capabilities.  Not infrequently,  an  application
+       will  have  problems  with that approach; for example, a key stroke may
+       not operate  correctly,  or  produce  no  effect  but  seeming  garbage
+       characters on the screen.
 
-</PRE><H3><a name="h3-TERM">TERM</a></H3><PRE>
-       Denotes  your  terminal  type.   Each terminal type is distinct, though
-       many are similar.
+       Setting  <EM>TERM</EM>  has  no effect on hardware operation; it affects the way
+       applications communicate with the terminal.   Likewise,  as  a  general
+       rule  (<STRONG>xterm(1)</STRONG>  being a rare exception), terminal emulators that allow
+       you to specify <EM>TERM</EM> as a parameter or configuration value do not change
+       their behavior to match that setting.
 
-       <STRONG>TERM</STRONG> is commonly set by terminal emulators to help applications find  a
-       workable   terminal  description.   Some  of  those  choose  a  popular
-       approximation, e.g., "ansi", "vt100", "xterm" rather than an exact fit.
-       Not  infrequently,  your  application  will  have  problems  with  that
-       approach, e.g., incorrect function-key definitions.
 
-       If you set <STRONG>TERM</STRONG> in your environment, it has no effect on the  operation
-       of  the  terminal  emulator.  It only affects the way applications work
-       within the terminal.  Likewise, as a general  rule  (<STRONG>xterm(1)</STRONG>  being  a
-       rare  exception), terminal emulators which allow you to specify <STRONG>TERM</STRONG> as
-       a parameter or configuration value do  not  change  their  behavior  to
-       match that setting.
+</PRE><H3><a name="h3-TERMCAP"><EM>TERMCAP</EM></a></H3><PRE>
+       If <EM>ncurses</EM> is configured with <EM>termcap</EM> support, it checks for a terminal
+       type description in <EM>termcap</EM> format if one in  <EM>terminfo</EM>  format  is  not
+       available.   Setting  this variable directs <EM>ncurses</EM> to ignore the usual
+       <EM>termcap</EM> database location, <EM>/etc/termcap</EM>; see <EM>TERMPATH</EM>  below.   <EM>TERMCAP</EM>
+       should  contain  either  a terminal description (with newlines stripped
+       out), or a file name indicating where the information required  by  the
+       <EM>TERM</EM> environment variable is stored.
 
 
-</PRE><H3><a name="h3-TERMCAP">TERMCAP</a></H3><PRE>
-       If  the  <STRONG>ncurses</STRONG>  library  has  been  configured  with <EM>termcap</EM> support,
-       <STRONG>ncurses</STRONG> will check for a terminal's description in termcap form  if  it
-       is not available in the terminfo database.
+</PRE><H3><a name="h3-TERMINFO"><EM>TERMINFO</EM></a></H3><PRE>
+       <EM>ncurses</EM>  can  be configured to read terminal type description databases
+       in various locations using different formats.  This variable  overrides
+       the default location.
 
-       The <STRONG>TERMCAP</STRONG> environment variable contains either a terminal description
-       (with newlines  stripped  out),  or  a  file  name  telling  where  the
-       information denoted by the <STRONG>TERM</STRONG> environment variable exists.  In either
-       case, setting it directs <STRONG>ncurses</STRONG> to ignore the  usual  place  for  this
-       information, e.g., /etc/termcap.
+       <STRONG>o</STRONG>   Descriptions  in <EM>terminfo</EM> format are normally stored in a directory
+           tree using subdirectories named by the common first letters of  the
+           terminal types named therein.  This is the scheme used in System V.
 
+       <STRONG>o</STRONG>   If <EM>ncurses</EM> is configured to use hashed databases, then <EM>TERMINFO</EM> may
+           name its location,  such  as  <EM>/usr/share/terminfo.db</EM>,  rather  than
+           <EM>/usr/share/terminfo/</EM>.
 
-</PRE><H3><a name="h3-TERMINFO">TERMINFO</a></H3><PRE>
-       <STRONG>ncurses</STRONG>  can  be  configured  to read from multiple terminal databases.
-       The <STRONG>TERMINFO</STRONG> variable overrides the location for the  default  terminal
-       database.   Terminal  descriptions  (in  terminal format) are stored in
-       terminal databases:
+       The  hashed  database  uses less disk space and is a little faster than
+       the directory tree.  However, some applications assume the existence of
+       the directory tree, and read it directly rather than using the <EM>terminfo</EM>
+       API.
 
-       <STRONG>o</STRONG>   Normally these are stored in a directory tree, using subdirectories
-           named by the first letter of the terminal names therein.
+       <STRONG>o</STRONG>   If <EM>ncurses</EM> is configured with <EM>termcap</EM> support,  this  variable  may
+           contain the location of a <EM>termcap</EM> file.
 
-           This is the scheme used in System V, which legacy Unix systems use,
-           and the <STRONG>TERMINFO</STRONG> variable is used by <EM>curses</EM> applications  on  those
-           systems to override the default location of the terminal database.
+       <STRONG>o</STRONG>   If the value of <EM>TERMINFO</EM> begins with "hex:" or "b64:", <EM>ncurses</EM> uses
+           the remainder of the value as a compiled <EM>terminfo</EM> description.  You
+           might produce the base64 format using <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>.
 
-       <STRONG>o</STRONG>   If  <STRONG>ncurses</STRONG>  is  built  to use hashed databases, then each entry in
-           this list may be the path of a hashed database file, e.g.,
+                  TERMINFO=$(infocmp -0 -Q2 -q)
+                  export TERMINFO
 
-               /usr/share/terminfo.db
+           The  compiled  description  is  used  only if it corresponds to the
+           terminal type identified by <EM>TERM</EM>.
 
-           rather than
+       Setting <EM>TERMINFO</EM> is the simplest, but  not  the  only,  way  to  direct
+       <EM>ncurses</EM> to a terminal database.  The search path is as follows.
 
-               /usr/share/terminfo/
+       <STRONG>o</STRONG>   the last terminal database to which the running <EM>ncurses</EM> application
+           wrote, if any
 
-           The hashed database uses less disk-space and  is  a  little  faster
-           than  the  directory  tree.   However, some applications assume the
-           existence of the directory tree, reading it  directly  rather  than
-           using the terminfo library calls.
+       <STRONG>o</STRONG>   the location specified by the <EM>TERMINFO</EM> environment variable
 
-       <STRONG>o</STRONG>   If  <STRONG>ncurses</STRONG>  is  built  with  a  support  for reading termcap files
-           directly, then an entry in this list may be the path of  a  termcap
-           file.
+       <STRONG>o</STRONG>   <EM>$HOME/.terminfo</EM>
 
-       <STRONG>o</STRONG>   If the <STRONG>TERMINFO</STRONG> variable begins with "hex:" or "b64:", <STRONG>ncurses</STRONG> uses
-           the remainder of that variable as a compiled terminal  description.
-           You might produce the base64 format using <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>:
+       <STRONG>o</STRONG>   locations listed in the <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> environment variable
 
-               TERMINFO="$(infocmp -0 -Q2 -q)"
-               export TERMINFO
+       <STRONG>o</STRONG>   location(s) configured and compiled into <EM>ncurses</EM>
 
-           The  compiled description is used if it corresponds to the terminal
-           identified by the <STRONG>TERM</STRONG> variable.
+          <STRONG>o</STRONG>   <EM>/usr/share/terminfo</EM>
 
-       Setting <STRONG>TERMINFO</STRONG> is the simplest, but not the only way to set  location
-       of  the  default  terminal  database.   The  complete  list of database
-       locations in order follows:
 
-          <STRONG>o</STRONG>   the last terminal database to which <STRONG>ncurses</STRONG> wrote,  if  any,  is
-              searched first
+</PRE><H3><a name="h3-TERMINFO_DIRS"><EM>TERMINFO_DIRS</EM></a></H3><PRE>
+       This variable specifies a list of locations, akin  to  <EM>PATH</EM>,  in  which
+       <EM>ncurses</EM>  searches  for  the  terminal  type  descriptions  described by
+       <EM>TERMINFO</EM> above.  The list items are separated by  colons  on  Unix  and
+       semicolons  on  OS/2  EMX.   System V  <EM>terminfo</EM>  lacks  a corresponding
+       feature; <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> is an <EM>ncurses</EM> extension.
 
-          <STRONG>o</STRONG>   the location specified by the TERMINFO environment variable
 
-          <STRONG>o</STRONG>   $HOME/.terminfo
+</PRE><H3><a name="h3-TERMPATH"><EM>TERMPATH</EM></a></H3><PRE>
+       If <EM>TERMCAP</EM> does not hold a terminal type description or file name, then
+       <EM>ncurses</EM>  checks  the contents of <EM>TERMPATH</EM>, a list of locations, akin to
+       <EM>PATH</EM>, in which it searches for <EM>termcap</EM> terminal type descriptions.  The
+       list items are separated by colons on Unix and semicolons on OS/2 EMX.
 
-          <STRONG>o</STRONG>   locations listed in the TERMINFO_DIRS environment variable
-
-          <STRONG>o</STRONG>   one  or  more  locations whose names are configured and compiled
-              into the ncurses library, i.e.,
-
-             <STRONG>o</STRONG>   no  default  value  (corresponding   to   the   TERMINFO_DIRS
-                 variable)
-
-             <STRONG>o</STRONG>   /usr/share/terminfo (corresponding to the TERMINFO variable)
-
-
-</PRE><H3><a name="h3-TERMINFO_DIRS">TERMINFO_DIRS</a></H3><PRE>
-       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  <STRONG>TERMINFO</STRONG>  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
-       extension developed for <STRONG>ncurses</STRONG>.
-
-
-</PRE><H3><a name="h3-TERMPATH">TERMPATH</a></H3><PRE>
-       If  <STRONG>TERMCAP</STRONG>  does not hold a file name then <STRONG>ncurses</STRONG> checks the <STRONG>TERMPATH</STRONG>
-       environment variable.  This is a list of filenames separated by  spaces
-       or colons (i.e., ":") on Unix, semicolons on OS/2 EMX.
-
-       If  the  <STRONG>TERMPATH</STRONG> environment variable is not set, <STRONG>ncurses</STRONG> looks in the
-       files
-
-           /etc/termcap, /usr/share/misc/termcap and $HOME/.termcap,
-
-       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
-       setuid or setgid permissions:
-
-           $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
+       If both <EM>TERMCAP</EM> and <EM>TERMPATH</EM> are unset or invalid, <EM>ncurses</EM> searches for
+       the files <EM>/etc/termcap</EM>, <EM>/usr/share/misc/termcap</EM>, and <EM>$HOME/.termcap</EM>, in
+       that order.
 
 
 </PRE><H2><a name="h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></H2><PRE>
-       Several  different  configurations  are  possible,  depending  on   the
-       configure  script  options used when building <STRONG>ncurses</STRONG>.  There are a few
-       main options whose effects are visible to  the  applications  developer
-       using <STRONG>ncurses</STRONG>:
+       Many  different  <EM>ncurses</EM> configurations are possible, determined by the
+       options given to the <EM>configure</EM> script when building the  library.   Run
+       the  script  with  the  <STRONG>--help</STRONG> option to peruse them all.  A few are of
+       particular significance to the application developer employing <EM>ncurses</EM>.
 
-       --disable-overwrite
-            The standard include for <STRONG>ncurses</STRONG> is as noted in <STRONG>SYNOPSIS</STRONG>:
+       <STRONG>--disable-overwrite</STRONG>
+            The standard include for <EM>ncurses</EM> is as noted in <STRONG>SYNOPSIS</STRONG>:
 
                 <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-            This  option  is  used to avoid filename conflicts when <STRONG>ncurses</STRONG> is
-            not the main implementation of curses of the computer.  If <STRONG>ncurses</STRONG>
-            is  installed  disabling  overwrite,  it  puts  its  headers  in a
+            This option is used to avoid filename conflicts  when  <EM>ncurses</EM>  is
+            not the main implementation of curses of the computer.  If <EM>ncurses</EM>
+            is installed  disabling  overwrite,  it  puts  its  headers  in  a
             subdirectory, e.g.,
 
                 <STRONG>#include</STRONG> <STRONG>&lt;ncurses/curses.h&gt;</STRONG>
 
-            It also omits a  symbolic  link  which  would  allow  you  to  use
+            It  also  omits  a  symbolic  link  which  would  allow you to use
             <STRONG>-lcurses</STRONG> to build executables.
 
-       --enable-widec
-            The   configure   script   renames   the   library   and  (if  the
-            <STRONG>--disable-overwrite</STRONG> option is used) puts the  header  files  in  a
-            different  subdirectory.   All  of  the  library  names have a "w"
+       <STRONG>--enable-widec</STRONG>
+            The  configure  script   renames   the   library   and   (if   the
+            <STRONG>--disable-overwrite</STRONG>  option  is  used)  puts the header files in a
+            different subdirectory.  All of  the  library  names  have  a  "w"
             appended to them, i.e., instead of
 
                 <STRONG>-lncurses</STRONG>
 
                 <STRONG>-lncursesw</STRONG>
 
-            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:
+            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 X/Open Curses, Issue 4:
 
-            <STRONG>o</STRONG>   Originally,  the  wide-character  feature  required the symbol
+            <STRONG>o</STRONG>   Originally, the wide-character  feature  required  the  symbol
                 <STRONG>_XOPEN_SOURCE_EXTENDED</STRONG>  but  that  was  only  valid  for  XPG4
                 (1996).
 
-            <STRONG>o</STRONG>   Later,  that was deemed conflicting with <STRONG>_XOPEN_SOURCE</STRONG> defined
+            <STRONG>o</STRONG>   Later, that was deemed conflicting with <STRONG>_XOPEN_SOURCE</STRONG>  defined
                 to 500.
 
-            <STRONG>o</STRONG>   As of mid-2018, none of the features  in  this  implementation
-                require  a  <STRONG>_XOPEN_SOURCE</STRONG>  feature greater than 600.  However,
+            <STRONG>o</STRONG>   As  of  mid-2018,  none of the features in this implementation
+                require a <STRONG>_XOPEN_SOURCE</STRONG> feature greater  than  600.   However,
                 X/Open Curses, Issue 7 (2009) recommends defining it to 700.
 
-            <STRONG>o</STRONG>   Alternatively,  you  can  enable  the  feature   by   defining
-                <STRONG>NCURSES_WIDECHAR</STRONG>  with  the caveat that some other header file
-                than <STRONG>curses.h</STRONG> may require a specific value  for  <STRONG>_XOPEN_SOURCE</STRONG>
+            <STRONG>o</STRONG>   Alternatively,   you   can  enable  the  feature  by  defining
+                <STRONG>NCURSES_WIDECHAR</STRONG> with the caveat that some other  header  file
+                than  <STRONG>curses.h</STRONG>  may require a specific value for <STRONG>_XOPEN_SOURCE</STRONG>
                 (or a system-specific symbol).
 
-            The  <STRONG>curses.h</STRONG>  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 <STRONG>WINDOW</STRONG> structure differs, and very
-            few applications require more than a pointer to <STRONG>WINDOW</STRONG>s.
+            The <EM>curses.h</EM> header file installed for the wide-character  library
+            is  designed  to be compatible with the non-wide library's header.
+            Only the size of the <EM>WINDOW</EM> structure  differs;  few  applications
+            require more than pointers to <EM>WINDOW</EM>s.
 
             If  the  headers  are  installed  allowing  overwrite,  the  wide-
-            character  library's  headers  should  be installed last, to allow
+            character library's headers should be  installed  last,  to  allow
             applications to be built using either library from the same set of
             headers.
 
-       --with-pthread
-            The  configure  script  renames  the  library.  All of the library
-            names have a "t"  appended  to  them  (before  any  "w"  added  by
+       <STRONG>--with-pthread</STRONG>
+            The configure script renames the  library.   All  of  the  library
+            names  have  a  "t"  appended  to  them  (before  any "w" added by
             <STRONG>--enable-widec</STRONG>).
 
             The global variables such as <STRONG>LINES</STRONG> 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
-
-       --with-normal
-
-       --with-debug
-
-       --with-profile
-            The shared and normal  (static)  library  names  differ  by  their
-            suffixes,  e.g.,  <STRONG>libncurses.so</STRONG>  and  <STRONG>libncurses.a</STRONG>.  The debug and
-            profiling libraries add a "_g"  and  a  "_p"  to  the  root  names
+       <STRONG>--with-shared</STRONG>
+       <STRONG>--with-normal</STRONG>
+       <STRONG>--with-debug</STRONG>
+       <STRONG>--with-profile</STRONG>
+            The  shared  and  normal  (static)  library  names differ by their
+            suffixes, e.g., <STRONG>libncurses.so</STRONG> and  <STRONG>libncurses.a</STRONG>.   The  debug  and
+            profiling  libraries  add  a  "_g"  and  a  "_p" to the root names
             respectively, e.g., <STRONG>libncurses_g.a</STRONG> and <STRONG>libncurses_p.a</STRONG>.
 
-       --with-termlib
-            Low-level  functions  which do not depend upon whether the library
+       <STRONG>--with-termlib</STRONG>
+            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:
 
-            <STRONG>o</STRONG>   <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG> - miscellaneous curses extensions
+            <STRONG>o</STRONG>   <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG> - miscellaneous <EM>curses</EM> extensions
 
-            <STRONG>o</STRONG>   <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> - <STRONG>curses</STRONG> input options
+            <STRONG>o</STRONG>   <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> - <EM>curses</EM> input options
 
-            <STRONG>o</STRONG>   <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> - low-level <STRONG>curses</STRONG> routines
+            <STRONG>o</STRONG>   <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> - low-level <EM>curses</EM> routines
 
-            <STRONG>o</STRONG>   <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> - <STRONG>curses</STRONG> environment query routines
+            <STRONG>o</STRONG>   <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> - <EM>curses</EM> environment query routines
 
-            <STRONG>o</STRONG>   <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> - <STRONG>curses</STRONG> emulation of termcap
+            <STRONG>o</STRONG>   <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> - <EM>curses</EM> emulation of <EM>termcap</EM>
 
-            <STRONG>o</STRONG>   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> - <STRONG>curses</STRONG> interfaces to terminfo database
+            <STRONG>o</STRONG>   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> - <EM>curses</EM> interface to <EM>terminfo</EM> database
 
-            <STRONG>o</STRONG>   <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> - miscellaneous <STRONG>curses</STRONG> utility routines
+            <STRONG>o</STRONG>   <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> - miscellaneous <EM>curses</EM> utility routines
 
-       --with-trace
-            The <STRONG>trace</STRONG> function normally resides in the debug library,  but  it
-            is  sometimes  useful  to  configure  this  in the shared library.
+       <STRONG>--with-trace</STRONG>
+            The  <STRONG>trace</STRONG>  function normally resides in the debug library, but it
+            is sometimes useful to  configure  this  in  the  shared  library.
             Configure scripts should check for the function's existence rather
             than assuming it is always in the debug library.
 
 
 </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       /usr/share/tabset
-            directory   containing   initialization  files  for  the  terminal
-            capability  database   /usr/share/terminfo   terminal   capability
-            database
+       <EM>/usr/share/tabset</EM>
+              tab stop initialization database
 
+       <EM>/usr/share/terminfo</EM>
+              compiled terminal capability database
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>  and  related  pages whose names begin "curs_" for detailed
-       routine descriptions.
-       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
-       <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG> for user-defined capabilities
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       X/Open Curses permits most functions it specifies to be made  available
+       as macros as well.  <EM>ncurses</EM> does so
+
+       <STRONG>o</STRONG>   for functions that return values via their parameters,
+
+       <STRONG>o</STRONG>   to support obsolete features,
+
+       <STRONG>o</STRONG>   to  reuse functions (for example, those that move the cursor before
+           another operation), and
+
+       <STRONG>o</STRONG>   a few special cases.
+
+       If the standard  output  file  descriptor  of  an  <EM>ncurses</EM>  program  is
+       redirected  to  something  that  is  not a terminal device, the library
+       writes screen updates to the standard error file descriptor.  This  was
+       an undocumented feature of SVr3 <EM>curses</EM>.
+
+       See  subsection  "Header  Files"  below  regarding  symbols  exposed by
+       inclusion of <EM>curses.h</EM>.
 
 
 </PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
-       The <STRONG>ncurses</STRONG> library can be compiled with an option (<STRONG>-DUSE_GETCAP</STRONG>)  that
-       falls  back  to  the  old-style /etc/termcap file if the terminal setup
-       code cannot find a terminfo entry corresponding to <STRONG>TERM</STRONG>.  Use  of  this
-       feature  is  not  recommended,  as  it  essentially  includes an entire
-       termcap compiler in the <STRONG>ncurses</STRONG> startup code, at  significant  cost  in
-       core and startup cycles.
-
-       The  <STRONG>ncurses</STRONG>  library includes facilities for capturing mouse events on
-       certain terminals (including xterm).   See  the  <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>  manual
-       page for details.
-
-       The  <STRONG>ncurses</STRONG>  library  includes  facilities  for  responding  to window
-       resizing  events,  e.g.,  when  running   in   an   xterm.    See   the
-       <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>  and <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> manual pages for details.  In addition,
-       the library may be configured with a <STRONG>SIGWINCH</STRONG> handler.
-
-       The <STRONG>ncurses</STRONG> library extends the fixed set of function key  capabilities
-       of  terminals by allowing the application designer to define additional
-       key sequences at runtime.  See the <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG> <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>,  and
-       <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG> manual pages for details.
-
-       The  <STRONG>ncurses</STRONG>  library  can  exploit the capabilities of terminals which
-       implement the ISO-6429 SGR 39 and  SGR  49  controls,  which  allow  an
-       application  to  reset  the  terminal  to  its  original foreground and
-       background colors.  From the users'  perspective,  the  application  is
-       able  to  draw  colored  text  on  a  background  whose  color  is  set
-       independently, providing better control over color contrasts.  See  the
-       <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG> manual page for details.
+       <EM>ncurses</EM> enables an application  to  capture  mouse  events  on  certain
+       terminals, including <STRONG>xterm(1)</STRONG>; see <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>.
 
-       The  <STRONG>ncurses</STRONG>  library  includes  a  function  for directing application
-       output  to  a  printer  attached  to  the  terminal  device.   See  the
-       <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> manual page for details.
+       <EM>ncurses</EM>  provides  a  means of responding to window resizing events, as
+       when running in a GUI terminal emulator application such as <EM>xterm</EM>;  see
+       <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> and <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
 
+       <EM>ncurses</EM> allows an application to query the terminal for the presence of
+       a wide variety of special keys; see <STRONG><A HREF="curs_getch.3x.html">has_key(3x)</A></STRONG>.
 
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The  <STRONG>ncurses</STRONG>  library  is intended to be BASE-level conformant with XSI
-       Curses.   The  EXTENDED  XSI  Curses  functionality  (including   color
-       support) is supported.
+       <EM>ncurses</EM> extends the fixed set of function key capabilities specified by
+       X/Open   Curses  by  allowing  the  application  programmer  to  define
+       additional key events at runtime; see <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>,  <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>,
+       <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>, and <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>.
+
+       <EM>ncurses</EM>   can   exploit  the  capabilities  of  terminals  implementing
+       ISO 6429/ECMA-48  SGR 39  and  SGR 49   sequences,   which   allow   an
+       application  to  reset  the  terminal  to  its  original foreground and
+       background colors.  From a user's perspective, the application is  able
+       to  draw colored text on a background whose color is set independently,
+       providing better control over color contrasts.  See <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>.
 
-       A  small  number  of local differences (that is, individual differences
-       between the XSI Curses and <STRONG>ncurses</STRONG> calls) are described in  <STRONG>PORTABILITY</STRONG>
-       sections of the library man pages.
+       An  <EM>ncurses</EM>  application  can  eschew  knowledge  of  <EM>WINDOW</EM>  structure
+       internals, instead using accessor functions such as <STRONG><A HREF="curs_opaque.3x.html">is_scrollok(3x)</A></STRONG>.
 
+       <EM>ncurses</EM>  enables  an  application  to  direct  application  output to a
+       printer attached to the terminal device; see <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>.
 
-</PRE><H3><a name="h3-Error-checking">Error checking</a></H3><PRE>
-       In  many cases, X/Open Curses is vague about error conditions, omitting
-       some of the SVr4 documentation.
+       <EM>ncurses</EM> offers <STRONG><A HREF="curs_slk.3x.html">slk_attr(3x)</A></STRONG> as a counterpart of <STRONG><A HREF="curs_attr.3x.html">attr_get(3x)</A></STRONG> for  soft-
+       label  key lines, and <STRONG><A HREF="curs_slk.3x.html">extended_slk_color(3x)</A></STRONG> as a form of <STRONG><A HREF="curs_slk.3x.html">slk_color(3x)</A></STRONG>
+       that can gather color  information  from  them  when  many  colors  are
+       supported.
 
-       Unlike other  implementations,  this  one  checks  parameters  such  as
-       pointers  to  WINDOW  structures to ensure they are not null.  The main
-       reason for providing this  behavior  is  to  guard  against  programmer
-       error.   The  standard interface does not provide a way for the library
-       to tell an application which of several possible errors were  detected.
-       Relying  on  this  (or  some other) extension will adversely affect the
-       portability of curses applications.
+       Some  extensions  are available only if <EM>ncurses</EM> permits modification of
+       <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>'s behavior; see <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG>.  <EM>ncurses</EM> is  compiled
+       to support them; section "ALTERNATE CONFIGURATIONS" describes how.
 
+       <STRONG>o</STRONG>   Rudimentary   support   for   multi-threaded  applications  may  be
+           available; see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>.
 
-</PRE><H3><a name="h3-Extensions-versus-portability">Extensions versus portability</a></H3><PRE>
-       Most of the extensions provided by ncurses have not been  standardized.
-       Some  have  been  incorporated  into  other  implementations,  such  as
-       PDCurses or NetBSD curses.  Here are a few to consider:
+       <STRONG>o</STRONG>   Functions that ease the  management  of  multiple  screens  can  be
+           exposed; see <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>.
 
-       <STRONG>o</STRONG>   The routine <STRONG>has_key</STRONG> is not part of XPG4, nor is it present in SVr4.
-           See the <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> manual page for details.
+       <STRONG>o</STRONG>   To aid applications to debug their memory usage, <EM>ncurses</EM> optionally
+           offers functions to more aggressively free  memory  it  dynamically
+           allocates itself; see <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>.
 
-       <STRONG>o</STRONG>   The  routine  <STRONG>slk_attr</STRONG>  is  not  part of XPG4, nor is it present in
-           SVr4.  See the <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> manual page for details.
+       <STRONG>o</STRONG>   The   library  facilitates  auditing  and  troubleshooting  of  its
+           behavior; see <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>.
 
-       <STRONG>o</STRONG>   The routines <STRONG>getmouse</STRONG>, <STRONG>mousemask</STRONG>,  <STRONG>ungetmouse</STRONG>,  <STRONG>mouseinterval</STRONG>,  and
-           <STRONG>wenclose</STRONG>  relating  to  mouse interfacing are not part of XPG4, nor
-           are they present in SVr4.  See the <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> manual  page  for
-           details.
+       <STRONG>o</STRONG>   The compiler option <STRONG>-DUSE_GETCAP</STRONG> causes the library to fall back to
+           reading <EM>/etc/termcap</EM> if the terminal setup code cannot find a <EM>term-</EM>
+           <EM>info</EM> entry corresponding to <EM>TERM</EM>.   Use  of  this  feature  is  not
+           recommended,  as it essentially includes an entire <EM>termcap</EM> compiler
+           in the <EM>ncurses</EM>  startup  code,  at  a  cost  in  memory  usage  and
+           application launch latency.
 
-       <STRONG>o</STRONG>   The  routine  <STRONG>mcprint</STRONG>  was  not  present  in  any  previous  curses
-           implementation.  See the <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> manual page for details.
+       <EM>PDCurses</EM>   and  NetBSD  <EM>curses</EM>  incorporate  some  <EM>ncurses</EM>  extensions.
+       Individual man pages indicate where this is the case.
 
-       <STRONG>o</STRONG>   The routine <STRONG>wresize</STRONG> is not part of XPG4, nor is it present in SVr4.
-           See the <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> manual page for details.
 
-       <STRONG>o</STRONG>   The   WINDOW  structure's  internal  details  can  be  hidden  from
-           application programs.  See <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> for  the  discussion  of
-           <STRONG>is_scrollok</STRONG>, etc.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       X/Open Curses defines two levels of conformance, "base" and "enhanced".
+       The latter includes several additional features, such as wide-character
+       and color support.  <EM>ncurses</EM> intends base-level conformance with  X/Open
+       Curses,  and  supports  all  features  of its enhanced level except the
+       <STRONG>untic</STRONG> utility.
 
-       <STRONG>o</STRONG>   This  implementation  can  be  configured  to  provide  rudimentary
-           support for multi-threaded applications.  See <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>  for
-           details.
+       Differences between X/Open Curses and <EM>ncurses</EM>  are  documented  in  the
+       "PORTABILITY" sections of applicable man pages.
 
-       <STRONG>o</STRONG>   This  implementation  can  also  be  configured to provide a set of
-           functions which improve the ability  to  manage  multiple  screens.
-           See <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> for details.
 
+</PRE><H3><a name="h3-Error-Checking">Error Checking</a></H3><PRE>
+       In  many cases, X/Open Curses is vague about error conditions, omitting
+       some of the SVr4 documentation.
 
-</PRE><H3><a name="h3-Padding-differences">Padding differences</a></H3><PRE>
-       In  historic  curses  versions, delays embedded in the capabilities <STRONG>cr</STRONG>,
-       <STRONG>ind</STRONG>, <STRONG>cub1</STRONG>, <STRONG>ff</STRONG> and <STRONG>tab</STRONG> activated corresponding delay bits  in  the  UNIX
-       tty driver.  In this implementation, all padding is done by sending NUL
-       bytes.  This  method  is  slightly  more  expensive,  but  narrows  the
-       interface  to the UNIX kernel significantly and increases the package's
-       portability correspondingly.
+       Unlike other implementations, <EM>ncurses</EM> checks pointer  parameters,  such
+       as  those to <EM>WINDOW</EM> structures, to ensure that they are not null.  This
+       is done primarily to guard  against  programmer  error.   The  standard
+       interface does not provide a way for the library to tell an application
+       which of several possible errors occurred.  Relying on  this  (or  some
+       other)   extension   adversely   affects   the  portability  of  <EM>curses</EM>
+       applications.
 
 
-</PRE><H3><a name="h3-Header-files">Header files</a></H3><PRE>
-       The header file <STRONG>&lt;curses.h&gt;</STRONG>  automatically  includes  the  header  files
-       <STRONG>&lt;stdio.h&gt;</STRONG> and <STRONG>&lt;unctrl.h&gt;</STRONG>.
+</PRE><H3><a name="h3-Padding-Differences">Padding Differences</a></H3><PRE>
+       In historical <EM>curses</EM> implementations, delays embedded in  the  <EM>terminfo</EM>
+       capabilities  <STRONG>carriage_return</STRONG>  (<STRONG>cr</STRONG>),  <STRONG>scroll_forward</STRONG> (<STRONG>ind</STRONG>), <STRONG>cursor_left</STRONG>
+       (<STRONG>cub1</STRONG>), <STRONG>form_feed</STRONG> (<STRONG>ff</STRONG>), and <STRONG>tab</STRONG> (<STRONG>ht</STRONG>) activated corresponding delay bits
+       in  the  Unix terminal driver.  <EM>ncurses</EM> performs all padding by sending
+       NUL bytes to the device.  This method is slightly more  expensive,  but
+       narrows   the   interface   to   the   Unix  kernel  significantly  and
+       correspondingly increases the package's portability.
 
-       X/Open Curses has more to say, but does not finish the story:
 
-           The  inclusion  of &lt;curses.h&gt; may make visible all symbols from the
-           headers &lt;stdio.h&gt;, &lt;term.h&gt;, &lt;termios.h&gt;, and &lt;wchar.h&gt;.
+</PRE><H3><a name="h3-Header-Files">Header Files</a></H3><PRE>
+       The header file <EM>curses.h</EM> itself includes the header files  <EM>stdio.h</EM>  and
+       <EM>unctrl.h</EM>.
 
-       Here is a more complete story:
+       X/Open Curses has more to say,
 
-       <STRONG>o</STRONG>   Starting  with  BSD  curses,  all  implementations  have   included
-           &lt;stdio.h&gt;.
+           The  inclusion  of  <EM>curses.h</EM>  may make visible all symbols from the
+           headers <EM>stdio.h</EM>, <EM>term.h</EM>, <EM>termios.h</EM>, and <EM>wchar.h</EM>.
 
-           BSD  curses  included  &lt;curses.h&gt;  and  &lt;unctrl.h&gt; from an internal
-           header "curses.ext" ("ext" was a short name for <EM>externs</EM>).
+       but does not finish the story.  A more complete account follows.
 
-           BSD curses used &lt;stdio.h&gt; internally (for <STRONG>printw</STRONG>  and  <STRONG>scanw</STRONG>),  but
-           nothing in &lt;curses.h&gt; itself relied upon &lt;stdio.h&gt;.
+       <STRONG>o</STRONG>   Starting with 4BSD <EM>curses</EM> (1980) all implementations have  provided
+           a <EM>curses.h</EM> file.
 
-       <STRONG>o</STRONG>   SVr2  curses  added <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>, which relies upon &lt;stdio.h&gt;.  That
-           is, the function prototype uses <STRONG>FILE</STRONG>.
+           BSD  <EM>curses</EM>  code  included  <EM>curses.h</EM> and <EM>unctrl.h</EM> from an internal
+           header file <EM>curses.ext</EM>, where "ext" abbreviated "externs".
 
-           SVr4 curses added <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG>, which also use &lt;stdio.h&gt;.
+           The implementations of <EM>printw</EM> and <EM>scanw</EM> used undocumented  internal
+           functions  of  the  standard I/O library (<STRONG>_</STRONG><EM>doprnt</EM> and <STRONG>_</STRONG><EM>doscan</EM>), but
+           nothing in <EM>curses.h</EM> itself relied upon <EM>stdio.h</EM>.
 
-           X/Open Curses documents all three of these functions.
+       <STRONG>o</STRONG>   SVr2 <EM>curses</EM> added <EM>newterm</EM>, which relies upon  <EM>stdio.h</EM>  because  its
+           function prototype employs the <EM>FILE</EM> type.
 
-           SVr4 curses and X/Open Curses  do  not  require  the  developer  to
-           include  &lt;stdio.h&gt;  before  including  &lt;curses.h&gt;.   Both  document
-           curses showing &lt;curses.h&gt; as the only required header.
+           SVr4 <EM>curses</EM> added <EM>putwin</EM> and <EM>getwin</EM>, which also use <EM>stdio.h</EM>.
 
-           As a result, standard &lt;curses.h&gt; will always include &lt;stdio.h&gt;.
+           X/Open Curses specifies all three of these functions.
 
-       <STRONG>o</STRONG>   X/Open Curses  is  inconsistent  with  respect  to  SVr4  regarding
-           &lt;unctrl.h&gt;.
+           SVr4  <EM>curses</EM>  and  X/Open  Curses  do  not require the developer to
+           include <EM>stdio.h</EM> before <EM>curses.h</EM>.  Both document use  of  <EM>curses</EM>  as
+           requiring only <EM>curses.h</EM>.
 
-           As   noted  in  <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>,  ncurses  includes  &lt;unctrl.h&gt;  from
-           &lt;curses.h&gt; (like SVr4).
+           As a result, standard <EM>curses.h</EM> always includes <EM>stdio.h</EM>.
 
-       <STRONG>o</STRONG>   X/Open's comments about &lt;term.h&gt; and &lt;termios.h&gt; may refer to HP-UX
-           and AIX:
+       <STRONG>o</STRONG>   X/Open  Curses  and  SVr4  <EM>curses</EM>  are inconsistent with respect to
+           <EM>unctrl.h</EM>.
 
-           HP-UX curses includes &lt;term.h&gt; from &lt;curses.h&gt; to declare <STRONG>setupterm</STRONG>
-           in curses.h, but ncurses (and Solaris curses) do not.
+           As noted in <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <EM>ncurses</EM> includes <EM>unctrl.h</EM> from  <EM>curses.h</EM>
+           (as SVr4 does).
 
-           AIX curses includes &lt;term.h&gt; and &lt;termios.h&gt;.  Again, ncurses  (and
-           Solaris curses) do not.
+       <STRONG>o</STRONG>   X/Open  Curses's  comments  about <EM>term.h</EM> and <EM>termios.h</EM> may refer to
+           HP-UX and AIX.
 
-       <STRONG>o</STRONG>   X/Open  says  that &lt;curses.h&gt; <EM>may</EM> include &lt;term.h&gt;, but there is no
-           requirement that it do that.
+           HP-UX <EM>curses</EM> includes <EM>term.h</EM> from <EM>curses.h</EM> to declare <EM>setupterm</EM>  in
+           <EM>curses.h</EM>, but <EM>ncurses</EM> and Solaris <EM>curses</EM> do not.
 
-           Some  programs  use  functions  declared  in  both  &lt;curses.h&gt;  and
-           &lt;term.h&gt;,  and  must include both headers in the same module.  Very
-           old versions of AIX curses  required  including  &lt;curses.h&gt;  before
-           including &lt;term.h&gt;.
+           AIX  <EM>curses</EM>  includes  <EM>term.h</EM>  and  termios.h<EM>.</EM>   Again, <EM>ncurses</EM> and
+           Solaris <EM>curses</EM> do not.
 
-           Because  ncurses  header files include the headers needed to define
-           datatypes used in the headers, ncurses header files can be included
-           in  any  order.  But for portability, you should include &lt;curses.h&gt;
-           before &lt;term.h&gt;.
+       <STRONG>o</STRONG>   X/Open Curses says that <EM>curses.h</EM> <STRONG>may</STRONG> include <EM>term.h</EM>, but  does  not
+           require it to do so.
 
-       <STRONG>o</STRONG>   X/Open Curses says <EM>"may</EM> <EM>make</EM> <EM>visible"</EM> because  including  a  header
-           file does not necessarily make all symbols in it visible (there are
-           ifdef's to consider).
+           Some  programs  use functions declared in both <EM>curses.h</EM> and <EM>term.h</EM>,
+           and must include both header files in the same  module.   Very  old
+           versions  of  AIX  <EM>curses</EM>  required  inclusion  of  <EM>curses.h</EM> before
+           <EM>term.h</EM>.
 
-           For instance, in ncurses &lt;wchar.h&gt; <EM>may</EM> be included  if  the  proper
-           symbol  is defined, and if ncurses is configured for wide-character
-           support.  If the header  is  included,  its  symbols  may  be  made
-           visible.   That depends on the value used for <STRONG>_XOPEN_SOURCE</STRONG> feature
-           test macro.
+           The header files supplied by <EM>ncurses</EM> include the  standard  library
+           headers  required  for  its  declarations,  so <EM>ncurses</EM>'s own header
+           files can be included in  any  order.   But  for  portability,  you
+           should include <EM>curses.h</EM> before <EM>term.h</EM>.
 
-       <STRONG>o</STRONG>   X/Open Curses documents one required header,  in  a  special  case:
-           &lt;stdarg.h&gt;   before  &lt;curses.h&gt;  to  prototype  the  <STRONG>vw_printw</STRONG>  and
-           <STRONG>vw_scanw</STRONG> functions (as  well  as  the  obsolete  the  <STRONG>vwprintw</STRONG>  and
-           <STRONG>vwscanw</STRONG> functions).  Each of those uses a <STRONG>va_list</STRONG> parameter.
+       <STRONG>o</STRONG>   X/Open  Curses  says  "may make visible" because including a header
+           file does not necessarily make visible all of  the  symbols  in  it
+           (consider <STRONG>#ifdef</STRONG> and similar).
 
-           The  two  obsolete  functions  were  introduced in SVr3.  The other
-           functions were introduced  in  X/Open  Curses.   In  between,  SVr4
-           curses  provided  for  the  possibility  that  an application might
-           include either &lt;varargs.h&gt; or &lt;stdarg.h&gt;.  Initially, that was done
-           by  using  <STRONG>void*</STRONG>  for the <STRONG>va_list</STRONG> parameter.  Later, a special type
-           (defined in &lt;stdio.h&gt;) was introduced, to allow for compiler  type-
-           checking.  That special type is always available, because &lt;stdio.h&gt;
-           is always included by &lt;curses.h&gt;.
+           For  instance, <EM>ncurses</EM>'s <EM>curses.h</EM> <STRONG>may</STRONG> include <EM>wchar.h</EM> if the proper
+           symbol is defined, and if <EM>ncurses</EM> is configured for  wide-character
+           support.   If  <EM>wchar.h</EM> is included, its symbols <STRONG>may</STRONG> be made visible
+           depending on the value of the <STRONG>_XOPEN_SOURCE</STRONG> feature test macro.
 
-           None of the X/Open Curses implementations require an application to
-           include  &lt;stdarg.h&gt;  before  &lt;curses.h&gt;  because  they  either have
-           allowed for a special type, or (like  ncurses)  include  &lt;stdarg.h&gt;
-           directly to provide a portable interface.
+       <STRONG>o</STRONG>   X/Open Curses mandates an application's inclusion of one standard C
+           library  header  in  a  special  case:  <EM>stdarg.h</EM> before <EM>curses.h</EM> to
+           prototype the functions <EM>vw</EM><STRONG>_</STRONG><EM>printw</EM> and  <EM>vw</EM><STRONG>_</STRONG><EM>scanw</EM>  (as  well  as  the
+           obsolete  <EM>vwprintw</EM>  and  <EM>vwscanw</EM>).   Each of these takes a variadic
+           argument list, a <EM>va</EM><STRONG>_</STRONG><EM>list</EM> parameter, like that of <STRONG>printf(3)</STRONG>.
 
+           SVr3 <EM>curses</EM> introduced  the  two  obsolete  functions,  and  X/Open
+           Curses  the  others.   In  between,  SVr4  <EM>curses</EM>  provided for the
+           possibility that an application might include either  <EM>varargs.h</EM>  or
+           <EM>stdarg.h</EM>.   These  represented  contrasting  approaches to handling
+           variadic argument lists.  The older interface,  <EM>varargs.h</EM>,  used  a
+           pointer  to <EM>char</EM> for variadic functions' <EM>va</EM><STRONG>_</STRONG><EM>list</EM> parameter.  Later,
+           the list acquired its own standard data type, <EM>va</EM><STRONG>_</STRONG><EM>list</EM>,  defined  in
+           <EM>stdarg.h</EM>,  empowering the compiler to check the types of a function
+           call's actual parameters against the formal ones  declared  in  its
+           prototype.
 
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       If  standard  output from a <STRONG>ncurses</STRONG> program is re-directed to something
-       which is not a tty, screen updates will be directed to standard  error.
-       This was an undocumented feature of AT&amp;T System V Release 3 curses.
+           No   conforming   implementations   of  X/Open  Curses  require  an
+           application to include <EM>stdarg.h</EM> before <EM>curses.h</EM> because they either
+           have  allowed  for  a  special type, or, like <EM>ncurses</EM>, they include
+           <EM>stdarg.h</EM> themselves to provide a portable interface.
 
 
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        by Pavel Curtis.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
+
 
-                                                                   <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
+
+ncurses 6.5                       2024-04-27                       <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
+<li><a href="#h3-Application-Structure">Application Structure</a></li>
+<li><a href="#h3-Overview">Overview</a></li>
 <li><a href="#h3-Initialization">Initialization</a></li>
-<li><a href="#h3-Datatypes">Datatypes</a></li>
-<li><a href="#h3-Environment-variables">Environment variables</a></li>
-<li><a href="#h3-Routine-and-Argument-Names">Routine and Argument Names</a></li>
-<li><a href="#h3-Routine-Name-Index">Routine Name Index</a></li>
+<li><a href="#h3-Naming-Conventions">Naming Conventions</a></li>
+<li><a href="#h3-Wide-and-Non-wide-Character-Configurations">Wide and Non-wide Character Configurations</a></li>
+<li><a href="#h3-Function-Name-Index">Function Name Index</a></li>
 </ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a>
 <ul>
-<li><a href="#h3-CC-command-character">CC command-character</a></li>
 <li><a href="#h3-BAUDRATE">BAUDRATE</a></li>
+<li><a href="#h3-CC-_command-character_">CC (command character)</a></li>
 <li><a href="#h3-COLUMNS">COLUMNS</a></li>
 <li><a href="#h3-ESCDELAY">ESCDELAY</a></li>
 <li><a href="#h3-HOME">HOME</a></li>
 </li>
 <li><a href="#h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></li>
 <li><a href="#h2-FILES">FILES</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a>
 <ul>
-<li><a href="#h3-Error-checking">Error checking</a></li>
-<li><a href="#h3-Extensions-versus-portability">Extensions versus portability</a></li>
-<li><a href="#h3-Padding-differences">Padding differences</a></li>
-<li><a href="#h3-Header-files">Header files</a></li>
+<li><a href="#h3-Error-Checking">Error Checking</a></li>
+<li><a href="#h3-Padding-Differences">Padding Differences</a></li>
+<li><a href="#h3-Header-Files">Header Files</a></li>
 </ul>
 </li>
-<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
diff --git a/doc/html/man/ncurses6-config.1.html b/doc/html/man/ncurses6-config.1.html
deleted file mode 100644 (file)
index 0f64e3d..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-<!--
-  ****************************************************************************
-  * Copyright 2020,2021 Thomas E. Dickey                                     *
-  * Copyright 2010 Free Software Foundation, Inc.                            *
-  *                                                                          *
-  * Permission is hereby granted, free of charge, to any person obtaining a  *
-  * copy of this software and associated documentation files (the            *
-  * "Software"), to deal in the Software without restriction, including      *
-  * without limitation the rights to use, copy, modify, merge, publish,      *
-  * distribute, distribute with modifications, sublicense, and/or sell       *
-  * copies of the Software, and to permit persons to whom the Software is    *
-  * furnished to do so, subject to the following conditions:                 *
-  *                                                                          *
-  * The above copyright notice and this permission notice shall be included  *
-  * in all copies or substantial portions of the Software.                   *
-  *                                                                          *
-  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
-  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
-  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
-  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
-  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
-  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
-  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
-  *                                                                          *
-  * Except as contained in this notice, the name(s) of the above copyright   *
-  * holders shall not be used in advertising or otherwise to promote the     *
-  * sale, use or other dealings in this Software without prior written       *
-  * authorization.                                                           *
-  ****************************************************************************
-  * @Id: MKncu_config.in,v 1.6 2021/12/25 17:39:16 tom Exp @
--->
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
-<HTML>
-<HEAD>
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
-<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>ncurses6-config 1</TITLE>
-<link rel="author" href="mailto:bug-ncurses@gnu.org">
-
-</HEAD>
-<BODY>
-<H1 class="no-header">ncurses6-config 1</H1>
-<PRE>
-<STRONG><A HREF="ncurses6-config.1.html">ncurses6-config(1)</A></STRONG>          General Commands Manual         <STRONG><A HREF="ncurses6-config.1.html">ncurses6-config(1)</A></STRONG>
-
-
-
-
-</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       ncurses6-config - helper script for ncurses libraries
-
-
-</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>ncurses6-config</STRONG> [<EM>options</EM>]
-
-
-</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This  is  a  shell  script  which  simplifies  configuring applications
-       against a particular set of ncurses libraries.
-
-
-</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
-       <STRONG>--prefix</STRONG>
-              echos the package-prefix of ncurses
-
-       <STRONG>--exec-prefix</STRONG>
-              echos the executable-prefix of ncurses
-
-       <STRONG>--cflags</STRONG>
-              echos the C compiler flags needed to compile with ncurses
-
-       <STRONG>--libs</STRONG> echos the libraries needed to link with ncurses
-
-       <STRONG>--version</STRONG>
-              echos the release+patchdate version of ncurses
-
-       <STRONG>--abi-version</STRONG>
-              echos the ABI version of ncurses
-
-       <STRONG>--mouse-version</STRONG>
-              echos the mouse-interface version of ncurses
-
-       <STRONG>--bindir</STRONG>
-              echos the directory containing ncurses programs
-
-       <STRONG>--datadir</STRONG>
-              echos the directory containing ncurses data
-
-       <STRONG>--includedir</STRONG>
-              echos the directory containing ncurses header files
-
-       <STRONG>--libdir</STRONG>
-              echos the directory containing ncurses libraries
-
-       <STRONG>--mandir</STRONG>
-              echos the directory containing ncurses manpages
-
-       <STRONG>--terminfo</STRONG>
-              echos the $TERMINFO terminfo database path, e.g.,
-              /usr/share/terminfo
-
-       <STRONG>--terminfo-dirs</STRONG>
-              echos the $TERMINFO_DIRS directory list, e.g.,
-              /usr/share/terminfo
-
-       <STRONG>--termpath</STRONG>
-              echos the $TERMPATH termcap list,  if  support  for  termcap  is
-              configured.
-
-       <STRONG>--help</STRONG> prints this message
-
-
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
-
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
-
-
-
-                                                            <STRONG><A HREF="ncurses6-config.1.html">ncurses6-config(1)</A></STRONG>
-</PRE>
-<div class="nav">
-<ul>
-<li><a href="#h2-NAME">NAME</a></li>
-<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
-<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-OPTIONS">OPTIONS</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-</ul>
-</div>
-</BODY>
-</HTML>
diff --git a/doc/html/man/ncursesw6-config.1.html b/doc/html/man/ncursesw6-config.1.html
new file mode 100644 (file)
index 0000000..6380a6d
--- /dev/null
@@ -0,0 +1,127 @@
+<!--
+  ****************************************************************************
+  * Copyright 2020-2023,2024 Thomas E. Dickey                                *
+  * Copyright 2010 Free Software Foundation, Inc.                            *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: MKncu_config.in,v 1.24 2024/04/20 21:13:38 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>ncursesw6-config 1 2024-04-20 ncurses 6.5 User commands</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+
+</HEAD>
+<BODY>
+<H1 class="no-header">ncursesw6-config 1 2024-04-20 ncurses 6.5 User commands</H1>
+<PRE>
+<STRONG><A HREF="ncursesw6-config.1.html">ncursesw6-config(1)</A></STRONG>              User commands             <STRONG><A HREF="ncursesw6-config.1.html">ncursesw6-config(1)</A></STRONG>
+
+
+
+
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>ncursesw6-config</STRONG> - configuration helper for <EM>ncurses</EM> libraries
+
+
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>ncursesw6-config</STRONG> <EM>option</EM> ...
+
+       <STRONG>ncursesw6-config</STRONG> <STRONG>--version</STRONG>
+
+       <STRONG>ncursesw6-config</STRONG> <STRONG>--help</STRONG>
+
+
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       This  program  development  aid  simplifies  the process of configuring
+       applications against a particular set of <EM>ncurses</EM> libraries.
+
+
+</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
+       <STRONG>--prefix</STRONG>          reports the package prefix of <EM>ncurses</EM>.
+
+       <STRONG>--exec-prefix</STRONG>     reports the executable prefix of <EM>ncurses</EM>.
+
+       <STRONG>--cflags</STRONG>          reports the C compiler flags needed to  compile  with
+                         <EM>ncurses</EM>.
+
+       <STRONG>--libs</STRONG>            reports the libraries needed to link with <EM>ncurses</EM>.
+
+       <STRONG>--abi-version</STRONG>     reports the ABI version of <EM>ncurses</EM>.
+
+       <STRONG>--mouse-version</STRONG>   reports the mouse-interface version of <EM>ncurses</EM>.
+
+       <STRONG>--bindir</STRONG>          reports the directory containing <EM>ncurses</EM> programs.
+
+       <STRONG>--datadir</STRONG>         reports the directory containing <EM>ncurses</EM> data.
+
+       <STRONG>--includedir</STRONG>      reports   the  directory  containing  <EM>ncurses</EM>  header
+                         files.
+
+       <STRONG>--libdir</STRONG>          reports the directory containing <EM>ncurses</EM> libraries.
+
+       <STRONG>--mandir</STRONG>          reports the directory containing <EM>ncurses</EM> man pages.
+
+       <STRONG>--terminfo</STRONG>        reports the  <EM>TERMINFO</EM>  <EM>terminfo</EM>  database  path,  for
+                         example <EM>/usr/share/terminfo</EM>.
+
+       <STRONG>--terminfo-dirs</STRONG>   reports  the  <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM>  supplemental search path
+                         for    the    <EM>terminfo</EM>    database,    for    example
+                         <EM>/usr/share/terminfo</EM>.
+
+       <STRONG>--termpath</STRONG>        reports the <EM>TERMPATH</EM> supplemental search path for the
+                         <EM>termcap</EM>  database,  if   support   for   <EM>termcap</EM>   is
+                         configured.
+
+       The following options cause all others to be ignored.
+
+       <STRONG>--help</STRONG>     issues a usage message and exits successfully.
+
+       <STRONG>--version</STRONG>  issues the release and patch date information of <EM>ncurses</EM> and
+                  exits successfully.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
+
+
+
+ncurses 6.5                       2024-04-20               <STRONG><A HREF="ncursesw6-config.1.html">ncursesw6-config(1)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
index 524f96cdc63f7fc6b16e00ed011160320f201d89..3cc73d6f3e290e5eac64b565b06fb76d92916d19 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2017 Free Software Foundation, Inc.                            *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey
-  * @Id: new_pair.3x,v 1.19 2022/02/12 20:03:40 tom Exp @
+  * @Id: new_pair.3x,v 1.46 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>new_pair 3x</TITLE>
+<TITLE>new_pair 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">new_pair 3x</H1>
+<H1 class="no-header">new_pair 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>                                                      <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>
+<STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>                     Library calls                    <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>alloc_pair</STRONG>, <STRONG>find_pair</STRONG>, <STRONG>free_pair</STRONG> - new curses color-pair functions
+       <STRONG>alloc_pair</STRONG>,  <STRONG>find_pair</STRONG>,  <STRONG>free_pair</STRONG>  - dynamically allocate <EM>curses</EM> color
+       pairs
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These functions are an extension to the curses library.  They permit an
-       application  to  dynamically  allocate   a   color   pair   using   the
-       foreground/background  colors  rather  than  assign  a fixed color pair
+       These functions are an extension to the <EM>curses</EM> library.  They permit an
+       application   to   dynamically   allocate   a   color  pair  using  the
+       foreground/background colors rather than  assign  a  fixed  color  pair
        number, and return an unused pair to the pool.
 
-       The number of colors may be related to the  number  of  possible  color
+       The  number  of  colors  may be related to the number of possible color
        pairs for a given terminal, or it may not:
 
-       <STRONG>o</STRONG>   While  almost  all  terminals  allow  setting  the color <EM>attributes</EM>
-           independently, it is unlikely that  your  terminal  allows  you  to
-           modify  the  attributes of a given character cell without rewriting
+       <STRONG>o</STRONG>   While almost all  terminals  allow  setting  the  color  <EM>attributes</EM>
+           independently,  it  is  unlikely  that  your terminal allows you to
+           modify the attributes of a given character cell  without  rewriting
            it.  That is, the foreground and background colors are applied as a
            pair.
 
-       <STRONG>o</STRONG>   Color  pairs  are  the  curses  library's  way  of managing a color
-           palette on a terminal.  If the library does not keep track  of  the
+       <STRONG>o</STRONG>   Color pairs are the  <EM>curses</EM>  library's  way  of  managing  a  color
+           palette  on  a terminal.  If the library does not keep track of the
            <EM>combinations</EM> of colors which are displayed, it will be inefficient.
 
-       <STRONG>o</STRONG>   For   simple  terminal  emulators  with  only  a  few  dozen  color
-           combinations, it  is  convenient  to  use  the  maximum  number  of
+       <STRONG>o</STRONG>   For  simple  terminal  emulators  with  only  a  few  dozen   color
+           combinations,  it  is  convenient  to  use  the  maximum  number of
            combinations as the limit on color pairs:
 
                <STRONG>COLORS</STRONG> <EM>*</EM> <STRONG>COLORS</STRONG>
 
-       <STRONG>o</STRONG>   Terminals  which support <EM>default</EM> <EM>colors</EM> distinct from "ANSI colors"
+       <STRONG>o</STRONG>   Terminals which support <EM>default</EM> <EM>colors</EM> distinct from "ANSI  colors"
            add to the possible combinations, producing this total:
 
                <EM>(</EM> <STRONG>COLORS</STRONG> <EM>+</EM> <EM>1</EM> <EM>)</EM> <EM>*</EM> <EM>(</EM> <STRONG>COLORS</STRONG> <EM>+</EM> <EM>1</EM> <EM>)</EM>
        <STRONG>o</STRONG>   An application might use up to a few dozen color pairs to implement
            a predefined color scheme.
 
-           Beyond  that lies in the realm of programs using the foreground and
-           background colors  for  "ASCII  art"  (or  some  other  non-textual
+           Beyond that lies in the realm of programs using the foreground  and
+           background  colors  for  "ASCII  art"  (or  some  other non-textual
            application).
 
            Also beyond those few dozen pairs, the required size for a table to
-           represent the combinations grows rapidly with an increasing  number
+           represent  the combinations grows rapidly with an increasing number
            of colors.
 
-           These  functions allow a developer to let the screen library manage
+           These functions allow a developer to let the screen library  manage
            color pairs.
 
 
 </PRE><H3><a name="h3-alloc_pair">alloc_pair</a></H3><PRE>
-       The  <STRONG>alloc_pair</STRONG>  function  accepts  parameters   for   foreground   and
-       background  color,  and  checks  if  that  color combination is already
+       The   <STRONG>alloc_pair</STRONG>   function   accepts  parameters  for  foreground  and
+       background color, and checks  if  that  color  combination  is  already
        associated with a color pair.
 
-       <STRONG>o</STRONG>   If the combination already exists, <STRONG>alloc_pair</STRONG> returns the  existing
+       <STRONG>o</STRONG>   If  the combination already exists, <STRONG>alloc_pair</STRONG> returns the existing
            pair.
 
        <STRONG>o</STRONG>   If the combination does not exist, <STRONG>alloc_pair</STRONG> allocates a new color
            pair and returns that.
 
-       <STRONG>o</STRONG>   If the table  fills  up,  <STRONG>alloc_pair</STRONG>  discards  the  least-recently
+       <STRONG>o</STRONG>   If  the  table  fills  up,  <STRONG>alloc_pair</STRONG>  discards the least-recently
            allocated entry using <STRONG>free_pair</STRONG> and allocates a new color pair.
 
-       All  of  the  color  pairs are allocated from a table of possible color
-       pairs.  The size of the table  is  determined  by  the  terminfo  <STRONG>pairs</STRONG>
-       capability.   The  table  is  shared with <STRONG>init_pair</STRONG>; in fact <STRONG>alloc_pair</STRONG>
-       calls <STRONG>init_pair</STRONG> after updating the ncurses library's fast index to  the
+       All of the color pairs are allocated from a  table  of  possible  color
+       pairs.   The  size  of  the  table  is determined by the terminfo <STRONG>pairs</STRONG>
+       capability.  The table is shared with  <STRONG>init_pair</STRONG>;  in  fact  <STRONG>alloc_pair</STRONG>
+       calls  <STRONG>init_pair</STRONG> after updating the <EM>ncurses</EM> library's fast index to the
        colors versus color pairs.
 
 
 </PRE><H3><a name="h3-find_pair">find_pair</a></H3><PRE>
        The <STRONG>find_pair</STRONG> function accepts parameters for foreground and background
-       color, and checks if that color combination is already associated  with
-       a  color  pair,  returning  the  pair  number if it has been allocated.
+       color,  and checks if that color combination is already associated with
+       a color pair, returning the pair  number  if  it  has  been  allocated.
        Otherwise it returns -1.
 
 
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       The <STRONG>alloc_pair</STRONG> function returns a color pair  number  in  the  range  1
-       through  <STRONG>COLOR_PAIRS</STRONG>-1, unless it encounters an error updating its fast
-       index to the color pair values, preventing it from allocating  a  color
+       The  <STRONG>alloc_pair</STRONG>  function  returns  a  color pair number in the range 1
+       through <STRONG>COLOR_PAIRS</STRONG>-1, unless it encounters an error updating its  fast
+       index  to  the color pair values, preventing it from allocating a color
        pair.  In that case, it returns -1.
 
-       The  <STRONG>find_pair</STRONG>  function returns a color pair number if the given color
+       The <STRONG>find_pair</STRONG> function returns a color pair number if the  given  color
        combination has been associated with a color pair, or -1 if not.
 
-       Likewise, <STRONG>free_pair</STRONG> returns <STRONG>OK</STRONG> unless it encounters an  error  updating
+       Likewise,  <STRONG>free_pair</STRONG>  returns <STRONG>OK</STRONG> unless it encounters an error updating
        the fast index or if no such color pair is in use.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       These  routines  are  specific  to ncurses.  They were not supported on
+       These routines are specific to <EM>ncurses</EM>.  They  were  not  supported  on
        Version 7, BSD or System V implementations.  It is recommended that any
-       code depending on them be conditioned using NCURSES_VERSION.
+       code depending on them be conditioned using <STRONG>NCURSES_VERSION</STRONG>.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Thomas Dickey
 
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Thomas Dickey.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
 
 
 
-                                                                  <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                      <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index 761a0fbd99a3b42f421c352cc9af44027ed3d1ee..58ad42d26efe6d24c844a71d5c6e1191d887a22a 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: panel.3x,v 1.42 2022/02/12 20:03:40 tom Exp @
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
-  * ---------
+  * @Id: panel.3x,v 1.63 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>panel 3x</TITLE>
+<TITLE>panel 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">panel 3x</H1>
+<H1 class="no-header">panel 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>                                                            <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>
+<STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>                        Library calls                       <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       panel - panel stack extension for curses
+       panel - panel stack extension for <EM>curses</EM>
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;panel.h&gt;</STRONG>
 
-       <STRONG>cc</STRONG> <STRONG>[flags]</STRONG> <STRONG>sourcefiles</STRONG> <STRONG>-lpanel</STRONG> <STRONG>-lncurses</STRONG>
-
        <STRONG>PANEL</STRONG> <STRONG>*new_panel(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>bottom_panel(PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG>
 
        <STRONG>int</STRONG> <STRONG>del_panel(PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG>
 
-       /* ncurses-extensions */
+       <EM>/*</EM> <EM>ncurses</EM> <EM>extensions</EM> <EM>*/</EM>
        <STRONG>PANEL</STRONG> <STRONG>*ground_panel(SCREEN</STRONG> <STRONG>*</STRONG><EM>sp</EM><STRONG>);</STRONG>
        <STRONG>PANEL</STRONG> <STRONG>*ceiling_panel(SCREEN</STRONG> <STRONG>*</STRONG><EM>sp</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       Panels  are  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> windows with the added feature of depth.  Panel
-       functions allow the use  of  stacked  windows  and  ensure  the  proper
-       portions  of  each  window  and  the curses <STRONG>stdscr</STRONG> window are hidden or
-       displayed when panels are added, moved, modified or removed.   The  set
+       Panels  are <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> windows with the added property of depth.  Panel
+       functions allow the use of stacked windows and ensure that  the  proper
+       portions  of  each  window  and  the <EM>curses</EM> <STRONG>stdscr</STRONG> window are hidden or
+       displayed when panels are added, moved, modified, or removed.  The  set
        of  currently visible panels is the stack of panels.  The <STRONG>stdscr</STRONG> window
        is beneath all panels, and is not considered part of the stack.
 
-       A window is associated with every panel.  The panel routines enable you
-       to  create, move, hide, and show panels, as well as position a panel at
-       any desired location in the stack.
+       A window is associated with each panel.  The panel routines enable  you
+       to  create,  move,  hide, and show panels.  You can relocate a panel to
+       any desired position in the stack.
 
-       Panel routines are a functional layer added to  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  make  only
-       high-level curses calls, and work anywhere terminfo curses does.
+       Panel routines are a functional layer added to <EM>curses</EM>, make only  high-
+       level <EM>curses</EM> calls, and work anywhere <EM>curses</EM> does.
 
 
 </PRE><H2><a name="h2-FUNCTIONS">FUNCTIONS</a></H2><PRE>
 
 
 </PRE><H3><a name="h3-ceiling_panel">ceiling_panel</a></H3><PRE>
-       <STRONG>ceiling_panel(</STRONG><EM>sp</EM><STRONG>)</STRONG> acts like <STRONG>panel_below(NULL)</STRONG>, for the given <STRONG>SCREEN</STRONG> <EM>sp</EM>.
+       <STRONG>ceiling_panel(</STRONG><EM>sp</EM><STRONG>)</STRONG> acts like <STRONG>panel_below(NULL)</STRONG> for the given <EM>SCREEN</EM> <EM>sp</EM>.
 
 
 </PRE><H3><a name="h3-del_panel">del_panel</a></H3><PRE>
-       <STRONG>del_panel(</STRONG><EM>pan</EM><STRONG>)</STRONG>  removes  the  given  panel  <EM>pan</EM>  from  the   stack  and
-       deallocates the <STRONG>PANEL</STRONG> structure (but not its associated window).
+       <STRONG>del_panel(</STRONG><EM>pan</EM><STRONG>)</STRONG>   removes  the  given  panel  <EM>pan</EM>  from  the  stack  and
+       deallocates the <EM>PANEL</EM> structure (but not its associated window).
 
 
 </PRE><H3><a name="h3-ground_panel">ground_panel</a></H3><PRE>
-       <STRONG>ground_panel(</STRONG><EM>sp</EM><STRONG>)</STRONG> acts like <STRONG>panel_above(NULL)</STRONG>, for the given <STRONG>SCREEN</STRONG> <EM>sp</EM>.
+       <STRONG>ground_panel(</STRONG><EM>sp</EM><STRONG>)</STRONG> acts like <STRONG>panel_above(NULL)</STRONG> for the given <EM>SCREEN</EM> <EM>sp</EM>.
 
 
 </PRE><H3><a name="h3-hide_panel">hide_panel</a></H3><PRE>
        <STRONG>hide_panel(</STRONG><EM>pan</EM><STRONG>)</STRONG> removes the given panel <EM>pan</EM> from the  panel  stack  and
-       thus  hides  it  from  view.   The  <STRONG>PANEL</STRONG> structure is not lost, merely
+       thus  hides  it  from  view.   The  <EM>PANEL</EM> structure is not lost, merely
        removed from the stack.
 
 
 </PRE><H3><a name="h3-move_panel">move_panel</a></H3><PRE>
-       <STRONG>move_panel(</STRONG><EM>pan</EM><STRONG>,</STRONG><EM>starty</EM><STRONG>,</STRONG><EM>startx</EM><STRONG>)</STRONG> moves the given  panel  <EM>pan</EM>'s  window  so
+       <STRONG>move_panel(</STRONG><EM>pan</EM><STRONG>,</STRONG> <EM>starty</EM><STRONG>,</STRONG> <EM>startx</EM><STRONG>)</STRONG> moves the given panel <EM>pan</EM>'s  window  so
        that  its  upper-left  corner is at <EM>starty</EM>, <EM>startx</EM>.  It does not change
        the position of the panel in the stack.  Be sure to use this  function,
        not <STRONG><A HREF="curs_window.3x.html">mvwin(3x)</A></STRONG>, to move a panel window.
 
 
 </PRE><H3><a name="h3-new_panel">new_panel</a></H3><PRE>
-       <STRONG>new_panel(</STRONG><EM>win</EM><STRONG>)</STRONG>  allocates  a  <STRONG>PANEL</STRONG>  structure, associates it with <EM>win</EM>,
-       places the panel on the top of the stack (causes  it to  be   displayed
+       <STRONG>new_panel(</STRONG><EM>win</EM><STRONG>)</STRONG>  allocates  a  <EM>PANEL</EM>  structure, associates it with <EM>win</EM>,
+       places the panel on the top of the stack (causes  it  to  be  displayed
        above any other panel) and returns a pointer to the new panel.
 
 
 </PRE><H3><a name="h3-panel_above">panel_above</a></H3><PRE>
        <STRONG>panel_above(</STRONG><EM>pan</EM><STRONG>)</STRONG>  returns  a  pointer  to  the panel above <EM>pan</EM>.  If the
-       panel argument is <STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>, it returns a pointer to the bottom  panel
-       in the stack.
+       panel argument is "<STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>", it returns  a  pointer  to  the  bottom
+       panel in the stack.
 
 
 </PRE><H3><a name="h3-panel_below">panel_below</a></H3><PRE>
        <STRONG>panel_below(</STRONG><EM>pan</EM><STRONG>)</STRONG> returns a pointer to the panel just below <EM>pan</EM>.  If the
-       panel argument is <STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>, it returns a pointer to the top panel  in
-       the stack.
+       panel argument is "<STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>", it returns a pointer to the  top  panel
+       in the stack.
 
 
 </PRE><H3><a name="h3-panel_hidden">panel_hidden</a></H3><PRE>
-       <STRONG>panel_hidden(</STRONG><EM>pan</EM><STRONG>)</STRONG>  returns <STRONG>TRUE</STRONG> if the panel <EM>pan</EM> is in the panel stack,
-       <STRONG>FALSE</STRONG> if it is not.  If the panel is a null pointer, return <STRONG>ERR</STRONG>.
+       <STRONG>panel_hidden(</STRONG><EM>pan</EM><STRONG>)</STRONG> returns <STRONG>FALSE</STRONG> if the panel <EM>pan</EM> is in the panel stack,
+       and <STRONG>TRUE</STRONG> if it is not.  If the panel is a null pointer, it returns <STRONG>ERR</STRONG>.
 
 
 </PRE><H3><a name="h3-panel_userptr">panel_userptr</a></H3><PRE>
 
 
 </PRE><H3><a name="h3-replace_panel">replace_panel</a></H3><PRE>
-       <STRONG>replace_panel(</STRONG><EM>pan</EM><STRONG>,</STRONG><EM>window</EM><STRONG>)</STRONG> replaces the current window of panel <EM>pan</EM> with
-       <EM>window</EM> This is useful, for example if you want to resize a  panel.   In
-       <STRONG>ncurses</STRONG>,  you  can  call <STRONG>replace_panel</STRONG> to resize a panel using a window
+       <STRONG>replace_panel(</STRONG><EM>pan</EM><STRONG>,</STRONG>  <EM>window</EM><STRONG>)</STRONG>  replaces  the  current window of panel <EM>pan</EM>
+       with <EM>window</EM> This is useful if, for example, you want to resize a panel.
+       In <EM>ncurses</EM>, you can call <STRONG>replace_panel</STRONG> to resize a panel using a window
        resized with <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.  It does not change the position of the panel
        in the stack.
 
 
 </PRE><H3><a name="h3-set_panel_userptr">set_panel_userptr</a></H3><PRE>
-       <STRONG>set_panel_userptr(</STRONG><EM>pan</EM><STRONG>,</STRONG><EM>ptr</EM><STRONG>)</STRONG> sets the panel's user pointer.
+       <STRONG>set_panel_userptr(</STRONG><EM>pan</EM><STRONG>,</STRONG> <EM>ptr</EM><STRONG>)</STRONG> sets the panel's user pointer.
 
 
 </PRE><H3><a name="h3-show_panel">show_panel</a></H3><PRE>
        <STRONG>show_panel(</STRONG><EM>pan</EM><STRONG>)</STRONG>  makes  a  hidden panel visible by placing it on top of
-       the panels in the panel stack.  See <STRONG>COMPATIBILITY</STRONG> below.
+       the panels in the panel stack.  See "PORTABILITY" below.
 
 
 </PRE><H3><a name="h3-top_panel">top_panel</a></H3><PRE>
        <STRONG>top_panel(</STRONG><EM>pan</EM><STRONG>)</STRONG> puts the given visible panel <EM>pan</EM> on top of all panels in
-       the stack.  See <STRONG>COMPATIBILITY</STRONG> below.
+       the stack.  See "PORTABILITY" below.
 
 
 </PRE><H3><a name="h3-update_panels">update_panels</a></H3><PRE>
-       <STRONG>update_panels()</STRONG>  refreshes  the <EM>virtual</EM> <EM>screen</EM> to reflect the relations
+       <STRONG>update_panels()</STRONG>  refreshes  the virtual screen to reflect the relations
        between the panels in the stack, but  does  not  call  <STRONG><A HREF="curs_refresh.3x.html">doupdate(3x)</A></STRONG>  to
-       refresh the <EM>physical</EM> <EM>screen</EM>.  Use this function and not <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG> or
+       refresh the physical screen.  Use this function and not <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG> or
        <STRONG><A HREF="curs_refresh.3x.html">wnoutrefresh(3x)</A></STRONG>.
 
        <STRONG>update_panels</STRONG> may be called more than once before a call  to  <STRONG>doupdate</STRONG>,
-       but  <STRONG>doupdate</STRONG>  is  the  function  responsible for updating the <EM>physical</EM>
-       <EM>screen</EM>.
+       but  <STRONG>doupdate</STRONG>  is  the  function  responsible for updating the physical
+       screen.
 
 
-</PRE><H2><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></H2><PRE>
+</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Each routine that returns a pointer returns <STRONG>NULL</STRONG> if  an  error  occurs.
        Each  routine  that  returns  an  int  value  returns <STRONG>OK</STRONG> if it executes
        successfully and <STRONG>ERR</STRONG> if not.
 
        Except as noted, the <EM>pan</EM> and <EM>window</EM> parameters must  be  non-null.   If
-       those are null, an error is returned.
+       either is null, an error is returned.
+
+       The  <STRONG>move_panel</STRONG>  function uses <STRONG><A HREF="curs_window.3x.html">mvwin(3x)</A></STRONG>, and returns an error if <STRONG>mvwin</STRONG>
+       returns an error.
 
-       The  <STRONG>move_panel</STRONG>  function  uses  <STRONG><A HREF="curs_window.3x.html">mvwin(3x)</A></STRONG>, and will return an error if
-       <STRONG>mvwin</STRONG> returns an error.
 
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       The header file <EM>panel.h</EM> itself includes the header file <EM>curses.h</EM>.
 
-</PRE><H2><a name="h2-COMPATIBILITY">COMPATIBILITY</a></H2><PRE>
-       Reasonable care has been taken  to   ensure   compatibility  with   the
-       native   panel  facility introduced in System V (inspection of the SVr4
-       manual pages suggests the programming  interface  is  unchanged).   The
-       <STRONG>PANEL</STRONG>   data  structures  are  merely   similar.   The   programmer  is
-       cautioned not to directly use <STRONG>PANEL</STRONG> fields.
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       Reasonable care has been taken to ensure compatibility with the  native
+       panel  facility  introduced  in System V; inspection of the SVr4 manual
+       pages suggests the programming interface never changed.  The <EM>PANEL</EM> data
+       structures  are  merely  similar.   The  programmer is cautioned not to
+       directly use <EM>PANEL</EM> fields.
 
        The  functions  <STRONG>show_panel</STRONG>  and  <STRONG>top_panel</STRONG>  are   identical   in   this
        implementation,  and work equally well with displayed or hidden panels.
-       In the native System  V  implementation,  <STRONG>show_panel</STRONG>  is  intended  for
-       making  a  hidden panel visible (at the top of the stack) and <STRONG>top_panel</STRONG>
-       is intended for making an already-visible panel move to the top of  the
+       In the System V implementation, <STRONG>show_panel</STRONG> is  intended  for  making  a
+       hidden  panel  visible  (at  the  top  of  the  stack) and <STRONG>top_panel</STRONG> is
+       intended for making an already-visible panel move to  the  top  of  the
        stack.   You  are  cautioned  to  use  the  correct  function to ensure
-       compatibility with native panel libraries.
+       compatibility with System V panel libraries.
 
 
-</PRE><H2><a name="h2-NOTE">NOTE</a></H2><PRE>
-       In your library list, libpanel.a should be  before  libncurses.a;  that
-       is, you should say "-lpanel -lncurses", not the other way around (which
-       would give a link-error with static libraries).
-
-
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The panel facility was documented in SVr4.2 in <EM>Character</EM> <EM>User</EM> <EM>Interface</EM>
-       <EM>Programming</EM> <EM>(UNIX</EM> <EM>SVR4.2)</EM>.
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       A panel facility was documented in SVr4.2's  <EM>Character</EM>  <EM>User</EM>  <EM>Interface</EM>
+       <EM>Programming</EM> document.
 
        It is not part of X/Open Curses.
 
        A few implementations exist:
 
-       <STRONG>o</STRONG>   Systems  based  on  SVr4  source  code, e.g., Solaris, provide this
+       <STRONG>o</STRONG>   Systems  based  on  SVr4 source code, such as Solaris, provide this
            library.
 
-       <STRONG>o</STRONG>   <STRONG>ncurses</STRONG> (since version 0.6 in 1993) and <STRONG>PDCurses</STRONG> (since version 2.2
-           in 1995) provide a panel library whose common ancestor was a public
+       <STRONG>o</STRONG>   <EM>ncurses</EM> (since version 0.6 in 1993) and <EM>PDCurses</EM> (since version 2.2
+           in  1995) provide a panel library whose common ancestor is a public
            domain implementation by Warren Tucker published  in  <EM>u386mon</EM>  2.20
            (1990).
 
-           According  to  Tucker, the SystemV panel library was first released
+           According  to Tucker, the System V panel library was first released
            in SVr3.2 (1988), and his implementation  helped  with  a  port  to
            SVr3.1 (1987).
 
            the same as Tucker's implementation.
 
        <STRONG>o</STRONG>   NetBSD 8 (2018) has a panel library  begun  by  Valery  Ushakov  in
-           2015.  This is based on the AT&amp;T documentation.
-
+           2015, based on the System V documentation.
 
-</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       panel.h interface for the panels library
 
-       libpanel.a the panels library itself
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Warren   Tucker   &lt;wht@n4hgf.mt-park.ga.us&gt;   originally   wrote   this
+       implementation, primarily to  assist  in  porting  <EM>u386mon</EM>  to  systems
+       without a native panel library.
 
+       Zeyd ben-Halim repackaged it for <EM>ncurses</EM>.
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
-
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
+       Juergen Pfeifer and Thomas E. Dickey revised and improved the library.
 
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Originally   written   by   Warren   Tucker  &lt;wht@n4hgf.mt-park.ga.us&gt;,
-       primarily to assist in porting <EM>u386mon</EM>  to  systems  without  a  native
-       panels library.
-
-       Repackaged for ncurses by Zeyd ben-Halim.
-
-       Juergen Pfeifer and Thomas E. Dickey revised/improved the library.
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
-                                                                     <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                         <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h3-update_panels">update_panels</a></li>
 </ul>
 </li>
-<li><a href="#h2-DIAGNOSTICS">DIAGNOSTICS</a></li>
-<li><a href="#h2-COMPATIBILITY">COMPATIBILITY</a></li>
-<li><a href="#h2-NOTE">NOTE</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
-<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index ebf6c55ccfd626380e62edcd4d469d83cc33c4c6..23491462792c0d4696e9fe7b7818c238c62bb25b 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1996-on
-  * @Id: resizeterm.3x,v 1.32 2022/02/20 00:32:18 tom Exp @
+  * @Id: resizeterm.3x,v 1.56 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>resizeterm 3x</TITLE>
+<TITLE>resizeterm 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">resizeterm 3x</H1>
+<H1 class="no-header">resizeterm 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>                                                  <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
+<STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>                   Library calls                  <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>is_term_resized</STRONG>,  <STRONG>resize_term</STRONG>,  <STRONG>resizeterm</STRONG> - change the curses terminal
-       size
+       <STRONG>is_term_resized</STRONG>,   <STRONG>resize_term</STRONG>,   <STRONG>resizeterm</STRONG>   -  manage  the  terminal
+       dimensions understood by <EM>curses</EM>
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This is an extension to the curses library.  It provides callers with a
-       hook  into  the  <STRONG>ncurses</STRONG>  data  to resize windows, primarily for use by
+       This is an extension to the <EM>curses</EM> library.  It provides callers with a
+       hook  into  the  <EM>ncurses</EM>  data  to resize windows, primarily for use by
        programs running in  an  X  Window  terminal  (e.g.,  xterm)  when  the
        terminal's screen size is changed by the user:
 
-       <STRONG>o</STRONG>   Curses  windows  cannot extend outside the screen.  If the terminal
-           is shrunk, curses windows must be shrunk to fit.
+       <STRONG>o</STRONG>   <EM>curses</EM>  windows  cannot extend outside the screen.  If the terminal
+           is shrunk, <EM>curses</EM> windows must be shrunk to fit.
 
        <STRONG>o</STRONG>   If the terminal is stretched, rows and/or columns can be  added  to
            existing  windows.   The  added  cells  should  match  the  current
            attributes of the windows.
 
        If the calling program has not set up a handler for  <STRONG>SIGWINCH</STRONG>  when  it
-       initializes  <STRONG>ncurses</STRONG>  (e.g.,  using  <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>  or <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>), then
-       <STRONG>ncurses</STRONG> sets a handler for <STRONG>SIGWINCH</STRONG> which notifies the library  when  a
+       initializes  <EM>ncurses</EM>  (e.g.,  using  <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>  or <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>), then
+       <EM>ncurses</EM> sets a handler for <STRONG>SIGWINCH</STRONG> which notifies the library  when  a
        window-size   event   has   occurred.   The  library  checks  for  this
        notification
 
@@ -99,7 +99,7 @@
 </PRE><H3><a name="h3-resizeterm">resizeterm</a></H3><PRE>
        The function <STRONG>resizeterm</STRONG> resizes the standard and current windows (i.e.,
        <STRONG>stdscr</STRONG>  and  <STRONG>curscr</STRONG>)  to  the  specified  dimensions, and adjusts other
-       bookkeeping data used by the <STRONG>ncurses</STRONG> library  that  record  the  window
+       bookkeeping data used by the <EM>ncurses</EM> library  that  record  the  window
        dimensions such as the <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> variables.
 
 
        them in a context where <STRONG>malloc</STRONG> or <STRONG>realloc</STRONG> may  have  been  interrupted,
        since it uses those functions.
 
-       If ncurses is configured to supply its own <STRONG>SIGWINCH</STRONG> handler,
+       If <EM>ncurses</EM> is configured to supply its own <STRONG>SIGWINCH</STRONG> handler,
 
        <STRONG>o</STRONG>   on receipt of a <STRONG>SIGWINCH</STRONG>, the handler sets a flag
 
 
            Calling <STRONG>resizeterm</STRONG> or <STRONG>resize_term</STRONG> directly from a signal handler is
            unsafe.   This  indirect  method  is  used to provide a safe way to
-           resize the ncurses data structures.
+           resize the <EM>ncurses</EM> data structures.
 
-       If the environment variables <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> are set,  this  overrides
+       If the environment variables <EM>LINES</EM> or <EM>COLUMNS</EM> are set,  this  overrides
        the  library's  use  of  the  window  size  obtained from the operating
        system.  Thus, even if a <STRONG>SIGWINCH</STRONG> is received, no  screen  size  change
        may be recorded.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       It is possible to resize the screen with SVr4 curses, by
+       It is possible to resize the screen with SVr4 <EM>curses</EM>, by
 
-       <STRONG>o</STRONG>   exiting curses with <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> and
+       <STRONG>o</STRONG>   exiting <EM>curses</EM> with <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> and
 
        <STRONG>o</STRONG>   resuming using <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>.
 
        Doing that clears the screen and is visually distracting.
 
-       This  extension  of ncurses was introduced in mid-1995.  It was adopted
-       in NetBSD curses (2001) and PDCurses (2003).
+       This  extension  of <EM>ncurses</EM> was introduced in mid-1995.  It was adopted
+       in NetBSD <EM>curses</EM> (2001) and PDCurses (2003).
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Thomas Dickey (from an equivalent function  written  in  1988  for  BSD
+       <EM>curses</EM>)
 
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Thomas Dickey (from an equivalent function  written  in  1988  for  BSD
-       curses).
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
 
 
 
-                                                                <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                    <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index 459a30cc0788e2628d2e4f38e9c9f19da677052e..a96342558ecb98e56c235550d18154b61e054ff8 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2017 Free Software Foundation, Inc.                            *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: scr_dump.5,v 1.20 2021/12/25 21:13:38 tom Exp @
+  * @Id: scr_dump.5,v 1.46 2024/03/23 20:42:29 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>scr_dump 5</TITLE>
+<TITLE>scr_dump 5 2024-03-23 ncurses 6.5 File formats</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">scr_dump 5</H1>
+<H1 class="no-header">scr_dump 5 2024-03-23 ncurses 6.5 File formats</H1>
 <PRE>
-<STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>                   File Formats Manual                  <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
+<STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>                      File formats                      <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       scr_dump - format of curses screen-dumps.
-
-
-</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>scr_dump</STRONG>
+       scr_dump - <EM>curses</EM> screen dump
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        <STRONG>o</STRONG>   The ncurses6 <STRONG>getwin</STRONG> reads the legacy screen dumps from ncurses5.
 
 
-</PRE><H3><a name="h3-ncurses5-_legacy_">ncurses5 (legacy)</a></H3><PRE>
-       The screen-dump feature was added to ncurses in June 1995.  While there
+</PRE><H3><a name="h3-ncurses5-_Legacy_">ncurses5 (Legacy)</a></H3><PRE>
+       The screen-dump feature was added to <EM>ncurses</EM> in June 1995.  While there
        were fixes and improvements in succeeding years, the basic  scheme  was
        unchanged:
 
-       <STRONG>o</STRONG>   The <STRONG>WINDOW</STRONG> structure was written in binary form.
+       <STRONG>o</STRONG>   The <EM>WINDOW</EM> structure was written in binary form.
 
-       <STRONG>o</STRONG>   The <STRONG>WINDOW</STRONG> structure refers to lines of data, which were written as
-           an array of binary data following the <STRONG>WINDOW</STRONG>.
+       <STRONG>o</STRONG>   The <EM>WINDOW</EM> structure refers to lines of data, which were written as
+           an array of binary data following the <EM>WINDOW</EM>.
 
        <STRONG>o</STRONG>   When <STRONG>getwin</STRONG> restored the window, it would  keep  track  of  offsets
-           into  the  array of line-data and adjust the <STRONG>WINDOW</STRONG> structure which
+           into  the  array of line-data and adjust the <EM>WINDOW</EM> structure which
            was read back into memory.
 
-       This is similar to Unix SystemV, but does not write a "magic number" to
-       identify the file format.
+       This is similar to Unix System V, but does not write a  "magic  number"
+       to identify the file format.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       There  is  no  standard  format for <STRONG>putwin</STRONG>.  This section gives a brief
-       description of the existing formats.
+       There is no standard format for <EM>curses</EM> screen dumps.  A brief survey of
+       the existing implementations follows.
 
 
 </PRE><H3><a name="h3-X_Open-Curses">X/Open Curses</a></H3><PRE>
-       Refer to <EM>X/Open</EM> <EM>Curses,</EM> <EM>Issue</EM> <EM>7</EM> (2009).
+       X/Open Curses, Issue 7 specifies little.  It  says  (boldface  emphasis
+       added)
 
-       X/Open's documentation for <EM>enhanced</EM> <EM>curses</EM> says only:
-
-          The <STRONG>getwin(</STRONG> <STRONG>)</STRONG> function reads window-related data stored in the  file
-          by  <EM>putwin(</EM> <EM>)</EM>.   The  function  then  creates  and initializes a new
+          "[t]he  <EM>getwin()</EM>  function  reads  window-related data stored in the
+          file by <EM>putwin()</EM>.  The function then creates and initializes  a  new
           window using that data.
 
-          The <STRONG>putwin(</STRONG> <STRONG>)</STRONG> function writes all data associated with <EM>win</EM> into  the
-          <STRONG>stdio(3)</STRONG>  stream to which <EM>filep</EM> points, using an <STRONG>unspecified</STRONG> <STRONG>format</STRONG>.
-          This information can be retrieved later using <STRONG>getwin(</STRONG> <STRONG>)</STRONG>.
-
-       In the mid-1990s when the X/Open Curses  document  was  written,  there
-       were  still  systems  using older, less capable curses libraries (aside
-       from the BSD curses library which was not relevant to X/Open because it
-       did not meet the criteria for <EM>base</EM> <EM>curses</EM>).  The document explained the
-       term "enhanced" as follows:
+          The  <EM>putwin()</EM>  function writes all data associated with <EM>win</EM> into the
+          <EM>stdio</EM> stream to which <EM>filep</EM> points,  using  an  <STRONG>unspecified</STRONG>  <STRONG>format</STRONG>.
+          This information can be retrieved later using <EM>getwin()</EM>."
 
-          <STRONG>o</STRONG>   Shading is used to identify  <EM>X/Open</EM>  <EM>Enhanced</EM>  <EM>Curses</EM>  material,
-              relating to interfaces included to provide enhanced capabilities
-              for applications originally written to be  compiled  on  systems
-              based  on  the  UNIX  operating system.  Therefore, the features
-              described may not be present on systems that conform to <STRONG>XPG4</STRONG>  <STRONG>or</STRONG>
-              <STRONG>to</STRONG>  <STRONG>earlier</STRONG>  <STRONG>XPG</STRONG>  <STRONG>releases</STRONG>.   The  relevant  reference pages may
-              provide additional or more specific portability  warnings  about
-              use of the material.
+       In  the  mid-1990s  when  the X/Open Curses document was written, there
+       were still System V systems using older, less capable <EM>curses</EM> libraries.
+       BSD  <EM>curses</EM>  was  not  relevant  to  X/Open because it did not meet the
+       criteria for base-level conformance; see <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
 
-       In  the foregoing, emphasis was added to <STRONG>unspecified</STRONG> <STRONG>format</STRONG> and to <STRONG>XPG4</STRONG>
-       <STRONG>or</STRONG> <STRONG>to</STRONG> <STRONG>earlier</STRONG> <STRONG>XPG</STRONG> <STRONG>releases</STRONG>, for clarity.
 
+</PRE><H3><a name="h3-System-V">System V</a></H3><PRE>
+       System V <EM>curses</EM> identified the file format by writing a "magic  number"
+       at  the  beginning  of the dump.  The <EM>WINDOW</EM> data and the lines of text
+       follow, all in binary form.
 
-</PRE><H3><a name="h3-Unix-SystemV">Unix SystemV</a></H3><PRE>
-       Unix SystemV curses identified the file  format  by  writing  a  "magic
-       number" at the beginning of the dump.  The <STRONG>WINDOW</STRONG> data and the lines of
-       text follow, all in binary form.
-
-       The Solaris curses source has these definitions:
+       Solaris <EM>curses</EM> has the following definitions.
 
            /* terminfo magic number */
            #define MAGNUM  0432
            #define SVR3_DUMP_MAGIC_NUMBER  0434
 
        That is, the feature was likely introduced in SVr2 (1984), and improved
-       in SVr3 (1987).  The Solaris curses source has no magic number for SVr4
-       (1989).  Other operating systems (AIX and  HPUX)  use  a  magic  number
-       which would correspond to this definition:
+       in  SVr3  (1987).   Solaris <EM>curses</EM> has no magic number for SVr4 (1989).
+       Other System V operating systems (AIX and HP-UX)  use  a  magic  number
+       that would correspond to the following.
 
            /* curses screen dump magic number */
            #define SVR4_DUMP_MAGIC_NUMBER  0435
 
-       That  octal number in bytes is 001, 035.  Because most Unix vendors use
-       big-endian hardware, the magic number is written  with  the  high-order
-       byte first, e.g.,
+       That  octal  number in bytes is 001, 035.  Because most Unix vendors at
+       the time used big-endian hardware, the magic number is written with the
+       high-order byte first.
 
-            01 35
+           \001\035
 
-       After  the magic number, the <STRONG>WINDOW</STRONG> structure and line-data are written
-       in binary format.  While the magic number used by the Unix systems  can
-       be seen using <STRONG>od(1)</STRONG>, none of the Unix systems documents the format used
-       for screen-dumps.
+       After  the magic number, the <EM>WINDOW</EM> structure and line data are written
+       in binary format.  While the magic number used by these systems can  be
+       observed  with <STRONG>od(1)</STRONG>, none of them documents the format used for screen
+       dumps.
 
-       The Unix systems  do  not  use  identical  formats.   While  collecting
-       information  for  for  this  manual  page,  the <EM>savescreen</EM> test-program
-       produced dumps of different size (all  on  64-bit  hardware,  on  40x80
-       screens):
+       Nor do they use an identical format, even  with  the  System V  family.
+       The <EM>ncurses</EM> <EM>savescreen</EM> test program was used to collect information for
+       this manual page.  It produced dumps of different size (all  on  64-bit
+       hardware, on 40x80 screens):
 
        <STRONG>o</STRONG>   AIX (51817 bytes)
 
-       <STRONG>o</STRONG>   HPUX (90093 bytes)
+       <STRONG>o</STRONG>   HP-UX (90093 bytes)
 
        <STRONG>o</STRONG>   Solaris 10 (13273 bytes)
 
-       <STRONG>o</STRONG>   ncurses5 (12888 bytes)
+       <STRONG>o</STRONG>   <EM>ncurses</EM>5 (12888 bytes)
 
 
 </PRE><H3><a name="h3-Solaris">Solaris</a></H3><PRE>
-       As  noted  above,  Solaris  curses has no magic number corresponding to
-       SVr4 curses.  This is odd since Solaris was the first operating  system
-       to pass the SVr4 guidelines.  Solaris has two versions of curses:
+       As  noted  above,  Solaris  <EM>curses</EM> has no magic number corresponding to
+       SVr4 <EM>curses</EM>.  This is odd, since Solaris was the first operating system
+       to meet the SVr4 guidelines.  Solaris furthermore supplies two versions
+       of <EM>curses</EM>.
 
-       <STRONG>o</STRONG>   The default curses library uses the SVr3 magic number.
+       <STRONG>o</STRONG>   The default <EM>curses</EM> library uses the SVr3 magic number.
 
-       <STRONG>o</STRONG>   There  is  an  alternate  curses library in <STRONG>/usr/xpg4</STRONG>.  This uses a
-           textual format with no magic number.
+       <STRONG>o</STRONG>   An alternate <EM>curses</EM> library (which we term <EM>xcurses),</EM>  available  in
+           <EM>/usr/xpg4</EM>, uses a textual format with no magic number.
 
-           According to the copyright notice, the <EM>xpg4</EM> Solaris curses  library
-           was developed by MKS (Mortice Kern Systems) from 1990 to 1995.
+           According  to  its  copyright  notice,  this  <EM>xcurses</EM>  library  was
+           developed by MKS (Mortice Kern Systems) from 1990 to 1995.
 
-           Like  ncurses6,  there  is  a  file-header with parameters.  Unlike
-           ncurses6, the contents of the window are  written  piecemeal,  with
-           coordinates  and  attributes  for  each  chunk  of text rather than
+           Like ncurses6,  it  includes  a  header  with  parameters.   Unlike
+           ncurses6,  the  contents  of the window are written piecemeal, with
+           coordinates and attributes for  each  chunk  of  text  rather  than
            writing the whole window from top to bottom.
 
 
 </PRE><H3><a name="h3-PDCurses">PDCurses</a></H3><PRE>
-       PDCurses added support for screen dumps in version  2.7  (2005).   Like
-       Unix  SystemV  and  ncurses5, it writes the <STRONG>WINDOW</STRONG> structure in binary,
-       but begins the file with its three-byte identifier "PDC", followed by a
-       one-byte version, e.g.,
+       <EM>PDCurses</EM>  added  support  for screen dumps in version 2.7 (2005).  Like
+       System V and ncurses5, it writes the <EM>WINDOW</EM> structure  in  binary,  but
+       begins  the  file  with  its three-byte identifier "PDC", followed by a
+       single-byte version number.
 
                 "PDC\001"
 
 
 </PRE><H3><a name="h3-NetBSD">NetBSD</a></H3><PRE>
-       As  of  April  2017,  NetBSD  curses  does  not  support  <STRONG>scr_dump</STRONG>  and
+       As  of  April  2017,  NetBSD  <EM>curses</EM>  does  not  support  <STRONG>scr_dump</STRONG>  and
        <STRONG>scr_restore</STRONG> (or <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>), although it has <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG>.
 
-       Like ncurses5, NetBSD <STRONG>putwin</STRONG> does not identify its dumps with a  useful
+       Like  ncurses5, NetBSD <STRONG>putwin</STRONG> does not identify its dumps with a useful
        magic number.  It writes
 
-       <STRONG>o</STRONG>   the curses shared library major and minor versions as the first two
-           bytes (e.g., 7 and 1),
+       <STRONG>o</STRONG>   the <EM>curses</EM> shared library major and minor versions as the first two
+           bytes (for example, 7 and 1),
 
-       <STRONG>o</STRONG>   followed by a binary dump of the <STRONG>WINDOW</STRONG>,
+       <STRONG>o</STRONG>   followed by a binary dump of the <EM>WINDOW</EM>,
 
-       <STRONG>o</STRONG>   some data for wide-characters referenced by the  <STRONG>WINDOW</STRONG>  structure,
+       <STRONG>o</STRONG>   some  data  for wide characters referenced by the <EM>WINDOW</EM> structure,
            and
 
        <STRONG>o</STRONG>   finally, lines as done by other implementations.
 
 
-</PRE><H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE>
-       Given  a  simple  program  which writes text to the screen (and for the
+</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
+       Given a simple program which writes text to the  screen  (and  for  the
        sake of example, limiting the screen-size to 10x20):
 
            #include &lt;curses.h&gt;
 
        <STRONG>o</STRONG>   The actual color pair values are not written to the file.
 
-       <STRONG>o</STRONG>   All  characters  are  shown  in  printable form; spaces are "\s" to
+       <STRONG>o</STRONG>   All characters are shown in printable  form;  spaces  are  "\s"  to
            ensure they are not overlooked.
 
-       <STRONG>o</STRONG>   Attributes are written in escaped curly  braces,  e.g.,  "\{BOLD}",
-           and may include a color-pair (C1 or C2 in this example).
+       <STRONG>o</STRONG>   Attributes  are  written  in escaped curly braces, e.g., "\{BOLD}",
+           and may include a color pair (C1 or C2 in this example).
 
-       <STRONG>o</STRONG>   The  parameters  in  the  header  are  written out only if they are
+       <STRONG>o</STRONG>   The parameters in the header are  written  out  only  if  they  are
            nonzero.  When reading back, order does not matter.
 
        Running the same program with Solaris <EM>xpg4</EM> curses gives this dump:
            9,19,0,0,
            CUR=11,5
 
-       Solaris <STRONG>getwin</STRONG> requires that all parameters are  present,  and  in  the
-       same  order.  The <EM>xpg4</EM> curses library does not know about the <STRONG>bce</STRONG> (back
+       Solaris  <STRONG>getwin</STRONG>  requires  that  all parameters are present, and in the
+       same order.  The <EM>xpg4</EM> curses library does not know about the <STRONG>bce</STRONG>  (back
        color erase) capability, and does not color the window background.
 
-       On the other  hand,  the  SVr4  curses  library  does  know  about  the
-       background  color.   However,  its screen dumps are in binary.  Here is
+       On  the  other  hand,  the  SVr4  curses  library  does  know about the
+       background color.  However, its screen dumps are in  binary.   Here  is
        the corresponding dump (using "od -t x1"):
 
            0000000 1c 01 c3 d6 f3 58 05 00 0b 00 0a 00 14 00 00 00
            0002371
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>.
-
-
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Thomas E. Dickey
-       extended screen-dump format for ncurses 6.0 (2015)
+       extended screen-dump format for <EM>ncurses</EM> 6.0 (2015)
 
        Eric S. Raymond
-       screen dump feature in ncurses 1.9.2d (1995)
+       screen dump feature in <EM>ncurses</EM> 1.9.2d (1995)
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
 
 
 
-                                                                   <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
+ncurses 6.5                       2024-03-23                       <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
-<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
 <li><a href="#h3-ncurses6">ncurses6</a></li>
-<li><a href="#h3-ncurses5-_legacy_">ncurses5 (legacy)</a></li>
+<li><a href="#h3-ncurses5-_Legacy_">ncurses5 (Legacy)</a></li>
 </ul>
 </li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a>
 <ul>
 <li><a href="#h3-X_Open-Curses">X/Open Curses</a></li>
-<li><a href="#h3-Unix-SystemV">Unix SystemV</a></li>
+<li><a href="#h3-System-V">System V</a></li>
 <li><a href="#h3-Solaris">Solaris</a></li>
 <li><a href="#h3-PDCurses">PDCurses</a></li>
 <li><a href="#h3-NetBSD">NetBSD</a></li>
 </ul>
 </li>
-<li><a href="#h2-EXAMPLE">EXAMPLE</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 3e9f0f9df2cdebd7788203b0c630399e85e3d5ab..5a548fab176bf164388fac9e03a5e40f14123c0d 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: tabs.1,v 1.35 2021/12/25 19:04:39 tom Exp @
+  * @Id: tabs.1,v 1.59 2024/04/20 19:08:15 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>tabs 1</TITLE>
+<TITLE>tabs 1 2024-04-20 ncurses 6.5 User commands</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">tabs 1</H1>
+<H1 class="no-header">tabs 1 2024-04-20 ncurses 6.5 User commands</H1>
 <PRE>
-<STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>                     General Commands Manual                    <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
+<STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>                          User commands                         <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>tabs</STRONG> - set tabs on a terminal
+       <STRONG>tabs</STRONG> - set terminal tab stops
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>tabs</STRONG> [<EM>options</EM>]] <EM>[tabstop-list]</EM>
+       <STRONG>tabs</STRONG> [<EM>options</EM>] [<EM>tabstop-list</EM>]
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
@@ -97,7 +97,7 @@
        <STRONG>-n</STRONG>   This  option tells <STRONG>tabs</STRONG> to check the options and run any debugging
             option, but not to modify the terminal settings.
 
-       <STRONG>-V</STRONG>   reports the version of ncurses which was used in this program, and
+       <STRONG>-V</STRONG>   reports the version of <EM>ncurses</EM> which was used in this program, and
             exits.
 
        The <STRONG>tabs</STRONG> program processes a single list of tab stops.  The last option
        which is equivalent to the 1,6,11,16,21 example.
 
 
-</PRE><H3><a name="h3-Predefined-Tab-Stops">Predefined Tab-Stops</a></H3><PRE>
+</PRE><H3><a name="h3-Predefined-Tab-Stops">Predefined Tab Stops</a></H3><PRE>
        POSIX defines several predefined lists of tab stops.
 
        <STRONG>-a</STRONG>   Assembler, IBM S/370, first format
 
 
 </PRE><H3><a name="h3-Margins">Margins</a></H3><PRE>
-       A  few  terminals  provide the capability for changing their left/right
-       margins.  The tabs program has an option to use this feature:
+       A  few  terminals  expose  a  means  of  changing  their left and right
+       margins.  <STRONG>tabs</STRONG> supports this feature with an option.
 
        <STRONG>+m</STRONG> <EM>margin</EM>
             The  effect  depends  on  whether  the  terminal  has  the  margin
             capabilities:
 
             <STRONG>o</STRONG>   If  the  terminal provides the capability for setting the left
-                margin, tabs uses this, and adjusts the  available  width  for
-                tab-stops.
+                margin, <STRONG>tabs</STRONG> uses this, and adjusts  the  available  tab  stop
+                widths.
 
-            <STRONG>o</STRONG>   If the terminal does not provide the margin capabilities, tabs
-                imitates the effect, putting the tab stops at the  appropriate
-                place  on  each  line.   The  terminal's  left-margin  is  not
-                modified.
+            <STRONG>o</STRONG>   If the terminal does not provide the margin capabilities, <STRONG>tabs</STRONG>
+                imitates their effect, putting tab stops at appropriate places
+                on each line.  The terminal's left margin is not modified.
 
             If the <EM>margin</EM> parameter is omitted, the default is 10.  Use <STRONG>+m0</STRONG> to
-            reset  the  left  margin, i.e., to the left edge of the terminal's
-            display.  Before setting a left-margin, tabs resets the margin  to
-            reduce  problems which might arise on moving the cursor before the
-            current left-margin.
+            reset the left margin, that is, to make it the left  edge  of  the
+            terminal's display.  Before setting a left margin, <STRONG>tabs</STRONG> resets the
+            margin to reduce problems that might arise from moving the  cursor
+            to the left of the current left margin.
 
-       When setting or resetting the left-margin, tabs may  reset  the  right-
-       margin.
+       When  setting  or  resetting  the  left margin, <STRONG>tabs</STRONG> may also reset the
+       right margin.
+
+
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+       <EM>/usr/share/tabset</EM>
+              tab stop initialization database
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       <EM>IEEE</EM>   <EM>Std</EM>   <EM>1003.1/The</EM>   <EM>Open</EM>   <EM>Group</EM>   <EM>Base</EM>  <EM>Specifications</EM>  <EM>Issue</EM>  <EM>7</EM>
-       (POSIX.1-2008) describes a <STRONG>tabs</STRONG> utility.  However
+       IEEE  Std  1003.1/The  Open   Group   Base   Specifications   Issue   7
+       (POSIX.1-2008) describes a <STRONG>tabs</STRONG> utility.  However,
 
-       <STRONG>o</STRONG>   This standard describes a <STRONG>+m</STRONG> option,  to  set  a  terminal's  left-
-           margin.   Very  few of the entries in the terminal database provide
-           the  <STRONG>smgl</STRONG>   (<STRONG>set_left_margin</STRONG>)   or   <STRONG>smglp</STRONG>   (<STRONG>set_left_margin_parm</STRONG>)
-           capability needed to support the feature.
+       <STRONG>o</STRONG>   this  standard  describes  a  <STRONG>+m</STRONG>  option  to  set a terminal's left
+           margin.  Very few of the entries in the terminal  database  provide
+           the   <STRONG>set_left_margin</STRONG>   (<STRONG>smgl</STRONG>)   or   <STRONG>set_left_margin_parm</STRONG>  (<STRONG>smglp</STRONG>)
+           capabilities needed to support the feature.
 
-       <STRONG>o</STRONG>   There  is no counterpart in X/Open Curses Issue 7 for this utility,
+       <STRONG>o</STRONG>   There is no counterpart in X/Open Curses Issue 7 for this  utility,
            unlike <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>.
 
-       The <STRONG>-d</STRONG> (debug) and <STRONG>-n</STRONG> (no-op) options are extensions  not  provided  by
-       other implementations.
-
-       A  <STRONG>tabs</STRONG>  utility  appeared in PWB/Unix 1.0 (1977).  There was a reduced
-       version of the <STRONG>tabs</STRONG> utility in Unix 7th edition  and  in  3BSD  (1979).
-       The  latter supported a single "-n" option (to cause the first tab stop
-       to be set on the left margin).  That option is not documented by POSIX.
-
-       The PWB/Unix <STRONG>tabs</STRONG> utility, which was included  in  System  III  (1980),
-       used  built-in  tables  rather than the terminal database, to support a
-       half-dozen hardcopy terminal (printer) types.   It  also  had  built-in
-       logic  to support the left-margin, as well as a feature for copying the
-       tab settings from a file.
-
-       Later versions of Unix, e.g., SVr4,  added  support  for  the  terminal
-       database,  but  kept the tables to support the printers.  In an earlier
-       development effort, the tab-stop initialization provided by <STRONG>tset</STRONG> (1982)
-       and incorporated into <STRONG>tput</STRONG> uses the terminal database,
-
-       The  <STRONG>+m</STRONG>  option  was  documented  in  the  Base  Specifications Issue 5
-       (Unix98,  1997),  and  omitted  in  Issue  6  (Unix03,  2004)   without
-       documenting   the   rationale,  though  an  introductory  comment  <EM>"and</EM>
-       <EM>optionally</EM> <EM>adjusts</EM> <EM>the</EM> <EM>margin"</EM> remains, overlooked in the removal.  The
-       documented  <STRONG>tabs</STRONG>  utility  in  Issues  6 and later has no mechanism for
-       setting margins.  The <STRONG>+m</STRONG> option in this implementation differs from the
-       feature  in  SVr4  by  using terminal capabilities rather than built-in
-       tables.
-
-       POSIX documents no limits on the number of  tab  stops.   Documentation
-       for other implementations states that there is a limit on the number of
-       tab stops (e.g., 20 in PWB/Unix's <STRONG>tabs</STRONG> utility).  While some  terminals
-       may  not  accept  an arbitrary number of tab stops, this implementation
-       will attempt to set tab stops up to the right margin of the screen,  if
-       the given list happens to be that long.
-
-       The  <EM>Rationale</EM> section of the POSIX documentation goes into some detail
-       about the ways the committee considered redesigning the <STRONG>tabs</STRONG>  and  <STRONG>tput</STRONG>
-       utilities, without proposing an improved solution.  It comments that
-
-            no  known  historical  version  of tabs supports the capability of
-            setting arbitrary tab stops.
-
-       However,  the  <EM>Explicit</EM>  <EM>Lists</EM>  described  in  this  manual  page  were
-       implemented  in  PWB/Unix.   Those  provide  the  capability of setting
-       abitrary tab stops.
+       The  <STRONG>-d</STRONG>  (debug)  and  <STRONG>-n</STRONG>  (no-op)  options  are <EM>ncurses</EM> extensions not
+       provided by other implementations.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       A <STRONG>tabs</STRONG> utility appeared in PWB/Unix  1.0  (1977).   A  reduced  version
+       shipped  in  Seventh  Edition  Unix (early 1979) and in 3BSD (later the
+       same year); it supported a "-n" option to set the first tab stop at the
+       left margin.  That option is not specified by POSIX.
+
+       The  PWB/Unix  <STRONG>tabs</STRONG>  utility  returned  in  System III (1980), and used
+       built-in tables to support a  half-dozen  hardcopy  terminal  (printer)
+       types.   It  also had logic to support setting the left margin, as well
+       as a feature for copying the tab settings from a file.
+
+       Versions of the program in later releases of AT&amp;T Unix, such  as  SVr4,
+       added  support  for  the  terminal database, but retained the tables to
+       support the printers.  By this time, System V <STRONG>tput</STRONG> had incorporated the
+       tab  stop  initialization feature of BSD's <STRONG>tset</STRONG> from 1982, but employed
+       the <EM>terminfo</EM> database to do so.
+
+       The <STRONG>+m</STRONG> option was documented in the POSIX Base Specifications  Issue  5
+       (Unix98,  1997), then omitted in Issue 6 (Unix03, 2004) without express
+       motivation, though an introductory comment "and optionally adjusts  the
+       margin"   remains,   overlooked  in  the  removal.   The  <STRONG>tabs</STRONG>  utility
+       documented in Issues 6 and later has no mechanism for setting  margins.
+       The  <STRONG>+m</STRONG>  option  in <EM>ncurses</EM> <STRONG>tabs</STRONG> differs from the SVr4 feature by using
+       terminal capabilities rather than built-in tables.
 
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
+       POSIX  documents  no  limit  on  the  number  of  tab   stops.    Other
+       implementations impose one; the limit is 20 in PWB/Unix's <STRONG>tabs</STRONG> utility.
+       While some terminals may not accept an arbitrary number of  tab  stops,
+       <EM>ncurses</EM>  <STRONG>tabs</STRONG>  attempts  to set tab stops up to the right margin if the
+       list thereof is sufficiently long.
+
+       The "Rationale" section of the Issue 6 <STRONG>tabs</STRONG> reference page details  how
+       the  committee  considered  redesigning  the  <STRONG>tabs</STRONG>  and <STRONG>tput</STRONG> utilities,
+       without settling on an improved solution.  It claims that
+
+           "no known historical version of <EM>tabs</EM>  supports  the  capability  of
+           setting arbitrary tab stops."
+
+       The   feature  described  in  subsection  "Explicit  Lists"  above  was
+       implemented in PWB/Unix, and permitted  the  setting  of  abitrary  tab
+       stops nevertheless.
+
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
-                                                                       <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
+ncurses 6.5                       2024-04-20                           <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h3-General-Options">General Options</a></li>
 <li><a href="#h3-Implicit-Lists">Implicit Lists</a></li>
 <li><a href="#h3-Explicit-Lists">Explicit Lists</a></li>
-<li><a href="#h3-Predefined-Tab-Stops">Predefined Tab-Stops</a></li>
+<li><a href="#h3-Predefined-Tab-Stops">Predefined Tab Stops</a></li>
 <li><a href="#h3-Margins">Margins</a></li>
 </ul>
 </li>
+<li><a href="#h2-FILES">FILES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index ebeee22a8bc3e536bfd813f2afa25c1228706b0c..9c9b5b8e52ac58153a53a276324d4faac65b2593 100644 (file)
@@ -1,6 +1,7 @@
 <!--
+  * t
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: term.5,v 1.43 2021/12/25 21:28:59 tom Exp @
+  * @Id: term.5,v 1.77 2024/04/20 21:24:19 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>term 5</TITLE>
+<TITLE>term 5 2024-04-20 ncurses 6.5 File formats</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">term 5</H1>
+<H1 class="no-header">term 5 2024-04-20 ncurses 6.5 File formats</H1>
 <PRE>
-<STRONG><A HREF="term.5.html">term(5)</A></STRONG>                       File Formats Manual                      <STRONG><A HREF="term.5.html">term(5)</A></STRONG>
+<STRONG><A HREF="term.5.html">term(5)</A></STRONG>                          File formats                          <STRONG><A HREF="term.5.html">term(5)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       term - format of compiled term file.
+       term - compiled <EM>terminfo</EM> terminal description
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
-</PRE><H3><a name="h3-STORAGE-LOCATION">STORAGE LOCATION</a></H3><PRE>
+</PRE><H3><a name="h3-Storage-Location">Storage Location</a></H3><PRE>
        Compiled   terminfo   descriptions   are  placed  under  the  directory
        <STRONG>/usr/share/terminfo</STRONG>.  Two configurations are supported  (when  building
-       the <STRONG>ncurses</STRONG> libraries):
+       the <EM>ncurses</EM> libraries):
 
        <STRONG>directory</STRONG> <STRONG>tree</STRONG>
-            A two-level scheme is used to avoid a linear search of a huge UNIX
+            A two-level scheme is used to avoid a linear search of a huge Unix
             system directory: <STRONG>/usr/share/terminfo/c/name</STRONG>  where  <EM>name</EM>  is  the
             name of the terminal, and <EM>c</EM> is the first character of <EM>name</EM>.  Thus,
             <EM>act4</EM>  can  be  found  in  the   file   <STRONG>/usr/share/terminfo/a/act4</STRONG>.
             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,  <STRONG>ncurses</STRONG>  can  still read
+            If  built  to  write  hashed  databases,  <EM>ncurses</EM>  can  still read
             terminfo databases organized as a directory tree, but cannot write
             entries  into  the  directory  tree.   It  can  write (or rewrite)
             entries in the hashed database.
 
-            <STRONG>ncurses</STRONG>  distinguishes  the  two  cases  in   the   TERMINFO   and
-            TERMINFO_DIRS  environment  variable  by assuming a directory tree
+            <EM>ncurses</EM>  distinguishes  the  two  cases  in   the   <EM>TERMINFO</EM>   and
+            <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM>  environment  variable  by assuming a directory tree
             for entries that correspond to an existing directory,  and  hashed
             database otherwise.
 
 
-</PRE><H3><a name="h3-LEGACY-STORAGE-FORMAT">LEGACY STORAGE FORMAT</a></H3><PRE>
+</PRE><H3><a name="h3-Legacy-Storage-Format">Legacy Storage Format</a></H3><PRE>
        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
        ordering or sign extension are made.
@@ -98,7 +99,7 @@
 
             b) <EM>terminal</EM> <EM>names</EM>,
 
-            c) <EM>boolean</EM> <EM>flags</EM>,
+            c) <EM>Boolean</EM> <EM>flags</EM>,
 
             d) <EM>numbers</EM>,
 
 
             (2) the size, in bytes, of the <EM>terminal</EM> <EM>names</EM> section;
 
-            (3) the number of bytes in the <EM>boolean</EM> <EM>flags</EM> section;
+            (3) the number of bytes in the <EM>Boolean</EM> <EM>flags</EM> section;
 
             (4) the number of short integers in the <EM>numbers</EM> section;
 
 
             (6) the size, in bytes, of the <EM>string</EM> <EM>table</EM>.
 
-       The  capabilities  in  the <EM>boolean</EM> <EM>flags</EM>, <EM>numbers</EM>, and <EM>strings</EM> sections
+       The  capabilities  in  the <EM>Boolean</EM> <EM>flags</EM>, <EM>numbers</EM>, and <EM>strings</EM> sections
        are in the same order as the file &lt;term.h&gt;.
 
        Short integers are signed, in the range  -32768  to  32767.   They  are
            the corresponding table.
 
            The integer value -1 is represented by two bytes 0377, 0377.
-           Absent boolean values are represented by the byte 0 (false).
+           Absent Boolean values are represented by the byte 0 (false).
 
        <STRONG>o</STRONG>   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.
-           The boolean value -2 is represented by the byte 0376.
+           The Boolean value -2 is represented by the byte 0376.
 
        <STRONG>o</STRONG>   Other negative values are illegal.
 
        the terminal, separated by  the  "|"  character.   The  <EM>terminal</EM>  <EM>names</EM>
        section is terminated with an ASCII NUL character.
 
-       The  <EM>boolean</EM>  <EM>flags</EM>  section  has  one  byte  for  each  flag.  Boolean
+       The  <EM>Boolean</EM>  <EM>flags</EM>  section  has  one  byte  for  each  flag.  Boolean
        capabilities are either 1 or 0 (true or false) according to whether the
        terminal supports the given capability or not.
 
-       Between  the  <EM>boolean</EM> <EM>flags</EM> section and the <EM>number</EM> section, a null byte
+       Between  the  <EM>Boolean</EM> <EM>flags</EM> section and the <EM>number</EM> section, a null byte
        will be inserted, if necessary,  to  ensure  that  the  <EM>number</EM>  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 <EM>numbers</EM> section is similar to  the  <EM>boolean</EM>  <EM>flags</EM>  section.   Each
+       The <EM>numbers</EM> section is similar to  the  <EM>Boolean</EM>  <EM>flags</EM>  section.   Each
        capability  takes  up two bytes, and is stored as a little-endian short
        integer.
 
        uninterpreted form.
 
 
-</PRE><H3><a name="h3-EXTENDED-STORAGE-FORMAT">EXTENDED STORAGE FORMAT</a></H3><PRE>
+</PRE><H3><a name="h3-Extended-Storage-Format">Extended Storage Format</a></H3><PRE>
        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
-       predefined set of boolean, number or string capabilities.
+       binary format is used in all modern Unix systems.  Each system  uses  a
+       predefined set of Boolean, number or string capabilities.
 
-       The <STRONG>ncurses</STRONG> libraries and applications support extended terminfo binary
+       The <EM>ncurses</EM> libraries and applications support extended terminfo binary
        format, allowing users to  define  capabilities  which  are  loaded  at
        runtime.   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.  <STRONG>ncurses</STRONG> checks the
+       reached  the  end  of the size given in the header.  <EM>ncurses</EM> 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):
 
-            (1)  count of extended boolean capabilities
+            (1)  count of extended Boolean capabilities
 
             (2)  count of extended numeric capabilities
 
        The  count-  and  size-values for the extended string table include the
        extended capability <EM>names</EM> as well as extended capability <EM>values</EM>.
 
-       Using the counts and sizes, <STRONG>ncurses</STRONG> allocates arrays and reads data for
+       Using the counts and sizes, <EM>ncurses</EM> 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
+       extended  capabilities  in  order,  e.g.,  Booleans,  then  numbers and
        finally strings.
 
+       By storing terminal descriptions  in  this  way,  <EM>ncurses</EM>  is  able  to
+       provide  a  database  useful  with  legacy  applications,  as  well  as
+       providing data for applications which need  more  than  the  predefined
+       capabilities.  See <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG> for an overview of the way <EM>ncurses</EM> uses
+       this extended information.
+
        Applications which manipulate terminal data  can  use  the  definitions
        described  in  <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>  which  associate the long capability
        names with members of a <STRONG>TERMTYPE</STRONG> structure.
 
 
-</PRE><H3><a name="h3-EXTENDED-NUMBER-FORMAT">EXTENDED NUMBER FORMAT</a></H3><PRE>
-       On occasion, 16-bit signed integers are not large enough.  With <STRONG>ncurses</STRONG>
+</PRE><H3><a name="h3-Extended-Number-Format">Extended Number Format</a></H3><PRE>
+       On occasion, 16-bit signed integers are not large enough.  With <EM>ncurses</EM>
        6.1,  a new format was introduced by making a few changes to the legacy
        format:
 
        <STRONG>TERMTYPE2</STRONG> to provide data for the terminfo functions.
 
 
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+       <EM>/usr/share/terminfo</EM>
+              compiled terminal description database
+
+
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
 
 </PRE><H3><a name="h3-setupterm">setupterm</a></H3><PRE>
        (resulting in missing entries).  The routine <STRONG>setupterm</STRONG> 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 boolean, number, and string capabilities.
+       the lists of Boolean, number, and string capabilities.
 
 
-</PRE><H3><a name="h3-Binary-format">Binary format</a></H3><PRE>
+</PRE><H3><a name="h3-Binary-Format">Binary Format</a></H3><PRE>
        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.
+       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
        otherwise  self-describing  format,  it  is  not  wise  to   count   on
-       portability   of   binary  terminfo  entries  between  commercial  UNIX
+       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 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for detailed discussion of terminfo
-       source compatibility issues.
+       string  table  that  (in  the  binary format) collide with System V and
+       X/Open Curses extensions.  See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> 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
-       used by the other Unix versions can be matched by building ncurses with
+       used by the other Unix versions can be matched by building <EM>ncurses</EM> with
        different configuration options.
 
 
-</PRE><H3><a name="h3-Magic-codes">Magic codes</a></H3><PRE>
+</PRE><H3><a name="h3-Magic-Codes">Magic Codes</a></H3><PRE>
        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 <STRONG>file(1)</STRONG> also use that to tell
        uses 01036 as a continuation of that sequence,  but  with  a  different
        high-order byte to avoid confusion.
 
-
-</PRE><H3><a name="h3-The-TERMTYPE-structure">The TERMTYPE structure</a></H3><PRE>
+   <STRONG>The</STRONG> <EM>TERMTYPE</EM> <STRONG>Structure</STRONG>
        Direct  access  to  the  <STRONG>TERMTYPE</STRONG>  structure  is  provided  for  legacy
        applications.  Portable  applications  should  use  the  <STRONG>tigetflag</STRONG>  and
        related  functions  described in <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> for reading terminal
        capabilities.
 
 
-</PRE><H3><a name="h3-Mixed-case-terminal-names">Mixed-case terminal names</a></H3><PRE>
+</PRE><H3><a name="h3-Mixed-case-Terminal-Names">Mixed-case Terminal Names</a></H3><PRE>
        A small number of terminal descriptions  use  uppercase  characters  in
        their  names.   If  the  underlying  filesystem  ignores the difference
-       between  uppercase  and  lowercase,  <STRONG>ncurses</STRONG>  represents   the   "first
+       between  uppercase  and  lowercase,  <EM>ncurses</EM>  represents   the   "first
        character"  of  the  terminal  name used as the intermediate level of a
        directory tree in (two-character) hexadecimal form.
 
 
-</PRE><H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE>
-       As an example, here is a description  for  the  Lear-Siegler  ADM-3,  a
-       popular though rather stupid early terminal:
+</PRE><H3><a name="h3-Limits">Limits</a></H3><PRE>
+       <EM>ncurses</EM> stores compiled terminal descriptions in three related formats,
+       described in the sections
 
-           adm3a|lsi adm3a,
-                   am,
-                   cols#80, lines#24,
-                   bel=^G, clear= 32$&lt;1&gt;, cr=^M, cub1=^H, cud1=^J,
-                   cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
-                   home=^^, ind=^J,
+       <STRONG>o</STRONG>   <STRONG>LEGACY</STRONG> <STRONG>STORAGE</STRONG> <STRONG>FORMAT</STRONG>, and
 
+       <STRONG>o</STRONG>   <STRONG>EXTENDED</STRONG> <STRONG>STORAGE</STRONG> <STRONG>FORMAT</STRONG>, and
 
-       and a hexadecimal dump of the compiled terminal description:
+       <STRONG>o</STRONG>   <STRONG>EXTENDED</STRONG> <STRONG>NUMBER</STRONG> <STRONG>FORMAT</STRONG>.
+
+       The  legacy storage format and the extended number format differ by the
+       types of numeric capability which they can store (i.e.,  16-bit  versus
+       32-bit  integers).   The  extended storage format introduced by <EM>ncurses</EM>
+       5.0 adds data to either of these formats.
+
+       Some limitations apply:
 
-           0000  1a 01 10 00 02 00 03 00  82 00 31 00 61 64 6d 33  ........ ..1.adm3
-           0010  61 7c 6c 73 69 20 61 64  6d 33 61 00 00 01 50 00  a|lsi ad m3a...P.
-           0020  ff ff 18 00 ff ff 00 00  02 00 ff ff ff ff 04 00  ........ ........
-           0030  ff ff ff ff ff ff ff ff  0a 00 25 00 27 00 ff ff  ........ ..%.'...
-           0040  29 00 ff ff ff ff 2b 00  ff ff 2d 00 ff ff ff ff  ).....+. ..-.....
-           0050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           0060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           0070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           0080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           0090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           00a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           00b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           00c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           00d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           00e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           00f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           0100  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           0110  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-           0120  ff ff ff ff ff ff 2f 00  07 00 0d 00 1a 24 3c 31  ....../. .....$&lt;1
-           0130  3e 00 1b 3d 25 70 31 25  7b 33 32 7d 25 2b 25 63  &gt;..=%p1% {32}%+%c
-           0140  25 70 32 25 7b 33 32 7d  25 2b 25 63 00 0a 00 1e  %p2%{32} %+%c....
-           0150  00 08 00 0c 00 0b 00 0a  00                       ........ .
-
-
-
-</PRE><H2><a name="h2-LIMITS">LIMITS</a></H2><PRE>
-       Some limitations:
-
-       <STRONG>o</STRONG>   total  compiled  entries  cannot  exceed  4096  bytes in the legacy
+       <STRONG>o</STRONG>   total compiled entries cannot  exceed  4096  bytes  in  the  legacy
            format.
 
-       <STRONG>o</STRONG>   total compiled entries cannot exceed 32768 bytes  in  the  extended
+       <STRONG>o</STRONG>   total  compiled  entries  cannot exceed 32768 bytes in the extended
            format.
 
        <STRONG>o</STRONG>   the name field cannot exceed 128 bytes.
 
-       Compiled  entries  are  limited to 32768 bytes because offsets into the
-       <EM>strings</EM> <EM>table</EM> use two-byte integers.   The  legacy  format  could  have
-       supported  32768-byte  entries, but was limited a virtual memory page's
-       4096 bytes.
+       Compiled entries are limited to 32768 bytes because  offsets  into  the
+       <EM>strings</EM>  <EM>table</EM>  use  two-byte  integers.   The legacy format could have
+       supported 32768-byte entries, but  was  limited  to  a  virtual  memory
+       page's 4096 bytes.
 
 
-</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       /usr/share/terminfo/*/*  compiled terminal capability database
+</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
+       As  an  example,  here  is  a description for the Lear-Siegler ADM-3, a
+       popular though rather stupid early terminal:
 
+       adm3a|lsi adm3a,
+               am,
+               cols#80, lines#24,
+               bel=^G, clear=\032$&lt;1&gt;, cr=^M, cub1=^H, cud1=^J,
+               cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+               home=^^, ind=^J,
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+       and a hexadecimal dump of the compiled terminal description:
+
+       0000  1a 01 10 00 02 00 03 00  82 00 31 00 61 64 6d 33  ........ ..1.adm3
+       0010  61 7c 6c 73 69 20 61 64  6d 33 61 00 00 01 50 00  a|lsi ad m3a...P.
+       0020  ff ff 18 00 ff ff 00 00  02 00 ff ff ff ff 04 00  ........ ........
+       0030  ff ff ff ff ff ff ff ff  0a 00 25 00 27 00 ff ff  ........ ..%.'...
+       0040  29 00 ff ff ff ff 2b 00  ff ff 2d 00 ff ff ff ff  ).....+. ..-.....
+       0050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       00f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0100  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0110  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
+       0120  ff ff ff ff ff ff 2f 00  07 00 0d 00 1a 24 3c 31  ....../. .....$&lt;1
+       0130  3e 00 1b 3d 25 70 31 25  7b 33 32 7d 25 2b 25 63  &gt;..=%p1% {32}%+%c
+       0140  25 70 32 25 7b 33 32 7d  25 2b 25 63 00 0a 00 1e  %p2%{32} %+%c....
+       0150  00 08 00 0c 00 0b 00 0a  00                       ........ .
 
 
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Thomas E. Dickey
-       extended terminfo format for ncurses 5.0
-       hashed database support for ncurses 5.6
-       extended number support for ncurses 6.1
+       extended terminfo format for <EM>ncurses</EM> 5.0
+       hashed database support for <EM>ncurses</EM> 5.6
+       extended number support for <EM>ncurses</EM> 6.1
 
        Eric S. Raymond
        documented legacy terminfo format, e.g., from <EM>pcurses</EM>.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
+
+
 
-                                                                       <STRONG><A HREF="term.5.html">term(5)</A></STRONG>
+ncurses 6.5                       2024-04-20                           <STRONG><A HREF="term.5.html">term(5)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-STORAGE-LOCATION">STORAGE LOCATION</a></li>
-<li><a href="#h3-LEGACY-STORAGE-FORMAT">LEGACY STORAGE FORMAT</a></li>
-<li><a href="#h3-EXTENDED-STORAGE-FORMAT">EXTENDED STORAGE FORMAT</a></li>
-<li><a href="#h3-EXTENDED-NUMBER-FORMAT">EXTENDED NUMBER FORMAT</a></li>
+<li><a href="#h3-Storage-Location">Storage Location</a></li>
+<li><a href="#h3-Legacy-Storage-Format">Legacy Storage Format</a></li>
+<li><a href="#h3-Extended-Storage-Format">Extended Storage Format</a></li>
+<li><a href="#h3-Extended-Number-Format">Extended Number Format</a></li>
 </ul>
 </li>
+<li><a href="#h2-FILES">FILES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a>
 <ul>
 <li><a href="#h3-setupterm">setupterm</a></li>
-<li><a href="#h3-Binary-format">Binary format</a></li>
-<li><a href="#h3-Magic-codes">Magic codes</a></li>
-<li><a href="#h3-The-TERMTYPE-structure">The TERMTYPE structure</a></li>
-<li><a href="#h3-Mixed-case-terminal-names">Mixed-case terminal names</a></li>
+<li><a href="#h3-Binary-Format">Binary Format</a></li>
+<li><a href="#h3-Magic-Codes">Magic Codes</a></li>
+<li><a href="#h3-Mixed-case-Terminal-Names">Mixed-case Terminal Names</a></li>
+<li><a href="#h3-Limits">Limits</a></li>
 </ul>
 </li>
-<li><a href="#h2-EXAMPLE">EXAMPLE</a></li>
-<li><a href="#h2-LIMITS">LIMITS</a></li>
-<li><a href="#h2-FILES">FILES</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 009f67418f8d3d2536f438d027a0425c33920ab5..9a8858878771d12bc4287490819ed960c9f5588c 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2011,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: term.7,v 1.31 2021/12/25 17:39:16 tom Exp @
+  * @Id: term.7,v 1.48 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>term 7</TITLE>
+<TITLE>term 7 2024-03-16 ncurses 6.5 Miscellaneous</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">term 7</H1>
+<H1 class="no-header">term 7 2024-03-16 ncurses 6.5 Miscellaneous</H1>
 <PRE>
-<STRONG><A HREF="term.7.html">term(7)</A></STRONG>                Miscellaneous Information Manual                <STRONG><A HREF="term.7.html">term(7)</A></STRONG>
+<STRONG><A HREF="term.7.html">term(7)</A></STRONG>                          Miscellaneous                         <STRONG><A HREF="term.7.html">term(7)</A></STRONG>
 
 
 
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The  environment variable <STRONG>TERM</STRONG> should normally contain the type name of
+       The  environment variable <EM>TERM</EM> should normally contain the type name of
        the terminal, console or  display-device  type  you  are  using.   This
        information  is  critical  for  all screen-oriented programs, including
        your editor and mailer.
 
-       A default <STRONG>TERM</STRONG> value  will  be  set  on  a  per-line  basis  by  either
-       <STRONG>/etc/inittab</STRONG>  (e.g.,  System-V-like  UNIXes) or <STRONG>/etc/ttys</STRONG> (BSD UNIXes).
+       A default <EM>TERM</EM> value  will  be  set  on  a  per-line  basis  by  either
+       <STRONG>/etc/inittab</STRONG>  (e.g.,  System-V-like  Unices) or <STRONG>/etc/ttys</STRONG> (BSD Unices).
        This will nearly  always  suffice  for  workstation  and  microcomputer
        consoles.
 
        If  you  use a dialup line, the type of device attached to it may vary.
-       Older UNIX systems pre-set a very dumb terminal  type  like  "dumb"  or
+       Older Unix systems pre-set a very dumb terminal  type  like  "dumb"  or
        "dialup"  on  dialup lines.  Newer ones may pre-set "vt100", reflecting
        the prevalence of DEC VT100-compatible terminals and  personal-computer
        emulators.
 
-       Modern  telnets pass your <STRONG>TERM</STRONG> environment variable from the local side
+       Modern  telnets pass your <EM>TERM</EM> environment variable from the local side
        to the remote one.  There can be problems if  the  remote  terminfo  or
        termcap  entry  for  your  type  is not compatible with yours, but this
        situation is rare and  can  almost  always  be  avoided  by  explicitly
        exporting  "vt100"  (assuming  you  are  in fact using a VT100-superset
        console, terminal, or terminal emulator).
 
-       In any case, you are free to override the system <STRONG>TERM</STRONG> setting  to  your
+       In any case, you are free to override the system <EM>TERM</EM> setting  to  your
        taste in your shell profile.  The <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> utility may be of assistance;
        you can give it a set of rules for deducing or  requesting  a  terminal
        type based on the tty device and baud rate.
 
-       Setting  your  own  <STRONG>TERM</STRONG> value may also be useful if you have created a
+       Setting  your  own  <EM>TERM</EM> value may also be useful if you have created a
        custom entry incorporating options (such as  visual  bell  or  reverse-
        video)  which  you  wish  to  override the system default type for your
        line.
        underneath /usr/share/terminfo.  To browse a list of all terminal names
        recognized by the system, do
 
-            toe | more
+               toe | more
 
        from your shell.   These  capability  files  are  in  a  binary  format
        optimized for retrieval speed (unlike the old text-based <STRONG>termcap</STRONG> format
        they replace); to examine  an  entry,  you  must  use  the  <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
        command.  Invoke it as follows:
 
-            infocmp <EM>entry</EM><STRONG>_</STRONG><EM>name</EM>
+               infocmp <EM>entry</EM><STRONG>_</STRONG><EM>name</EM>
 
        where  <EM>entry</EM><STRONG>_</STRONG><EM>name</EM>  is the name of the type you wish to examine (and the
        name of its capability file  the  subdirectory  of  /usr/share/terminfo
        The first line of a <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> 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 <EM>primary</EM> <EM>name</EM>, and is the one to use when setting <STRONG>TERM</STRONG>.  The last
+       type's <EM>primary</EM> <EM>name</EM>, and is the one to use when setting <EM>TERM</EM>.  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
 
        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  <STRONG>TERM</STRONG>  environment  variable  when  no -T option is
+       fall  back  on  the  <EM>TERM</EM>  environment  variable  when  no -T option is
        specified.
 
 
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       For maximum compatibility with older System V UNIXes, names and aliases
-       should be unique within the first 14 characters.
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+       <EM>/usr/share/terminfo</EM>
+              compiled terminal description database
 
+       <EM>/etc/inittab</EM>
+              tty line initialization (AT&amp;T-like Unices)
 
-</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       /usr/share/terminfo/?/*
-            compiled terminal capability database
+       <EM>/etc/ttys</EM>
+              tty line initialization (BSD-like Unices)
 
-       /etc/inittab
-            tty line initialization (AT&amp;T-like UNIXes)
 
-       /etc/ttys
-            tty line initialization (BSD-like UNIXes)
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       For maximum compatibility with older System V Unices, names and aliases
+       should be unique within the first 14 characters.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
-                                                                       <STRONG><A HREF="term.7.html">term(7)</A></STRONG>
+ncurses 6.5                       2024-03-16                           <STRONG><A HREF="term.7.html">term(7)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 6e9308381707fe7c3dbbcfeb7e9c3ea6fcf77c3e..99b6786bca482b5a1ec3dfe6caafd84e7810acef 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2019-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 2010-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: term_variables.3x,v 1.15 2021/12/25 22:03:30 tom Exp @
+  * @Id: term_variables.3x,v 1.36 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>term_variables 3x</TITLE>
+<TITLE>term_variables 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">term_variables 3x</H1>
+<H1 class="no-header">term_variables 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>                                          <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>
+<STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>               Library calls              <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>SP</STRONG>, <STRONG>acs_map</STRONG>, <STRONG>boolcodes</STRONG>, <STRONG>boolfnames</STRONG>, <STRONG>boolnames</STRONG>, <STRONG>cur_term</STRONG>, <STRONG>numcodes</STRONG>,
-       <STRONG>numfnames</STRONG>, <STRONG>numnames</STRONG>, <STRONG>strcodes</STRONG>, <STRONG>strfnames</STRONG>, <STRONG>strnames</STRONG>, <STRONG>ttytype</STRONG> - <STRONG>curses</STRONG>
-       terminfo global variables
+       <STRONG>SP</STRONG>,  <STRONG>acs_map</STRONG>,  <STRONG>boolcodes</STRONG>,  <STRONG>boolfnames</STRONG>,  <STRONG>boolnames</STRONG>,  <STRONG>cur_term</STRONG>, <STRONG>numcodes</STRONG>,
+       <STRONG>numfnames</STRONG>, <STRONG>numnames</STRONG>, <STRONG>strcodes</STRONG>, <STRONG>strfnames</STRONG>, <STRONG>strnames</STRONG>, <STRONG>ttytype</STRONG> -  <EM>terminfo</EM>
+       global variables
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
@@ -83,9 +83,9 @@
        <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> manual page.
 
        Depending  on  the  configuration,  these  may  be actual variables, or
-       macros (see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>) which provide read-only access  to  <EM>curs-</EM>
-       <EM>es</EM>'s state.  In either case, applications should treat them as read-on-
-       ly to avoid confusing the library.
+       macros  (see  <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>)  which  provide  read-only  access   to
+       <EM>curses</EM>'s  state.   In  either  case,  applications should treat them as
+       read-only to avoid confusing the library.
 
 
 </PRE><H3><a name="h3-Alternate-Character-Set-Mapping">Alternate Character Set Mapping</a></H3><PRE>
        Application  developers  need  only know that it is used for the "ACS_"
        constants in &lt;curses.h&gt;.
 
-       The comparable data for the wide-character library is a  private  vari-
-       able.
+       The comparable  data  for  the  wide-character  library  is  a  private
+       variable.
 
 
 </PRE><H3><a name="h3-Current-Terminal-Data">Current Terminal Data</a></H3><PRE>
-       After initializing the curses or terminfo interfaces, the <STRONG>cur_term</STRONG> con-
-       tains data describing the current terminal.  This variable is also  set
-       as a side-effect of <STRONG><A HREF="curs_initscr.3x.html">set_term(3x)</A></STRONG> and <STRONG><A HREF="curs_initscr.3x.html">delscreen(3x)</A></STRONG>.
+       After  initializing  the  curses  or  terminfo interfaces, the <STRONG>cur_term</STRONG>
+       contains data describing the current terminal.  This variable  is  also
+       set as a side-effect of <STRONG><A HREF="curs_initscr.3x.html">set_term(3x)</A></STRONG> and <STRONG><A HREF="curs_initscr.3x.html">delscreen(3x)</A></STRONG>.
 
-       It  is possible to save a value of <STRONG>cur_term</STRONG> for subsequent use as a pa-
-       rameter to <STRONG>set_term</STRONG>, for switching between screens.  Alternatively, one
-       can  save  the  return  value from <STRONG>newterm</STRONG> or <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to reuse in
+       It  is  possible  to  save  a value of <STRONG>cur_term</STRONG> for subsequent use as a
+       parameter to <STRONG>set_term</STRONG>, for switching between  screens.   Alternatively,
+       one can save the return value from <STRONG>newterm</STRONG> or <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to reuse in
        <STRONG>set_term</STRONG>.
 
 
-</PRE><H3><a name="h3-Terminfo-Lookup-Tables">Terminfo Lookup Tables</a></H3><PRE>
+</PRE><H3><a name="h3-terminfo-Lookup-Tables"><EM>terminfo</EM> Lookup Tables</a></H3><PRE>
        The <STRONG><A HREF="tic.1m.html">tic(1)</A></STRONG> and <STRONG><A HREF="infocmp.1m.html">infocmp(1)</A></STRONG> programs use lookup tables for the  long  and
        short  names  of  terminfo  capabilities,  as well as the corresponding
-       names for termcap capabilities.  These are available to other  applica-
-       tions,  although the hash-tables used by the terminfo and termcap func-
-       tions are not available.
+       names  for  termcap  capabilities.   These  are  available   to   other
+       applications, although the hash-tables used by the terminfo and termcap
+       functions are not available.
 
-       The long terminfo capability names use a  "l"  (ell)  in  their  names:
+       The long terminfo capability names use a  "f"  (eff)  in  their  names:
        <STRONG>boolfnames</STRONG>, <STRONG>numfnames</STRONG>, and <STRONG>strfnames</STRONG>.
 
-       These  are  the  short names for terminfo capabilities: <STRONG>boolnames</STRONG>, <STRONG>num-</STRONG>
-       <STRONG>names</STRONG>, and <STRONG>strnames</STRONG>.
+       These  are  the  short  names  for  terminfo  capabilities:  <STRONG>boolnames</STRONG>,
+       <STRONG>numnames</STRONG>, and <STRONG>strnames</STRONG>.
 
-       These are the corresponding names used for termcap descriptions:  <STRONG>bool-</STRONG>
-       <STRONG>codes</STRONG>, <STRONG>numcodes</STRONG>, and <STRONG>strcodes</STRONG>.
+       These are  the  corresponding  names  used  for  termcap  descriptions:
+       <STRONG>boolcodes</STRONG>, <STRONG>numcodes</STRONG>, and <STRONG>strcodes</STRONG>.
 
 
 </PRE><H3><a name="h3-Terminal-Type">Terminal Type</a></H3><PRE>
        A terminal description begins with one or more terminal names separated
        by "|" (vertical bars).  On initialization of the  curses  or  terminfo
-       interfaces,  <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>  copies the terminal names to the array <STRONG>tty-</STRONG>
-       <STRONG>type</STRONG>.
+       interfaces,  <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>  copies  the  terminal  names  to  the array
+       <STRONG>ttytype</STRONG>.
 
 
-</PRE><H3><a name="h3-Terminfo-Names">Terminfo Names</a></H3><PRE>
+</PRE><H3><a name="h3-terminfo-Names"><EM>terminfo</EM> Names</a></H3><PRE>
        In addition to the variables, <STRONG>&lt;term.h&gt;</STRONG> also defines a symbol  for  each
        terminfo  capability  <EM>long</EM> <EM>name</EM>.  These are in terms of the symbol <STRONG>CUR</STRONG>,
        which is defined
 
        #define CUR ((TERMTYPE *)(cur_term))-&gt;
 
-       These symbols provide a faster method of accessing  terminfo  capabili-
-       ties than using <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG>, etc.
+       These  symbols  provide  a  faster   method   of   accessing   terminfo
+       capabilities than using <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG>, etc.
 
        The  actual definition of <STRONG>CUR</STRONG> depends upon the implementation, but each
        terminfo library provides these long names defined to  point  into  the
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        X/Open Curses does not describe any of these except for <STRONG>cur_term</STRONG>.  (The
-       inclusion of <STRONG>cur_term</STRONG> appears to be an oversight, since other  compara-
-       ble low-level information is omitted by X/Open).
+       inclusion  of  <STRONG>cur_term</STRONG>  appears  to  be  an  oversight,  since   other
+       comparable low-level information is omitted by X/Open).
 
-       Other  implementations may have comparable variables.  Some implementa-
-       tions provide the variables in their libraries, but omit them from  the
-       header files.
+       Other    implementations   may   have   comparable   variables.    Some
+       implementations provide the variables in their libraries, but omit them
+       from the header files.
 
        All  implementations  which provide terminfo interfaces add definitions
        as described in the <STRONG>Terminfo</STRONG> <STRONG>Names</STRONG> section.  Most, but  not  all,  base
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
-                                                            <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <ul>
 <li><a href="#h3-Alternate-Character-Set-Mapping">Alternate Character Set Mapping</a></li>
 <li><a href="#h3-Current-Terminal-Data">Current Terminal Data</a></li>
-<li><a href="#h3-Terminfo-Lookup-Tables">Terminfo Lookup Tables</a></li>
+<li><a href="#h3-terminfo-Lookup-Tables">terminfo Lookup Tables</a></li>
 <li><a href="#h3-Terminal-Type">Terminal Type</a></li>
-<li><a href="#h3-Terminfo-Names">Terminfo Names</a></li>
+<li><a href="#h3-terminfo-Names">terminfo Names</a></li>
 </ul>
 </li>
 <li><a href="#h2-NOTES">NOTES</a></li>
index 23b27bfb43992ef5eb6756023b909746e2ad624d..67061141faca5c934f2a11408997bf95e372cf7e 100644 (file)
@@ -5,7 +5,7 @@
   * Note: this must be run through tbl before nroff.
   * The magic cookie on the first line triggers this under some man programs.
   ****************************************************************************
-  * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: terminfo.head,v 1.42 2021/12/25 17:39:16 tom Exp @
-  * Head of terminfo man page ends here
-  ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
-  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
-  *                                                                          *
-  * Permission is hereby granted, free of charge, to any person obtaining a  *
-  * copy of this software and associated documentation files (the            *
-  * "Software"), to deal in the Software without restriction, including      *
-  * without limitation the rights to use, copy, modify, merge, publish,      *
-  * distribute, distribute with modifications, sublicense, and/or sell       *
-  * copies of the Software, and to permit persons to whom the Software is    *
-  * furnished to do so, subject to the following conditions:                 *
-  *                                                                          *
-  * The above copyright notice and this permission notice shall be included  *
-  * in all copies or substantial portions of the Software.                   *
-  *                                                                          *
-  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
-  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
-  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
-  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
-  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
-  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
-  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
-  *                                                                          *
-  * Except as contained in this notice, the name(s) of the above copyright   *
-  * holders shall not be used in advertising or otherwise to promote the     *
-  * sale, use or other dealings in this Software without prior written       *
-  * authorization.                                                           *
-  ****************************************************************************
-  * @Id: terminfo.tail,v 1.113 2022/12/10 19:51:10 tom Exp @
-  *.in -2
-  *.in +2
-  *.in -2
-  *.in +2
-  *.TH
+  * @Id: terminfo.head,v 1.65 2024/04/20 21:14:00 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>terminfo 5   File Formats</TITLE>
+<TITLE>terminfo 5 2024-04-20 ncurses 6.5 File formats</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">terminfo 5   File Formats</H1>
+<H1 class="no-header">terminfo 5 2024-04-20 ncurses 6.5 File formats</H1>
 <PRE>
-<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>                      File Formats                      <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>                      File formats                      <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       terminfo - terminal capability database
+       <STRONG>terminfo</STRONG> - terminal capability database
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        have, by specifying how to perform screen operations, and by specifying
        padding requirements and initialization sequences.
 
-       This manual describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
+       This document describes <EM>ncurses</EM> version 6.5 (patch 20240427).
 
 
-</PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
+</PRE><H3><a name="h3-terminfo-Entry-Syntax"><EM>terminfo</EM> Entry Syntax</a></H3><PRE>
        Entries in <EM>terminfo</EM> consist of a sequence of fields:
 
        <STRONG>o</STRONG>   Each field ends with a comma "," (embedded commas  may  be  escaped
        <STRONG>o</STRONG>   Lines  beginning  with  a  "#"  in  the first column are treated as
            comments.
 
-           While comment lines are legal at any point, the output of <STRONG>captoinfo</STRONG>
+           While comment lines are valid at any point, the output of <STRONG>captoinfo</STRONG>
            and  <STRONG>infotocap</STRONG>  (aliases  for <STRONG>tic</STRONG>) will move comments so they occur
            only between entries.
 
        suffix.   Thus,  a  vt100  in  132-column  mode  would be vt100-w.  The
        following suffixes should be used where possible:
 
-            <STRONG>Suffix</STRONG>                  <STRONG>Meaning</STRONG>                   <STRONG>Example</STRONG>
-            -<EM>nn</EM>      Number of lines on the screen            aaa-60
-            -<EM>n</EM>p      Number of pages of memory                c100-4p
-            -am      With automargins (usually the default)   vt100-am
-            -m       Mono mode; suppress color                ansi-m
-            -mc      Magic cookie; spaces when highlighting   wy30-mc
-            -na      No arrow keys (leave them in local)      c100-na
-            -nam     Without automatic margins                vt100-nam
-            -nl      No status line                           att4415-nl
-            -ns      No status line                           hp2626-ns
-            -rv      Reverse video                            c100-rv
-            -s       Enable status line                       vt100-s
-            -vb      Use visible bell instead of beep         wy370-vb
-            -w       Wide mode (&gt; 80 columns, usually 132)    vt100-w
+       <STRONG>Suffix</STRONG>   <STRONG>Example</STRONG>     <STRONG>Meaning</STRONG>
+       ------------------------------------------------------------------------
+       -<EM>nn</EM>      aaa-60      Number of lines on the screen
+       -<EM>n</EM>p      c100-4p     Number of pages of memory
+       -am      vt100-am    With automargins (usually the default)
+       -m       ansi-m      Mono mode; suppress color
+       -mc      wy30-mc     Magic cookie; spaces when highlighting
+       -na      c100-na     No arrow keys (leave them in local)
+       -nam     vt100-nam   Without automatic margins
+       -nl      hp2621-nl   No status line
+       -ns      hp2626-ns   No status line
+       -rv      c100-rv     Reverse video
+       -s       vt100-s     Enable status line
+       -vb      wy370-vb    Use visible bell instead of beep
+       -w       vt100-w     Wide mode (&gt; 80 columns, usually 132)
 
        For more on terminal naming conventions, see the <STRONG><A HREF="term.7.html">term(7)</A></STRONG> manual page.
 
 
-</PRE><H3><a name="h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></H3><PRE>
+</PRE><H3><a name="h3-terminfo-Capabilities-Syntax"><EM>terminfo</EM> Capabilities Syntax</a></H3><PRE>
        The terminfo entry consists of  several  <EM>capabilities</EM>,  i.e.,  features
        that  the  terminal  has,  or  methods  for  exercising  the terminal's
        features.
 
        After the first field (giving the name(s) of the terminal entry), there
-       should be one or more <EM>capability</EM> fields.  These are boolean, numeric or
+       should be one or more <EM>capability</EM> fields.  These are Boolean, numeric or
        string names with corresponding values:
 
        <STRONG>o</STRONG>   Boolean capabilities are true  when  present,  false  when  absent.
-           There is no explicit value for boolean capabilities.
+           There is no explicit value for Boolean capabilities.
 
        <STRONG>o</STRONG>   Numeric  capabilities  have  a  "#"  following  the  name,  then an
            unsigned decimal integer value.
 
 
 </PRE><H3><a name="h3-Predefined-Capabilities">Predefined Capabilities</a></H3><PRE>
-       The following is a complete table of the  capabilities  included  in  a
-       terminfo  description  block  and available to terminfo-using code.  In
-       each line of the table,
-
-       The <STRONG>variable</STRONG> is the name by  which  the  programmer  (at  the  terminfo
-       level) accesses the capability.
-
-       The  <STRONG>capname</STRONG> is the short name used in the text of the database, and is
-       used by a person updating the database.   Whenever  possible,  capnames
-       are chosen to be the same as or similar to the ANSI X3.64-1979 standard
-       (now superseded by  ECMA-48,  which  uses  identical  or  very  similar
-       names).    Semantics   are   also   intended  to  match  those  of  the
-       specification.
-
-       The termcap code is the old <STRONG>termcap</STRONG> capability name (some  capabilities
-       are new, and have names which termcap did not originate).
-
-       Capability  names have no hard length limit, but an informal limit of 5
-       characters has been adopted to keep them short and to allow the tabs in
-       the source file <STRONG>Caps</STRONG> to line up nicely.
-
-       Finally,  the description field attempts to convey the semantics of the
-       capability.  You may find some codes in the description field:
-
-       (P)    indicates that padding may be specified
-
-       #[1-9] in the description field indicates that  the  string  is  passed
-              through <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> with parameters as given (#<EM>i</EM>).
-
-              If  no  parameters  are  listed  in the description, passing the
-              string through <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> may give unexpected results,  e.g.,  if
-              it contains percent (%%) signs.
-
-       (P*)   indicates  that  padding may vary in proportion to the number of
-              lines affected
-
-       (#<EM>i</EM>)   indicates the <EM>i</EM>th parameter.
-
-
-       These are the boolean capabilities:
-
-
-                  <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>      <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
-                  <STRONG>Booleans</STRONG>            <STRONG>name</STRONG>      <STRONG>Code</STRONG>
-
-
-
-          auto_left_margin            bw        bw     cub1 wraps from
-                                                       column 0 to last
-                                                       column
-          auto_right_margin           am        am     terminal has
-                                                       automatic margins
-          back_color_erase            bce       ut     screen erased with
-                                                       background color
-          can_change                  ccc       cc     terminal can re-
-                                                       define existing
-                                                       colors
-          ceol_standout_glitch        xhp       xs     standout not erased
-                                                       by overwriting (hp)
-          col_addr_glitch             xhpa      YA     only positive motion
-                                                       for hpa/mhpa caps
-          cpi_changes_res             cpix      YF     changing character
-                                                       pitch changes
-                                                       resolution
-          cr_cancels_micro_mode       crxm      YB     using cr turns off
-                                                       micro mode
-          dest_tabs_magic_smso        xt        xt     tabs destructive,
-                                                       magic so char
-                                                       (t1061)
-          eat_newline_glitch          xenl      xn     newline ignored
-                                                       after 80 cols
-                                                       (concept)
-          erase_overstrike            eo        eo     can erase
-                                                       overstrikes with a
-                                                       blank
-          generic_type                gn        gn     generic line type
-          hard_copy                   hc        hc     hardcopy terminal
-          hard_cursor                 chts      HC     cursor is hard to
-                                                       see
-          has_meta_key                km        km     Has a meta key
-                                                       (i.e., sets 8th-bit)
-          has_print_wheel             daisy     YC     printer needs
-                                                       operator to change
-                                                       character set
-          has_status_line             hs        hs     has extra status
-                                                       line
-          hue_lightness_saturation    hls       hl     terminal uses only
-                                                       HLS color notation
-                                                       (Tektronix)
-          insert_null_glitch          in        in     insert mode
-                                                       distinguishes nulls
-          lpi_changes_res             lpix      YG     changing line pitch
-                                                       changes resolution
-          memory_above                da        da     display may be
-                                                       retained above the
-                                                       screen
-          memory_below                db        db     display may be
-                                                       retained below the
-                                                       screen
-          move_insert_mode            mir       mi     safe to move while
-                                                       in insert mode
-          move_standout_mode          msgr      ms     safe to move while
-                                                       in standout mode
-          needs_xon_xoff              nxon      nx     padding will not
-                                                       work, xon/xoff
-                                                       required
-          no_esc_ctlc                 xsb       xb     beehive (f1=escape,
-                                                       f2=ctrl C)
-          no_pad_char                 npc       NP     pad character does
-                                                       not exist
-          non_dest_scroll_region      ndscr     ND     scrolling region is
-                                                       non-destructive
-
-          non_rev_rmcup               nrrmc     NR     smcup does not
-                                                       reverse rmcup
-          over_strike                 os        os     terminal can
-                                                       overstrike
-          prtr_silent                 mc5i      5i     printer will not
-                                                       echo on screen
-          row_addr_glitch             xvpa      YD     only positive motion
-                                                       for vpa/mvpa caps
-          semi_auto_right_margin      sam       YE     printing in last
-                                                       column causes cr
-          status_line_esc_ok          eslok     es     escape can be used
-                                                       on the status line
-          tilde_glitch                hz        hz     cannot print ~'s
-                                                       (Hazeltine)
-          transparent_underline       ul        ul     underline character
-                                                       overstrikes
-          xon_xoff                    xon       xo     terminal uses
-                                                       xon/xoff handshaking
-
-       These are the numeric capabilities:
-
-
-                  <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>      <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
-                   <STRONG>Numeric</STRONG>            <STRONG>name</STRONG>      <STRONG>Code</STRONG>
-          columns                     cols      co     number of columns in
-                                                       a line
-          init_tabs                   it        it     tabs initially every
-                                                       # spaces
-          label_height                lh        lh     rows in each label
-          label_width                 lw        lw     columns in each
-                                                       label
-          lines                       lines     li     number of lines on
-                                                       screen or page
-          lines_of_memory             lm        lm     lines of memory if &gt;
-                                                       line. 0 means varies
-          magic_cookie_glitch         xmc       sg     number of blank
-                                                       characters left by
-                                                       smso or rmso
-          max_attributes              ma        ma     maximum combined
-                                                       attributes terminal
-                                                       can handle
-          max_colors                  colors    Co     maximum number of
-                                                       colors on screen
-          max_pairs                   pairs     pa     maximum number of
-                                                       color-pairs on the
-                                                       screen
-          maximum_windows             wnum      MW     maximum number of
-                                                       definable windows
-          no_color_video              ncv       NC     video attributes
-                                                       that cannot be used
-                                                       with colors
-          num_labels                  nlab      Nl     number of labels on
-                                                       screen
-          padding_baud_rate           pb        pb     lowest baud rate
-                                                       where padding needed
-          virtual_terminal            vt        vt     virtual terminal
-                                                       number (CB/unix)
-          width_status_line           wsl       ws     number of columns in
-                                                       status line
-
-       The  following  numeric  capabilities  are  present  in the SVr4.0 term
-       structure, but are not yet documented in the man page.   They  came  in
+       Tables of capabilities <EM>ncurses</EM> recognizes in a <EM>terminfo</EM>  terminal  type
+       description and available to <EM>terminfo</EM>-using code follow.
+
+       <STRONG>o</STRONG>   The  capability  name identifies the symbol by which the programmer
+           using the <EM>terminfo</EM> API accesses the capability.
+
+       <STRONG>o</STRONG>   The TI (<EM>terminfo</EM>) code is the short name used by a person composing
+           or updating a terminal type entry.
+
+           Whenever  possible, these codes are the same as or similar to those
+           of the ANSI X3.64-1979 standard (now superseded by  ECMA-48,  which
+           uses identical or very similar names).  Semantics are also intended
+           to match those of the specification.
+
+           <EM>terminfo</EM> codes have no hard length limit, but <EM>ncurses</EM> maintains  an
+           informal  one  of  5 characters to keep them short and to allow the
+           tabs in the source file <EM>Caps</EM> to line  up  nicely.   (Some  standard
+           codes exceed this limit regardless.)
+
+       <STRONG>o</STRONG>   The  TC  (<EM>termcap</EM>)  code  is  that used by the corresponding API of
+           <EM>ncurses</EM>.  (Some capabilities are  new,  and  have  names  that  BSD
+           <EM>termcap</EM> did not originate.)
+
+       <STRONG>o</STRONG>   The   description   field   attempts  to  convey  the  capability's
+           semantics.
+
+       The description field employs a handful of notations.
+
+       <STRONG>(P)</STRONG>    indicates that padding may be specified.
+
+       <STRONG>(P*)</STRONG>   indicates that padding may vary in proportion to the  number  of
+              output lines affected.
+
+       <STRONG>#</STRONG><EM>i</EM>     indicates   the  <EM>i</EM>th  parameter  of  a  string  capability;  the
+              programmer  should  pass  the  string  to  <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>  with   the
+              parameters listed.
+
+              If  the  description  lists no parameters, passing the string to
+              <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> may produce unexpected behavior, for instance  if  the
+              string contains percent signs.
+
+                                      <STRONG>Code</STRONG>
+       <STRONG>Boolean</STRONG> <STRONG>Capability</STRONG> <STRONG>Name</STRONG>    <STRONG>TI</STRONG>        <STRONG>TC</STRONG>  <STRONG>Description</STRONG>
+       ------------------------------------------------------------------------
+
+
+       <STRONG>auto_left_margin</STRONG>           <STRONG>bw</STRONG>        <STRONG>bw</STRONG>  cub1 wraps from column 0 to
+                                                last column
+       <STRONG>auto_right_margin</STRONG>          <STRONG>am</STRONG>        <STRONG>am</STRONG>  terminal has automatic margins
+       <STRONG>no_esc_ctlc</STRONG>                <STRONG>xsb</STRONG>       <STRONG>xb</STRONG>  beehive (f1=escape, f2=ctrl C)
+       <STRONG>ceol_standout_glitch</STRONG>       <STRONG>xhp</STRONG>       <STRONG>xs</STRONG>  standout not erased by
+                                                overwriting (hp)
+       <STRONG>eat_newline_glitch</STRONG>         <STRONG>xenl</STRONG>      <STRONG>xn</STRONG>  newline ignored after 80 cols
+                                                (concept)
+       <STRONG>erase_overstrike</STRONG>           <STRONG>eo</STRONG>        <STRONG>eo</STRONG>  can erase overstrikes with a
+                                                blank
+       <STRONG>generic_type</STRONG>               <STRONG>gn</STRONG>        <STRONG>gn</STRONG>  generic line type
+       <STRONG>hard_copy</STRONG>                  <STRONG>hc</STRONG>        <STRONG>hc</STRONG>  hardcopy terminal
+       <STRONG>has_meta_key</STRONG>               <STRONG>km</STRONG>        <STRONG>km</STRONG>  Has a meta key (i.e., sets
+                                                8th-bit)
+       <STRONG>has_status_line</STRONG>            <STRONG>hs</STRONG>        <STRONG>hs</STRONG>  has extra status line
+       <STRONG>insert_null_glitch</STRONG>         <STRONG>in</STRONG>        <STRONG>in</STRONG>  insert mode distinguishes
+                                                nulls
+       <STRONG>memory_above</STRONG>               <STRONG>da</STRONG>        <STRONG>da</STRONG>  display may be retained above
+                                                the screen
+       <STRONG>memory_below</STRONG>               <STRONG>db</STRONG>        <STRONG>db</STRONG>  display may be retained below
+                                                the screen
+       <STRONG>move_insert_mode</STRONG>           <STRONG>mir</STRONG>       <STRONG>mi</STRONG>  safe to move while in insert
+                                                mode
+       <STRONG>move_standout_mode</STRONG>         <STRONG>msgr</STRONG>      <STRONG>ms</STRONG>  safe to move while in standout
+                                                mode
+       <STRONG>over_strike</STRONG>                <STRONG>os</STRONG>        <STRONG>os</STRONG>  terminal can overstrike
+       <STRONG>status_line_esc_ok</STRONG>         <STRONG>eslok</STRONG>     <STRONG>es</STRONG>  escape can be used on the
+                                                status line
+       <STRONG>dest_tabs_magic_smso</STRONG>       <STRONG>xt</STRONG>        <STRONG>xt</STRONG>  tabs destructive, magic so
+                                                char (t1061)
+       <STRONG>tilde_glitch</STRONG>               <STRONG>hz</STRONG>        <STRONG>hz</STRONG>  cannot print ~'s (Hazeltine)
+       <STRONG>transparent_underline</STRONG>      <STRONG>ul</STRONG>        <STRONG>ul</STRONG>  underline character
+                                                overstrikes
+       <STRONG>xon_xoff</STRONG>                   <STRONG>xon</STRONG>       <STRONG>xo</STRONG>  terminal uses xon/xoff
+                                                handshaking
+       <STRONG>needs_xon_xoff</STRONG>             <STRONG>nxon</STRONG>      <STRONG>nx</STRONG>  padding will not work,
+                                                xon/xoff required
+       <STRONG>prtr_silent</STRONG>                <STRONG>mc5i</STRONG>      <STRONG>5i</STRONG>  printer will not echo on
+                                                screen
+       <STRONG>hard_cursor</STRONG>                <STRONG>chts</STRONG>      <STRONG>HC</STRONG>  cursor is hard to see
+       <STRONG>non_rev_rmcup</STRONG>              <STRONG>nrrmc</STRONG>     <STRONG>NR</STRONG>  smcup does not reverse rmcup
+       <STRONG>no_pad_char</STRONG>                <STRONG>npc</STRONG>       <STRONG>NP</STRONG>  pad character does not exist
+       <STRONG>non_dest_scroll_region</STRONG>     <STRONG>ndscr</STRONG>     <STRONG>ND</STRONG>  scrolling region is non-
+                                                destructive
+       <STRONG>can_change</STRONG>                 <STRONG>ccc</STRONG>       <STRONG>cc</STRONG>  terminal can re-define
+                                                existing colors
+       <STRONG>back_color_erase</STRONG>           <STRONG>bce</STRONG>       <STRONG>ut</STRONG>  screen erased with background
+                                                color
+       <STRONG>hue_lightness_saturation</STRONG>   <STRONG>hls</STRONG>       <STRONG>hl</STRONG>  terminal uses only HLS color
+                                                notation (Tektronix)
+       <STRONG>col_addr_glitch</STRONG>            <STRONG>xhpa</STRONG>      <STRONG>YA</STRONG>  only positive motion for
+                                                hpa/mhpa caps
+       <STRONG>cr_cancels_micro_mode</STRONG>      <STRONG>crxm</STRONG>      <STRONG>YB</STRONG>  using cr turns off micro mode
+       <STRONG>has_print_wheel</STRONG>            <STRONG>daisy</STRONG>     <STRONG>YC</STRONG>  printer needs operator to
+                                                change character set
+       <STRONG>row_addr_glitch</STRONG>            <STRONG>xvpa</STRONG>      <STRONG>YD</STRONG>  only positive motion for
+                                                vpa/mvpa caps
+       <STRONG>semi_auto_right_margin</STRONG>     <STRONG>sam</STRONG>       <STRONG>YE</STRONG>  printing in last column causes
+                                                cr
+       <STRONG>cpi_changes_res</STRONG>            <STRONG>cpix</STRONG>      <STRONG>YF</STRONG>  changing character pitch
+                                                changes resolution
+       <STRONG>lpi_changes_res</STRONG>            <STRONG>lpix</STRONG>      <STRONG>YG</STRONG>  changing line pitch changes
+                                                resolution
+
+                                      <STRONG>Code</STRONG>
+
+       <STRONG>Numeric</STRONG> <STRONG>Capability</STRONG> <STRONG>Name</STRONG>    <STRONG>TI</STRONG>        <STRONG>TC</STRONG>  <STRONG>Description</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>columns</STRONG>                    <STRONG>cols</STRONG>      <STRONG>co</STRONG>  number of columns in a line
+       <STRONG>init_tabs</STRONG>                  <STRONG>it</STRONG>        <STRONG>it</STRONG>  tabs initially every # spaces
+       <STRONG>lines</STRONG>                      <STRONG>lines</STRONG>     <STRONG>li</STRONG>  number of lines on screen or
+                                                page
+       <STRONG>lines_of_memory</STRONG>            <STRONG>lm</STRONG>        <STRONG>lm</STRONG>  lines of memory if &gt; line. 0
+                                                means varies
+       <STRONG>magic_cookie_glitch</STRONG>        <STRONG>xmc</STRONG>       <STRONG>sg</STRONG>  number of blank characters
+                                                left by smso or rmso
+       <STRONG>padding_baud_rate</STRONG>          <STRONG>pb</STRONG>        <STRONG>pb</STRONG>  lowest baud rate where padding
+                                                needed
+       <STRONG>virtual_terminal</STRONG>           <STRONG>vt</STRONG>        <STRONG>vt</STRONG>  virtual terminal number
+                                                (CB/unix)
+       <STRONG>width_status_line</STRONG>          <STRONG>wsl</STRONG>       <STRONG>ws</STRONG>  number of columns in status
+                                                line
+       <STRONG>num_labels</STRONG>                 <STRONG>nlab</STRONG>      <STRONG>Nl</STRONG>  number of labels on screen
+       <STRONG>label_height</STRONG>               <STRONG>lh</STRONG>        <STRONG>lh</STRONG>  rows in each label
+       <STRONG>label_width</STRONG>                <STRONG>lw</STRONG>        <STRONG>lw</STRONG>  columns in each label
+       <STRONG>max_attributes</STRONG>             <STRONG>ma</STRONG>        <STRONG>ma</STRONG>  maximum combined attributes
+                                                terminal can handle
+       <STRONG>maximum_windows</STRONG>            <STRONG>wnum</STRONG>      <STRONG>MW</STRONG>  maximum number of definable
+                                                windows
+       <STRONG>max_colors</STRONG>                 <STRONG>colors</STRONG>    <STRONG>Co</STRONG>  maximum number of colors on
+                                                screen
+       <STRONG>max_pairs</STRONG>                  <STRONG>pairs</STRONG>     <STRONG>pa</STRONG>  maximum number of color-pairs
+                                                on the screen
+       <STRONG>no_color_video</STRONG>             <STRONG>ncv</STRONG>       <STRONG>NC</STRONG>  video attributes that cannot
+                                                be used with colors
+
+       The following numeric capabilities  are  present  in  the  SVr4.0  term
+       structure,  but  are  not yet documented in the man page.  They came in
        with SVr4's printer support.
 
-
-
-                  <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>      <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
-                   <STRONG>Numeric</STRONG>            <STRONG>name</STRONG>      <STRONG>Code</STRONG>
-          bit_image_entwining         bitwin    Yo     number of passes for
-                                                       each bit-image row
-          bit_image_type              bitype    Yp     type of bit-image
-                                                       device
-          buffer_capacity             bufsz     Ya     numbers of bytes
-                                                       buffered before
-                                                       printing
-          buttons                     btns      BT     number of buttons on
-                                                       mouse
-          dot_horz_spacing            spinh     Yc     spacing of dots
-                                                       horizontally in dots
-                                                       per inch
-          dot_vert_spacing            spinv     Yb     spacing of pins
-                                                       vertically in pins
-                                                       per inch
-          max_micro_address           maddr     Yd     maximum value in
-                                                       micro_..._address
-          max_micro_jump              mjump     Ye     maximum value in
-                                                       parm_..._micro
-          micro_col_size              mcs       Yf     character step size
-                                                       when in micro mode
-          micro_line_size             mls       Yg     line step size when
-                                                       in micro mode
-          number_of_pins              npins     Yh     numbers of pins in
-                                                       print-head
-          output_res_char             orc       Yi     horizontal
-                                                       resolution in units
-                                                       per line
-          output_res_horz_inch        orhi      Yk     horizontal
-                                                       resolution in units
-                                                       per inch
-          output_res_line             orl       Yj     vertical resolution
-                                                       in units per line
-          output_res_vert_inch        orvi      Yl     vertical resolution
-                                                       in units per inch
-          print_rate                  cps       Ym     print rate in
-                                                       characters per
-                                                       second
-          wide_char_size              widcs     Yn     character step size
-                                                       when in double wide
-                                                       mode
-
-       These are the string capabilities:
-
-
-                  <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>      <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
-                   <STRONG>String</STRONG>             <STRONG>name</STRONG>      <STRONG>Code</STRONG>
-          acs_chars                   acsc      ac     graphics charset
-                                                       pairs, based on
-                                                       vt100
-          back_tab                    cbt       bt     back tab (P)
-          bell                        bel       bl     audible signal
-                                                       (bell) (P)
-          carriage_return             cr        cr     carriage return (P*)
-                                                       (P*)
-          change_char_pitch           cpi       ZA     Change number of
-                                                       characters per inch
-                                                       to #1
-          change_line_pitch           lpi       ZB     Change number of
-                                                       lines per inch to #1
-          change_res_horz             chr       ZC     Change horizontal
-                                                       resolution to #1
-
-
-          change_res_vert             cvr       ZD     Change vertical
-                                                       resolution to #1
-          change_scroll_region        csr       cs     change region to
-                                                       line #1 to line #2
-                                                       (P)
-          char_padding                rmp       rP     like ip but when in
-                                                       insert mode
-          clear_all_tabs              tbc       ct     clear all tab stops
-                                                       (P)
-          clear_margins               mgc       MC     clear right and left
-                                                       soft margins
-          clear_screen                clear     cl     clear screen and
-                                                       home cursor (P*)
-          clr_bol                     el1       cb     Clear to beginning
-                                                       of line
-          clr_eol                     el        ce     clear to end of line
-                                                       (P)
-          clr_eos                     ed        cd     clear to end of
-                                                       screen (P*)
-          column_address              hpa       ch     horizontal position
-                                                       #1, absolute (P)
-          command_character           cmdch     CC     terminal settable
-                                                       cmd character in
-                                                       prototype !?
-          create_window               cwin      CW     define a window #1
-                                                       from #2,#3 to #4,#5
-          cursor_address              cup       cm     move to row #1
-                                                       columns #2
-          cursor_down                 cud1      do     down one line
-          cursor_home                 home      ho     home cursor (if no
-                                                       cup)
-          cursor_invisible            civis     vi     make cursor
-                                                       invisible
-          cursor_left                 cub1      le     move left one space
-          cursor_mem_address          mrcup     CM     memory relative
-                                                       cursor addressing,
-                                                       move to row #1
-                                                       columns #2
-          cursor_normal               cnorm     ve     make cursor appear
-                                                       normal (undo
-                                                       civis/cvvis)
-          cursor_right                cuf1      nd     non-destructive
-                                                       space (move right
-                                                       one space)
-          cursor_to_ll                ll        ll     last line, first
-                                                       column (if no cup)
-          cursor_up                   cuu1      up     up one line
-          cursor_visible              cvvis     vs     make cursor very
-                                                       visible
-          define_char                 defc      ZE     Define a character
-                                                       #1, #2 dots wide,
-                                                       descender #3
-          delete_character            dch1      dc     delete character
-                                                       (P*)
-          delete_line                 dl1       dl     delete line (P*)
-          dial_phone                  dial      DI     dial number #1
-          dis_status_line             dsl       ds     disable status line
-          display_clock               dclk      DK     display clock
-          down_half_line              hd        hd     half a line down
-          ena_acs                     enacs     eA     enable alternate
-                                                       char set
-          enter_alt_charset_mode      smacs     as     start alternate
-                                                       character set (P)
-          enter_am_mode               smam      SA     turn on automatic
-                                                       margins
-
-          enter_blink_mode            blink     mb     turn on blinking
-          enter_bold_mode             bold      md     turn on bold (extra
-                                                       bright) mode
-          enter_ca_mode               smcup     ti     string to start
-                                                       programs using cup
-          enter_delete_mode           smdc      dm     enter delete mode
-          enter_dim_mode              dim       mh     turn on half-bright
-                                                       mode
-          enter_doublewide_mode       swidm     ZF     Enter double-wide
-                                                       mode
-          enter_draft_quality         sdrfq     ZG     Enter draft-quality
-                                                       mode
-          enter_insert_mode           smir      im     enter insert mode
-          enter_italics_mode          sitm      ZH     Enter italic mode
-          enter_leftward_mode         slm       ZI     Start leftward
-                                                       carriage motion
-          enter_micro_mode            smicm     ZJ     Start micro-motion
-                                                       mode
-          enter_near_letter_quality   snlq      ZK     Enter NLQ mode
-          enter_normal_quality        snrmq     ZL     Enter normal-quality
-                                                       mode
-          enter_protected_mode        prot      mp     turn on protected
-                                                       mode
-          enter_reverse_mode          rev       mr     turn on reverse
-                                                       video mode
-          enter_secure_mode           invis     mk     turn on blank mode
-                                                       (characters
-                                                       invisible)
-          enter_shadow_mode           sshm      ZM     Enter shadow-print
-                                                       mode
-          enter_standout_mode         smso      so     begin standout mode
-          enter_subscript_mode        ssubm     ZN     Enter subscript mode
-          enter_superscript_mode      ssupm     ZO     Enter superscript
-                                                       mode
-          enter_underline_mode        smul      us     begin underline mode
-          enter_upward_mode           sum       ZP     Start upward
-                                                       carriage motion
-          enter_xon_mode              smxon     SX     turn on xon/xoff
-                                                       handshaking
-          erase_chars                 ech       ec     erase #1 characters
-                                                       (P)
-          exit_alt_charset_mode       rmacs     ae     end alternate
-                                                       character set (P)
-          exit_am_mode                rmam      RA     turn off automatic
-                                                       margins
-          exit_attribute_mode         sgr0      me     turn off all
-                                                       attributes
-          exit_ca_mode                rmcup     te     strings to end
-                                                       programs using cup
-          exit_delete_mode            rmdc      ed     end delete mode
-          exit_doublewide_mode        rwidm     ZQ     End double-wide mode
-          exit_insert_mode            rmir      ei     exit insert mode
-          exit_italics_mode           ritm      ZR     End italic mode
-          exit_leftward_mode          rlm       ZS     End left-motion mode
-          exit_micro_mode             rmicm     ZT     End micro-motion
-                                                       mode
-          exit_shadow_mode            rshm      ZU     End shadow-print
-                                                       mode
-          exit_standout_mode          rmso      se     exit standout mode
-          exit_subscript_mode         rsubm     ZV     End subscript mode
-          exit_superscript_mode       rsupm     ZW     End superscript mode
-          exit_underline_mode         rmul      ue     exit underline mode
-          exit_upward_mode            rum       ZX     End reverse
-                                                       character motion
-
-
-          exit_xon_mode               rmxon     RX     turn off xon/xoff
-                                                       handshaking
-          fixed_pause                 pause     PA     pause for 2-3
-                                                       seconds
-          flash_hook                  hook      fh     flash switch hook
-          flash_screen                flash     vb     visible bell (may
-                                                       not move cursor)
-          form_feed                   ff        ff     hardcopy terminal
-                                                       page eject (P*)
-          from_status_line            fsl       fs     return from status
-                                                       line
-          goto_window                 wingo     WG     go to window #1
-          hangup                      hup       HU     hang-up phone
-          init_1string                is1       i1     initialization
-                                                       string
-          init_2string                is2       is     initialization
-                                                       string
-          init_3string                is3       i3     initialization
-                                                       string
-          init_file                   if        if     name of
-                                                       initialization file
-          init_prog                   iprog     iP     path name of program
-                                                       for initialization
-          initialize_color            initc     Ic     initialize color #1
-                                                       to (#2,#3,#4)
-          initialize_pair             initp     Ip     Initialize color
-                                                       pair #1 to
-                                                       fg=(#2,#3,#4),
-                                                       bg=(#5,#6,#7)
-          insert_character            ich1      ic     insert character (P)
-          insert_line                 il1       al     insert line (P*)
-          insert_padding              ip        ip     insert padding after
-                                                       inserted character
-          key_a1                      ka1       K1     upper left of keypad
-          key_a3                      ka3       K3     upper right of
-                                                       keypad
-          key_b2                      kb2       K2     center of keypad
-          key_backspace               kbs       kb     backspace key
-          key_beg                     kbeg      @1     begin key
-          key_btab                    kcbt      kB     back-tab key
-          key_c1                      kc1       K4     lower left of keypad
-          key_c3                      kc3       K5     lower right of
-                                                       keypad
-          key_cancel                  kcan      @2     cancel key
-          key_catab                   ktbc      ka     clear-all-tabs key
-          key_clear                   kclr      kC     clear-screen or
-                                                       erase key
-          key_close                   kclo      @3     close key
-          key_command                 kcmd      @4     command key
-          key_copy                    kcpy      @5     copy key
-          key_create                  kcrt      @6     create key
-          key_ctab                    kctab     kt     clear-tab key
-          key_dc                      kdch1     kD     delete-character key
-          key_dl                      kdl1      kL     delete-line key
-          key_down                    kcud1     kd     down-arrow key
-          key_eic                     krmir     kM     sent by rmir or smir
-                                                       in insert mode
-          key_end                     kend      @7     end key
-          key_enter                   kent      @8     enter/send key
-          key_eol                     kel       kE     clear-to-end-of-line
-                                                       key
-          key_eos                     ked       kS     clear-to-end-of-
-                                                       screen key
-          key_exit                    kext      @9     exit key
-          key_f0                      kf0       k0     F0 function key
-
-          key_f1                      kf1       k1     F1 function key
-          key_f10                     kf10      k;     F10 function key
-          key_f11                     kf11      F1     F11 function key
-          key_f12                     kf12      F2     F12 function key
-          key_f13                     kf13      F3     F13 function key
-          key_f14                     kf14      F4     F14 function key
-          key_f15                     kf15      F5     F15 function key
-          key_f16                     kf16      F6     F16 function key
-          key_f17                     kf17      F7     F17 function key
-          key_f18                     kf18      F8     F18 function key
-          key_f19                     kf19      F9     F19 function key
-          key_f2                      kf2       k2     F2 function key
-          key_f20                     kf20      FA     F20 function key
-          key_f21                     kf21      FB     F21 function key
-          key_f22                     kf22      FC     F22 function key
-          key_f23                     kf23      FD     F23 function key
-          key_f24                     kf24      FE     F24 function key
-          key_f25                     kf25      FF     F25 function key
-          key_f26                     kf26      FG     F26 function key
-          key_f27                     kf27      FH     F27 function key
-          key_f28                     kf28      FI     F28 function key
-          key_f29                     kf29      FJ     F29 function key
-          key_f3                      kf3       k3     F3 function key
-          key_f30                     kf30      FK     F30 function key
-          key_f31                     kf31      FL     F31 function key
-          key_f32                     kf32      FM     F32 function key
-          key_f33                     kf33      FN     F33 function key
-          key_f34                     kf34      FO     F34 function key
-          key_f35                     kf35      FP     F35 function key
-          key_f36                     kf36      FQ     F36 function key
-          key_f37                     kf37      FR     F37 function key
-          key_f38                     kf38      FS     F38 function key
-          key_f39                     kf39      FT     F39 function key
-          key_f4                      kf4       k4     F4 function key
-          key_f40                     kf40      FU     F40 function key
-          key_f41                     kf41      FV     F41 function key
-          key_f42                     kf42      FW     F42 function key
-          key_f43                     kf43      FX     F43 function key
-          key_f44                     kf44      FY     F44 function key
-          key_f45                     kf45      FZ     F45 function key
-          key_f46                     kf46      Fa     F46 function key
-          key_f47                     kf47      Fb     F47 function key
-          key_f48                     kf48      Fc     F48 function key
-          key_f49                     kf49      Fd     F49 function key
-          key_f5                      kf5       k5     F5 function key
-          key_f50                     kf50      Fe     F50 function key
-          key_f51                     kf51      Ff     F51 function key
-          key_f52                     kf52      Fg     F52 function key
-          key_f53                     kf53      Fh     F53 function key
-          key_f54                     kf54      Fi     F54 function key
-          key_f55                     kf55      Fj     F55 function key
-          key_f56                     kf56      Fk     F56 function key
-          key_f57                     kf57      Fl     F57 function key
-          key_f58                     kf58      Fm     F58 function key
-          key_f59                     kf59      Fn     F59 function key
-          key_f6                      kf6       k6     F6 function key
-          key_f60                     kf60      Fo     F60 function key
-          key_f61                     kf61      Fp     F61 function key
-          key_f62                     kf62      Fq     F62 function key
-          key_f63                     kf63      Fr     F63 function key
-          key_f7                      kf7       k7     F7 function key
-          key_f8                      kf8       k8     F8 function key
-          key_f9                      kf9       k9     F9 function key
-          key_find                    kfnd      @0     find key
-          key_help                    khlp      %1     help key
-
-          key_home                    khome     kh     home key
-          key_ic                      kich1     kI     insert-character key
-          key_il                      kil1      kA     insert-line key
-          key_left                    kcub1     kl     left-arrow key
-          key_ll                      kll       kH     lower-left key (home
-                                                       down)
-          key_mark                    kmrk      %2     mark key
-          key_message                 kmsg      %3     message key
-          key_move                    kmov      %4     move key
-          key_next                    knxt      %5     next key
-          key_npage                   knp       kN     next-page key
-          key_open                    kopn      %6     open key
-          key_options                 kopt      %7     options key
-          key_ppage                   kpp       kP     previous-page key
-          key_previous                kprv      %8     previous key
-          key_print                   kprt      %9     print key
-          key_redo                    krdo      %0     redo key
-          key_reference               kref      &amp;1     reference key
-          key_refresh                 krfr      &amp;2     refresh key
-          key_replace                 krpl      &amp;3     replace key
-          key_restart                 krst      &amp;4     restart key
-          key_resume                  kres      &amp;5     resume key
-          key_right                   kcuf1     kr     right-arrow key
-          key_save                    ksav      &amp;6     save key
-          key_sbeg                    kBEG      &amp;9     shifted begin key
-          key_scancel                 kCAN      &amp;0     shifted cancel key
-          key_scommand                kCMD      *1     shifted command key
-          key_scopy                   kCPY      *2     shifted copy key
-          key_screate                 kCRT      *3     shifted create key
-          key_sdc                     kDC       *4     shifted delete-
-                                                       character key
-          key_sdl                     kDL       *5     shifted delete-line
-                                                       key
-          key_select                  kslt      *6     select key
-          key_send                    kEND      *7     shifted end key
-          key_seol                    kEOL      *8     shifted clear-to-
-                                                       end-of-line key
-          key_sexit                   kEXT      *9     shifted exit key
-          key_sf                      kind      kF     scroll-forward key
-          key_sfind                   kFND      *0     shifted find key
-          key_shelp                   kHLP      #1     shifted help key
-          key_shome                   kHOM      #2     shifted home key
-          key_sic                     kIC       #3     shifted insert-
-                                                       character key
-          key_sleft                   kLFT      #4     shifted left-arrow
-                                                       key
-          key_smessage                kMSG      %a     shifted message key
-          key_smove                   kMOV      %b     shifted move key
-          key_snext                   kNXT      %c     shifted next key
-          key_soptions                kOPT      %d     shifted options key
-          key_sprevious               kPRV      %e     shifted previous key
-          key_sprint                  kPRT      %f     shifted print key
-          key_sr                      kri       kR     scroll-backward key
-          key_sredo                   kRDO      %g     shifted redo key
-          key_sreplace                kRPL      %h     shifted replace key
-          key_sright                  kRIT      %i     shifted right-arrow
-                                                       key
-          key_srsume                  kRES      %j     shifted resume key
-          key_ssave                   kSAV      !1     shifted save key
-          key_ssuspend                kSPD      !2     shifted suspend key
-          key_stab                    khts      kT     set-tab key
-          key_sundo                   kUND      !3     shifted undo key
-          key_suspend                 kspd      &amp;7     suspend key
-          key_undo                    kund      &amp;8     undo key
-          key_up                      kcuu1     ku     up-arrow key
-
-          keypad_local                rmkx      ke     leave
-                                                       'keyboard_transmit'
-                                                       mode
-          keypad_xmit                 smkx      ks     enter
-                                                       'keyboard_transmit'
-                                                       mode
-          lab_f0                      lf0       l0     label on function
-                                                       key f0 if not f0
-          lab_f1                      lf1       l1     label on function
-                                                       key f1 if not f1
-          lab_f10                     lf10      la     label on function
-                                                       key f10 if not f10
-          lab_f2                      lf2       l2     label on function
-                                                       key f2 if not f2
-          lab_f3                      lf3       l3     label on function
-                                                       key f3 if not f3
-          lab_f4                      lf4       l4     label on function
-                                                       key f4 if not f4
-          lab_f5                      lf5       l5     label on function
-                                                       key f5 if not f5
-          lab_f6                      lf6       l6     label on function
-                                                       key f6 if not f6
-          lab_f7                      lf7       l7     label on function
-                                                       key f7 if not f7
-          lab_f8                      lf8       l8     label on function
-                                                       key f8 if not f8
-          lab_f9                      lf9       l9     label on function
-                                                       key f9 if not f9
-          label_format                fln       Lf     label format
-          label_off                   rmln      LF     turn off soft labels
-          label_on                    smln      LO     turn on soft labels
-          meta_off                    rmm       mo     turn off meta mode
-          meta_on                     smm       mm     turn on meta mode
-                                                       (8th-bit on)
-          micro_column_address        mhpa      ZY     Like column_address
-                                                       in micro mode
-          micro_down                  mcud1     ZZ     Like cursor_down in
-                                                       micro mode
-          micro_left                  mcub1     Za     Like cursor_left in
-                                                       micro mode
-          micro_right                 mcuf1     Zb     Like cursor_right in
-                                                       micro mode
-          micro_row_address           mvpa      Zc     Like row_address #1
-                                                       in micro mode
-          micro_up                    mcuu1     Zd     Like cursor_up in
-                                                       micro mode
-          newline                     nel       nw     newline (behave like
-                                                       cr followed by lf)
-          order_of_pins               porder    Ze     Match software bits
-                                                       to print-head pins
-          orig_colors                 oc        oc     Set all color pairs
-                                                       to the original ones
-          orig_pair                   op        op     Set default pair to
-                                                       its original value
-          pad_char                    pad       pc     padding char
-                                                       (instead of null)
-          parm_dch                    dch       DC     delete #1 characters
-                                                       (P*)
-          parm_delete_line            dl        DL     delete #1 lines (P*)
-          parm_down_cursor            cud       DO     down #1 lines (P*)
-          parm_down_micro             mcud      Zf     Like
-                                                       parm_down_cursor in
-                                                       micro mode
-          parm_ich                    ich       IC     insert #1 characters
-                                                       (P*)
-
-          parm_index                  indn      SF     scroll forward #1
-                                                       lines (P)
-          parm_insert_line            il        AL     insert #1 lines (P*)
-          parm_left_cursor            cub       LE     move #1 characters
-                                                       to the left (P)
-          parm_left_micro             mcub      Zg     Like
-                                                       parm_left_cursor in
-                                                       micro mode
-          parm_right_cursor           cuf       RI     move #1 characters
-                                                       to the right (P*)
-          parm_right_micro            mcuf      Zh     Like
-                                                       parm_right_cursor in
-                                                       micro mode
-          parm_rindex                 rin       SR     scroll back #1 lines
-                                                       (P)
-          parm_up_cursor              cuu       UP     up #1 lines (P*)
-          parm_up_micro               mcuu      Zi     Like parm_up_cursor
-                                                       in micro mode
-          pkey_key                    pfkey     pk     program function key
-                                                       #1 to type string #2
-          pkey_local                  pfloc     pl     program function key
-                                                       #1 to execute string
-                                                       #2
-          pkey_xmit                   pfx       px     program function key
-                                                       #1 to transmit
-                                                       string #2
-          plab_norm                   pln       pn     program label #1 to
-                                                       show string #2
-          print_screen                mc0       ps     print contents of
-                                                       screen
-          prtr_non                    mc5p      pO     turn on printer for
-                                                       #1 bytes
-          prtr_off                    mc4       pf     turn off printer
-          prtr_on                     mc5       po     turn on printer
-          pulse                       pulse     PU     select pulse dialing
-          quick_dial                  qdial     QD     dial number #1
-                                                       without checking
-          remove_clock                rmclk     RC     remove clock
-          repeat_char                 rep       rp     repeat char #1 #2
-                                                       times (P*)
-          req_for_input               rfi       RF     send next input char
-                                                       (for ptys)
-          reset_1string               rs1       r1     reset string
-          reset_2string               rs2       r2     reset string
-          reset_3string               rs3       r3     reset string
-          reset_file                  rf        rf     name of reset file
-          restore_cursor              rc        rc     restore cursor to
-                                                       position of last
-                                                       save_cursor
-          row_address                 vpa       cv     vertical position #1
-                                                       absolute (P)
-          save_cursor                 sc        sc     save current cursor
-                                                       position (P)
-          scroll_forward              ind       sf     scroll text up (P)
-          scroll_reverse              ri        sr     scroll text down (P)
-          select_char_set             scs       Zj     Select character
-                                                       set, #1
-          set_attributes              sgr       sa     define video
-                                                       attributes #1-#9
-                                                       (PG9)
-          set_background              setb      Sb     Set background color
-                                                       #1
-          set_bottom_margin           smgb      Zk     Set bottom margin at
-                                                       current line
-
-
-          set_bottom_margin_parm      smgbp     Zl     Set bottom margin at
-                                                       line #1 or (if smgtp
-                                                       is not given) #2
-                                                       lines from bottom
-          set_clock                   sclk      SC     set clock, #1 hrs #2
-                                                       mins #3 secs
-          set_color_pair              scp       sp     Set current color
-                                                       pair to #1
-          set_foreground              setf      Sf     Set foreground color
-                                                       #1
-          set_left_margin             smgl      ML     set left soft margin
-                                                       at current
-                                                       column.     (ML is
-                                                       not in BSD termcap).
-          set_left_margin_parm        smglp     Zm     Set left (right)
-                                                       margin at column #1
-          set_right_margin            smgr      MR     set right soft
-                                                       margin at current
-                                                       column
-          set_right_margin_parm       smgrp     Zn     Set right margin at
-                                                       column #1
-          set_tab                     hts       st     set a tab in every
-                                                       row, current columns
-          set_top_margin              smgt      Zo     Set top margin at
-                                                       current line
-          set_top_margin_parm         smgtp     Zp     Set top (bottom)
-                                                       margin at row #1
-          set_window                  wind      wi     current window is
-                                                       lines #1-#2 cols
-                                                       #3-#4
-          start_bit_image             sbim      Zq     Start printing bit
-                                                       image graphics
-          start_char_set_def          scsd      Zr     Start character set
-                                                       definition #1, with
-                                                       #2 characters in the
-                                                       set
-          stop_bit_image              rbim      Zs     Stop printing bit
-                                                       image graphics
-          stop_char_set_def           rcsd      Zt     End definition of
-                                                       character set #1
-          subscript_characters        subcs     Zu     List of
-                                                       subscriptable
-                                                       characters
-          superscript_characters      supcs     Zv     List of
-                                                       superscriptable
-                                                       characters
-          tab                         ht        ta     tab to next 8-space
-                                                       hardware tab stop
-          these_cause_cr              docr      Zw     Printing any of
-                                                       these characters
-                                                       causes CR
-          to_status_line              tsl       ts     move to status line,
-                                                       column #1
-          tone                        tone      TO     select touch tone
-                                                       dialing
-          underline_char              uc        uc     underline char and
-                                                       move past it
-          up_half_line                hu        hu     half a line up
-          user0                       u0        u0     User string #0
-          user1                       u1        u1     User string #1
-          user2                       u2        u2     User string #2
-          user3                       u3        u3     User string #3
-          user4                       u4        u4     User string #4
-          user5                       u5        u5     User string #5
-          user6                       u6        u6     User string #6
-
-          user7                       u7        u7     User string #7
-          user8                       u8        u8     User string #8
-          user9                       u9        u9     User string #9
-          wait_tone                   wait      WA     wait for dial-tone
-          xoff_character              xoffc     XF     XOFF character
-          xon_character               xonc      XN     XON character
-          zero_motion                 zerom     Zx     No motion for
-                                                       subsequent character
+                                      <STRONG>Code</STRONG>
+       <STRONG>Numeric</STRONG> <STRONG>Capability</STRONG> <STRONG>Name</STRONG>    <STRONG>TI</STRONG>        <STRONG>TC</STRONG>  <STRONG>Description</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>buffer_capacity</STRONG>            <STRONG>bufsz</STRONG>     <STRONG>Ya</STRONG>  numbers of bytes buffered
+                                                before printing
+       <STRONG>dot_vert_spacing</STRONG>           <STRONG>spinv</STRONG>     <STRONG>Yb</STRONG>  spacing of pins vertically in
+                                                pins per inch
+       <STRONG>dot_horz_spacing</STRONG>           <STRONG>spinh</STRONG>     <STRONG>Yc</STRONG>  spacing of dots horizontally
+                                                in dots per inch
+       <STRONG>max_micro_address</STRONG>          <STRONG>maddr</STRONG>     <STRONG>Yd</STRONG>  maximum value in
+                                                micro_..._address
+       <STRONG>max_micro_jump</STRONG>             <STRONG>mjump</STRONG>     <STRONG>Ye</STRONG>  maximum value in
+                                                parm_..._micro
+       <STRONG>micro_col_size</STRONG>             <STRONG>mcs</STRONG>       <STRONG>Yf</STRONG>  character step size when in
+                                                micro mode
+       <STRONG>micro_line_size</STRONG>            <STRONG>mls</STRONG>       <STRONG>Yg</STRONG>  line step size when in micro
+                                                mode
+       <STRONG>number_of_pins</STRONG>             <STRONG>npins</STRONG>     <STRONG>Yh</STRONG>  numbers of pins in print-head
+       <STRONG>output_res_char</STRONG>            <STRONG>orc</STRONG>       <STRONG>Yi</STRONG>  horizontal resolution in units
+                                                per line
+       <STRONG>output_res_line</STRONG>            <STRONG>orl</STRONG>       <STRONG>Yj</STRONG>  vertical resolution in units
+                                                per line
+       <STRONG>output_res_horz_inch</STRONG>       <STRONG>orhi</STRONG>      <STRONG>Yk</STRONG>  horizontal resolution in units
+                                                per inch
+       <STRONG>output_res_vert_inch</STRONG>       <STRONG>orvi</STRONG>      <STRONG>Yl</STRONG>  vertical resolution in units
+                                                per inch
+       <STRONG>print_rate</STRONG>                 <STRONG>cps</STRONG>       <STRONG>Ym</STRONG>  print rate in characters per
+                                                second
+       <STRONG>wide_char_size</STRONG>             <STRONG>widcs</STRONG>     <STRONG>Yn</STRONG>  character step size when in
+                                                double wide mode
+       <STRONG>buttons</STRONG>                    <STRONG>btns</STRONG>      <STRONG>BT</STRONG>  number of buttons on mouse
+
+       <STRONG>bit_image_entwining</STRONG>        <STRONG>bitwin</STRONG>    <STRONG>Yo</STRONG>  number of passes for each bit-
+                                                image row
+       <STRONG>bit_image_type</STRONG>             <STRONG>bitype</STRONG>    <STRONG>Yp</STRONG>  type of bit-image device
+
+                                      <STRONG>Code</STRONG>
+       <STRONG>String</STRONG> <STRONG>Capability</STRONG> <STRONG>Name</STRONG>     <STRONG>TI</STRONG>        <STRONG>TC</STRONG>  <STRONG>Description</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>back_tab</STRONG>                   <STRONG>cbt</STRONG>       <STRONG>bt</STRONG>  back tab (P)
+       <STRONG>bell</STRONG>                       <STRONG>bel</STRONG>       <STRONG>bl</STRONG>  audible signal (bell) (P)
+       <STRONG>carriage_return</STRONG>            <STRONG>cr</STRONG>        <STRONG>cr</STRONG>  carriage return (P*) (P*)
+       <STRONG>change_scroll_region</STRONG>       <STRONG>csr</STRONG>       <STRONG>cs</STRONG>  change region to line #1 to
+                                                line #2 (P)
+       <STRONG>clear_all_tabs</STRONG>             <STRONG>tbc</STRONG>       <STRONG>ct</STRONG>  clear all tab stops (P)
+       <STRONG>clear_screen</STRONG>               <STRONG>clear</STRONG>     <STRONG>cl</STRONG>  clear screen and home cursor
+                                                (P*)
+       <STRONG>clr_eol</STRONG>                    <STRONG>el</STRONG>        <STRONG>ce</STRONG>  clear to end of line (P)
+       <STRONG>clr_eos</STRONG>                    <STRONG>ed</STRONG>        <STRONG>cd</STRONG>  clear to end of screen (P*)
+       <STRONG>column_address</STRONG>             <STRONG>hpa</STRONG>       <STRONG>ch</STRONG>  horizontal position #1,
+                                                absolute (P)
+       <STRONG>command_character</STRONG>          <STRONG>cmdch</STRONG>     <STRONG>CC</STRONG>  terminal settable cmd
+                                                character in prototype !?
+       <STRONG>cursor_address</STRONG>             <STRONG>cup</STRONG>       <STRONG>cm</STRONG>  move to row #1 columns #2
+       <STRONG>cursor_down</STRONG>                <STRONG>cud1</STRONG>      <STRONG>do</STRONG>  down one line
+       <STRONG>cursor_home</STRONG>                <STRONG>home</STRONG>      <STRONG>ho</STRONG>  home cursor (if no cup)
+       <STRONG>cursor_invisible</STRONG>           <STRONG>civis</STRONG>     <STRONG>vi</STRONG>  make cursor invisible
+       <STRONG>cursor_left</STRONG>                <STRONG>cub1</STRONG>      <STRONG>le</STRONG>  move left one space
+       <STRONG>cursor_mem_address</STRONG>         <STRONG>mrcup</STRONG>     <STRONG>CM</STRONG>  memory relative cursor
+                                                addressing, move to row #1
+                                                columns #2
+       <STRONG>cursor_normal</STRONG>              <STRONG>cnorm</STRONG>     <STRONG>ve</STRONG>  make cursor appear normal
+                                                (undo civis/cvvis)
+       <STRONG>cursor_right</STRONG>               <STRONG>cuf1</STRONG>      <STRONG>nd</STRONG>  non-destructive space (move
+                                                right one space)
+       <STRONG>cursor_to_ll</STRONG>               <STRONG>ll</STRONG>        <STRONG>ll</STRONG>  last line, first column (if no
+                                                cup)
+       <STRONG>cursor_up</STRONG>                  <STRONG>cuu1</STRONG>      <STRONG>up</STRONG>  up one line
+       <STRONG>cursor_visible</STRONG>             <STRONG>cvvis</STRONG>     <STRONG>vs</STRONG>  make cursor very visible
+       <STRONG>delete_character</STRONG>           <STRONG>dch1</STRONG>      <STRONG>dc</STRONG>  delete character (P*)
+       <STRONG>delete_line</STRONG>                <STRONG>dl1</STRONG>       <STRONG>dl</STRONG>  delete line (P*)
+       <STRONG>dis_status_line</STRONG>            <STRONG>dsl</STRONG>       <STRONG>ds</STRONG>  disable status line
+       <STRONG>down_half_line</STRONG>             <STRONG>hd</STRONG>        <STRONG>hd</STRONG>  half a line down
+       <STRONG>enter_alt_charset_mode</STRONG>     <STRONG>smacs</STRONG>     <STRONG>as</STRONG>  start alternate character set
+                                                (P)
+       <STRONG>enter_blink_mode</STRONG>           <STRONG>blink</STRONG>     <STRONG>mb</STRONG>  turn on blinking
+       <STRONG>enter_bold_mode</STRONG>            <STRONG>bold</STRONG>      <STRONG>md</STRONG>  turn on bold (extra bright)
+                                                mode
+       <STRONG>enter_ca_mode</STRONG>              <STRONG>smcup</STRONG>     <STRONG>ti</STRONG>  string to start programs using
+                                                cup
+       <STRONG>enter_delete_mode</STRONG>          <STRONG>smdc</STRONG>      <STRONG>dm</STRONG>  enter delete mode
+       <STRONG>enter_dim_mode</STRONG>             <STRONG>dim</STRONG>       <STRONG>mh</STRONG>  turn on half-bright mode
+       <STRONG>enter_insert_mode</STRONG>          <STRONG>smir</STRONG>      <STRONG>im</STRONG>  enter insert mode
+       <STRONG>enter_secure_mode</STRONG>          <STRONG>invis</STRONG>     <STRONG>mk</STRONG>  turn on blank mode (characters
+                                                invisible)
+       <STRONG>enter_protected_mode</STRONG>       <STRONG>prot</STRONG>      <STRONG>mp</STRONG>  turn on protected mode
+       <STRONG>enter_reverse_mode</STRONG>         <STRONG>rev</STRONG>       <STRONG>mr</STRONG>  turn on reverse video mode
+       <STRONG>enter_standout_mode</STRONG>        <STRONG>smso</STRONG>      <STRONG>so</STRONG>  begin standout mode
+       <STRONG>enter_underline_mode</STRONG>       <STRONG>smul</STRONG>      <STRONG>us</STRONG>  begin underline mode
+       <STRONG>erase_chars</STRONG>                <STRONG>ech</STRONG>       <STRONG>ec</STRONG>  erase #1 characters (P)
+       <STRONG>exit_alt_charset_mode</STRONG>      <STRONG>rmacs</STRONG>     <STRONG>ae</STRONG>  end alternate character set
+                                                (P)
+       <STRONG>exit_attribute_mode</STRONG>        <STRONG>sgr0</STRONG>      <STRONG>me</STRONG>  turn off all attributes
+       <STRONG>exit_ca_mode</STRONG>               <STRONG>rmcup</STRONG>     <STRONG>te</STRONG>  strings to end programs using
+                                                cup
+       <STRONG>exit_delete_mode</STRONG>           <STRONG>rmdc</STRONG>      <STRONG>ed</STRONG>  end delete mode
+       <STRONG>exit_insert_mode</STRONG>           <STRONG>rmir</STRONG>      <STRONG>ei</STRONG>  exit insert mode
+
+       <STRONG>exit_standout_mode</STRONG>         <STRONG>rmso</STRONG>      <STRONG>se</STRONG>  exit standout mode
+       <STRONG>exit_underline_mode</STRONG>        <STRONG>rmul</STRONG>      <STRONG>ue</STRONG>  exit underline mode
+       <STRONG>flash_screen</STRONG>               <STRONG>flash</STRONG>     <STRONG>vb</STRONG>  visible bell (may not move
+                                                cursor)
+       <STRONG>form_feed</STRONG>                  <STRONG>ff</STRONG>        <STRONG>ff</STRONG>  hardcopy terminal page eject
+                                                (P*)
+       <STRONG>from_status_line</STRONG>           <STRONG>fsl</STRONG>       <STRONG>fs</STRONG>  return from status line
+       <STRONG>init_1string</STRONG>               <STRONG>is1</STRONG>       <STRONG>i1</STRONG>  initialization string
+       <STRONG>init_2string</STRONG>               <STRONG>is2</STRONG>       <STRONG>is</STRONG>  initialization string
+       <STRONG>init_3string</STRONG>               <STRONG>is3</STRONG>       <STRONG>i3</STRONG>  initialization string
+       <STRONG>init_file</STRONG>                  <STRONG>if</STRONG>        <STRONG>if</STRONG>  name of initialization file
+       <STRONG>insert_character</STRONG>           <STRONG>ich1</STRONG>      <STRONG>ic</STRONG>  insert character (P)
+       <STRONG>insert_line</STRONG>                <STRONG>il1</STRONG>       <STRONG>al</STRONG>  insert line (P*)
+       <STRONG>insert_padding</STRONG>             <STRONG>ip</STRONG>        <STRONG>ip</STRONG>  insert padding after inserted
+                                                character
+       <STRONG>key_backspace</STRONG>              <STRONG>kbs</STRONG>       <STRONG>kb</STRONG>  backspace key
+       <STRONG>key_catab</STRONG>                  <STRONG>ktbc</STRONG>      <STRONG>ka</STRONG>  clear-all-tabs key
+       <STRONG>key_clear</STRONG>                  <STRONG>kclr</STRONG>      <STRONG>kC</STRONG>  clear-screen or erase key
+       <STRONG>key_ctab</STRONG>                   <STRONG>kctab</STRONG>     <STRONG>kt</STRONG>  clear-tab key
+       <STRONG>key_dc</STRONG>                     <STRONG>kdch1</STRONG>     <STRONG>kD</STRONG>  delete-character key
+       <STRONG>key_dl</STRONG>                     <STRONG>kdl1</STRONG>      <STRONG>kL</STRONG>  delete-line key
+       <STRONG>key_down</STRONG>                   <STRONG>kcud1</STRONG>     <STRONG>kd</STRONG>  down-arrow key
+
+       <STRONG>key_eic</STRONG>                    <STRONG>krmir</STRONG>     <STRONG>kM</STRONG>  sent by rmir or smir in insert
+                                                mode
+       <STRONG>key_eol</STRONG>                    <STRONG>kel</STRONG>       <STRONG>kE</STRONG>  clear-to-end-of-line key
+       <STRONG>key_eos</STRONG>                    <STRONG>ked</STRONG>       <STRONG>kS</STRONG>  clear-to-end-of-screen key
+       <STRONG>key_f0</STRONG>                     <STRONG>kf0</STRONG>       <STRONG>k0</STRONG>  F0 function key
+       <STRONG>key_f1</STRONG>                     <STRONG>kf1</STRONG>       <STRONG>k1</STRONG>  F1 function key
+       <STRONG>key_f10</STRONG>                    <STRONG>kf10</STRONG>      <STRONG>k;</STRONG>  F10 function key
+       <STRONG>key_f2</STRONG>                     <STRONG>kf2</STRONG>       <STRONG>k2</STRONG>  F2 function key
+       <STRONG>key_f3</STRONG>                     <STRONG>kf3</STRONG>       <STRONG>k3</STRONG>  F3 function key
+       <STRONG>key_f4</STRONG>                     <STRONG>kf4</STRONG>       <STRONG>k4</STRONG>  F4 function key
+       <STRONG>key_f5</STRONG>                     <STRONG>kf5</STRONG>       <STRONG>k5</STRONG>  F5 function key
+       <STRONG>key_f6</STRONG>                     <STRONG>kf6</STRONG>       <STRONG>k6</STRONG>  F6 function key
+       <STRONG>key_f7</STRONG>                     <STRONG>kf7</STRONG>       <STRONG>k7</STRONG>  F7 function key
+       <STRONG>key_f8</STRONG>                     <STRONG>kf8</STRONG>       <STRONG>k8</STRONG>  F8 function key
+       <STRONG>key_f9</STRONG>                     <STRONG>kf9</STRONG>       <STRONG>k9</STRONG>  F9 function key
+       <STRONG>key_home</STRONG>                   <STRONG>khome</STRONG>     <STRONG>kh</STRONG>  home key
+       <STRONG>key_ic</STRONG>                     <STRONG>kich1</STRONG>     <STRONG>kI</STRONG>  insert-character key
+       <STRONG>key_il</STRONG>                     <STRONG>kil1</STRONG>      <STRONG>kA</STRONG>  insert-line key
+       <STRONG>key_left</STRONG>                   <STRONG>kcub1</STRONG>     <STRONG>kl</STRONG>  left-arrow key
+       <STRONG>key_ll</STRONG>                     <STRONG>kll</STRONG>       <STRONG>kH</STRONG>  lower-left key (home down)
+       <STRONG>key_npage</STRONG>                  <STRONG>knp</STRONG>       <STRONG>kN</STRONG>  next-page key
+       <STRONG>key_ppage</STRONG>                  <STRONG>kpp</STRONG>       <STRONG>kP</STRONG>  previous-page key
+       <STRONG>key_right</STRONG>                  <STRONG>kcuf1</STRONG>     <STRONG>kr</STRONG>  right-arrow key
+       <STRONG>key_sf</STRONG>                     <STRONG>kind</STRONG>      <STRONG>kF</STRONG>  scroll-forward key
+       <STRONG>key_sr</STRONG>                     <STRONG>kri</STRONG>       <STRONG>kR</STRONG>  scroll-backward key
+       <STRONG>key_stab</STRONG>                   <STRONG>khts</STRONG>      <STRONG>kT</STRONG>  set-tab key
+       <STRONG>key_up</STRONG>                     <STRONG>kcuu1</STRONG>     <STRONG>ku</STRONG>  up-arrow key
+       <STRONG>keypad_local</STRONG>               <STRONG>rmkx</STRONG>      <STRONG>ke</STRONG>  leave keyboard transmit mode
+       <STRONG>keypad_xmit</STRONG>                <STRONG>smkx</STRONG>      <STRONG>ks</STRONG>  enter keyboard transmit mode
+       <STRONG>lab_f0</STRONG>                     <STRONG>lf0</STRONG>       <STRONG>l0</STRONG>  label on function key f0 if
+                                                not f0
+       <STRONG>lab_f1</STRONG>                     <STRONG>lf1</STRONG>       <STRONG>l1</STRONG>  label on function key f1 if
+                                                not f1
+       <STRONG>lab_f10</STRONG>                    <STRONG>lf10</STRONG>      <STRONG>la</STRONG>  label on function key f10 if
+                                                not f10
+       <STRONG>lab_f2</STRONG>                     <STRONG>lf2</STRONG>       <STRONG>l2</STRONG>  label on function key f2 if
+                                                not f2
+       <STRONG>lab_f3</STRONG>                     <STRONG>lf3</STRONG>       <STRONG>l3</STRONG>  label on function key f3 if
+                                                not f3
+       <STRONG>lab_f4</STRONG>                     <STRONG>lf4</STRONG>       <STRONG>l4</STRONG>  label on function key f4 if
+                                                not f4
+
+
+       <STRONG>lab_f5</STRONG>                     <STRONG>lf5</STRONG>       <STRONG>l5</STRONG>  label on function key f5 if
+                                                not f5
+       <STRONG>lab_f6</STRONG>                     <STRONG>lf6</STRONG>       <STRONG>l6</STRONG>  label on function key f6 if
+                                                not f6
+       <STRONG>lab_f7</STRONG>                     <STRONG>lf7</STRONG>       <STRONG>l7</STRONG>  label on function key f7 if
+                                                not f7
+       <STRONG>lab_f8</STRONG>                     <STRONG>lf8</STRONG>       <STRONG>l8</STRONG>  label on function key f8 if
+                                                not f8
+       <STRONG>lab_f9</STRONG>                     <STRONG>lf9</STRONG>       <STRONG>l9</STRONG>  label on function key f9 if
+                                                not f9
+       <STRONG>meta_off</STRONG>                   <STRONG>rmm</STRONG>       <STRONG>mo</STRONG>  turn off meta mode
+       <STRONG>meta_on</STRONG>                    <STRONG>smm</STRONG>       <STRONG>mm</STRONG>  turn on meta mode (8th-bit on)
+       <STRONG>newline</STRONG>                    <STRONG>nel</STRONG>       <STRONG>nw</STRONG>  newline (behave like cr
+                                                followed by lf)
+       <STRONG>pad_char</STRONG>                   <STRONG>pad</STRONG>       <STRONG>pc</STRONG>  padding char (instead of null)
+       <STRONG>parm_dch</STRONG>                   <STRONG>dch</STRONG>       <STRONG>DC</STRONG>  delete #1 characters (P*)
+       <STRONG>parm_delete_line</STRONG>           <STRONG>dl</STRONG>        <STRONG>DL</STRONG>  delete #1 lines (P*)
+       <STRONG>parm_down_cursor</STRONG>           <STRONG>cud</STRONG>       <STRONG>DO</STRONG>  down #1 lines (P*)
+       <STRONG>parm_ich</STRONG>                   <STRONG>ich</STRONG>       <STRONG>IC</STRONG>  insert #1 characters (P*)
+       <STRONG>parm_index</STRONG>                 <STRONG>indn</STRONG>      <STRONG>SF</STRONG>  scroll forward #1 lines (P)
+       <STRONG>parm_insert_line</STRONG>           <STRONG>il</STRONG>        <STRONG>AL</STRONG>  insert #1 lines (P*)
+       <STRONG>parm_left_cursor</STRONG>           <STRONG>cub</STRONG>       <STRONG>LE</STRONG>  move #1 characters to the left
+                                                (P)
+       <STRONG>parm_right_cursor</STRONG>          <STRONG>cuf</STRONG>       <STRONG>RI</STRONG>  move #1 characters to the
+                                                right (P*)
+       <STRONG>parm_rindex</STRONG>                <STRONG>rin</STRONG>       <STRONG>SR</STRONG>  scroll back #1 lines (P)
+       <STRONG>parm_up_cursor</STRONG>             <STRONG>cuu</STRONG>       <STRONG>UP</STRONG>  up #1 lines (P*)
+       <STRONG>pkey_key</STRONG>                   <STRONG>pfkey</STRONG>     <STRONG>pk</STRONG>  program function key #1 to
+                                                type string #2
+       <STRONG>pkey_local</STRONG>                 <STRONG>pfloc</STRONG>     <STRONG>pl</STRONG>  program function key #1 to
+                                                execute string #2
+       <STRONG>pkey_xmit</STRONG>                  <STRONG>pfx</STRONG>       <STRONG>px</STRONG>  program function key #1 to
+                                                transmit string #2
+       <STRONG>print_screen</STRONG>               <STRONG>mc0</STRONG>       <STRONG>ps</STRONG>  print contents of screen
+       <STRONG>prtr_off</STRONG>                   <STRONG>mc4</STRONG>       <STRONG>pf</STRONG>  turn off printer
+       <STRONG>prtr_on</STRONG>                    <STRONG>mc5</STRONG>       <STRONG>po</STRONG>  turn on printer
+       <STRONG>repeat_char</STRONG>                <STRONG>rep</STRONG>       <STRONG>rp</STRONG>  repeat char #1 #2 times (P*)
+       <STRONG>reset_1string</STRONG>              <STRONG>rs1</STRONG>       <STRONG>r1</STRONG>  reset string
+       <STRONG>reset_2string</STRONG>              <STRONG>rs2</STRONG>       <STRONG>r2</STRONG>  reset string
+
+       <STRONG>reset_3string</STRONG>              <STRONG>rs3</STRONG>       <STRONG>r3</STRONG>  reset string
+       <STRONG>reset_file</STRONG>                 <STRONG>rf</STRONG>        <STRONG>rf</STRONG>  name of reset file
+       <STRONG>restore_cursor</STRONG>             <STRONG>rc</STRONG>        <STRONG>rc</STRONG>  restore cursor to position of
+                                                last save_cursor
+       <STRONG>row_address</STRONG>                <STRONG>vpa</STRONG>       <STRONG>cv</STRONG>  vertical position #1 absolute
+                                                (P)
+       <STRONG>save_cursor</STRONG>                <STRONG>sc</STRONG>        <STRONG>sc</STRONG>  save current cursor position
+                                                (P)
+       <STRONG>scroll_forward</STRONG>             <STRONG>ind</STRONG>       <STRONG>sf</STRONG>  scroll text up (P)
+       <STRONG>scroll_reverse</STRONG>             <STRONG>ri</STRONG>        <STRONG>sr</STRONG>  scroll text down (P)
+       <STRONG>set_attributes</STRONG>             <STRONG>sgr</STRONG>       <STRONG>sa</STRONG>  define video attributes #1-#9
+                                                (PG9)
+       <STRONG>set_tab</STRONG>                    <STRONG>hts</STRONG>       <STRONG>st</STRONG>  set a tab in every row,
+                                                current columns
+       <STRONG>set_window</STRONG>                 <STRONG>wind</STRONG>      <STRONG>wi</STRONG>  current window is lines #1-#2
+                                                cols #3-#4
+       <STRONG>tab</STRONG>                        <STRONG>ht</STRONG>        <STRONG>ta</STRONG>  tab to next 8-space hardware
+                                                tab stop
+       <STRONG>to_status_line</STRONG>             <STRONG>tsl</STRONG>       <STRONG>ts</STRONG>  move to status line, column #1
+       <STRONG>underline_char</STRONG>             <STRONG>uc</STRONG>        <STRONG>uc</STRONG>  underline char and move past
+                                                it
+       <STRONG>up_half_line</STRONG>               <STRONG>hu</STRONG>        <STRONG>hu</STRONG>  half a line up
+       <STRONG>init_prog</STRONG>                  <STRONG>iprog</STRONG>     <STRONG>iP</STRONG>  path name of program for
+                                                initialization
+       <STRONG>key_a1</STRONG>                     <STRONG>ka1</STRONG>       <STRONG>K1</STRONG>  upper left of keypad
+
+       <STRONG>key_a3</STRONG>                     <STRONG>ka3</STRONG>       <STRONG>K3</STRONG>  upper right of keypad
+       <STRONG>key_b2</STRONG>                     <STRONG>kb2</STRONG>       <STRONG>K2</STRONG>  center of keypad
+       <STRONG>key_c1</STRONG>                     <STRONG>kc1</STRONG>       <STRONG>K4</STRONG>  lower left of keypad
+       <STRONG>key_c3</STRONG>                     <STRONG>kc3</STRONG>       <STRONG>K5</STRONG>  lower right of keypad
+       <STRONG>prtr_non</STRONG>                   <STRONG>mc5p</STRONG>      <STRONG>pO</STRONG>  turn on printer for #1 bytes
+       <STRONG>char_padding</STRONG>               <STRONG>rmp</STRONG>       <STRONG>rP</STRONG>  like ip but when in insert
+                                                mode
+       <STRONG>acs_chars</STRONG>                  <STRONG>acsc</STRONG>      <STRONG>ac</STRONG>  graphics charset pairs, based
+                                                on vt100
+       <STRONG>plab_norm</STRONG>                  <STRONG>pln</STRONG>       <STRONG>pn</STRONG>  program label #1 to show
+                                                string #2
+       <STRONG>key_btab</STRONG>                   <STRONG>kcbt</STRONG>      <STRONG>kB</STRONG>  back-tab key
+       <STRONG>enter_xon_mode</STRONG>             <STRONG>smxon</STRONG>     <STRONG>SX</STRONG>  turn on xon/xoff handshaking
+       <STRONG>exit_xon_mode</STRONG>              <STRONG>rmxon</STRONG>     <STRONG>RX</STRONG>  turn off xon/xoff handshaking
+       <STRONG>enter_am_mode</STRONG>              <STRONG>smam</STRONG>      <STRONG>SA</STRONG>  turn on automatic margins
+       <STRONG>exit_am_mode</STRONG>               <STRONG>rmam</STRONG>      <STRONG>RA</STRONG>  turn off automatic margins
+       <STRONG>xon_character</STRONG>              <STRONG>xonc</STRONG>      <STRONG>XN</STRONG>  XON character
+       <STRONG>xoff_character</STRONG>             <STRONG>xoffc</STRONG>     <STRONG>XF</STRONG>  XOFF character
+       <STRONG>ena_acs</STRONG>                    <STRONG>enacs</STRONG>     <STRONG>eA</STRONG>  enable alternate char set
+       <STRONG>label_on</STRONG>                   <STRONG>smln</STRONG>      <STRONG>LO</STRONG>  turn on soft labels
+       <STRONG>label_off</STRONG>                  <STRONG>rmln</STRONG>      <STRONG>LF</STRONG>  turn off soft labels
+       <STRONG>key_beg</STRONG>                    <STRONG>kbeg</STRONG>      <STRONG>@1</STRONG>  begin key
+       <STRONG>key_cancel</STRONG>                 <STRONG>kcan</STRONG>      <STRONG>@2</STRONG>  cancel key
+       <STRONG>key_close</STRONG>                  <STRONG>kclo</STRONG>      <STRONG>@3</STRONG>  close key
+       <STRONG>key_command</STRONG>                <STRONG>kcmd</STRONG>      <STRONG>@4</STRONG>  command key
+       <STRONG>key_copy</STRONG>                   <STRONG>kcpy</STRONG>      <STRONG>@5</STRONG>  copy key
+       <STRONG>key_create</STRONG>                 <STRONG>kcrt</STRONG>      <STRONG>@6</STRONG>  create key
+       <STRONG>key_end</STRONG>                    <STRONG>kend</STRONG>      <STRONG>@7</STRONG>  end key
+       <STRONG>key_enter</STRONG>                  <STRONG>kent</STRONG>      <STRONG>@8</STRONG>  enter/send key
+       <STRONG>key_exit</STRONG>                   <STRONG>kext</STRONG>      <STRONG>@9</STRONG>  exit key
+       <STRONG>key_find</STRONG>                   <STRONG>kfnd</STRONG>      <STRONG>@0</STRONG>  find key
+       <STRONG>key_help</STRONG>                   <STRONG>khlp</STRONG>      <STRONG>%1</STRONG>  help key
+       <STRONG>key_mark</STRONG>                   <STRONG>kmrk</STRONG>      <STRONG>%2</STRONG>  mark key
+       <STRONG>key_message</STRONG>                <STRONG>kmsg</STRONG>      <STRONG>%3</STRONG>  message key
+       <STRONG>key_move</STRONG>                   <STRONG>kmov</STRONG>      <STRONG>%4</STRONG>  move key
+       <STRONG>key_next</STRONG>                   <STRONG>knxt</STRONG>      <STRONG>%5</STRONG>  next key
+       <STRONG>key_open</STRONG>                   <STRONG>kopn</STRONG>      <STRONG>%6</STRONG>  open key
+       <STRONG>key_options</STRONG>                <STRONG>kopt</STRONG>      <STRONG>%7</STRONG>  options key
+       <STRONG>key_previous</STRONG>               <STRONG>kprv</STRONG>      <STRONG>%8</STRONG>  previous key
+       <STRONG>key_print</STRONG>                  <STRONG>kprt</STRONG>      <STRONG>%9</STRONG>  print key
+       <STRONG>key_redo</STRONG>                   <STRONG>krdo</STRONG>      <STRONG>%0</STRONG>  redo key
+       <STRONG>key_reference</STRONG>              <STRONG>kref</STRONG>      <STRONG>&amp;1</STRONG>  reference key
+       <STRONG>key_refresh</STRONG>                <STRONG>krfr</STRONG>      <STRONG>&amp;2</STRONG>  refresh key
+       <STRONG>key_replace</STRONG>                <STRONG>krpl</STRONG>      <STRONG>&amp;3</STRONG>  replace key
+       <STRONG>key_restart</STRONG>                <STRONG>krst</STRONG>      <STRONG>&amp;4</STRONG>  restart key
+       <STRONG>key_resume</STRONG>                 <STRONG>kres</STRONG>      <STRONG>&amp;5</STRONG>  resume key
+       <STRONG>key_save</STRONG>                   <STRONG>ksav</STRONG>      <STRONG>&amp;6</STRONG>  save key
+       <STRONG>key_suspend</STRONG>                <STRONG>kspd</STRONG>      <STRONG>&amp;7</STRONG>  suspend key
+       <STRONG>key_undo</STRONG>                   <STRONG>kund</STRONG>      <STRONG>&amp;8</STRONG>  undo key
+
+       <STRONG>key_sbeg</STRONG>                   <STRONG>kBEG</STRONG>      <STRONG>&amp;9</STRONG>  shifted begin key
+       <STRONG>key_scancel</STRONG>                <STRONG>kCAN</STRONG>      <STRONG>&amp;0</STRONG>  shifted cancel key
+       <STRONG>key_scommand</STRONG>               <STRONG>kCMD</STRONG>      <STRONG>*1</STRONG>  shifted command key
+       <STRONG>key_scopy</STRONG>                  <STRONG>kCPY</STRONG>      <STRONG>*2</STRONG>  shifted copy key
+       <STRONG>key_screate</STRONG>                <STRONG>kCRT</STRONG>      <STRONG>*3</STRONG>  shifted create key
+       <STRONG>key_sdc</STRONG>                    <STRONG>kDC</STRONG>       <STRONG>*4</STRONG>  shifted delete-character key
+       <STRONG>key_sdl</STRONG>                    <STRONG>kDL</STRONG>       <STRONG>*5</STRONG>  shifted delete-line key
+       <STRONG>key_select</STRONG>                 <STRONG>kslt</STRONG>      <STRONG>*6</STRONG>  select key
+       <STRONG>key_send</STRONG>                   <STRONG>kEND</STRONG>      <STRONG>*7</STRONG>  shifted end key
+       <STRONG>key_seol</STRONG>                   <STRONG>kEOL</STRONG>      <STRONG>*8</STRONG>  shifted clear-to-end-of-line
+                                                key
+       <STRONG>key_sexit</STRONG>                  <STRONG>kEXT</STRONG>      <STRONG>*9</STRONG>  shifted exit key
+       <STRONG>key_sfind</STRONG>                  <STRONG>kFND</STRONG>      <STRONG>*0</STRONG>  shifted find key
+       <STRONG>key_shelp</STRONG>                  <STRONG>kHLP</STRONG>      <STRONG>#1</STRONG>  shifted help key
+       <STRONG>key_shome</STRONG>                  <STRONG>kHOM</STRONG>      <STRONG>#2</STRONG>  shifted home key
+
+       <STRONG>key_sic</STRONG>                    <STRONG>kIC</STRONG>       <STRONG>#3</STRONG>  shifted insert-character key
+       <STRONG>key_sleft</STRONG>                  <STRONG>kLFT</STRONG>      <STRONG>#4</STRONG>  shifted left-arrow key
+       <STRONG>key_smessage</STRONG>               <STRONG>kMSG</STRONG>      <STRONG>%a</STRONG>  shifted message key
+       <STRONG>key_smove</STRONG>                  <STRONG>kMOV</STRONG>      <STRONG>%b</STRONG>  shifted move key
+       <STRONG>key_snext</STRONG>                  <STRONG>kNXT</STRONG>      <STRONG>%c</STRONG>  shifted next key
+       <STRONG>key_soptions</STRONG>               <STRONG>kOPT</STRONG>      <STRONG>%d</STRONG>  shifted options key
+       <STRONG>key_sprevious</STRONG>              <STRONG>kPRV</STRONG>      <STRONG>%e</STRONG>  shifted previous key
+       <STRONG>key_sprint</STRONG>                 <STRONG>kPRT</STRONG>      <STRONG>%f</STRONG>  shifted print key
+       <STRONG>key_sredo</STRONG>                  <STRONG>kRDO</STRONG>      <STRONG>%g</STRONG>  shifted redo key
+       <STRONG>key_sreplace</STRONG>               <STRONG>kRPL</STRONG>      <STRONG>%h</STRONG>  shifted replace key
+       <STRONG>key_sright</STRONG>                 <STRONG>kRIT</STRONG>      <STRONG>%i</STRONG>  shifted right-arrow key
+       <STRONG>key_srsume</STRONG>                 <STRONG>kRES</STRONG>      <STRONG>%j</STRONG>  shifted resume key
+       <STRONG>key_ssave</STRONG>                  <STRONG>kSAV</STRONG>      <STRONG>!1</STRONG>  shifted save key
+       <STRONG>key_ssuspend</STRONG>               <STRONG>kSPD</STRONG>      <STRONG>!2</STRONG>  shifted suspend key
+       <STRONG>key_sundo</STRONG>                  <STRONG>kUND</STRONG>      <STRONG>!3</STRONG>  shifted undo key
+       <STRONG>req_for_input</STRONG>              <STRONG>rfi</STRONG>       <STRONG>RF</STRONG>  send next input char (for
+                                                ptys)
+       <STRONG>key_f11</STRONG>                    <STRONG>kf11</STRONG>      <STRONG>F1</STRONG>  F11 function key
+       <STRONG>key_f12</STRONG>                    <STRONG>kf12</STRONG>      <STRONG>F2</STRONG>  F12 function key
+       <STRONG>key_f13</STRONG>                    <STRONG>kf13</STRONG>      <STRONG>F3</STRONG>  F13 function key
+       <STRONG>key_f14</STRONG>                    <STRONG>kf14</STRONG>      <STRONG>F4</STRONG>  F14 function key
+       <STRONG>key_f15</STRONG>                    <STRONG>kf15</STRONG>      <STRONG>F5</STRONG>  F15 function key
+       <STRONG>key_f16</STRONG>                    <STRONG>kf16</STRONG>      <STRONG>F6</STRONG>  F16 function key
+       <STRONG>key_f17</STRONG>                    <STRONG>kf17</STRONG>      <STRONG>F7</STRONG>  F17 function key
+       <STRONG>key_f18</STRONG>                    <STRONG>kf18</STRONG>      <STRONG>F8</STRONG>  F18 function key
+       <STRONG>key_f19</STRONG>                    <STRONG>kf19</STRONG>      <STRONG>F9</STRONG>  F19 function key
+       <STRONG>key_f20</STRONG>                    <STRONG>kf20</STRONG>      <STRONG>FA</STRONG>  F20 function key
+       <STRONG>key_f21</STRONG>                    <STRONG>kf21</STRONG>      <STRONG>FB</STRONG>  F21 function key
+       <STRONG>key_f22</STRONG>                    <STRONG>kf22</STRONG>      <STRONG>FC</STRONG>  F22 function key
+       <STRONG>key_f23</STRONG>                    <STRONG>kf23</STRONG>      <STRONG>FD</STRONG>  F23 function key
+       <STRONG>key_f24</STRONG>                    <STRONG>kf24</STRONG>      <STRONG>FE</STRONG>  F24 function key
+       <STRONG>key_f25</STRONG>                    <STRONG>kf25</STRONG>      <STRONG>FF</STRONG>  F25 function key
+       <STRONG>key_f26</STRONG>                    <STRONG>kf26</STRONG>      <STRONG>FG</STRONG>  F26 function key
+       <STRONG>key_f27</STRONG>                    <STRONG>kf27</STRONG>      <STRONG>FH</STRONG>  F27 function key
+       <STRONG>key_f28</STRONG>                    <STRONG>kf28</STRONG>      <STRONG>FI</STRONG>  F28 function key
+       <STRONG>key_f29</STRONG>                    <STRONG>kf29</STRONG>      <STRONG>FJ</STRONG>  F29 function key
+       <STRONG>key_f30</STRONG>                    <STRONG>kf30</STRONG>      <STRONG>FK</STRONG>  F30 function key
+       <STRONG>key_f31</STRONG>                    <STRONG>kf31</STRONG>      <STRONG>FL</STRONG>  F31 function key
+       <STRONG>key_f32</STRONG>                    <STRONG>kf32</STRONG>      <STRONG>FM</STRONG>  F32 function key
+       <STRONG>key_f33</STRONG>                    <STRONG>kf33</STRONG>      <STRONG>FN</STRONG>  F33 function key
+       <STRONG>key_f34</STRONG>                    <STRONG>kf34</STRONG>      <STRONG>FO</STRONG>  F34 function key
+       <STRONG>key_f35</STRONG>                    <STRONG>kf35</STRONG>      <STRONG>FP</STRONG>  F35 function key
+       <STRONG>key_f36</STRONG>                    <STRONG>kf36</STRONG>      <STRONG>FQ</STRONG>  F36 function key
+       <STRONG>key_f37</STRONG>                    <STRONG>kf37</STRONG>      <STRONG>FR</STRONG>  F37 function key
+       <STRONG>key_f38</STRONG>                    <STRONG>kf38</STRONG>      <STRONG>FS</STRONG>  F38 function key
+       <STRONG>key_f39</STRONG>                    <STRONG>kf39</STRONG>      <STRONG>FT</STRONG>  F39 function key
+       <STRONG>key_f40</STRONG>                    <STRONG>kf40</STRONG>      <STRONG>FU</STRONG>  F40 function key
+       <STRONG>key_f41</STRONG>                    <STRONG>kf41</STRONG>      <STRONG>FV</STRONG>  F41 function key
+       <STRONG>key_f42</STRONG>                    <STRONG>kf42</STRONG>      <STRONG>FW</STRONG>  F42 function key
+
+       <STRONG>key_f43</STRONG>                    <STRONG>kf43</STRONG>      <STRONG>FX</STRONG>  F43 function key
+       <STRONG>key_f44</STRONG>                    <STRONG>kf44</STRONG>      <STRONG>FY</STRONG>  F44 function key
+       <STRONG>key_f45</STRONG>                    <STRONG>kf45</STRONG>      <STRONG>FZ</STRONG>  F45 function key
+       <STRONG>key_f46</STRONG>                    <STRONG>kf46</STRONG>      <STRONG>Fa</STRONG>  F46 function key
+       <STRONG>key_f47</STRONG>                    <STRONG>kf47</STRONG>      <STRONG>Fb</STRONG>  F47 function key
+       <STRONG>key_f48</STRONG>                    <STRONG>kf48</STRONG>      <STRONG>Fc</STRONG>  F48 function key
+       <STRONG>key_f49</STRONG>                    <STRONG>kf49</STRONG>      <STRONG>Fd</STRONG>  F49 function key
+       <STRONG>key_f50</STRONG>                    <STRONG>kf50</STRONG>      <STRONG>Fe</STRONG>  F50 function key
+       <STRONG>key_f51</STRONG>                    <STRONG>kf51</STRONG>      <STRONG>Ff</STRONG>  F51 function key
+       <STRONG>key_f52</STRONG>                    <STRONG>kf52</STRONG>      <STRONG>Fg</STRONG>  F52 function key
+       <STRONG>key_f53</STRONG>                    <STRONG>kf53</STRONG>      <STRONG>Fh</STRONG>  F53 function key
+       <STRONG>key_f54</STRONG>                    <STRONG>kf54</STRONG>      <STRONG>Fi</STRONG>  F54 function key
+       <STRONG>key_f55</STRONG>                    <STRONG>kf55</STRONG>      <STRONG>Fj</STRONG>  F55 function key
+       <STRONG>key_f56</STRONG>                    <STRONG>kf56</STRONG>      <STRONG>Fk</STRONG>  F56 function key
+       <STRONG>key_f57</STRONG>                    <STRONG>kf57</STRONG>      <STRONG>Fl</STRONG>  F57 function key
+
+       <STRONG>key_f58</STRONG>                    <STRONG>kf58</STRONG>      <STRONG>Fm</STRONG>  F58 function key
+       <STRONG>key_f59</STRONG>                    <STRONG>kf59</STRONG>      <STRONG>Fn</STRONG>  F59 function key
+       <STRONG>key_f60</STRONG>                    <STRONG>kf60</STRONG>      <STRONG>Fo</STRONG>  F60 function key
+       <STRONG>key_f61</STRONG>                    <STRONG>kf61</STRONG>      <STRONG>Fp</STRONG>  F61 function key
+       <STRONG>key_f62</STRONG>                    <STRONG>kf62</STRONG>      <STRONG>Fq</STRONG>  F62 function key
+       <STRONG>key_f63</STRONG>                    <STRONG>kf63</STRONG>      <STRONG>Fr</STRONG>  F63 function key
+       <STRONG>clr_bol</STRONG>                    <STRONG>el1</STRONG>       <STRONG>cb</STRONG>  Clear to beginning of line
+       <STRONG>clear_margins</STRONG>              <STRONG>mgc</STRONG>       <STRONG>MC</STRONG>  clear right and left soft
+                                                margins
+       <STRONG>set_left_margin</STRONG>            <STRONG>smgl</STRONG>      <STRONG>ML</STRONG>  set left soft margin at
+                                                current column (not in BSD
+                                                <EM>termcap</EM>)
+       <STRONG>set_right_margin</STRONG>           <STRONG>smgr</STRONG>      <STRONG>MR</STRONG>  set right soft margin at
+                                                current column
+       <STRONG>label_format</STRONG>               <STRONG>fln</STRONG>       <STRONG>Lf</STRONG>  label format
+       <STRONG>set_clock</STRONG>                  <STRONG>sclk</STRONG>      <STRONG>SC</STRONG>  set clock, #1 hrs #2 mins #3
+                                                secs
+       <STRONG>display_clock</STRONG>              <STRONG>dclk</STRONG>      <STRONG>DK</STRONG>  display clock
+       <STRONG>remove_clock</STRONG>               <STRONG>rmclk</STRONG>     <STRONG>RC</STRONG>  remove clock
+       <STRONG>create_window</STRONG>              <STRONG>cwin</STRONG>      <STRONG>CW</STRONG>  define a window #1 from #2,#3
+                                                to #4,#5
+       <STRONG>goto_window</STRONG>                <STRONG>wingo</STRONG>     <STRONG>WG</STRONG>  go to window #1
+       <STRONG>hangup</STRONG>                     <STRONG>hup</STRONG>       <STRONG>HU</STRONG>  hang-up phone
+       <STRONG>dial_phone</STRONG>                 <STRONG>dial</STRONG>      <STRONG>DI</STRONG>  dial number #1
+       <STRONG>quick_dial</STRONG>                 <STRONG>qdial</STRONG>     <STRONG>QD</STRONG>  dial number #1 without
+                                                checking
+       <STRONG>tone</STRONG>                       <STRONG>tone</STRONG>      <STRONG>TO</STRONG>  select touch tone dialing
+       <STRONG>pulse</STRONG>                      <STRONG>pulse</STRONG>     <STRONG>PU</STRONG>  select pulse dialing
+       <STRONG>flash_hook</STRONG>                 <STRONG>hook</STRONG>      <STRONG>fh</STRONG>  flash switch hook
+       <STRONG>fixed_pause</STRONG>                <STRONG>pause</STRONG>     <STRONG>PA</STRONG>  pause for 2-3 seconds
+       <STRONG>wait_tone</STRONG>                  <STRONG>wait</STRONG>      <STRONG>WA</STRONG>  wait for dial-tone
+       <STRONG>user0</STRONG>                      <STRONG>u0</STRONG>        <STRONG>u0</STRONG>  User string #0
+       <STRONG>user1</STRONG>                      <STRONG>u1</STRONG>        <STRONG>u1</STRONG>  User string #1
+       <STRONG>user2</STRONG>                      <STRONG>u2</STRONG>        <STRONG>u2</STRONG>  User string #2
+       <STRONG>user3</STRONG>                      <STRONG>u3</STRONG>        <STRONG>u3</STRONG>  User string #3
+       <STRONG>user4</STRONG>                      <STRONG>u4</STRONG>        <STRONG>u4</STRONG>  User string #4
+       <STRONG>user5</STRONG>                      <STRONG>u5</STRONG>        <STRONG>u5</STRONG>  User string #5
+       <STRONG>user6</STRONG>                      <STRONG>u6</STRONG>        <STRONG>u6</STRONG>  User string #6
+       <STRONG>user7</STRONG>                      <STRONG>u7</STRONG>        <STRONG>u7</STRONG>  User string #7
+       <STRONG>user8</STRONG>                      <STRONG>u8</STRONG>        <STRONG>u8</STRONG>  User string #8
+       <STRONG>user9</STRONG>                      <STRONG>u9</STRONG>        <STRONG>u9</STRONG>  User string #9
+       <STRONG>orig_pair</STRONG>                  <STRONG>op</STRONG>        <STRONG>op</STRONG>  Set default pair to its
+                                                original value
+       <STRONG>orig_colors</STRONG>                <STRONG>oc</STRONG>        <STRONG>oc</STRONG>  Set all color pairs to the
+                                                original ones
+       <STRONG>initialize_color</STRONG>           <STRONG>initc</STRONG>     <STRONG>Ic</STRONG>  initialize color #1 to
+                                                (#2,#3,#4)
+       <STRONG>initialize_pair</STRONG>            <STRONG>initp</STRONG>     <STRONG>Ip</STRONG>  Initialize color pair #1 to
+                                                fg=(#2,#3,#4), bg=(#5,#6,#7)
+       <STRONG>set_color_pair</STRONG>             <STRONG>scp</STRONG>       <STRONG>sp</STRONG>  Set current color pair to #1
+       <STRONG>set_foreground</STRONG>             <STRONG>setf</STRONG>      <STRONG>Sf</STRONG>  Set foreground color #1
+       <STRONG>set_background</STRONG>             <STRONG>setb</STRONG>      <STRONG>Sb</STRONG>  Set background color #1
+       <STRONG>change_char_pitch</STRONG>          <STRONG>cpi</STRONG>       <STRONG>ZA</STRONG>  Change number of characters
+                                                per inch to #1
+       <STRONG>change_line_pitch</STRONG>          <STRONG>lpi</STRONG>       <STRONG>ZB</STRONG>  Change number of lines per
+                                                inch to #1
+       <STRONG>change_res_horz</STRONG>            <STRONG>chr</STRONG>       <STRONG>ZC</STRONG>  Change horizontal resolution
+                                                to #1
+       <STRONG>change_res_vert</STRONG>            <STRONG>cvr</STRONG>       <STRONG>ZD</STRONG>  Change vertical resolution to
+                                                #1
+       <STRONG>define_char</STRONG>                <STRONG>defc</STRONG>      <STRONG>ZE</STRONG>  Define a character #1, #2 dots
+                                                wide, descender #3
+       <STRONG>enter_doublewide_mode</STRONG>      <STRONG>swidm</STRONG>     <STRONG>ZF</STRONG>  Enter double-wide mode
+
+       <STRONG>enter_draft_quality</STRONG>        <STRONG>sdrfq</STRONG>     <STRONG>ZG</STRONG>  Enter draft-quality mode
+
+       <STRONG>enter_italics_mode</STRONG>         <STRONG>sitm</STRONG>      <STRONG>ZH</STRONG>  Enter italic mode
+       <STRONG>enter_leftward_mode</STRONG>        <STRONG>slm</STRONG>       <STRONG>ZI</STRONG>  Start leftward carriage motion
+       <STRONG>enter_micro_mode</STRONG>           <STRONG>smicm</STRONG>     <STRONG>ZJ</STRONG>  Start micro-motion mode
+       <STRONG>enter_near_letter_quality</STRONG>  <STRONG>snlq</STRONG>      <STRONG>ZK</STRONG>  Enter NLQ mode
+       <STRONG>enter_normal_quality</STRONG>       <STRONG>snrmq</STRONG>     <STRONG>ZL</STRONG>  Enter normal-quality mode
+       <STRONG>enter_shadow_mode</STRONG>          <STRONG>sshm</STRONG>      <STRONG>ZM</STRONG>  Enter shadow-print mode
+       <STRONG>enter_subscript_mode</STRONG>       <STRONG>ssubm</STRONG>     <STRONG>ZN</STRONG>  Enter subscript mode
+       <STRONG>enter_superscript_mode</STRONG>     <STRONG>ssupm</STRONG>     <STRONG>ZO</STRONG>  Enter superscript mode
+       <STRONG>enter_upward_mode</STRONG>          <STRONG>sum</STRONG>       <STRONG>ZP</STRONG>  Start upward carriage motion
+       <STRONG>exit_doublewide_mode</STRONG>       <STRONG>rwidm</STRONG>     <STRONG>ZQ</STRONG>  End double-wide mode
+       <STRONG>exit_italics_mode</STRONG>          <STRONG>ritm</STRONG>      <STRONG>ZR</STRONG>  End italic mode
+       <STRONG>exit_leftward_mode</STRONG>         <STRONG>rlm</STRONG>       <STRONG>ZS</STRONG>  End left-motion mode
+       <STRONG>exit_micro_mode</STRONG>            <STRONG>rmicm</STRONG>     <STRONG>ZT</STRONG>  End micro-motion mode
+       <STRONG>exit_shadow_mode</STRONG>           <STRONG>rshm</STRONG>      <STRONG>ZU</STRONG>  End shadow-print mode
+       <STRONG>exit_subscript_mode</STRONG>        <STRONG>rsubm</STRONG>     <STRONG>ZV</STRONG>  End subscript mode
+       <STRONG>exit_superscript_mode</STRONG>      <STRONG>rsupm</STRONG>     <STRONG>ZW</STRONG>  End superscript mode
+       <STRONG>exit_upward_mode</STRONG>           <STRONG>rum</STRONG>       <STRONG>ZX</STRONG>  End reverse character motion
+       <STRONG>micro_column_address</STRONG>       <STRONG>mhpa</STRONG>      <STRONG>ZY</STRONG>  Like column_address in micro
+                                                mode
+       <STRONG>micro_down</STRONG>                 <STRONG>mcud1</STRONG>     <STRONG>ZZ</STRONG>  Like cursor_down in micro mode
+       <STRONG>micro_left</STRONG>                 <STRONG>mcub1</STRONG>     <STRONG>Za</STRONG>  Like cursor_left in micro mode
+       <STRONG>micro_right</STRONG>                <STRONG>mcuf1</STRONG>     <STRONG>Zb</STRONG>  Like cursor_right in micro
+                                                mode
+       <STRONG>micro_row_address</STRONG>          <STRONG>mvpa</STRONG>      <STRONG>Zc</STRONG>  Like row_address #1 in micro
+                                                mode
+       <STRONG>micro_up</STRONG>                   <STRONG>mcuu1</STRONG>     <STRONG>Zd</STRONG>  Like cursor_up in micro mode
+       <STRONG>order_of_pins</STRONG>              <STRONG>porder</STRONG>    <STRONG>Ze</STRONG>  Match software bits to print-
+                                                head pins
+       <STRONG>parm_down_micro</STRONG>            <STRONG>mcud</STRONG>      <STRONG>Zf</STRONG>  Like parm_down_cursor in micro
+                                                mode
+       <STRONG>parm_left_micro</STRONG>            <STRONG>mcub</STRONG>      <STRONG>Zg</STRONG>  Like parm_left_cursor in micro
+                                                mode
+       <STRONG>parm_right_micro</STRONG>           <STRONG>mcuf</STRONG>      <STRONG>Zh</STRONG>  Like parm_right_cursor in
+                                                micro mode
+       <STRONG>parm_up_micro</STRONG>              <STRONG>mcuu</STRONG>      <STRONG>Zi</STRONG>  Like parm_up_cursor in micro
+                                                mode
+       <STRONG>select_char_set</STRONG>            <STRONG>scs</STRONG>       <STRONG>Zj</STRONG>  Select character set, #1
+       <STRONG>set_bottom_margin</STRONG>          <STRONG>smgb</STRONG>      <STRONG>Zk</STRONG>  Set bottom margin at current
+                                                line
+       <STRONG>set_bottom_margin_parm</STRONG>     <STRONG>smgbp</STRONG>     <STRONG>Zl</STRONG>  Set bottom margin at line #1
+                                                or (if smgtp is not given) #2
+                                                lines from bottom
+       <STRONG>set_left_margin_parm</STRONG>       <STRONG>smglp</STRONG>     <STRONG>Zm</STRONG>  Set left (right) margin at
+                                                column #1
+       <STRONG>set_right_margin_parm</STRONG>      <STRONG>smgrp</STRONG>     <STRONG>Zn</STRONG>  Set right margin at column #1
+       <STRONG>set_top_margin</STRONG>             <STRONG>smgt</STRONG>      <STRONG>Zo</STRONG>  Set top margin at current line
+       <STRONG>set_top_margin_parm</STRONG>        <STRONG>smgtp</STRONG>     <STRONG>Zp</STRONG>  Set top (bottom) margin at row
+                                                #1
+       <STRONG>start_bit_image</STRONG>            <STRONG>sbim</STRONG>      <STRONG>Zq</STRONG>  Start printing bit image
+                                                graphics
+       <STRONG>start_char_set_def</STRONG>         <STRONG>scsd</STRONG>      <STRONG>Zr</STRONG>  Start character set definition
+                                                #1, with #2 characters in the
+                                                set
+       <STRONG>stop_bit_image</STRONG>             <STRONG>rbim</STRONG>      <STRONG>Zs</STRONG>  Stop printing bit image
+                                                graphics
+       <STRONG>stop_char_set_def</STRONG>          <STRONG>rcsd</STRONG>      <STRONG>Zt</STRONG>  End definition of character
+                                                set #1
+       <STRONG>subscript_characters</STRONG>       <STRONG>subcs</STRONG>     <STRONG>Zu</STRONG>  List of subscriptable
+                                                characters
+       <STRONG>superscript_characters</STRONG>     <STRONG>supcs</STRONG>     <STRONG>Zv</STRONG>  List of superscriptable
+                                                characters
+       <STRONG>these_cause_cr</STRONG>             <STRONG>docr</STRONG>      <STRONG>Zw</STRONG>  Printing any of these
+                                                characters causes CR
+       <STRONG>zero_motion</STRONG>                <STRONG>zerom</STRONG>     <STRONG>Zx</STRONG>  No motion for subsequent
+                                                character
 
        The following string  capabilities  are  present  in  the  SVr4.0  term
        structure, but were originally not documented in the man page.
 
-
-                  <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>       <STRONG>TCap</STRONG>      <STRONG>Description</STRONG>
-                   <STRONG>String</STRONG>             <STRONG>name</STRONG>       <STRONG>Code</STRONG>
-          alt_scancode_esc            scesa      S8     Alternate escape
-                                                        for scancode
-                                                        emulation
-          bit_image_carriage_return   bicr       Yv     Move to beginning
-                                                        of same row
-          bit_image_newline           binel      Zz     Move to next row
-                                                        of the bit image
-          bit_image_repeat            birep      Xy     Repeat bit image
-                                                        cell #1 #2 times
-          char_set_names              csnm       Zy     Produce #1'th item
-                                                        from list of
-                                                        character set
-                                                        names
-          code_set_init               csin       ci     Init sequence for
-                                                        multiple codesets
-          color_names                 colornm    Yw     Give name for
-                                                        color #1
-          define_bit_image_region     defbi      Yx     Define rectangular
-                                                        bit image region
-          device_type                 devt       dv     Indicate
-                                                        language/codeset
-                                                        support
-          display_pc_char             dispc      S1     Display PC
-                                                        character #1
-          end_bit_image_region        endbi      Yy     End a bit-image
-                                                        region
-          enter_pc_charset_mode       smpch      S2     Enter PC character
-                                                        display mode
-          enter_scancode_mode         smsc       S4     Enter PC scancode
-                                                        mode
-          exit_pc_charset_mode        rmpch      S3     Exit PC character
-                                                        display mode
-          exit_scancode_mode          rmsc       S5     Exit PC scancode
-                                                        mode
-          get_mouse                   getm       Gm     Curses should get
-                                                        button events,
-                                                        parameter #1 not
-                                                        documented.
-          key_mouse                   kmous      Km     Mouse event has
-                                                        occurred
-          mouse_info                  minfo      Mi     Mouse status
-                                                        information
-          pc_term_options             pctrm      S6     PC terminal
-                                                        options
-          pkey_plab                   pfxl       xl     Program function
-                                                        key #1 to type
-                                                        string #2 and show
-                                                        string #3
-          req_mouse_pos               reqmp      RQ     Request mouse
-                                                        position
-
-          scancode_escape             scesc      S7     Escape for
-                                                        scancode emulation
-          set0_des_seq                s0ds       s0     Shift to codeset 0
-                                                        (EUC set 0, ASCII)
-          set1_des_seq                s1ds       s1     Shift to codeset 1
-          set2_des_seq                s2ds       s2     Shift to codeset 2
-          set3_des_seq                s3ds       s3     Shift to codeset 3
-          set_a_background            setab      AB     Set background
-                                                        color to #1, using
-                                                        ANSI escape
-          set_a_foreground            setaf      AF     Set foreground
-                                                        color to #1, using
-                                                        ANSI escape
-          set_color_band              setcolor   Yz     Change to ribbon
-                                                        color #1
-          set_lr_margin               smglr      ML     Set both left and
-                                                        right margins to
-                                                        #1, #2.  (ML is
-                                                        not in BSD
-                                                        termcap).
-          set_page_length             slines     YZ     Set page length to
-                                                        #1 lines
-          set_tb_margin               smgtb      MT     Sets both top and
-                                                        bottom margins to
-                                                        #1, #2
-
-        The XSI Curses standard added these hardcopy capabilities.  They  were
-        used  in  some post-4.1 versions of System V curses, e.g., Solaris 2.5
-        and IRIX 6.x.  Except for <STRONG>YI</STRONG>, the <STRONG>ncurses</STRONG> termcap names for  them  are
-        invented.   According to the XSI Curses standard, they have no termcap
-        names.  If your compiled terminfo entries use these, they may  not  be
-        binary-compatible with System V terminfo entries after SVr4.1; beware!
-
-
-                  <STRONG>Variable</STRONG>            <STRONG>Cap-</STRONG>      <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
-                   <STRONG>String</STRONG>             <STRONG>name</STRONG>      <STRONG>Code</STRONG>
-          enter_horizontal_hl_mode    ehhlm     Xh     Enter horizontal
-                                                       highlight mode
-          enter_left_hl_mode          elhlm     Xl     Enter left highlight
-                                                       mode
-          enter_low_hl_mode           elohlm    Xo     Enter low highlight
-                                                       mode
-          enter_right_hl_mode         erhlm     Xr     Enter right
-                                                       highlight mode
-          enter_top_hl_mode           ethlm     Xt     Enter top highlight
-                                                       mode
-          enter_vertical_hl_mode      evhlm     Xv     Enter vertical
-                                                       highlight mode
-          set_a_attributes            sgr1      sA     Define second set of
-                                                       video attributes
-                                                       #1-#6
-          set_pglen_inch              slength   YI     Set page length to
-                                                       #1 hundredth of an
-                                                       inch (some
-                                                       implementations use
-                                                       sL for termcap).
+                                      <STRONG>Code</STRONG>
+       <STRONG>String</STRONG> <STRONG>Capability</STRONG> <STRONG>Name</STRONG>     <STRONG>TI</STRONG>        <STRONG>TC</STRONG>  <STRONG>Description</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>char_set_names</STRONG>             <STRONG>csnm</STRONG>      <STRONG>Zy</STRONG>  Produce #1'th item from list
+                                                of character set names
+       <STRONG>key_mouse</STRONG>                  <STRONG>kmous</STRONG>     <STRONG>Km</STRONG>  Mouse event has occurred
+       <STRONG>mouse_info</STRONG>                 <STRONG>minfo</STRONG>     <STRONG>Mi</STRONG>  Mouse status information
+       <STRONG>req_mouse_pos</STRONG>              <STRONG>reqmp</STRONG>     <STRONG>RQ</STRONG>  Request mouse position
+       <STRONG>get_mouse</STRONG>                  <STRONG>getm</STRONG>      <STRONG>Gm</STRONG>  Curses should get button
+                                                events, parameter #1 not
+                                                documented.
+       <STRONG>set_a_foreground</STRONG>           <STRONG>setaf</STRONG>     <STRONG>AF</STRONG>  Set foreground color to #1,
+                                                using ANSI escape
+       <STRONG>set_a_background</STRONG>           <STRONG>setab</STRONG>     <STRONG>AB</STRONG>  Set background color to #1,
+                                                using ANSI escape
+       <STRONG>pkey_plab</STRONG>                  <STRONG>pfxl</STRONG>      <STRONG>xl</STRONG>  Program function key #1 to
+                                                type string #2 and show string
+                                                #3
+       <STRONG>device_type</STRONG>                <STRONG>devt</STRONG>      <STRONG>dv</STRONG>  Indicate language, codeset
+                                                support
+       <STRONG>code_set_init</STRONG>              <STRONG>csin</STRONG>      <STRONG>ci</STRONG>  Init sequence for multiple
+                                                codesets
+       <STRONG>set0_des_seq</STRONG>               <STRONG>s0ds</STRONG>      <STRONG>s0</STRONG>  Shift to codeset 0 (EUC set 0,
+                                                ASCII)
+       <STRONG>set1_des_seq</STRONG>               <STRONG>s1ds</STRONG>      <STRONG>s1</STRONG>  Shift to codeset 1
+       <STRONG>set2_des_seq</STRONG>               <STRONG>s2ds</STRONG>      <STRONG>s2</STRONG>  Shift to codeset 2
+       <STRONG>set3_des_seq</STRONG>               <STRONG>s3ds</STRONG>      <STRONG>s3</STRONG>  Shift to codeset 3
+       <STRONG>set_lr_margin</STRONG>              <STRONG>smglr</STRONG>     <STRONG>ML</STRONG>  Set both left and right
+                                                margins to #1, #2.  (ML is not
+                                                in BSD termcap).
+       <STRONG>set_tb_margin</STRONG>              <STRONG>smgtb</STRONG>     <STRONG>MT</STRONG>  Sets both top and bottom
+                                                margins to #1, #2
+       <STRONG>bit_image_repeat</STRONG>           <STRONG>birep</STRONG>     <STRONG>Xy</STRONG>  Repeat bit image cell #1 #2
+                                                times
+       <STRONG>bit_image_newline</STRONG>          <STRONG>binel</STRONG>     <STRONG>Zz</STRONG>  Move to next row of the bit
+                                                image
+       <STRONG>bit_image_carriage_return</STRONG>  <STRONG>bicr</STRONG>      <STRONG>Yv</STRONG>  Move to beginning of same row
+       <STRONG>color_names</STRONG>                <STRONG>colornm</STRONG>   <STRONG>Yw</STRONG>  Give name for color #1
+       <STRONG>define_bit_image_region</STRONG>    <STRONG>defbi</STRONG>     <STRONG>Yx</STRONG>  Define rectangular bit image
+                                                region
+       <STRONG>end_bit_image_region</STRONG>       <STRONG>endbi</STRONG>     <STRONG>Yy</STRONG>  End a bit-image region
+       <STRONG>set_color_band</STRONG>             <STRONG>setcolor</STRONG>  <STRONG>Yz</STRONG>  Change to ribbon color #1
+       <STRONG>set_page_length</STRONG>            <STRONG>slines</STRONG>    <STRONG>YZ</STRONG>  Set page length to #1 lines
+       <STRONG>display_pc_char</STRONG>            <STRONG>dispc</STRONG>     <STRONG>S1</STRONG>  Display PC character #1
+       <STRONG>enter_pc_charset_mode</STRONG>      <STRONG>smpch</STRONG>     <STRONG>S2</STRONG>  Enter PC character display
+                                                mode
+       <STRONG>exit_pc_charset_mode</STRONG>       <STRONG>rmpch</STRONG>     <STRONG>S3</STRONG>  Exit PC character display mode
+       <STRONG>enter_scancode_mode</STRONG>        <STRONG>smsc</STRONG>      <STRONG>S4</STRONG>  Enter PC scancode mode
+       <STRONG>exit_scancode_mode</STRONG>         <STRONG>rmsc</STRONG>      <STRONG>S5</STRONG>  Exit PC scancode mode
+       <STRONG>pc_term_options</STRONG>            <STRONG>pctrm</STRONG>     <STRONG>S6</STRONG>  PC terminal options
+       <STRONG>scancode_escape</STRONG>            <STRONG>scesc</STRONG>     <STRONG>S7</STRONG>  Escape for scancode emulation
+       <STRONG>alt_scancode_esc</STRONG>           <STRONG>scesa</STRONG>     <STRONG>S8</STRONG>  Alternate escape for scancode
+                                                emulation
+
+       The  XSI  Curses standard added these hardcopy capabilities.  They were
+       used in some post-4.1 versions of System V curses,  e.g.,  Solaris  2.5
+       and  IRIX  6.x.   Except for <STRONG>YI</STRONG>, the <STRONG>ncurses</STRONG> termcap names for them are
+       invented.  According to the XSI Curses standard, they have  no  termcap
+       names.   If  your  compiled terminfo entries use these, they may not be
+       binary-compatible with System V terminfo entries after SVr4.1; beware!
+
+                                      <STRONG>Code</STRONG>
+
+       <STRONG>String</STRONG> <STRONG>Capability</STRONG> <STRONG>Name</STRONG>     <STRONG>TI</STRONG>        <STRONG>TC</STRONG>  <STRONG>Description</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>enter_horizontal_hl_mode</STRONG>   <STRONG>ehhlm</STRONG>     <STRONG>Xh</STRONG>  Enter horizontal highlight
+                                                mode
+       <STRONG>enter_left_hl_mode</STRONG>         <STRONG>elhlm</STRONG>     <STRONG>Xl</STRONG>  Enter left highlight mode
+       <STRONG>enter_low_hl_mode</STRONG>          <STRONG>elohlm</STRONG>    <STRONG>Xo</STRONG>  Enter low highlight mode
+       <STRONG>enter_right_hl_mode</STRONG>        <STRONG>erhlm</STRONG>     <STRONG>Xr</STRONG>  Enter right highlight mode
+       <STRONG>enter_top_hl_mode</STRONG>          <STRONG>ethlm</STRONG>     <STRONG>Xt</STRONG>  Enter top highlight mode
+       <STRONG>enter_vertical_hl_mode</STRONG>     <STRONG>evhlm</STRONG>     <STRONG>Xv</STRONG>  Enter vertical highlight mode
+       <STRONG>set_a_attributes</STRONG>           <STRONG>sgr1</STRONG>      <STRONG>sA</STRONG>  Define second set of video
+                                                attributes #1-#6
+       <STRONG>set_pglen_inch</STRONG>             <STRONG>slength</STRONG>   <STRONG>YI</STRONG>  Set page length to #1
+                                                hundredth of an inch (some
+                                                implementations use sL for
+                                                termcap).
 
 
 </PRE><H3><a name="h3-User-Defined-Capabilities">User-Defined Capabilities</a></H3><PRE>
        which are awkward or impossible to represent by reusing the  predefined
        capabilities.
 
-       <STRONG>ncurses</STRONG>    addresses   this   limitation   by   allowing   user-defined
+       <EM>ncurses</EM>    addresses   this   limitation   by   allowing   user-defined
        capabilities.  The <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> programs provide the <STRONG>-x</STRONG>  option  for
        this purpose.  When <STRONG>-x</STRONG> is set, <STRONG>tic</STRONG> treats unknown capabilities as user-
        defined.  That is, if <STRONG>tic</STRONG> encounters a capability name  which  it  does
-       not  recognize, it infers its type (boolean, number or string) from the
+       not  recognize, it infers its type (Boolean, number or string) from the
        syntax and makes an extended table  entry  for  that  capability.   The
        <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG>  function  makes  this information conditionally
-       available to applications.   The  ncurses  library  provides  the  data
+       available to applications.   The  <EM>ncurses</EM>  library  provides  the  data
        leaving most of the behavior to applications:
 
        <STRONG>o</STRONG>   User-defined  capability  strings  whose  name  begins with "k" are
            treated as function keys.
 
-       <STRONG>o</STRONG>   The types (boolean,  number,  string)  determined  by  <STRONG>tic</STRONG>  can  be
+       <STRONG>o</STRONG>   The types (Boolean,  number,  string)  determined  by  <STRONG>tic</STRONG>  can  be
            inferred by successful calls on <STRONG>tigetflag</STRONG>, etc.
 
        <STRONG>o</STRONG>   If the capability name happens to be two characters, the capability
        predefined  set of capabilities, in practice it has been limited to the
        capabilities defined by terminfo implementations.   As  a  rule,  user-
        defined capabilities intended for use by termcap applications should be
-       limited to booleans and numbers to avoid running  past  the  1023  byte
+       limited to Booleans and numbers to avoid running  past  the  1023  byte
        limit  assumed  by  termcap implementations and their applications.  In
        particular, providing extended sets  of  function  keys  (past  the  60
        numbered keys and the handful of special named keys) is best done using
        the longer names available using terminfo.
 
+       The <EM>ncurses</EM> library uses a few of these user-defined  capabilities,  as
+       described  in <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.  Other user-defined capabilities (including
+       function keys) are described in the terminal database, in  the  section
+       on <EM>NCURSES</EM> <EM>USER-DEFINABLE</EM> <EM>CAPABILITIES</EM>
+
 
 </PRE><H3><a name="h3-A-Sample-Entry">A Sample Entry</a></H3><PRE>
-       The  following  entry,  describing  an   ANSI-standard   terminal,   is
+       The   following   entry,   describing  an  ANSI-standard  terminal,  is
        representative of what a <STRONG>terminfo</STRONG> entry for a modern terminal typically
        looks like.
 
                smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
                u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,
 
-       Entries may continue onto multiple lines by placing white space at  the
-       beginning  of  each line except the first.  Comments may be included on
+       Entries  may continue onto multiple lines by placing white space at the
+       beginning of each line except the first.  Comments may be  included  on
        lines beginning with "#".  Capabilities in <EM>terminfo</EM> are of three types:
 
-       <STRONG>o</STRONG>   Boolean capabilities which indicate  that  the  terminal  has  some
+       <STRONG>o</STRONG>   Boolean  capabilities  which  indicate  that  the terminal has some
            particular feature,
 
        <STRONG>o</STRONG>   numeric capabilities giving the size of the terminal or the size of
            particular delays, and
 
-       <STRONG>o</STRONG>   string capabilities, which give a sequence which  can  be  used  to
+       <STRONG>o</STRONG>   string  capabilities,  which  give  a sequence which can be used to
            perform particular terminal operations.
 
 
 </PRE><H3><a name="h3-Types-of-Capabilities">Types of Capabilities</a></H3><PRE>
        All capabilities have names.  For instance, the fact that ANSI-standard
-       terminals have <EM>automatic</EM> <EM>margins</EM> (i.e., an automatic return  and  line-
-       feed  when the end of a line is reached) is indicated by the capability
-       <STRONG>am</STRONG>.  Hence the description of ansi includes <STRONG>am</STRONG>.   Numeric  capabilities
-       are  followed  by  the  character  "#" and then a positive value.  Thus
+       terminals  have  <EM>automatic</EM> <EM>margins</EM> (i.e., an automatic return and line-
+       feed when the end of a line is reached) is indicated by the  capability
+       <STRONG>am</STRONG>.   Hence  the description of ansi includes <STRONG>am</STRONG>.  Numeric capabilities
+       are followed by the character "#" and  then  a  positive  value.   Thus
        <STRONG>cols</STRONG>, which indicates the number of columns the terminal has, gives the
-       value  "80" for ansi.  Values for numeric capabilities may be specified
-       in decimal, octal or hexadecimal,  using  the  C  programming  language
+       value "80" for ansi.  Values for numeric capabilities may be  specified
+       in  decimal,  octal,  or  hexadecimal, using the C programming language
        conventions (e.g., 255, 0377 and 0xff or 0xFF).
 
-       Finally,  string  valued capabilities, such as <STRONG>el</STRONG> (clear to end of line
-       sequence) are given by the two-character  code,  an  "=",  and  then  a
+       Finally, string valued capabilities, such as <STRONG>el</STRONG> (clear to end  of  line
+       sequence)  are  given  by  the  two-character  code, an "=", and then a
        string ending at the next following ",".
 
-       A  number  of  escape  sequences  are  provided  in  the  string valued
+       A number  of  escape  sequences  are  provided  in  the  string  valued
        capabilities for easy encoding of characters there:
 
        <STRONG>o</STRONG>   Both <STRONG>\E</STRONG> and <STRONG>\e</STRONG> map to an ESCAPE character,
 
-       <STRONG>o</STRONG>   <STRONG>^x</STRONG> maps to a control-x for any appropriate <EM>x</EM>, and
+       <STRONG>o</STRONG>   <STRONG>^</STRONG><STRONG><EM>x</EM></STRONG> maps to a control-<EM>x</EM> for any appropriate <EM>x</EM>, and
 
        <STRONG>o</STRONG>   the sequences
 
            respectively.
 
        X/Open Curses does not say what "appropriate <EM>x</EM>" might be.  In practice,
-       that  is a printable ASCII graphic character.  The special case "^?" is
-       interpreted as DEL (127).  In all other cases, the character  value  is
-       AND'd  with 0x1f, mapping to ASCII control codes in the range 0 through
+       that is a printable ASCII graphic character.  The special case "^?"  is
+       interpreted  as  DEL (127).  In all other cases, the character value is
+       AND'd with 0x1f, mapping to ASCII control codes in the range 0  through
        31.
 
        Other escapes include
        <STRONG>o</STRONG>   and <STRONG>\0</STRONG> for null.
 
            <STRONG>\0</STRONG> will produce \200, which does not terminate a string but behaves
-           as  a null character on most terminals, providing CS7 is specified.
+           as a null character on most terminals, providing CS7 is  specified.
            See <STRONG>stty(1)</STRONG>.
 
-           The reason for this quirk is to maintain  binary  compatibility  of
-           the  compiled  terminfo files with other implementations, e.g., the
-           SVr4 systems, which document this.   Compiled  terminfo  files  use
-           null-terminated  strings,  with  no  lengths.  Modifying this would
-           require a new binary  format,  which  would  not  work  with  other
+           The  reason  for  this quirk is to maintain binary compatibility of
+           the compiled terminfo files with other implementations,  e.g.,  the
+           SVr4  systems,  which  document  this.  Compiled terminfo files use
+           null-terminated strings, with no  lengths.   Modifying  this  would
+           require  a  new  binary  format,  which  would  not work with other
            implementations.
 
        Finally, characters may be given as three octal digits after a <STRONG>\</STRONG>.
 
-       A  delay  in  milliseconds  may appear anywhere in a string capability,
-       enclosed in $&lt;..&gt; brackets, as in <STRONG>el</STRONG>=\EK$&lt;5&gt;,  and  padding  characters
+       A delay in milliseconds may appear anywhere  in  a  string  capability,
+       enclosed  in  $&lt;..&gt;  brackets, as in <STRONG>el</STRONG>=\EK$&lt;5&gt;, and padding characters
        are supplied by <STRONG><A HREF="curs_terminfo.3x.html">tputs(3x)</A></STRONG> to provide this delay.
 
-       <STRONG>o</STRONG>   The  delay  must  be  a  number  with  at most one decimal place of
+       <STRONG>o</STRONG>   The delay must be a number  with  at  most  one  decimal  place  of
            precision; it may be followed by suffixes "*" or "/" or both.
 
-       <STRONG>o</STRONG>   A "*" indicates that the padding required is  proportional  to  the
-           number  of lines affected by the operation, and the amount given is
-           the per-affected-unit padding required.  (In  the  case  of  insert
+       <STRONG>o</STRONG>   A  "*"  indicates  that the padding required is proportional to the
+           number of lines affected by the operation, and the amount given  is
+           the  per-affected-unit  padding  required.   (In the case of insert
            character, the factor is still the number of <EM>lines</EM> affected.)
 
            Normally, padding is advisory if the device has the <STRONG>xon</STRONG> capability;
            it is used for cost computation but does not trigger delays.
 
-       <STRONG>o</STRONG>   A "/" suffix indicates that the padding is mandatory and  forces  a
+       <STRONG>o</STRONG>   A  "/"  suffix indicates that the padding is mandatory and forces a
            delay of the given number of milliseconds even on devices for which
            <STRONG>xon</STRONG> is present to indicate flow control.
 
-       Sometimes individual capabilities must be commented out.  To  do  this,
-       put  a  period before the capability name.  For example, see the second
+       Sometimes  individual  capabilities must be commented out.  To do this,
+       put a period before the capability name.  For example, see  the  second
        <STRONG>ind</STRONG> in the example above.
 
 
 </PRE><H3><a name="h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></H3><PRE>
-       The <STRONG>ncurses</STRONG> library  searches  for  terminal  descriptions  in  several
-       places.   It  uses only the first description found.  The library has a
-       compiled-in list of  places  to  search  which  can  be  overridden  by
-       environment  variables.   Before starting to search, <STRONG>ncurses</STRONG> eliminates
-       duplicates in its search list.
+       Terminal  descriptions  in  <EM>ncurses</EM>  are  stored in terminal databases.
+       These databases, which are found by their pathname, may  be  configured
+       either as directory trees or hashed databases (see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>),
+
+       The  library  uses  a  compiled-in  list  of  pathnames,  which  can be
+       overridden  by  environment  variables.   Before  starting  to  search,
+       <EM>ncurses</EM>  checks  the  search list, eliminating duplicates and pathnames
+       where no terminal database is found.  The  <EM>ncurses</EM>  library  reads  the
+       first description which passes its consistency checks.
 
-       <STRONG>o</STRONG>   If the environment variable TERMINFO is set, it is  interpreted  as
-           the pathname of a directory containing the compiled description you
-           are working on.  Only that directory is searched.
+       <STRONG>o</STRONG>   The  environment variable <STRONG>TERMINFO</STRONG> is checked first, for a terminal
+           database containing the terminal description.
 
-       <STRONG>o</STRONG>   If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead look in the  directory
-           <STRONG>$HOME/.terminfo</STRONG> for a compiled description.
+       <STRONG>o</STRONG>   Next, <EM>ncurses</EM> looks in <EM>$HOME/.terminfo</EM> for a compiled description.
 
-       <STRONG>o</STRONG>   Next,  if  the  environment  variable TERMINFO_DIRS is set, <STRONG>ncurses</STRONG>
-           will interpret the contents of that variable as a  list  of  colon-
-           separated directories (or database files) to be searched.
+           This is an optional feature which may be omitted entirely from  the
+           library,  or  limited  to  prevent  accidental  use  by  privileged
+           applications.
 
-           An  empty directory name (i.e., if the variable begins or ends with
-           a colon, or contains adjacent colons) is interpreted as the  system
+       <STRONG>o</STRONG>   Next, if the environment variable  <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM>  is  set,  <EM>ncurses</EM>
+           interprets  the  contents  of  that  variable  as  a list of colon-
+           separated pathnames of terminal databases to be searched.
+
+           An empty pathname (i.e., if the variable  begins  or  ends  with  a
+           colon,  or  contains  adjacent colons) is interpreted as the system
            location <EM>/usr/share/terminfo</EM>.
 
-       <STRONG>o</STRONG>   Finally, <STRONG>ncurses</STRONG> searches these compiled-in locations:
+       <STRONG>o</STRONG>   Finally, <EM>ncurses</EM> searches these compiled-in locations:
+
+           <STRONG>o</STRONG>   a list of directories (/usr/share/terminfo), and
 
-           <STRONG>o</STRONG>   a list of directories (no default value), and
+           <STRONG>o</STRONG>   the system terminfo directory, <EM>/usr/share/terminfo</EM>
 
-           <STRONG>o</STRONG>   the   system   terminfo   directory,  <EM>/usr/share/terminfo</EM>  (the
-               compiled-in default).
+       The <STRONG>TERMINFO</STRONG> variable can contain a terminal description instead of the
+       pathname  of  a terminal database.  If this variable begins with "hex:"
+       or "b64:" then <EM>ncurses</EM> reads a terminal description  from  hexadecimal-
+       or  base64-encoded  data,  and  if  that  description  matches the name
+       sought, will use that.  This encoded data can be  set  using  the  "-Q"
+       option of <STRONG>tic</STRONG> or <STRONG>infocmp</STRONG>.
+
+       The  preceding addresses the usual configuration of <EM>ncurses</EM>, which uses
+       terminal descriptions prepared in <EM>terminfo</EM> format.   While  <EM>termcap</EM>  is
+       less  expressive,  <EM>ncurses</EM>  can  also  be  configured  to  read <EM>termcap</EM>
+       descriptions.   In  that  configuration,  it  checks  the  <EM>TERMCAP</EM>  and
+       <EM>TERMPATH</EM>  variables  (for  content and search path, respectively) after
+       the system terminal database.
 
 
 </PRE><H3><a name="h3-Preparing-Descriptions">Preparing Descriptions</a></H3><PRE>
             the next character to be a "-" flag, avoiding interpreting "%-" as
             an operator.
 
-       %c   print <EM>pop()</EM> like %c in <STRONG>printf</STRONG>
+       <STRONG>%c</STRONG>   print <EM>pop()</EM> like %c in <STRONG>printf</STRONG>
 
        <STRONG>%s</STRONG>   print <EM>pop()</EM> like %s in <STRONG>printf</STRONG>
 
                 stack in the <STRONG>tparm</STRONG> function.
 
             <STRONG>o</STRONG>   SVr3.2  curses supported <EM>static</EM> variables.  Those are an array
-                in the <STRONG>TERMINAL</STRONG> structure (declared in <STRONG>term.h</STRONG>), and are zeroed
+                in the <EM>TERMINAL</EM> structure (declared in <STRONG>term.h</STRONG>), and are zeroed
                 automatically when the <STRONG>setupterm</STRONG> function allocates the data.
 
             <STRONG>o</STRONG>   SVr4 curses made no further improvements to the <EM>dynamic/static</EM>
                 <EM>static</EM>  variables.  They are the same.  Like SVr4 curses, XPG4
                 curses does not initialize these explicitly.
 
-            <STRONG>o</STRONG>   Before version 6.3, ncurses stores  both  <EM>dynamic</EM>  and  <EM>static</EM>
+            <STRONG>o</STRONG>   Before version 6.3, <EM>ncurses</EM> stores  both  <EM>dynamic</EM>  and  <EM>static</EM>
                 variables in persistent storage, initialized to zeros.
 
-            <STRONG>o</STRONG>   Beginning  with version 6.3, ncurses stores <EM>static</EM> and <EM>dynamic</EM>
+            <STRONG>o</STRONG>   Beginning  with version 6.3, <EM>ncurses</EM> stores <EM>static</EM> and <EM>dynamic</EM>
                 variables in the same manner as SVr4.
 
-                <STRONG>o</STRONG>   Unlike  other  implementations,  ncurses   zeros   dynamic
+                <STRONG>o</STRONG>   Unlike  other  implementations,  <EM>ncurses</EM>   zeros   dynamic
                     variables before the first <STRONG>%g</STRONG> or <STRONG>%P</STRONG> operator.
 
-                <STRONG>o</STRONG>   Like  SVr2,  the  scope of dynamic variables in ncurses is
+                <STRONG>o</STRONG>   Like  SVr2,  the  scope of dynamic variables in <EM>ncurses</EM> is
                     within the current call to <STRONG>tparm</STRONG>.  Use static variables if
                     persistent storage is needed.
 
        variables are persistent across escape-string evaluations.
 
        Consider  the HP2645, which, to get to row 3 and column 12, needs to be
-       sent \E&amp;a12c03Y padded for 6 milliseconds.  Note that the order of  the
-       rows  and  columns  is  inverted  here, and that the row and column are
-       printed   as   two   digits.     Thus    its    <STRONG>cup</STRONG>    capability    is
-       "cup=6\E&amp;%p2%2dc%p1%2dY".
-
-       The  Microterm ACT-IV needs the current row and column sent preceded by
-       a  <STRONG>^T</STRONG>,  with  the  row   and   column   simply   encoded   in   binary,
-       "cup=^T%p1%c%p2%c".   Terminals  which  use  "%c"  need  to  be able to
-       backspace the cursor (<STRONG>cub1</STRONG>), and to move the cursor up one line on  the
-       screen  (<STRONG>cuu1</STRONG>).   This  is  necessary  because it is not always safe to
-       transmit <STRONG>\n</STRONG> <STRONG>^D</STRONG> and <STRONG>\r</STRONG>, as the system may change or discard them.   (The
-       library  routines  dealing with terminfo set tty modes so that tabs are
-       never expanded, so \t is safe to send.  This turns out to be  essential
-       for the Ann Arbor 4080.)
-
-       A  final example is the LSI ADM-3a, which uses row and column offset by
-       a blank character, thus "cup=\E=%p1%' '%+%c%p2%' '%+%c".  After sending
-       "\E=",  this  pushes  the first parameter, pushes the ASCII value for a
-       space (32), adds them (pushing the sum on the stack in place of the two
-       previous  values) and outputs that value as a character.  Then the same
-       is done for the second parameter.  More complex arithmetic is  possible
-       using the stack.
+       sent \E&amp;a12c03Y padded for 6 milliseconds.  The order of the  rows  and
+       columns  is  inverted  here,  and the row and column are printed as two
+       digits.  The corresponding terminal description is expressed thus:
+              cup=\E&amp;a%p2%dc%p1%dY$&lt;6&gt;,
+
+       The Microterm ACT-IV needs the current row and column sent preceded  by
+       a <STRONG>^T</STRONG>, with the row and column simply encoded in binary,
+              cup=^T%p1%c%p2%c
+
+       Terminals  which  use  "%c"  need  to  be  able to backspace the cursor
+       (<STRONG>cub1</STRONG>), and to move the cursor up one line on the screen (<STRONG>cuu1</STRONG>).   This
+       is necessary because it is not always safe to transmit <STRONG>\n</STRONG> <STRONG>^D</STRONG> and <STRONG>\r</STRONG>, as
+       the system may change or discard them.  (The library  routines  dealing
+       with  terminfo  set tty modes so that tabs are never expanded, so \t is
+       safe to send.  This turns out to be essential for the Ann Arbor 4080.)
+
+       A final example is the LSI ADM-3a, which uses row and column offset  by
+       a blank character, thus
+              cup=\E=%p1%' '%+%c%p2%' '%+%c
+
+       After  sending "\E=", this pushes the first parameter, pushes the ASCII
+       value for a space (32), adds them (pushing the  sum  on  the  stack  in
+       place  of  the  two  previous  values)  and  outputs  that  value  as a
+       character.  Then the same is  done  for  the  second  parameter.   More
+       complex arithmetic is possible using the stack.
 
 
 </PRE><H3><a name="h3-Cursor-Motions">Cursor Motions</a></H3><PRE>
 
        These are the margin-related capabilities:
 
-                <STRONG>Name</STRONG>       <STRONG>Description</STRONG>
-                ------------------------------------------------------
-                smgl       Set left margin at current column
-                smgr       Set right margin at current column
-                smgb       Set bottom margin at current line
-                smgt       Set top margin at current line
-                smgbp      Set bottom margin at line <EM>N</EM>
-                smglp      Set left margin at column <EM>N</EM>
-                smgrp      Set right margin at column <EM>N</EM>
-                smgtp      Set top margin at line <EM>N</EM>
-                smglr      Set both left and right margins to <EM>L</EM> and <EM>R</EM>
-                smgtb      Set both top and bottom margins to <EM>T</EM> and <EM>B</EM>
+                 <STRONG>Name</STRONG>    <STRONG>Description</STRONG>
+                 ---------------------------------------------------
+                 <STRONG>smgl</STRONG>    Set left margin at current column
+                 <STRONG>smgr</STRONG>    Set right margin at current column
+                 <STRONG>smgb</STRONG>    Set bottom margin at current line
+                 <STRONG>smgt</STRONG>    Set top margin at current line
+                 <STRONG>smgbp</STRONG>   Set bottom margin at line <EM>N</EM>
+                 <STRONG>smglp</STRONG>   Set left margin at column <EM>N</EM>
+                 <STRONG>smgrp</STRONG>   Set right margin at column <EM>N</EM>
+                 <STRONG>smgtp</STRONG>   Set top margin at line <EM>N</EM>
+                 <STRONG>smglr</STRONG>   Set both left and right margins to <EM>L</EM> and <EM>R</EM>
+                 <STRONG>smgtb</STRONG>   Set both top and bottom margins to <EM>T</EM> and <EM>B</EM>
 
        When writing an application that uses these  string  capabilities,  the
        pairs  should be first checked to see if each capability in the pair is
        available.)
 
 
-</PRE><H3><a name="h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></H3><PRE>
+</PRE><H3><a name="h3-Insert_Delete-Line-and-Vertical-Motions">Insert/Delete Line and Vertical Motions</a></H3><PRE>
        If  the  terminal  can  open a new blank line before the line where the
        cursor is, this should be given as <STRONG>il1</STRONG>; this  is  done  only  from  the
        first  position  of  a  line.  The cursor must then appear on the newly
        using <STRONG>ri</STRONG> or <STRONG>ind</STRONG> on many terminals without a  true  insert/delete  line,
        and is often faster even on terminals with those features.
 
-       The  boolean  <STRONG>non_dest_scroll_region</STRONG>  should  be  set if each scrolling
+       The  Boolean  <STRONG>non_dest_scroll_region</STRONG>  should  be  set if each scrolling
        window is effectively a view port on a screen-sized  canvas.   To  test
        for  this  capability,  create  a scrolling region in the middle of the
        screen, write something to the bottom line, move the cursor to the  top
        of  the region, and do <STRONG>ri</STRONG> followed by <STRONG>dl1</STRONG> or <STRONG>ind</STRONG>.  If the data scrolled
        off the bottom of the region by the <STRONG>ri</STRONG> re-appears,  then  scrolling  is
-       non-destructive.   System  V  and XSI Curses expect that <STRONG>ind</STRONG>, <STRONG>ri</STRONG>, <STRONG>indn</STRONG>,
+       non-destructive.  System V and X/Open Curses expect that <STRONG>ind</STRONG>, <STRONG>ri</STRONG>, <STRONG>indn</STRONG>,
        and  <STRONG>rin</STRONG>  will  simulate  destructive  scrolling;  their  documentation
        cautions  you  not  to  define  <STRONG>csr</STRONG>  unless  this is true.  This <STRONG>curses</STRONG>
        implementation is more  liberal  and  will  do  explicit  erases  after
 
 </PRE><H3><a name="h3-Insert_Delete-Character">Insert/Delete Character</a></H3><PRE>
        There are two basic kinds of  intelligent  terminals  with  respect  to
-       insert/delete  character  which  can  be described using <EM>terminfo.</EM>  The
+       insert/delete  character  which  can  be described using <EM>terminfo</EM>.  The
        most  common  insert/delete  character  operations  affect   only   the
        characters  on the current line and shift characters off the end of the
        line rigidly.  Other terminals, such as the Concept 100 and the  Perkin
        works.
 
        Finally,  you  can  specify <STRONG>dch1</STRONG> to delete a single character, <STRONG>dch</STRONG> with
-       one parameter, <EM>n</EM>, to delete <EM>n</EM> <EM>characters,</EM> and  delete  mode  by  giving
-       <STRONG>smdc</STRONG>  and  <STRONG>rmdc</STRONG>  to  enter  and exit delete mode (any mode the terminal
-       needs to be placed in for <STRONG>dch1</STRONG> to work).
+       one parameter, <EM>n</EM>, to delete <EM>n</EM>characters, and delete mode by giving <STRONG>smdc</STRONG>
+       and  <STRONG>rmdc</STRONG> to enter and exit delete mode (any mode the terminal needs to
+       be placed in for <STRONG>dch1</STRONG> to work).
 
        A command to erase <EM>n</EM> characters  (equivalent  to  outputting  <EM>n</EM>  blanks
        without moving the cursor) can be given as <STRONG>ech</STRONG> with one parameter.
 
 
-</PRE><H3><a name="h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></H3><PRE>
+</PRE><H3><a name="h3-Highlighting_Underlining_and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></H3><PRE>
        If your terminal has one or more kinds of display attributes, these can
        be represented in a number of different ways.  You  should  choose  one
        display  form  as  <EM>standout</EM>  <EM>mode</EM>,  representing a good, high contrast,
 
        If there is a sequence to set arbitrary  combinations  of  modes,  this
        should  be  given  as  <STRONG>sgr</STRONG> (set attributes), taking 9 parameters.  Each
-       parameter is either 0 or nonzero, as the corresponding attribute is  on
-       or  off.  The 9 parameters are, in order: standout, underline, reverse,
-       blink, dim, bold, blank, protect, alternate  character  set.   Not  all
-       modes  need  be  supported  by  <STRONG>sgr</STRONG>, only those for which corresponding
-       separate attribute commands exist.
+       parameter is either zero (0) or nonzero, as the corresponding attribute
+       is  on  or  off.   The 9 parameters are, in order: standout, underline,
+       reverse, blink, dim, bold, blank,  protect,  alternate  character  set.
+       Not  all  modes  need  be  supported  by  <STRONG>sgr</STRONG>,  only  those  for  which
+       corresponding separate attribute commands exist.
 
        For example, the DEC vt220 supports most of the modes:
 
-               <STRONG>tparm</STRONG> <STRONG>parameter</STRONG>      <STRONG>attribute</STRONG>        <STRONG>escape</STRONG> <STRONG>sequence</STRONG>
-
-               none                 none             \E[0m
-               p1                   standout         \E[0;1;7m
-               p2                   underline        \E[0;4m
-               p3                   reverse          \E[0;7m
-               p4                   blink            \E[0;5m
-               p5                   dim              not available
-               p6                   bold             \E[0;1m
-               p7                   invis            \E[0;8m
-               p8                   protect          not used
-               p9                   altcharset       ^O (off) ^N (on)
+                   <STRONG>tparm</STRONG> <STRONG>Parameter</STRONG>   <STRONG>Attribute</STRONG>    <STRONG>Escape</STRONG> <STRONG>Sequence</STRONG>
+                   ------------------------------------------------
+                   none              none         \E[0m
+                   p1                standout     \E[0;1;7m
+                   p2                underline    \E[0;4m
+                   p3                reverse      \E[0;7m
+                   p4                blink        \E[0;5m
+                   p5                dim          not available
+                   p6                bold         \E[0;1m
+                   p7                invis        \E[0;8m
+                   p8                protect      not used
+                   p9                altcharset   ^O (off) ^N (on)
 
        We begin each escape sequence by turning off any existing modes,  since
        there  is  no quick way to determine whether they are active.  Standout
 
        Writing out the above sequences, along with their dependencies yields
 
-            <STRONG>sequence</STRONG>             <STRONG>when</STRONG> <STRONG>to</STRONG> <STRONG>output</STRONG>      <STRONG>terminfo</STRONG> <STRONG>translation</STRONG>
-
-            \E[0                 always              \E[0
-            ;1                   if p1 or p6         %?%p1%p6%|%t;1%;
-            ;4                   if p2               %?%p2%|%t;4%;
-            ;5                   if p4               %?%p4%|%t;5%;
-            ;7                   if p1 or p3         %?%p1%p3%|%t;7%;
-            ;8                   if p7               %?%p7%|%t;8%;
-            m                    always              m
-            ^N or ^O             if p9 ^N, else ^O   %?%p9%t^N%e^O%;
+                 <STRONG>Sequence</STRONG>   <STRONG>When</STRONG> <STRONG>to</STRONG> <STRONG>Output</STRONG>      <STRONG>terminfo</STRONG> <STRONG>Translation</STRONG>
+                 ----------------------------------------------------
+                 \E[0       always              \E[0
+                 ;1         if p1 or p6         %?%p1%p6%|%t;1%;
+                 ;4         if p2               %?%p2%|%t;4%;
+                 ;5         if p4               %?%p4%|%t;5%;
+                 ;7         if p1 or p3         %?%p1%p3%|%t;7%;
+                 ;8         if p7               %?%p7%|%t;8%;
+                 m          always              m
+                 ^N or ^O   if p9 ^N, else ^O   %?%p9%t^N%e^O%;
 
        Putting this all together into the sgr sequence gives:
 
 
        A command to erase or blank the status line may be specified as <STRONG>dsl</STRONG>.
 
-       The  boolean  capability  <STRONG>eslok</STRONG>  specifies that escape sequences, tabs,
+       The  Boolean  capability  <STRONG>eslok</STRONG>  specifies that escape sequences, tabs,
        etc., work ordinarily in the status line.
 
-       The <STRONG>ncurses</STRONG> implementation does not yet use any of these  capabilities.
+       The <EM>ncurses</EM> implementation does not yet use any of these  capabilities.
        They are documented here in case they ever become important.
 
 
        4410v1 added.  This alternate character set may  be  specified  by  the
        <STRONG>acsc</STRONG> capability.
 
-         <STRONG>Glyph</STRONG>                       <STRONG>ACS</STRONG>            <STRONG>Ascii</STRONG>     <STRONG>acsc</STRONG>     <STRONG>acsc</STRONG>
-         <STRONG>Name</STRONG>                        <STRONG>Name</STRONG>           <STRONG>Default</STRONG>   <STRONG>Char</STRONG>     <STRONG>Value</STRONG>
-         --------------------------------------------------------------------
-         arrow pointing right        ACS_RARROW     &gt;         +        0x2b
-         arrow pointing left         ACS_LARROW     &lt;         ,        0x2c
-
-         arrow pointing up           ACS_UARROW     ^         -        0x2d
-         arrow pointing down         ACS_DARROW     v         .        0x2e
-         solid square block          ACS_BLOCK      #         0        0x30
-         diamond                     ACS_DIAMOND    +         `        0x60
-         checker board (stipple)     ACS_CKBOARD    :         a        0x61
-         degree symbol               ACS_DEGREE     \         f        0x66
-         plus/minus                  ACS_PLMINUS    #         g        0x67
-         board of squares            ACS_BOARD      #         h        0x68
-         lantern symbol              ACS_LANTERN    #         i        0x69
-         lower right corner          ACS_LRCORNER   +         j        0x6a
-         upper right corner          ACS_URCORNER   +         k        0x6b
-         upper left corner           ACS_ULCORNER   +         l        0x6c
-         lower left corner           ACS_LLCORNER   +         m        0x6d
-         large plus or crossover     ACS_PLUS       +         n        0x6e
-         scan line 1                 ACS_S1         ~         o        0x6f
-         scan line 3                 ACS_S3         -         p        0x70
-         horizontal line             ACS_HLINE      -         q        0x71
-         scan line 7                 ACS_S7         -         r        0x72
-         scan line 9                 ACS_S9         _         s        0x73
-         tee pointing right          ACS_LTEE       +         t        0x74
-         tee pointing left           ACS_RTEE       +         u        0x75
-         tee pointing up             ACS_BTEE       +         v        0x76
-         tee pointing down           ACS_TTEE       +         w        0x77
-         vertical line               ACS_VLINE      |         x        0x78
-         less-than-or-equal-to       ACS_LEQUAL     &lt;         y        0x79
-         greater-than-or-equal-to    ACS_GEQUAL     &gt;         z        0x7a
-         greek pi                    ACS_PI         *         {        0x7b
-         not-equal                   ACS_NEQUAL     !         |        0x7c
-         UK pound sign               ACS_STERLING   f         }        0x7d
-         bullet                      ACS_BULLET     o         ~        0x7e
+                          <STRONG>acsc</STRONG>
+       <STRONG>ACS</STRONG> <STRONG>Name</STRONG>      <STRONG>Value</STRONG>   <STRONG>Symbol</STRONG>   <STRONG>ASCII</STRONG> <STRONG>Fallback</STRONG> <STRONG>/</STRONG> <STRONG>Glyph</STRONG> <STRONG>Name</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>ACS_RARROW</STRONG>    0x2b      +      <STRONG>&gt;</STRONG>  arrow pointing right
+       <STRONG>ACS_LARROW</STRONG>    0x2c      ,      <STRONG>&lt;</STRONG>  arrow pointing left
+       <STRONG>ACS_UARROW</STRONG>    0x2d      -      <STRONG>^</STRONG>  arrow pointing up
+       <STRONG>ACS_DARROW</STRONG>    0x2e      .      <STRONG>v</STRONG>  arrow pointing down
+       <STRONG>ACS_BLOCK</STRONG>     0x30      0      <STRONG>#</STRONG>  solid square block
+       <STRONG>ACS_DIAMOND</STRONG>   0x60      `      <STRONG>+</STRONG>  diamond
+       <STRONG>ACS_CKBOARD</STRONG>   0x61      a      <STRONG>:</STRONG>  checker board (stipple)
+       <STRONG>ACS_DEGREE</STRONG>    0x66      f      <STRONG>\</STRONG>  degree symbol
+       <STRONG>ACS_PLMINUS</STRONG>   0x67      g      <STRONG>#</STRONG>  plus/minus
+       <STRONG>ACS_BOARD</STRONG>     0x68      h      <STRONG>#</STRONG>  board of squares
+       <STRONG>ACS_LANTERN</STRONG>   0x69      i      <STRONG>#</STRONG>  lantern symbol
+       <STRONG>ACS_LRCORNER</STRONG>  0x6a      j      <STRONG>+</STRONG>  lower right corner
+
+       <STRONG>ACS_URCORNER</STRONG>  0x6b      k      <STRONG>+</STRONG>  upper right corner
+       <STRONG>ACS_ULCORNER</STRONG>  0x6c      l      <STRONG>+</STRONG>  upper left corner
+       <STRONG>ACS_LLCORNER</STRONG>  0x6d      m      <STRONG>+</STRONG>  lower left corner
+       <STRONG>ACS_PLUS</STRONG>      0x6e      n      <STRONG>+</STRONG>  large plus or crossover
+       <STRONG>ACS_S1</STRONG>        0x6f      o      <STRONG>~</STRONG>  scan line 1
+       <STRONG>ACS_S3</STRONG>        0x70      p      <STRONG>-</STRONG>  scan line 3
+       <STRONG>ACS_HLINE</STRONG>     0x71      q      <STRONG>-</STRONG>  horizontal line
+       <STRONG>ACS_S7</STRONG>        0x72      r      <STRONG>-</STRONG>  scan line 7
+       <STRONG>ACS_S9</STRONG>        0x73      s      <STRONG>_</STRONG>  scan line 9
+       <STRONG>ACS_LTEE</STRONG>      0x74      t      <STRONG>+</STRONG>  tee pointing right
+       <STRONG>ACS_RTEE</STRONG>      0x75      u      <STRONG>+</STRONG>  tee pointing left
+       <STRONG>ACS_BTEE</STRONG>      0x76      v      <STRONG>+</STRONG>  tee pointing up
+       <STRONG>ACS_TTEE</STRONG>      0x77      w      <STRONG>+</STRONG>  tee pointing down
+       <STRONG>ACS_VLINE</STRONG>     0x78      x      <STRONG>|</STRONG>  vertical line
+       <STRONG>ACS_LEQUAL</STRONG>    0x79      y      <STRONG>&lt;</STRONG>  less-than-or-equal-to
+       <STRONG>ACS_GEQUAL</STRONG>    0x7a      z      <STRONG>&gt;</STRONG>  greater-than-or-equal-to
+       <STRONG>ACS_PI</STRONG>        0x7b      {      <STRONG>*</STRONG>  greek pi
+       <STRONG>ACS_NEQUAL</STRONG>    0x7c      |      <STRONG>!</STRONG>  not-equal
+       <STRONG>ACS_STERLING</STRONG>  0x7d      }      <STRONG>f</STRONG>  UK pound sign
+       <STRONG>ACS_BULLET</STRONG>    0x7e      ~      <STRONG>o</STRONG>  bullet
 
        A few notes apply to the table itself:
 
 
        <STRONG>o</STRONG>   Tektronix-like terminals have a predefined set of <EM>N</EM> colors (where <EM>N</EM>
            is usually 8), and can set character-cell foreground and background
-           characters independently, mixing them into <EM>N</EM> * <EM>N</EM> color-pairs.
+           characters independently, mixing them into <EM>N</EM> * <EM>N</EM> color pairs.
 
        <STRONG>o</STRONG>   On  HP-like  terminals,  the  user  must  set  each  color  pair up
            separately  (foreground  and  background  are   not   independently
-           settable).   Up  to  <EM>M</EM> color-pairs may be set up from 2*<EM>M</EM> different
+           settable).   Up  to  <EM>M</EM> color pairs may be set up from 2*<EM>M</EM> different
            colors.  ANSI-compatible terminals are Tektronix-like.
 
        Some basic color capabilities are independent of the color method.  The
        numeric  capabilities  <STRONG>colors</STRONG>  and <STRONG>pairs</STRONG> specify the maximum numbers of
-       colors and color-pairs that can be displayed  simultaneously.   The  <STRONG>op</STRONG>
+       colors and color pairs that can be displayed  simultaneously.   The  <STRONG>op</STRONG>
        (original pair) string resets foreground and background colors to their
        default values for the terminal.  The <STRONG>oc</STRONG> string resets  all  colors  or
-       color-pairs  to  their default values for the terminal.  Some terminals
+       color  pairs  to their default values for the terminal.  Some terminals
        (including many PC terminal emulators)  erase  screen  areas  with  the
        current  background  color rather than the power-up default background;
-       these should have the boolean capability <STRONG>bce</STRONG>.
+       these should have the Boolean capability <STRONG>bce</STRONG>.
 
        While the  curses  library  works  with  <EM>color</EM>  <EM>pairs</EM>  (reflecting  the
        inability  of  some  devices  to  set  foreground and background colors
        The  <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>  and  <STRONG>setf</STRONG>/<STRONG>setb</STRONG>  capabilities  take  a  single numeric
        argument each.  Argument values 0-7 of <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> are portably defined
        as  follows (the middle column is the symbolic #define available in the
-       header for the <STRONG>curses</STRONG> or <STRONG>ncurses</STRONG> libraries).  The terminal hardware  is
+       header for the <STRONG>curses</STRONG> or <EM>ncurses</EM> libraries).  The terminal hardware  is
        free  to  map  these  as  it  likes, but the RGB values indicate normal
        locations in color space.
 
-                    <STRONG>Color</STRONG>       <STRONG>#define</STRONG>       <STRONG>Value</STRONG>       <STRONG>RGB</STRONG>
-                    black     <STRONG>COLOR_BLACK</STRONG>       0     0, 0, 0
-                    red       <STRONG>COLOR_RED</STRONG>         1     max,0,0
-                    green     <STRONG>COLOR_GREEN</STRONG>       2     0,max,0
-                    yellow    <STRONG>COLOR_YELLOW</STRONG>      3     max,max,0
-                    blue      <STRONG>COLOR_BLUE</STRONG>        4     0,0,max
-                    magenta   <STRONG>COLOR_MAGENTA</STRONG>     5     max,0,max
-                    cyan      <STRONG>COLOR_CYAN</STRONG>        6     0,max,max
-                    white     <STRONG>COLOR_WHITE</STRONG>       7     max,max,max
+                    <STRONG>Color</STRONG>      <STRONG>#define</STRONG>       <STRONG>Value</STRONG>        <STRONG>RGB</STRONG>
+                   ------------------------------------------------
+                   black     <STRONG>COLOR_BLACK</STRONG>       0     0,   0,   0
+                   red       <STRONG>COLOR_RED</STRONG>         1     max, 0,   0
+                   green     <STRONG>COLOR_GREEN</STRONG>       2     0,   max, 0
+                   yellow    <STRONG>COLOR_YELLOW</STRONG>      3     max, max, 0
+                   blue      <STRONG>COLOR_BLUE</STRONG>        4     0,   0,   max
+                   magenta   <STRONG>COLOR_MAGENTA</STRONG>     5     max, 0,   max
+                   cyan      <STRONG>COLOR_CYAN</STRONG>        6     0,   max, max
+                   white     <STRONG>COLOR_WHITE</STRONG>       7     max, max, max
 
        The argument values of <STRONG>setf</STRONG>/<STRONG>setb</STRONG> historically correspond to a different
        mapping, i.e.,
 
-                    <STRONG>Color</STRONG>       <STRONG>#define</STRONG>       <STRONG>Value</STRONG>       <STRONG>RGB</STRONG>
-                    black     <STRONG>COLOR_BLACK</STRONG>       0     0, 0, 0
-                    blue      <STRONG>COLOR_BLUE</STRONG>        1     0,0,max
-                    green     <STRONG>COLOR_GREEN</STRONG>       2     0,max,0
-                    cyan      <STRONG>COLOR_CYAN</STRONG>        3     0,max,max
-                    red       <STRONG>COLOR_RED</STRONG>         4     max,0,0
-                    magenta   <STRONG>COLOR_MAGENTA</STRONG>     5     max,0,max
-                    yellow    <STRONG>COLOR_YELLOW</STRONG>      6     max,max,0
-                    white     <STRONG>COLOR_WHITE</STRONG>       7     max,max,max
+                    <STRONG>Color</STRONG>      <STRONG>#define</STRONG>       <STRONG>Value</STRONG>        <STRONG>RGB</STRONG>
+                   ------------------------------------------------
+                   black     <STRONG>COLOR_BLACK</STRONG>       0     0,   0,   0
+                   blue      <STRONG>COLOR_BLUE</STRONG>        1     0,   0,   max
+                   green     <STRONG>COLOR_GREEN</STRONG>       2     0,   max, 0
+                   cyan      <STRONG>COLOR_CYAN</STRONG>        3     0,   max, max
+                   red       <STRONG>COLOR_RED</STRONG>         4     max, 0,   0
+                   magenta   <STRONG>COLOR_MAGENTA</STRONG>     5     max, 0,   max
+                   yellow    <STRONG>COLOR_YELLOW</STRONG>      6     max, max, 0
+                   white     <STRONG>COLOR_WHITE</STRONG>       7     max, max, max
 
        It  is  important  to  not  confuse the two sets of color capabilities;
        otherwise red/blue will be interchanged on the display.
 
-       On an HP-like terminal, use <STRONG>scp</STRONG> with a color-pair number  parameter  to
+       On an HP-like terminal, use <STRONG>scp</STRONG> with a color pair number  parameter  to
        set which color pair is current.
 
        Some terminals allow the <EM>color</EM> <EM>values</EM> to be modified:
            indicate that colors can be modified.  If so, the <STRONG>initc</STRONG>  capability
            will take a color number (0 to <STRONG>colors</STRONG> - 1)and three more parameters
            which describe the color.  These three parameters default to  being
-           interpreted  as  RGB  (Red,  Green,  Blue)  values.  If the boolean
+           interpreted  as  RGB  (Red,  Green,  Blue)  values.  If the Boolean
            capability <STRONG>hls</STRONG> is present, they are instead as HLS (Hue, Lightness,
            Saturation) indices.  The ranges are terminal-dependent.
 
        <STRONG>o</STRONG>   On  an HP-like terminal, <STRONG>initp</STRONG> may give a capability for changing a
-           color-pair value.  It will  take  seven  parameters;  a  color-pair
+           color pair value.  It will take  seven  parameters;  a  color  pair
            number  (0  to  <STRONG>max_pairs</STRONG>  -  1),  and two triples describing first
            background and then foreground colors.  These  parameters  must  be
            (Red,  Green,  Blue)  or  (Hue, Lightness, Saturation) depending on
            <STRONG>hls</STRONG>.
 
        On some color terminals,  colors  collide  with  highlights.   You  can
-       register  these collisions with the <STRONG>ncv</STRONG> capability.  This is a bit-mask
+       register  these collisions with the <STRONG>ncv</STRONG> capability.  This is a bit mask
        of  attributes  not  to  be  used  when  colors   are   enabled.    The
        correspondence with the attributes understood by <STRONG>curses</STRONG> is as follows:
 
-                  <STRONG>Attribute</STRONG>              <STRONG>Bit</STRONG>   <STRONG>Decimal</STRONG>      <STRONG>Set</STRONG> <STRONG>by</STRONG>
-                  A_STANDOUT             0     1            sgr
-                  A_UNDERLINE            1     2            sgr
-                  A_REVERSE              2     4            sgr
-                  A_BLINK                3     8            sgr
-                  A_DIM                  4     16           sgr
-                  A_BOLD                 5     32           sgr
-                  A_INVIS                6     64           sgr
-                  A_PROTECT              7     128          sgr
-                  A_ALTCHARSET           8     256          sgr
-                  A_HORIZONTAL           9     512          sgr1
-                  A_LEFT                 10    1024         sgr1
-                  A_LOW                  11    2048         sgr1
-                  A_RIGHT                12    4096         sgr1
-                  A_TOP                  13    8192         sgr1
-                  A_VERTICAL             14    16384        sgr1
-                  A_ITALIC               15    32768        sitm
+                         <STRONG>Attribute</STRONG>     <STRONG>Bit</STRONG>   <STRONG>Decimal</STRONG>   <STRONG>Set</STRONG> <STRONG>by</STRONG>
+                        --------------------------------------
+                        <STRONG>A_STANDOUT</STRONG>      0         1    <STRONG>sgr</STRONG>
+                        <STRONG>A_UNDERLINE</STRONG>     1         2    <STRONG>sgr</STRONG>
+                        <STRONG>A_REVERSE</STRONG>       2         4    <STRONG>sgr</STRONG>
+                        <STRONG>A_BLINK</STRONG>         3         8    <STRONG>sgr</STRONG>
+                        <STRONG>A_DIM</STRONG>           4        16    <STRONG>sgr</STRONG>
+                        <STRONG>A_BOLD</STRONG>          5        32    <STRONG>sgr</STRONG>
+                        <STRONG>A_INVIS</STRONG>         6        64    <STRONG>sgr</STRONG>
+                        <STRONG>A_PROTECT</STRONG>       7       128    <STRONG>sgr</STRONG>
+                        <STRONG>A_ALTCHARSET</STRONG>    8       256    <STRONG>sgr</STRONG>
+                        <STRONG>A_HORIZONTAL</STRONG>    9       512    <STRONG>sgr1</STRONG>
+                        <STRONG>A_LEFT</STRONG>         10      1024    <STRONG>sgr1</STRONG>
+                        <STRONG>A_LOW</STRONG>          11      2048    <STRONG>sgr1</STRONG>
+                        <STRONG>A_RIGHT</STRONG>        12      4096    <STRONG>sgr1</STRONG>
+                        <STRONG>A_TOP</STRONG>          13      8192    <STRONG>sgr1</STRONG>
+                        <STRONG>A_VERTICAL</STRONG>     14     16384    <STRONG>sgr1</STRONG>
+                        <STRONG>A_ITALIC</STRONG>       15     32768    <STRONG>sitm</STRONG>
 
        For  example, on many IBM PC consoles, the underline attribute collides
        with the foreground color blue and is  not  available  in  color  mode.
        These should have an <STRONG>ncv</STRONG> capability of 2.
 
-       SVr4  curses does nothing with <STRONG>ncv</STRONG>, ncurses recognizes it and optimizes
+       SVr4  curses does nothing with <STRONG>ncv</STRONG>, <EM>ncurses</EM> recognizes it and optimizes
        the output in favor of colors.
 
 
        If the terminal requires other than a null (zero) character as  a  pad,
        then  this  can  be  given as pad.  Only the first character of the pad
        string is used.  If the terminal does not have a pad character, specify
-       npc.   Note that ncurses implements the termcap-compatible <STRONG>PC</STRONG> variable;
+       npc.   Note that <EM>ncurses</EM> implements the termcap-compatible <STRONG>PC</STRONG> variable;
        though the application may set this value to  something  other  than  a
-       null,  ncurses will test <STRONG>npc</STRONG> first and use napms if the terminal has no
+       null,  <EM>ncurses</EM> will test <STRONG>npc</STRONG> first and use napms if the terminal has no
        pad character.
 
        If the terminal can move up or down half a line, this can be  indicated
        4025, this can be indicated with <STRONG>cmdch</STRONG>.  A prototype command  character
        is  chosen  which is used in all capabilities.  This character is given
        in the <STRONG>cmdch</STRONG> capability to identify it.  The  following  convention  is
-       supported on some UNIX systems: The environment is to be searched for a
+       supported on some Unix systems: The environment is to be searched for a
        <STRONG>CC</STRONG> variable, and if found, all occurrences of the  prototype  character
        are replaced with the character in the environment variable.
 
        of <STRONG>lm</STRONG>#0 indicates that the number of lines is not fixed, but that there
        is still more memory than fits on the screen.
 
-       If  the terminal is one of those supported by the UNIX virtual terminal
+       If  the terminal is one of those supported by the Unix virtual terminal
        protocol, the terminal number can be given as <STRONG>vt</STRONG>.
 
        Media copy strings which control an auxiliary printer connected to  the
        while an <STRONG>mc5p</STRONG> is in effect.
 
 
-</PRE><H3><a name="h3-Glitches-and-Braindamage">Glitches and Braindamage</a></H3><PRE>
+</PRE><H3><a name="h3-Glitches-and-Brain-Damage">Glitches and Brain Damage</a></H3><PRE>
        Hazeltine  terminals, which do not allow "~" characters to be displayed
        should indicate <STRONG>hz</STRONG>.
 
        teleray_glitch.   This  glitch  is  also  taken  to mean that it is not
        possible to position the cursor on top of a  "magic  cookie",  that  to
        erase  standout  mode  it is instead necessary to use delete and insert
-       line.  The ncurses implementation ignores this glitch.
+       line.  The <EM>ncurses</EM> implementation ignores this glitch.
 
        The Beehive Superbee, which is unable to correctly transmit the  escape
        or  control/C  characters,  has <STRONG>xsb</STRONG>, indicating that the f1 key is used
        safe length for a termcap entry 1k-1 (1023) bytes.  Depending  on  what
        the  application  and the termcap library being used does, and where in
        the termcap file the terminal type that <STRONG>tgetent</STRONG> is  searching  for  is,
-       several bad things can happen.
+       several bad things can happen:
+
+       <STRONG>o</STRONG>   some termcap libraries print a warning message,
+
+       <STRONG>o</STRONG>   some exit if they find an entry that's longer than 1023 bytes,
+
+       <STRONG>o</STRONG>   some neither exit nor warn, doing nothing useful, and
+
+       <STRONG>o</STRONG>   some simply truncate the entries to 1023 bytes.
 
-       Some  termcap libraries print a warning message or exit if they find an
-       entry that's longer than 1023 bytes; others do not; others truncate the
-       entries  to  1023  bytes.  Some application programs allocate more than
-       the recommended 1K for the termcap entry; others do not.
+       Some application programs allocate more than the recommended 1K for the
+       termcap entry; others do not.
 
        Each termcap entry has two important sizes associated with  it:  before
        "tc"  expansion, and after "tc" expansion.  "tc" is the capability that
        will return incorrect data for the terminal.
 
        The  "after  tc  expansion"  length  will  have a similar effect to the
-       above, but only for people who actually set TERM to that terminal type,
+       above, but only for people who actually set <EM>TERM</EM> to that terminal type,
        since  <STRONG>tgetent</STRONG>  only  does "tc" expansion once it is found the terminal
        type it was looking for, not while searching.
 
        on  various  combinations of termcap libraries and applications, a core
        dump, warnings, or incorrect operation.  If it is too long even  before
        "tc"  expansion,  it will have this effect even for users of some other
-       terminal types and users whose TERM variable does not  have  a  termcap
+       terminal types and users whose <EM>TERM</EM> variable does not  have  a  termcap
        entry.
 
-       When  in  -C (translate to termcap) mode, the <STRONG>ncurses</STRONG> implementation of
+       When  in  -C (translate to termcap) mode, the <EM>ncurses</EM> implementation of
        <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> issues warning messages when the pre-tc  length  of  a  termcap
        translation  is  too  long.  The -c (check) option also checks resolved
        (after tc expansion) lengths.
 
 
-</PRE><H3><a name="h3-Binary-Compatibility">Binary Compatibility</a></H3><PRE>
-       It is not wise to count  on  portability  of  binary  terminfo  entries
-       between  commercial  UNIX  versions.   The problem is that there are at
-       least two versions of terminfo (under HP-UX  and  AIX)  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.
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+       <EM>/usr/share/terminfo</EM>
+              compiled terminal description database directory
 
 
 </PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
-       Searching    for   terminal   descriptions   in   <STRONG>$HOME/.terminfo</STRONG>   and
-       TERMINFO_DIRS is not supported by older implementations.
+       Searching   for   terminal   descriptions   in   <EM>$HOME/.terminfo</EM>    and
+       <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> is not supported by older implementations.
 
-       Some SVr4 <STRONG>curses</STRONG> implementations, and all  previous  to  SVr4,  do  not
+       Some  SVr4  <STRONG>curses</STRONG>  implementations,  and  all previous to SVr4, do not
        interpret the %A and %O operators in parameter strings.
 
-       SVr4/XPG4  do  not  specify  whether <STRONG>msgr</STRONG> licenses movement while in an
-       alternate-character-set mode (such modes may, among other  things,  map
-       CR  and  NL  to  characters  that  do  not trigger local motions).  The
-       <STRONG>ncurses</STRONG> implementation ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG>  mode.   This  raises
+       SVr4/XPG4 do not specify whether <STRONG>msgr</STRONG> licenses  movement  while  in  an
+       alternate-character-set  mode  (such modes may, among other things, map
+       CR and NL to characters  that  do  not  trigger  local  motions).   The
+       <EM>ncurses</EM>  implementation  ignores  <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode.  This raises
        the  possibility  that  an  XPG4  implementation  making  the  opposite
-       interpretation may need terminfo entries made for <STRONG>ncurses</STRONG> to have  <STRONG>msgr</STRONG>
+       interpretation  may need terminfo entries made for <EM>ncurses</EM> to have <STRONG>msgr</STRONG>
        turned off.
 
-       The <STRONG>ncurses</STRONG> library handles insert-character and insert-character modes
-       in a slightly non-standard way to get better  update  efficiency.   See
+       The <EM>ncurses</EM> library handles insert-character and insert-character modes
+       in  a  slightly  non-standard way to get better update efficiency.  See
        the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG> subsection above.
 
-       The  parameter  substitutions  for  <STRONG>set_clock</STRONG> and <STRONG>display_clock</STRONG> are not
-       documented in SVr4 or the XSI Curses standard.  They are  deduced  from
-       the documentation for the AT&amp;T 505 terminal.
+       The parameter substitutions for <STRONG>set_clock</STRONG>  and  <STRONG>display_clock</STRONG>  are  not
+       documented  in  SVr4  or  X/Open  Curses.   They  are  deduced from the
+       documentation for the AT&amp;T 505 terminal.
 
-       Be  careful  assigning the <STRONG>kmous</STRONG> capability.  The <STRONG>ncurses</STRONG> library wants
-       to interpret it as <STRONG>KEY_MOUSE</STRONG>, for use by terminals and  emulators  like
-       xterm  that can return mouse-tracking information in the keyboard-input
+       Be careful assigning the <STRONG>kmous</STRONG> capability.  The <EM>ncurses</EM>  library  wants
+       to  interpret  it as <STRONG>KEY_MOUSE</STRONG>, for use by terminals and emulators like
+       xterm that can return mouse-tracking information in the  keyboard-input
        stream.
 
-       X/Open Curses does not mention  italics.   Portable  applications  must
-       assume  that  numeric  capabilities  are  signed  16-bit  values.  This
-       includes the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv) capability.   The  32768  mask  value
-       used  for  italics with ncv can be confused with an absent or cancelled
-       ncv.  If italics should work with colors, then the ncv  value  must  be
+       X/Open  Curses  does  not  mention italics.  Portable applications must
+       assume that  numeric  capabilities  are  signed  16-bit  values.   This
+       includes  the  <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM>  (<STRONG>ncv</STRONG>)  capability.  The 32768 mask value
+       used for italics with <STRONG>ncv</STRONG> can be confused with an absent  or  cancelled
+       <STRONG>ncv</STRONG>.   If  italics  should work with colors, then the <STRONG>ncv</STRONG> value must be
        specified, even if it is zero.
 
-       Different  commercial  ports  of  terminfo and curses support different
-       subsets of the XSI  Curses  standard  and  (in  some  cases)  different
-       extension sets.  Here is a summary, accurate as of October 1995:
+       Different commercial ports of <EM>terminfo</EM>  and  <EM>curses</EM>  support  different
+       subsets  of  X/Open  Curses  and  (in some cases) different extensions.
+       Here is a summary,  accurate  as  of  October  1995,  after  which  the
+       commercial Unix market contracted and lost diversity.
 
-       <STRONG>o</STRONG>   <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capabilities.
+       <STRONG>o</STRONG>   SVr4, Solaris, and <EM>ncurses</EM> support all SVr4 capabilities.
 
-       <STRONG>o</STRONG>   <STRONG>SGI</STRONG> -- Supports the SVr4 set, adds one undocumented extended string
-           capability (<STRONG>set_pglen</STRONG>).
+       <STRONG>o</STRONG>   IRIX  supports  the  SVr4  set  and  adds one undocumented extended
+           string capability (<STRONG>set_pglen</STRONG>).
 
-       <STRONG>o</STRONG>   <STRONG>SVr1,</STRONG> <STRONG>Ultrix</STRONG> -- These  support  a  restricted  subset  of  terminfo
-           capabilities.   The  booleans  end with <STRONG>xon_xoff</STRONG>; the numerics with
+       <STRONG>o</STRONG>   SVr1  and  Ultrix  support  a   restricted   subset   of   <EM>terminfo</EM>
+           capabilities.   The  Booleans  end with <STRONG>xon_xoff</STRONG>; the numerics with
            <STRONG>width_status_line</STRONG>; and the strings with <STRONG>prtr_non</STRONG>.
 
-       <STRONG>o</STRONG>   <STRONG>HP/UX</STRONG> -- Supports the  SVr1  subset,  plus  the  SVr[234]  numerics
+       <STRONG>o</STRONG>   HP/UX  supports  the  SVr1  subset,  plus  the  SVr[234]   numerics
            <STRONG>num_labels</STRONG>,   <STRONG>label_height</STRONG>,  <STRONG>label_width</STRONG>,  plus  function  keys  11
-           through 63, plus <STRONG>plab_norm</STRONG>,  <STRONG>label_on</STRONG>,  and  <STRONG>label_off</STRONG>,  plus  some
-           incompatible extensions in the string table.
+           through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>, and <STRONG>label_off</STRONG>, plus a  number
+           of incompatible string table extensions.
 
-       <STRONG>o</STRONG>   <STRONG>AIX</STRONG>  -- Supports the SVr1 subset, plus function keys 11 through 63,
+       <STRONG>o</STRONG>   AIX  supports  the  SVr1  subset, plus function keys 11 through 63,
            plus a number of incompatible string table extensions.
 
-       <STRONG>o</STRONG>   <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions.
+       <STRONG>o</STRONG>   OSF/1 supports both the SVr4 set and the AIX extensions.
 
 
-</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       /usr/share/terminfo/?/*  files containing terminal descriptions
-
-
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,    <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>,    <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>,    <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,     <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,     <STRONG>printf(3)</STRONG>,     <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>.     <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.
-       <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       Do not count on  compiled  (binary)  <EM>terminfo</EM>  entries  being  portable
+       between  commercial  Unix  systems.   At  least  two implementations of
+       <EM>terminfo</EM> (those of HP-UX and AIX) diverged from those of other System V
+       Unices  after  SVr1,  adding extension capabilities to the string table
+       that (in the binary format) collide with subsequent System V and X/Open
+       Curses extensions.
 
 
 </PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        by Pavel Curtis.
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,    <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>,    <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>,    <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,     <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,  <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,  <STRONG>printf(3)</STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>,
+       <STRONG><A HREF="term.5.html">term(5)</A></STRONG>, <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
+
 
-                                                                   <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+
+ncurses 6.5                       2024-04-20                       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></li>
-<li><a href="#h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></li>
+<li><a href="#h3-terminfo-Entry-Syntax">terminfo Entry Syntax</a></li>
+<li><a href="#h3-terminfo-Capabilities-Syntax">terminfo Capabilities Syntax</a></li>
 <li><a href="#h3-Similar-Terminals">Similar Terminals</a></li>
 <li><a href="#h3-Predefined-Capabilities">Predefined Capabilities</a></li>
 <li><a href="#h3-User-Defined-Capabilities">User-Defined Capabilities</a></li>
 <li><a href="#h3-Cursor-Motions">Cursor Motions</a></li>
 <li><a href="#h3-Margins">Margins</a></li>
 <li><a href="#h3-Area-Clears">Area Clears</a></li>
-<li><a href="#h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></li>
+<li><a href="#h3-Insert_Delete-Line-and-Vertical-Motions">Insert/Delete Line and Vertical Motions</a></li>
 <li><a href="#h3-Insert_Delete-Character">Insert/Delete Character</a></li>
-<li><a href="#h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></li>
+<li><a href="#h3-Highlighting_Underlining_and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></li>
 <li><a href="#h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></li>
 <li><a href="#h3-Tabs-and-Initialization">Tabs and Initialization</a></li>
 <li><a href="#h3-Delays-and-Padding">Delays and Padding</a></li>
 <li><a href="#h3-Line-Graphics">Line Graphics</a></li>
 <li><a href="#h3-Color-Handling">Color Handling</a></li>
 <li><a href="#h3-Miscellaneous">Miscellaneous</a></li>
-<li><a href="#h3-Glitches-and-Braindamage">Glitches and Braindamage</a></li>
+<li><a href="#h3-Glitches-and-Brain-Damage">Glitches and Brain Damage</a></li>
 <li><a href="#h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></li>
-<li><a href="#h3-Binary-Compatibility">Binary Compatibility</a></li>
 </ul>
 </li>
-<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
 <li><a href="#h2-FILES">FILES</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index cced3343be83f023eb51159090a44bd555f32821..e5e6107244cf4604586094aff3f9264782762a20 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: tic.1m,v 1.84 2022/09/17 19:01:24 tom Exp @
+  * @Id: tic.1m,v 1.110 2024/04/27 17:57:06 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>tic 1m</TITLE>
+<TITLE>tic 1m 2024-04-27 ncurses 6.5 User commands</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">tic 1m</H1>
+<H1 class="no-header">tic 1m 2024-04-27 ncurses 6.5 User commands</H1>
 <PRE>
-<STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>                                                                <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
+<STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>                          User commands                         <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>tic</STRONG> - the <EM>terminfo</EM> entry-description compiler
+       <STRONG>tic</STRONG> - compile terminal descriptions for <EM>terminfo</EM> or <EM>termcap</EM>
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>tic</STRONG>  [<STRONG>-01CDGIKLNTUVWacfgqrstx</STRONG>]  [<STRONG>-e</STRONG> <EM>names</EM>] [<STRONG>-o</STRONG> <EM>dir</EM>] [<STRONG>-Q</STRONG>[<EM>n</EM>]] [<STRONG>-R</STRONG> <EM>subset</EM>]
-       [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-w</STRONG>[<EM>n</EM>]] <EM>file</EM>
+       <STRONG>tic</STRONG>  [<STRONG>-01acCDfgGIKLNqrstTUVWx</STRONG>] [<STRONG>-e</STRONG> <EM>terminal-type-list</EM>] [<STRONG>-o</STRONG> <EM>dir</EM>] [<STRONG>-Q</STRONG>[<EM>n</EM>]]
+       [<STRONG>-R</STRONG> <EM>subset</EM>] [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-w</STRONG>[<EM>n</EM>]] <EM>file</EM>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        in a different terminfo database.  There are two ways to achieve this:
 
        <STRONG>o</STRONG>   First,  you  may override the system default either by using the <STRONG>-o</STRONG>
-           option,  or  by  setting  the  variable  <STRONG>TERMINFO</STRONG>  in  your   shell
+           option,  or  by  setting  the  variable  <EM>TERMINFO</EM>  in  your   shell
            environment to a valid database location.
 
        <STRONG>o</STRONG>   Secondly,  if  <STRONG>tic</STRONG>  cannot  write  in  <EM>/usr/share/terminfo</EM>  or  the
-           location specified using your TERMINFO variable, it looks  for  the
+           location specified using your <EM>TERMINFO</EM> variable, it looks  for  the
            directory  <EM>$HOME/.terminfo</EM> (or hashed database <EM>$HOME/.terminfo.db)</EM>;
            if that location exists, the entry is placed there.
 
        Libraries  that  read  terminfo  entries  are  expected  to  check   in
        succession
 
-       <STRONG>o</STRONG>   a location specified with the TERMINFO environment variable,
+       <STRONG>o</STRONG>   a location specified with the <EM>TERMINFO</EM> environment variable,
 
        <STRONG>o</STRONG>   <EM>$HOME/.terminfo</EM>,
 
-       <STRONG>o</STRONG>   directories listed in the TERMINFO_DIRS environment variable,
+       <STRONG>o</STRONG>   directories listed in the <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> environment variable,
 
-       <STRONG>o</STRONG>   a compiled-in list of directories (no default value), and
+       <STRONG>o</STRONG>   a compiled-in list of directories (/usr/share/terminfo), and
 
        <STRONG>o</STRONG>   the system terminfo database (<EM>/usr/share/terminfo</EM>).
 
+       The  <EM>Fetching</EM>  <EM>Compiled</EM>  <EM>Descriptions</EM> section in the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> manual
+       goes into further detail.
 
-</PRE><H3><a name="h3-ALIASES">ALIASES</a></H3><PRE>
-       This  is the same program as infotocap and captoinfo; usually those are
+
+</PRE><H3><a name="h3-Aliases">Aliases</a></H3><PRE>
+       This is the same program as infotocap and captoinfo; usually those  are
        linked to, or copied from this program:
 
        <STRONG>o</STRONG>   When invoked as infotocap, tic sets the <STRONG>-I</STRONG> option.
        <STRONG>o</STRONG>   When invoked as captoinfo, tic sets the <STRONG>-C</STRONG> option.
 
 
-</PRE><H3><a name="h3-OPTIONS">OPTIONS</a></H3><PRE>
+</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
        <STRONG>-0</STRONG>     restricts the output to a single line
 
        <STRONG>-1</STRONG>     restricts the output to a single column
 
-       <STRONG>-a</STRONG>     tells <STRONG>tic</STRONG>  to  retain  commented-out  capabilities  rather  than
-              discarding  them.   Capabilities are commented by prefixing them
-              with a period.  This sets the <STRONG>-x</STRONG> option, because it  treats  the
-              commented-out  entries  as user-defined names.  If the source is
-              termcap, accept the 2-character names  required  by  version  6.
+       <STRONG>-a</STRONG>     tells  <STRONG>tic</STRONG>  to  retain  commented-out  capabilities  rather than
+              discarding them.  Capabilities are commented by  prefixing  them
+              with  a  period.  This sets the <STRONG>-x</STRONG> option, because it treats the
+              commented-out entries as user-defined names.  If the  source  is
+              termcap,  accept  the  2-character  names required by version 6.
               Otherwise these are ignored.
 
-       <STRONG>-C</STRONG>     Force  source translation to termcap format.  Note: this differs
-              from the <STRONG>-C</STRONG> option of <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> in that  it  does  not  merely
+       <STRONG>-C</STRONG>     Force source translation to termcap format.  Note: this  differs
+              from  the  <STRONG>-C</STRONG>  option  of <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> 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 <STRONG>-K</STRONG> option.
 
-              If this is combined with <STRONG>-c</STRONG>,  <STRONG>tic</STRONG>  makes  additional  checks  to
-              report  cases  where  the  terminfo  values do not have an exact
+              If  this  is  combined  with  <STRONG>-c</STRONG>, <STRONG>tic</STRONG> makes additional checks to
+              report cases where the terminfo values  do  not  have  an  exact
               equivalent in termcap form.  For example:
 
-              <STRONG>o</STRONG>   <STRONG>sgr</STRONG> 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
+              <STRONG>o</STRONG>   <STRONG>sgr</STRONG>  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.
 
-              <STRONG>o</STRONG>   capabilities  with more than one delay or with delays before
+              <STRONG>o</STRONG>   capabilities with more than one delay or with delays  before
                   the end of the string will not convert completely.
 
-       <STRONG>-c</STRONG>     tells <STRONG>tic</STRONG> to  only  check  <EM>file</EM>  for  errors,  including  syntax
-              problems  and  bad  use-links.  If you specify <STRONG>-C</STRONG> (<STRONG>-I</STRONG>) with this
-              option, the code will print warnings about entries which,  after
-              use  resolution, are more than 1023 (4096) bytes long.  Due to a
+       <STRONG>-c</STRONG>     tells  <STRONG>tic</STRONG>  to  only  check  <EM>file</EM>  for  errors, including syntax
+              problems and bad use-links.  If you specify <STRONG>-C</STRONG>  (<STRONG>-I</STRONG>)  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
+              checking for the  buffer  length  (and  a  documented  limit  in
               terminfo),  these  entries  may  cause  core  dumps  with  other
               implementations.
 
               <STRONG>tic</STRONG>  checks  string  capabilities  to  ensure  that  those  with
-              parameters will be valid expressions.  It does this  check  only
-              for  the predefined string capabilities; those which are defined
+              parameters  will  be valid expressions.  It does this check only
+              for the predefined string capabilities; those which are  defined
               with the <STRONG>-x</STRONG> option are ignored.
 
-       <STRONG>-D</STRONG>     tells <STRONG>tic</STRONG> to print the database locations that it  knows  about,
+       <STRONG>-D</STRONG>     tells  <STRONG>tic</STRONG>  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 <STRONG>tic</STRONG>  is  not  able  to
+              write  compiled  terminal  descriptions.   If <STRONG>tic</STRONG> is not able to
               find  a  writable  database  location  according  to  the  rules
-              summarized above, it will print a diagnostic and  exit  with  an
+              summarized  above,  it  will print a diagnostic and exit with an
               error rather than printing a list of database locations.
 
-       <STRONG>-e</STRONG> <EM>names</EM>
-              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
+       <STRONG>-e</STRONG> <EM>list</EM>
+              Limit writes and translations to  the  comma-separated  <EM>list</EM>  of
+              terminal  types.  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
-              list if it contains a '/'.  (Note:  depending  on  how  tic  was
+              it.  The option value is interpreted as a  file  containing  the
+              list  if  it  contains  a  '/'.  (Note: depending on how tic was
               compiled, this option may require <STRONG>-I</STRONG> or <STRONG>-C</STRONG>.)
 
-       <STRONG>-f</STRONG>     Display     complex     terminfo     strings    which    contain
+       <STRONG>-f</STRONG>     Display    complex    terminfo     strings     which     contain
               if/then/else/endif expressions indented for readability.
 
-       <STRONG>-G</STRONG>     Display constant literals in  decimal  form  rather  than  their
+       <STRONG>-G</STRONG>     Display  constant  literals  in  decimal  form rather than their
               character equivalents.
 
-       <STRONG>-g</STRONG>     Display  constant  character literals in quoted form rather than
+       <STRONG>-g</STRONG>     Display constant character literals in quoted form  rather  than
               their decimal equivalents.
 
        <STRONG>-I</STRONG>     Force source translation to terminfo format.
 
-       <STRONG>-K</STRONG>     Suppress some longstanding ncurses extensions to termcap format,
+       <STRONG>-K</STRONG>     Suppress some longstanding <EM>ncurses</EM> extensions to termcap format,
               e.g., "\s" for space.
 
-       <STRONG>-L</STRONG>     Force  source  translation  to  terminfo format using the long C
+       <STRONG>-L</STRONG>     Force source translation to terminfo format  using  the  long  C
               variable names listed in &lt;<STRONG>term.h</STRONG>&gt;
 
        <STRONG>-N</STRONG>     Disable smart defaults.  Normally, when translating from termcap
-              to  terminfo,  the  compiler makes a number of assumptions about
-              the   defaults    of    string    capabilities    <STRONG>reset1_string</STRONG>,
-              <STRONG>carriage_return</STRONG>,  <STRONG>cursor_left</STRONG>, <STRONG>cursor_down</STRONG>, <STRONG>scroll_forward</STRONG>, <STRONG>tab</STRONG>,
+              to terminfo, the compiler makes a number  of  assumptions  about
+              the    defaults    of    string    capabilities   <STRONG>reset1_string</STRONG>,
+              <STRONG>carriage_return</STRONG>, <STRONG>cursor_left</STRONG>, <STRONG>cursor_down</STRONG>, <STRONG>scroll_forward</STRONG>,  <STRONG>tab</STRONG>,
               <STRONG>newline</STRONG>, <STRONG>key_backspace</STRONG>, <STRONG>key_left</STRONG>, and <STRONG>key_down</STRONG>, 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 <STRONG>bs</STRONG>.  This option forces a more literal translation that
+              such as <STRONG>bs</STRONG>.  This option forces a more literal translation  that
               also preserves the obsolete capabilities.
 
-       <STRONG>-o</STRONG><EM>dir</EM>  Write compiled entries to given  database  location.   Overrides
-              the TERMINFO environment variable.
+       <STRONG>-o</STRONG><EM>dir</EM>  Write  compiled  entries  to given database location.  Overrides
+              the <EM>TERMINFO</EM> environment variable.
 
-       <STRONG>-Q</STRONG><EM>n</EM>    Rather  than  show  source  in terminfo (text) format, print the
-              compiled  (binary)  format  in  hexadecimal  or   base64   form,
+       <STRONG>-Q</STRONG><EM>n</EM>    Rather than show source in terminfo  (text)  format,  print  the
+              compiled   (binary)   format  in  hexadecimal  or  base64  form,
               depending on the option's value:
 
                1  hexadecimal
               source.
 
        <STRONG>-R</STRONG><EM>subset</EM>
-              Restrict output to a given subset.  This option is for use  with
-              archaic  versions of terminfo like those on SVr1, Ultrix, or HP-
+              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 terminfo;
-              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 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for
-              details.
-
-       <STRONG>-r</STRONG>     Force  entry  resolution  (so  there   are   no   remaining   tc
-              capabilities)  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
+              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 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details.
+
+       <STRONG>-r</STRONG>     Force   entry   resolution   (so   there  are  no  remaining  tc
+              capabilities) 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.
 
-       <STRONG>-s</STRONG>     Summarize  the  compile  by  showing  the database location into
-              which entries are written, and the number of entries  which  are
+       <STRONG>-s</STRONG>     Summarize the compile by  showing  the  database  location  into
+              which  entries  are written, and the number of entries which are
               compiled.
 
-       <STRONG>-T</STRONG>     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
+       <STRONG>-T</STRONG>     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
               terminfo).
 
-       <STRONG>-t</STRONG>     tells <STRONG>tic</STRONG> to discard commented-out capabilities.  Normally  when
-              translating    from    terminfo   to   termcap,   untranslatable
+       <STRONG>-t</STRONG>     tells  <STRONG>tic</STRONG> to discard commented-out capabilities.  Normally when
+              translating   from   terminfo   to    termcap,    untranslatable
               capabilities are commented-out.
 
-       <STRONG>-U</STRONG>   tells <STRONG>tic</STRONG> 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.
+       <STRONG>-U</STRONG>     tells  <STRONG>tic</STRONG> 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.
 
-       <STRONG>-V</STRONG>   reports the version of ncurses which was used in this program, and
-            exits.
+       <STRONG>-V</STRONG>     reports  the  version of <EM>ncurses</EM> which was used in this program,
+              and exits.
 
-       <STRONG>-v</STRONG><EM>n</EM>  specifies that (verbose) output be written to standard error trace
-            information showing <STRONG>tic</STRONG>'s progress.
+       <STRONG>-v</STRONG><EM>n</EM>    specifies that (verbose) output be  written  to  standard  error
+              trace information showing <STRONG>tic</STRONG>'s progress.
 
-            The optional parameter <EM>n</EM> is a  number  from  1  to  9,  inclusive,
-            indicating the desired level of detail of information.
+              The  optional  parameter  <EM>n</EM>  is a number from 1 to 9, inclusive,
+              indicating the desired level of detail of information.
 
-            <STRONG>o</STRONG>   If  ncurses  is  built  without  tracing support, the optional
-                parameter is ignored.
+              <STRONG>o</STRONG>   If <EM>ncurses</EM> is built without tracing  support,  the  optional
+                  parameter is ignored.
 
-            <STRONG>o</STRONG>   If <EM>n</EM> is omitted, the default level is 1.
+              <STRONG>o</STRONG>   If <EM>n</EM> is omitted, the default level is 1.
 
-            <STRONG>o</STRONG>   If <EM>n</EM> is specified and greater than 1, the level of  detail  is
-                increased,   and   the   output   is   written  (with  tracing
-                information) to the "trace" file.
+              <STRONG>o</STRONG>   If <EM>n</EM> is specified and greater than 1, the level of detail is
+                  increased,  and  the  output  is   written   (with   tracing
+                  information) to the "trace" file.
 
-            The debug flag levels are as follows:
+              The debug flag levels are as follows:
 
-            1   Names of files created and linked
+              1   Names of files created and linked
 
-            2   Information related to the "use" facility
+              2   Information related to the "use" facility
 
-            3   Statistics from the hashing algorithm
+              3   Statistics from the hashing algorithm
 
-            4   Details of extended capabilities
+              4   Details of extended capabilities
 
-            5   (unused)
+              5   (unused)
 
-            6   (unused)
+              6   (unused)
 
-            7   Entries into the string-table
+              7   Entries into the string-table
 
-            8   List of tokens encountered by scanner
+              8   List of tokens encountered by scanner
 
-            9   All values computed in construction of the hash table
+              9   All values computed in construction of the hash table
 
-       <STRONG>-W</STRONG>   By itself, the <STRONG>-w</STRONG>  option  will  not  force  long  strings  to  be
-            wrapped.  Use the <STRONG>-W</STRONG> option to do this.
+       <STRONG>-W</STRONG>     By  itself,  the  <STRONG>-w</STRONG>  option  will  not force long strings to be
+              wrapped.  Use the <STRONG>-W</STRONG> option to do this.
 
-            If  you specify both <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options, the latter is ignored when
-            <STRONG>-f</STRONG> has already split the line.
+              If you specify both <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options,  the  latter  is  ignored
+              when <STRONG>-f</STRONG> has already split the line.
 
-       <STRONG>-w</STRONG><EM>n</EM>  specifies the width of the output.  The parameter is optional.  If
-            it is omitted, it defaults to 60.
+       <STRONG>-w</STRONG><EM>n</EM>    specifies  the  width of the output.  The parameter is optional.
+              If it is omitted, it defaults to 60.
 
-       <STRONG>-x</STRONG>   Treat  unknown  capabilities  as  user-defined (see <STRONG>user_caps(5)</STRONG>).
-            That is, if you supply  a  capability  name  which  <STRONG>tic</STRONG>  does  not
-            recognize, 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 function keys.
+       <STRONG>-x</STRONG>     Treat unknown capabilities as user-defined  (see  <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>).
+              That  is,  if  you  supply  a capability name which <STRONG>tic</STRONG> does not
+              recognize, 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 function keys.
 
 
-</PRE><H3><a name="h3-PARAMETERS">PARAMETERS</a></H3><PRE>
-       <EM>file</EM>   contains one or more <STRONG>terminfo</STRONG> terminal  descriptions  in  source
-              format   [see   <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].   Each  description  in  the  file
+</PRE><H3><a name="h3-Parameters">Parameters</a></H3><PRE>
+       <EM>file</EM>   contains  one  or  more <STRONG>terminfo</STRONG> terminal descriptions in source
+              format  [see  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].   Each  description  in   the   file
               describes the capabilities of a particular terminal.
 
-              If <EM>file</EM> is "-", then the data is read from the  standard  input.
+              If  <EM>file</EM>  is "-", then the data is read from the standard input.
               The <EM>file</EM> parameter may also be the path of a character-device.
 
 
-</PRE><H3><a name="h3-PROCESSING">PROCESSING</a></H3><PRE>
-       All  but  one  of  the capabilities recognized by <STRONG>tic</STRONG> are documented in
+</PRE><H3><a name="h3-Processing">Processing</a></H3><PRE>
+       All but one of the capabilities recognized by  <STRONG>tic</STRONG>  are  documented  in
        <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.  The exception is the <STRONG>use</STRONG> capability.
 
        When a <STRONG>use</STRONG>=<EM>entry</EM>-<EM>name</EM> field is discovered in a terminal entry currently
-       being  compiled,  <STRONG>tic</STRONG>  reads  in the binary from <STRONG>/usr/share/terminfo</STRONG> to
-       complete the entry.  (Entries created from <EM>file</EM>  will  be  used  first.
-       <STRONG>tic</STRONG>  duplicates  the  capabilities in <EM>entry</EM>-<EM>name</EM> for the current entry,
+       being compiled, <STRONG>tic</STRONG> reads in the  binary  from  <STRONG>/usr/share/terminfo</STRONG>  to
+       complete  the  entry.   (Entries  created from <EM>file</EM> will be used first.
+       <STRONG>tic</STRONG> duplicates the capabilities in <EM>entry</EM>-<EM>name</EM> for  the  current  entry,
        with the exception of those capabilities that explicitly are defined in
        the current entry.
 
-       When  an  entry, e.g., <STRONG>entry_name_1</STRONG>, contains a <STRONG>use=</STRONG><EM>entry</EM>_<EM>name</EM>_<EM>2</EM> field,
-       any  canceled  capabilities  in  <EM>entry</EM>_<EM>name</EM>_<EM>2</EM>  must  also   appear   in
-       <STRONG>entry_name_1</STRONG>  before  <STRONG>use=</STRONG>  for  these  capabilities  to be canceled in
+       When an entry, e.g., <STRONG>entry_name_1</STRONG>, contains a  <STRONG>use=</STRONG><EM>entry</EM>_<EM>name</EM>_<EM>2</EM>  field,
+       any   canceled   capabilities  in  <EM>entry</EM>_<EM>name</EM>_<EM>2</EM>  must  also  appear  in
+       <STRONG>entry_name_1</STRONG> before <STRONG>use=</STRONG> for  these  capabilities  to  be  canceled  in
        <STRONG>entry_name_1</STRONG>.
 
-       Total compiled entries cannot exceed 4096 bytes.  The name field cannot
-       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 printed.
-
-
-</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       System V Release 2 provided  a  <STRONG>tic</STRONG>  utility.   It  accepted  a  single
-       option:  <STRONG>-v</STRONG>  (optionally  followed  by  a  number).   According to Ross
-       Ridge's comment in <EM>mytinfo</EM>, this version of <STRONG>tic</STRONG> was unable to represent
-       cancelled capabilities.
-
-       System  V  Release 3 provided a different <STRONG>tic</STRONG> utility, written by Pavel
-       Curtis, (originally named "compile" in <EM>pcurses</EM>).  This added an  option
-       <STRONG>-c</STRONG>  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
-       warning  messages  which  did not appear in <EM>pcurses</EM>.  While the program
-       itself was changed  little  as  development  continued  with  System  V
-       Release  4,  the  table  of capabilities grew from 180 (<EM>pcurses</EM>) to 464
-       (Solaris).
+       Total  compiled  entries cannot exceed 4096 bytes in the legacy storage
+       format, or 32768 using the extended  number  format.   The  name  field
+       cannot  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 printed.
 
-       In early development of ncurses (1993), Zeyd Ben-Halim used  the  table
-       from  <EM>mytinfo</EM>  to  extend  the  <EM>pcurses</EM>  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 <STRONG>memory_lock_above</STRONG> and <STRONG>memory_unlock</STRONG>  (see
-       <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>).
-
-       Eric  Raymond  incorporated  parts of <EM>mytinfo</EM> 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
-       years.
-
-       In  1999,  Thomas  Dickey  added  the <STRONG>-x</STRONG> option to support user-defined
-       capabilities.
-
-       In 2010, Roy Marples provided a <STRONG>tic</STRONG> program and  terminfo  library  for
-       NetBSD.   That  implementation  adapts  several  features from ncurses,
-       including <STRONG>tic</STRONG>'s <STRONG>-x</STRONG> option.
-
-       The <STRONG>-c</STRONG> option tells <STRONG>tic</STRONG> to check for problems in  the  terminfo  source
-       file.  Continued development provides additional checks:
 
-       <STRONG>o</STRONG>   <EM>pcurses</EM> had 8 warnings
-
-       <STRONG>o</STRONG>   ncurses in 1996 had 16 warnings
-
-       <STRONG>o</STRONG>   Solaris (SVr4) curses has 28 warnings
-
-       <STRONG>o</STRONG>   NetBSD tic in 2019 has 19 warnings.
-
-       <STRONG>o</STRONG>   ncurses in 2019 has 96 warnings
-
-       The checking done in ncurses' <STRONG>tic</STRONG> 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
-       user-defined.
-
-
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       X/Open  Curses, Issue 7 (2009) provides a brief description of <STRONG>tic</STRONG>.  It
-       lists one option: <STRONG>-c</STRONG>.  The omission of <STRONG>-v</STRONG> is  unexpected.   The  change
-       history  states  that  the  description  is  derived  from True64 UNIX.
-       According to its manual  pages,  that  system  also  supported  the  <STRONG>-v</STRONG>
-       option.
-
-       Shortly  after  Issue  7  was  released, Tru64 was discontinued.  As of
-       2019, the surviving implementations of <STRONG>tic</STRONG> are  SVr4  (AIX,  HP-UX  and
-       Solaris), ncurses and NetBSD curses.  The SVr4 <STRONG>tic</STRONG> programs all support
-       the <STRONG>-v</STRONG> option.  The NetBSD <STRONG>tic</STRONG> program follows X/Open's  documentation,
-       omitting the <STRONG>-v</STRONG> option.
-
-       The  X/Open  rationale  states  that  some  implementations of <STRONG>tic</STRONG> read
-       terminal descriptions from the standard input if the <EM>file</EM> parameter  is
-       omitted.   None of these implementations do that.  Further, it comments
-       that some  may  choose  to  read  from  "./terminfo.src"  but  that  is
-       obsolescent  behavior  from SVr2, and is not (for example) a documented
-       feature of SVr3.
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+       <EM>/usr/share/terminfo</EM>
+              compiled terminal description database
 
 
-</PRE><H3><a name="h3-COMPATIBILITY">COMPATIBILITY</a></H3><PRE>
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        There is  some  evidence  that  historic  <STRONG>tic</STRONG>  implementations  treated
        description  fields with no whitespace in them as additional aliases or
        short names.  This <STRONG>tic</STRONG>  does  not  do  that,  but  it  does  warn  when
        characters.
 
 
-</PRE><H3><a name="h3-EXTENSIONS">EXTENSIONS</a></H3><PRE>
+</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
        Unlike the SVr4 <STRONG>tic</STRONG> 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  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>  for  the  list  of
        The  SVr4  manual  pages  are not clear on the resolution rules for <STRONG>use</STRONG>
        capabilities.   This  implementation  of  <STRONG>tic</STRONG>  will  find  <STRONG>use</STRONG>  targets
        anywhere  in  the  source  file, or anywhere in the file tree rooted at
-       <STRONG>TERMINFO</STRONG> (if <STRONG>TERMINFO</STRONG> is defined), or  in  the  user's  <EM>$HOME/.terminfo</EM>
+       <EM>TERMINFO</EM> (if <EM>TERMINFO</EM> is defined), or  in  the  user's  <EM>$HOME/.terminfo</EM>
        database  (if  it  exists),  or (finally) anywhere in the system's file
        tree of compiled entries.
 
 
            <STRONG>-0</STRONG> <STRONG>-1</STRONG> <STRONG>-C</STRONG> <STRONG>-G</STRONG> <STRONG>-I</STRONG> <STRONG>-N</STRONG> <STRONG>-R</STRONG> <STRONG>-T</STRONG> <STRONG>-V</STRONG> <STRONG>-a</STRONG> <STRONG>-e</STRONG> <STRONG>-f</STRONG> <STRONG>-g</STRONG> <STRONG>-o</STRONG> <STRONG>-r</STRONG> <STRONG>-s</STRONG> <STRONG>-t</STRONG> <STRONG>-x</STRONG>
 
-       <STRONG>o</STRONG>   The NetBSD <STRONG>tic</STRONG>  supports a few of the ncurses options
+       <STRONG>o</STRONG>   The NetBSD <STRONG>tic</STRONG> supports a few of the <EM>ncurses</EM> options
 
            <STRONG>-a</STRONG> <STRONG>-o</STRONG> <STRONG>-x</STRONG>
 
        The SVr4 <STRONG>-c</STRONG> mode does not report bad "use=" links.
 
        System V does  not  compile  entries  to  or  read  entries  from  your
-       <EM>$HOME/.terminfo</EM> database unless TERMINFO is explicitly set to it.
+       <EM>$HOME/.terminfo</EM> database unless <EM>TERMINFO</EM> is explicitly set to it.
 
 
-</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       <STRONG>/usr/share/terminfo/?/*</STRONG>
-            Compiled terminal description database.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       X/Open  Curses, Issue 7 (2009) provides a brief description of <STRONG>tic</STRONG>.  It
+       lists one option: <STRONG>-c</STRONG>.  The omission of <STRONG>-v</STRONG> is  unexpected.   The  change
+       history  states  that the description is derived from Tru64.  According
+       to its manual pages, that system also supported the <STRONG>-v</STRONG> option.
 
+       Shortly after Issue 7 was released,  Tru64  was  discontinued.   As  of
+       2019,  the  surviving  implementations  of <STRONG>tic</STRONG> are SVr4 (AIX, HP-UX and
+       Solaris), <EM>ncurses</EM> and NetBSD curses.  The SVr4 <STRONG>tic</STRONG> programs all support
+       the  <STRONG>-v</STRONG> option.  The NetBSD <STRONG>tic</STRONG> program follows X/Open's documentation,
+       omitting the <STRONG>-v</STRONG> option.
+
+       The X/Open rationale states  that  some  implementations  of  <STRONG>tic</STRONG>  read
+       terminal  descriptions from the standard input if the <EM>file</EM> parameter is
+       omitted.  None of these implementations do that.  Further, it  comments
+       that  some  may  choose  to  read  from  "./terminfo.src"  but  that is
+       obsolescent behavior from SVr2, and is not (for example)  a  documented
+       feature of SVr3.
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,   <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,   <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,   <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,   <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
-       <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.  <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       System  V  Release  2  provided  a  <STRONG>tic</STRONG>  utility.  It accepted a single
+       option: <STRONG>-v</STRONG> (optionally  followed  by  a  number).   According  to  Ross
+       Ridge's comment in <EM>mytinfo</EM>, this version of <STRONG>tic</STRONG> was unable to represent
+       cancelled capabilities.
 
+       System V Release 3 provided a different <STRONG>tic</STRONG> utility, written  by  Pavel
+       Curtis,  (originally named "compile" in <EM>pcurses</EM>).  This added an option
+       <STRONG>-c</STRONG> 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
+       warning messages which did not appear in <EM>pcurses</EM>.   While  the  program
+       itself  was  changed  little  as  development  continued  with System V
+       Release 4, the table of capabilities grew from  180  (<EM>pcurses</EM>)  to  464
+       (Solaris).
+
+       In  early  development of <EM>ncurses</EM> (1993), Zeyd Ben-Halim used the table
+       from <EM>mytinfo</EM> to extend the  <EM>pcurses</EM>  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 <STRONG>memory_lock_above</STRONG> and <STRONG>memory_unlock</STRONG> (see
+       <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>).
+
+       Eric Raymond incorporated parts of <EM>mytinfo</EM> into  <EM>ncurses</EM>  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
+       years.
+
+       In 1999, Thomas Dickey added the  <STRONG>-x</STRONG>  option  to  support  user-defined
+       capabilities.
+
+       In  2010,  Roy  Marples provided a <STRONG>tic</STRONG> program and terminfo library for
+       NetBSD.  That implementation  adapts  several  features  from  <EM>ncurses</EM>,
+       including <STRONG>tic</STRONG>'s <STRONG>-x</STRONG> option.
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+       The  <STRONG>-c</STRONG>  option  tells <STRONG>tic</STRONG> to check for problems in the terminfo source
+       file.  Continued development provides additional checks:
+
+       <STRONG>o</STRONG>   <EM>pcurses</EM> had 8 warnings
+
+       <STRONG>o</STRONG>   <EM>ncurses</EM> in 1996 had 16 warnings
+
+       <STRONG>o</STRONG>   Solaris (SVr4) curses has 28 warnings
+
+       <STRONG>o</STRONG>   NetBSD tic in 2019 has 19 warnings.
+
+       <STRONG>o</STRONG>   <EM>ncurses</EM> in 2019 has 96 warnings
+
+       The checking done in <EM>ncurses</EM>' <STRONG>tic</STRONG> 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 <EM>ncurses</EM>' terminal database; 128 of those are
+       user-defined.
+
+
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
        Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
 
 
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,   <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,   <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,   <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,   <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
+       <STRONG><A HREF="term.5.html">term(5)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
+
+
 
-                                                                       <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
+ncurses 6.5                       2024-04-27                           <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-ALIASES">ALIASES</a></li>
-<li><a href="#h3-OPTIONS">OPTIONS</a></li>
-<li><a href="#h3-PARAMETERS">PARAMETERS</a></li>
-<li><a href="#h3-PROCESSING">PROCESSING</a></li>
+<li><a href="#h3-Aliases">Aliases</a></li>
 </ul>
 </li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
-<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<li><a href="#h2-OPTIONS">OPTIONS</a>
 <ul>
-<li><a href="#h3-COMPATIBILITY">COMPATIBILITY</a></li>
-<li><a href="#h3-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h3-Parameters">Parameters</a></li>
+<li><a href="#h3-Processing">Processing</a></li>
 </ul>
 </li>
 <li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index a91511843e504c6920d2bb5e44f05e3622ddea12..c3aca2c592fd55d228efadef827f9a38ae6479ee 100644 (file)
@@ -1,6 +1,7 @@
 <!--
+  * t
   ****************************************************************************
-  * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2019-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: toe.1m,v 1.36 2022/02/12 20:02:20 tom Exp @
+  * @Id: toe.1m,v 1.68 2024/04/20 18:59:26 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>toe 1m</TITLE>
+<TITLE>toe 1m 2024-04-20 ncurses 6.5 User commands</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">toe 1m</H1>
+<H1 class="no-header">toe 1m 2024-04-20 ncurses 6.5 User commands</H1>
 <PRE>
-<STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>                                                                <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>
+<STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>                          User commands                         <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>toe</STRONG> - table of (terminfo) entries
+       <STRONG>toe</STRONG> - list table of entries of <EM>terminfo</EM> terminal types
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>toe</STRONG> [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-ahsuUV</STRONG>] <EM>file...</EM>
+       <STRONG>toe</STRONG> [<STRONG>-ahs</STRONG>] [<STRONG>-v</STRONG> [<EM>n</EM>]] [<EM>directory</EM> ...]
+
+       <STRONG>toe</STRONG> [<STRONG>-u</STRONG>|<STRONG>-U</STRONG>] <EM>file</EM>
+
+       <STRONG>toe</STRONG> <STRONG>-V</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       With no options, <STRONG>toe</STRONG> lists all available terminal types by primary name
-       with descriptions.   File  arguments  specify  the  directories  to  be
-       scanned;  if  no  such  arguments  are  given,  your  default  terminfo
-       directory is scanned.  If you also specify the <STRONG>-h</STRONG> option,  a  directory
-       header will be issued as each directory is entered.
+       <STRONG>toe</STRONG>  reports  to  the  standard  output  stream the (primary) names and
+       descriptions of the terminal types available to the  <EM>terminfo</EM>  library.
+       Each  <EM>directory</EM>  is  scanned;  if none are given, <STRONG>toe</STRONG> scans the default
+       <EM>terminfo</EM> directory.
 
-       There are other options intended for use by terminfo file maintainers:
 
-       <STRONG>-a</STRONG>     report  on  all  of  the  terminal databases which ncurses would
-              search, rather than only the first one that it finds.
+</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
+       The <STRONG>-h</STRONG> option can be helpful  to  observe  where  <STRONG>toe</STRONG>  is  looking  for
+       terminal  descriptions.   Other options support maintainers of <EM>terminfo</EM>
+       terminal descriptions.
 
-              If the <STRONG>-s</STRONG> is also given,  <STRONG>toe</STRONG>  adds  a  column  to  the  report,
-              showing (like <STRONG>conflict(1)</STRONG>) which entries which belong to a given
-              terminal database.  An "*" marks entries which differ,  and  "+"
-              marks equivalent entries.
+       <STRONG>-a</STRONG>       lists entries from  all  terminal  database  directories  that
+                <EM>terminfo</EM>  would  search,  instead  of  only  the first that it
+                finds.
 
-              Without  the <STRONG>-s</STRONG> option, <STRONG>toe</STRONG> does not attempt to merge duplicates
-              in its report
+                If  <STRONG>-s</STRONG>  is  also  given,  <STRONG>toe</STRONG>   additionally   reports,   like
+                <STRONG>conflict(1)</STRONG>,  which  entries  correspond  to  a given terminal
+                database.  An "*" marks entries that  differ,  and  "+"  marks
+                equivalent entries.
 
-       <STRONG>-s</STRONG>     sort the output by the entry names.
+                Without   the  <STRONG>-s</STRONG>  option,  <STRONG>toe</STRONG>  does  not  attempt  to  merge
+                duplicates in its report.
 
-       <STRONG>-u</STRONG> <EM>file</EM>
-              says  to  write  a  report  to  the  standard  output,   listing
-              dependencies  in  the  given  terminfo/termcap source file.  The
-              report condenses the "use" relation: each line consists  of  the
-              primary  name  of a terminal that has use capabilities, followed
-              by a colon, followed by the whitespace-separated  primary  names
-              of all terminals which occur in those use capabilities, followed
-              by a newline
+       <STRONG>-h</STRONG>       writes a heading naming each each directory as it is accessed.
 
-       <STRONG>-U</STRONG> <EM>file</EM>
-              says to write a report to the standard output,  listing  reverse
-              dependencies  in  the  given  terminfo/termcap source file.  The
-              report reverses the "use" relation: each line  consists  of  the
-              primary  name  of  a  terminal  that occurs in use capabilities,
-              followed  by  a  colon,  followed  by  the  whitespace-separated
-              primary names of all terminals which depend on it, followed by a
-              newline.
+       <STRONG>-s</STRONG>       sorts the output by the entry names.
 
-       <STRONG>-v</STRONG><EM>n</EM>    specifies that (verbose) output be written  to  standard  error,
-              showing <STRONG>toe</STRONG>'s progress.
+       <STRONG>-u</STRONG> <EM>file</EM>  lists terminal type dependencies in  <EM>file</EM>,  a  <EM>terminfo</EM>  entry
+                source  or  <EM>termcap</EM>  database file.  The report summarizes the
+                "<STRONG>use</STRONG>"  (<EM>terminfo</EM>)  and  <STRONG>tc</STRONG>  (<EM>termcap</EM>)  relations:  each   line
+                comprises the primary name of a terminal type employing <STRONG>use</STRONG>/<STRONG>tc</STRONG>
+                capabilities, a colon, a  space-  and  tab-separated  list  of
+                primary names of terminal types thus named, and a newline.
 
-              The  optional  parameter <EM>n</EM> is a number from 1 to 10, interpreted
-              as for <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>.  If ncurses is built  without  tracing  support,
-              the optional parameter is ignored.
+       <STRONG>-U</STRONG> <EM>file</EM>  lists  terminal  type reverse dependencies in <EM>file</EM>, a <EM>terminfo</EM>
+                entry source or <EM>termcap</EM> database file.  The report  summarizes
+                the  "<STRONG>use</STRONG>" (<EM>terminfo</EM>) and <STRONG>tc</STRONG> (<EM>termcap</EM>) reverse relations: each
+                line comprises the primary name of a terminal  type  occurring
+                in  <STRONG>use</STRONG>/<STRONG>tc</STRONG>  capabilities,  a colon, a space- and tab-separated
+                list of primary names of terminal types naming them thus,  and
+                a newline.
 
-       <STRONG>-V</STRONG>     reports  the  version of ncurses which was used in this program,
-              and exits.
+       <STRONG>-v</STRONG> [<EM>n</EM>]   reports  verbose  status  information  to  the  standard error
+                stream, showing <STRONG>toe</STRONG>'s progress.
 
+                The optional parameter <EM>n</EM>  is  an  integer  between  1  and  10
+                inclusive,  interpreted  as  for <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>.  If <EM>ncurses</EM> is built
+                without tracing support, <EM>n</EM> is ignored.
 
-</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
-       Without sorting, the <STRONG>-a</STRONG> option reports all of the names found in all of
-       the   terminal  databases  found  by  the  <STRONG>TERMINFO</STRONG>  and  <STRONG>TERMINFO_DIRS</STRONG>
-       environment variables:
-
-           MtxOrb162      16x2 Matrix Orbital LCD display
-           MtxOrb204      20x4 Matrix Orbital LCD display
-           MtxOrb         Generic Matrix Orbital LCD display
-           qvt101+        qume qvt 101 PLUS product
-           qvt119+-25     QVT 119 PLUS with 25 data lines
-           qansi-g        QNX ANSI
-           qvt103         qume qvt 103
-           qnxw           QNX4 windows
-           qansi-w        QNX ansi for windows
-           qnxm           QNX4 with mouse events
-           qvt203-25-w    QVT 203 PLUS with 25 by 132 columns
-           qansi-t        QNX ansi without console writes
-           . . .
-
-       Use the <STRONG>-a</STRONG>  and  <STRONG>-s</STRONG>  options  together  to  show  where  each  terminal
-       description was found:
-
-           --&gt; /usr/local/ncurses/share/terminfo
-           ----&gt; /usr/share/terminfo
-           *-+-:     9term          Plan9 terminal emulator for X
-           *---:     Eterm          Eterm with xterm-style color support (X Window System)
-           *-*-:     Eterm-256color Eterm with xterm 256-colors
-           *-*-:     Eterm-88color  Eterm with 88 colors
-           *-+-:     MtxOrb         Generic Matrix Orbital LCD display
-           *-+-:     MtxOrb162      16x2 Matrix Orbital LCD display
-           *-+-:     MtxOrb204      20x4 Matrix Orbital LCD display
-           *-*-:     NCR260VT300WPP NCR 2900_260 vt300 wide mode pc+  kybd
-           *-+-:     aaa            ann arbor ambassador/30 lines
-           *-+-:     aaa+dec        ann arbor ambassador in dec vt100 mode
-           *-+-:     aaa+rv         ann arbor ambassador in reverse video
-           . . .
+       <STRONG>-V</STRONG>       reports the version of <EM>ncurses</EM> associated  with  this  program
+                and exits with a successful status.
 
 
 </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       <STRONG>/usr/share/terminfo/?/*</STRONG>
-            Compiled terminal description database.
+       <EM>/usr/share/terminfo</EM>
+              compiled terminal description database
+
+
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       <STRONG>toe</STRONG>  is  not provided by other implementations.  There is no applicable
+       X/Open or POSIX standard for it.
 
 
 </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       This  utility  is  not  provided by other implementations.  There is no
-       relevant X/Open or POSIX standard for <STRONG>toe</STRONG>.
+       <STRONG>toe</STRONG> replaces a <STRONG>-T</STRONG> option that was  briefly  supported  by  the  <EM>ncurses</EM>
+       <STRONG>infocmp</STRONG> utility in 1995.
 
-       The program name refers to a developer's pun:
+       The <STRONG>-a</STRONG> and <STRONG>-s</STRONG> options were added in 2006 and 2011, respectively.
+
+       The program's name originates with a developer's pun:
 
        <STRONG>o</STRONG>   <STRONG>tic</STRONG>,
 
 
        <STRONG>o</STRONG>   <STRONG>toe</STRONG>.
 
-       It replaced a <STRONG>-T</STRONG> option which was  briefly  supported  by  the  ncurses
-       <STRONG>infocmp</STRONG> utility in 1995.
 
-       The  <STRONG>-a</STRONG>  and <STRONG>-s</STRONG> options were added to <STRONG>toe</STRONG> several years later (2006 and
-       2011, respectively).
+</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
+       When  not  sorting with the <STRONG>-s</STRONG> option, the <STRONG>-a</STRONG> option reports all of the
+       names found in all of the terminal database directories  named  in  the
+       <EM>TERMINFO</EM> and <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> environment variables.
+
+           xterm-color     generic color xterm
+           xterm-xfree86   xterm terminal emulator (XFree86)
+           xterm-vt220     xterm emulating vt220
+           xterm-256color  xterm with 256 colors
+           xterm-r6        xterm X11R6 version
+           xterm-r5        xterm R5 version
+           xterm-mono      monochrome xterm
+           xterm           xterm terminal emulator (X Window System)
+           vt220           dec vt220
+           vt102           dec vt102
+           vt100           dec vt100 (w/advanced video)
+           vt52            dec vt52
+           ...
+
+       Use  the  <STRONG>-a</STRONG>  and  <STRONG>-s</STRONG>  options  together  to  show  where each terminal
+       description was found.
+
+           --&gt; /etc/terminfo
+           ----&gt; /lib/terminfo
+           ------&gt; /usr/share/terminfo
+
+           --*---: vt100           dec vt100 (w/advanced video)
+           --*---: vt102           dec vt102
+           --*---: vt220           dec vt220
+           --*---: vt52            dec vt52
+           --*---: xterm           xterm terminal emulator (X Window System)
+           --*---: xterm-256color  xterm with 256 colors
+           --*---: xterm-color     generic color xterm
+           --*---: xterm-mono      monochrome xterm
+           --*---: xterm-r5        xterm R5 version
+           --*---: xterm-r6        xterm X11R6 version
+           --*---: xterm-vt220     xterm emulating vt220
+           --*---: xterm-xfree86   xterm terminal emulator (XFree86)
+           ...
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,   <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,   <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,   <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>,   <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
-       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
 
 
-
-                                                                       <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>
+ncurses 6.5                       2024-04-20                           <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-NAME">NAME</a></li>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a></li>
 <li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index 6a330a5519efc28e9176a9cb858d9c833b7ddd54..ed8fe3805afb3451d40075c48bc3d978f00212ad 100644 (file)
@@ -1,7 +1,7 @@
 <!--
   * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: tput.1,v 1.76 2022/02/12 20:02:20 tom Exp @
+  * @Id: tput.1,v 1.113 2024/04/20 19:58:50 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>tput 1</TITLE>
+<TITLE>tput 1 2024-04-20 ncurses 6.5 User commands</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">tput 1</H1>
+<H1 class="no-header">tput 1 2024-04-20 ncurses 6.5 User commands</H1>
 <PRE>
-<STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>                     General Commands Manual                    <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
+<STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>                          User commands                         <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>tput</STRONG>, <STRONG>reset</STRONG> - initialize a terminal or query terminfo database
+       <STRONG>tput</STRONG> - initialize a terminal, exercise its capabilities, or query <EM>term-</EM>
+       <EM>info</EM> database
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <EM>capname</EM> [<EM>parameters</EM>]
-       <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] [<STRONG>-x</STRONG>] <STRONG>clear</STRONG>
-       <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>init</STRONG>
-       <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>reset</STRONG>
-       <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>longname</STRONG>
-       <STRONG>tput</STRONG> <STRONG>-S</STRONG>  <STRONG>&lt;&lt;</STRONG>
-       <STRONG>tput</STRONG> <STRONG>-V</STRONG>
-
+       <STRONG>tput</STRONG> [<STRONG>-T</STRONG> <EM>terminal-type</EM>] {<EM>cap-code</EM> [<EM>parameter</EM> ...]} ...
 
-</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       The  <STRONG>tput</STRONG>  utility  uses  the  <STRONG>terminfo</STRONG>  database to make the values of
-       terminal-dependent capabilities and information available to the  shell
-       (see  <STRONG>sh(1)</STRONG>),  to  initialize or reset the terminal, or return the long
-       name of the requested terminal  type.   The  result  depends  upon  the
-       capability's type:
+       <STRONG>tput</STRONG> [<STRONG>-T</STRONG> <EM>terminal-type</EM>] [<STRONG>-x</STRONG>] <STRONG>clear</STRONG>
 
-          string
-               <STRONG>tput</STRONG>  writes  the  string  to the standard output.  No trailing
-               newline is supplied.
+       <STRONG>tput</STRONG> [<STRONG>-T</STRONG> <EM>terminal-type</EM>] <STRONG>init</STRONG>
 
-          integer
-               <STRONG>tput</STRONG> writes the decimal value to the standard  output,  with  a
-               trailing newline.
+       <STRONG>tput</STRONG> [<STRONG>-T</STRONG> <EM>terminal-type</EM>] <STRONG>reset</STRONG>
 
-          boolean
-               <STRONG>tput</STRONG>  simply sets the exit code (<STRONG>0</STRONG> for TRUE if the terminal has
-               the capability, <STRONG>1</STRONG> for FALSE if it does not), and writes nothing
-               to the standard output.
-
-       Before  using  a value returned on the standard output, the application
-       should test the exit code (e.g., <STRONG>$?</STRONG>, see <STRONG>sh(1)</STRONG>) to be  sure  it  is  <STRONG>0</STRONG>.
-       (See  the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> and <STRONG>DIAGNOSTICS</STRONG> sections.)  For a complete list of
-       capabilities and the <EM>capname</EM> associated with each, see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+       <STRONG>tput</STRONG> [<STRONG>-T</STRONG> <EM>terminal-type</EM>] <STRONG>longname</STRONG>
 
+       <STRONG>tput</STRONG> <STRONG>-S</STRONG>
 
-</PRE><H3><a name="h3-Options">Options</a></H3><PRE>
-       <STRONG>-S</STRONG>     allows more than one capability per  invocation  of  <STRONG>tput</STRONG>.   The
-              capabilities  must  be  passed  to  <STRONG>tput</STRONG> from the standard input
-              instead of from  the  command  line  (see  example).   Only  one
-              <EM>capname</EM>  is allowed per line.  The <STRONG>-S</STRONG> option changes the meaning
-              of the <STRONG>0</STRONG> and <STRONG>1</STRONG> boolean and string exit codes (see the EXIT CODES
-              section).
+       <STRONG>tput</STRONG> <STRONG>-V</STRONG>
 
-              Because  some capabilities may use <EM>string</EM> parameters rather than
-              <EM>numbers</EM>, <STRONG>tput</STRONG> uses a table and the presence of parameters in its
-              input  to  decide whether to use <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>, and how to interpret
-              the parameters.
 
-       <STRONG>-T</STRONG><EM>type</EM> indicates  the  <EM>type</EM>  of  terminal.   Normally  this  option  is
-              unnecessary,  because  the default is taken from the environment
-              variable <STRONG>TERM</STRONG>.  If <STRONG>-T</STRONG> is specified,  then  the  shell  variables
-              <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> will also be ignored.
+</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       <STRONG>tput</STRONG> uses the <EM>terminfo</EM> library and database to  make  terminal-specific
+       capabilities  and  information available to the shell, to initialize or
+       reset the terminal, or to report  a  description  of  the  current  (or
+       specified)  terminal  type.  Terminal capabilities are accessed by <EM>cap-</EM>
+       <EM>code</EM>.
 
-       <STRONG>-V</STRONG>     reports  the  version of ncurses which was used in this program,
-              and exits.
+       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> discusses terminal capabilities at length  and  presents  a
+       complete list of <EM>cap-codes</EM>.
 
-       <STRONG>-x</STRONG>     do not attempt to clear the terminal's scrollback  buffer  using
-              the extended "E3" capability.
+       When   retrieving  capability  values,  the  result  depends  upon  the
+       capability's type.
 
+       Boolean  <STRONG>tput</STRONG> sets its exit status to <STRONG>0</STRONG> if the terminal possesses  <EM>cap-</EM>
+                <EM>code</EM>, and <STRONG>1</STRONG> if it does not.
 
-</PRE><H3><a name="h3-Commands">Commands</a></H3><PRE>
-       A few commands (<STRONG>init</STRONG>, <STRONG>reset</STRONG> and <STRONG>longname</STRONG>) are special; they are defined
-       by the <STRONG>tput</STRONG> program.  The others are the names of <EM>capabilities</EM> from the
-       terminal  database  (see  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>  for  a list).  Although <STRONG>init</STRONG> and
-       <STRONG>reset</STRONG> resemble capability names,  <STRONG>tput</STRONG>  uses  several  capabilities  to
-       perform these special functions.
+       numeric  <STRONG>tput</STRONG>  writes  <EM>cap-code</EM>'s  decimal value to the standard output
+                stream if defined (<STRONG>-1</STRONG> if it is not) followed by a newline.
 
-       <EM>capname</EM>
-              indicates the capability from the terminal database.
+       string   <STRONG>tput</STRONG> writes <EM>cap-code</EM>'s value to the standard output stream  if
+                defined, without a trailing newline.
 
-              If  the  capability  is  a  string  that  takes  parameters, the
-              arguments following the capability will be  used  as  parameters
-              for the string.
+       Before  using  a value returned on the standard output, the application
+       should test <STRONG>tput</STRONG>'s exit status to be sure it is 0;  see  section  "EXIT
+       STATUS" below.
 
-              Most  parameters  are numbers.  Only a few terminal capabilities
-              require string parameters; <STRONG>tput</STRONG> uses a table to decide which  to
-              pass  as  strings.   Normally <STRONG>tput</STRONG> uses <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> to perform the
-              substitution.  If no parameters are given  for  the  capability,
-              <STRONG>tput</STRONG> writes the string without performing the substitution.
 
-       <STRONG>init</STRONG>   If  the terminal database is present and an entry for the user's
-              terminal exists (see <STRONG>-T</STRONG><EM>type</EM>, above), the following will occur:
+</PRE><H3><a name="h3-Operands">Operands</a></H3><PRE>
+       Generally,  an  operand  is  a  <EM>cap-code</EM>,  a  capability  code from the
+       terminal database, or a parameter thereto.  Three others are  specially
+       recognized by <STRONG>tput</STRONG>: <STRONG>init</STRONG>, <STRONG>reset</STRONG>, and <STRONG>longname</STRONG>.  Although these resemble
+       capability codes, they in fact receive special handling; we  term  them
+       "pseudo-capabilities".
 
-              (1)  first, <STRONG>tput</STRONG> retrieves the current  terminal  mode  settings
-                   for your terminal.  It does this by successively testing
+       <EM>cap-code</EM>   indicates a capability from the terminal database.
 
-                   <STRONG>o</STRONG>   the standard error,
+                  If  <EM>cap-code</EM>  is  of  string type and takes parameters, <STRONG>tput</STRONG>
+                  interprets arguments following <EM>cap-code</EM> as  the  parameters,
+                  up to the (fixed) quantity the capability requires.
 
-                   <STRONG>o</STRONG>   standard output,
+                  Most   parameters   are   numeric.    Only  a  few  terminal
+                  capabilities require string parameters; <STRONG>tput</STRONG> uses a table to
+                  decide  which  to  pass  as  strings.   Normally  <STRONG>tput</STRONG>  uses
+                  <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> to perform the substitution.  If no parameters are
+                  given  for  the  capability,  <STRONG>tput</STRONG> writes the string without
+                  performing the substitution.
 
-                   <STRONG>o</STRONG>   standard input and
+       <STRONG>init</STRONG>       initializes the  terminal.   If  the  terminal  database  is
+                  present  and  an  entry for the user's terminal type exists,
+                  the following occur.
 
-                   <STRONG>o</STRONG>   ultimately "/dev/tty"
+                  (1)  <STRONG>tput</STRONG>  retrieves  the  terminal's  mode  settings.    It
+                       successively  tests  the file descriptors corresponding
+                       to
 
-                   to   obtain  terminal  settings.   Having  retrieved  these
-                   settings, <STRONG>tput</STRONG> remembers which file descriptor to use  when
-                   updating settings.
+                       <STRONG>o</STRONG>   the standard error stream,
 
-              (2)  if  the  window  size cannot be obtained from the operating
-                   system, but the terminal description (or environment, e.g.,
-                   <STRONG>LINES</STRONG>  and  <STRONG>COLUMNS</STRONG>  variables  specify  this),  update the
-                   operating system's notion of the window size.
+                       <STRONG>o</STRONG>   the standard output stream,
 
-              (3)  the terminal modes will be updated:
+                       <STRONG>o</STRONG>   the standard input stream, and
 
-                   <STRONG>o</STRONG>   any delays (e.g., newline) specified in the entry  will
-                       be set in the tty driver,
+                       <STRONG>o</STRONG>   <EM>/dev/tty</EM>
 
-                   <STRONG>o</STRONG>   tabs  expansion  will  be turned on or off according to
-                       the specification in the entry, and
+                       to obtain terminal settings.   Having  retrieved  them,
+                       <STRONG>tput</STRONG>  remembers  which  descriptor  to  use for further
+                       updates.
 
-                   <STRONG>o</STRONG>   if tabs are not expanded, standard  tabs  will  be  set
-                       (every 8 spaces).
+                  (2)  If the terminal dimensions cannot be obtained from  the
+                       operating  system, but the environment or terminal type
+                       database  entry  describes  them,  <STRONG>tput</STRONG>   updates   the
+                       operating system's notion of them.
 
-              (4)  if  present,  the terminal's initialization strings will be
-                   output as detailed in the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> section on  <EM>Tabs</EM>  <EM>and</EM>
-                   <EM>Initialization</EM>,
+                  (3)  <STRONG>tput</STRONG> updates the terminal modes.
 
-              (5)  output is flushed.
+                       <STRONG>o</STRONG>   Any  delays  specified  in  the entry (for example,
+                           when a newline is sent) are  set  in  the  terminal
+                           driver.
 
-              If  an  entry does not contain the information needed for any of
-              these activities, that activity will silently be skipped.
+                       <STRONG>o</STRONG>   Tab   expansion   is  turned  on  or  off  per  the
+                           specification in the entry, and
 
-       <STRONG>reset</STRONG>  This is similar to <STRONG>init</STRONG>, with two differences:
+                       <STRONG>o</STRONG>   if tabs are not expanded, standard  tabs  (every  8
+                           spaces) are set.
 
-              (1)  before any other initialization, the terminal modes will be
-                   reset to a "sane" state:
+                  (4)  If  initialization capabilities, detailed in subsection
+                       "Tabs and Initialization" of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, are  present,
+                       <STRONG>tput</STRONG> writes them to the standard output stream.
 
-                   <STRONG>o</STRONG>   set cooked and echo modes,
+                  (5)  <STRONG>tput</STRONG> flushes the standard output stream.
 
-                   <STRONG>o</STRONG>   turn off cbreak and raw modes,
+                  If  an  entry  lacks  the information needed for an activity
+                  above, that activity is silently skipped.
 
-                   <STRONG>o</STRONG>   turn on newline translation and
+       <STRONG>reset</STRONG>      re-initializes  the  terminal.    A   reset   differs   from
+                  initialization in two ways.
 
-                   <STRONG>o</STRONG>   reset  any  unset  special  characters to their default
-                       values
+                  (1)  <STRONG>tput</STRONG> sets the the terminal modes to a "sane" state,
 
-              (2)  Instead  of  putting  out   <EM>initialization</EM>   strings,   the
-                   terminal's  <EM>reset</EM>  strings  will be output if present (<STRONG>rs1</STRONG>,
-                   <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, <STRONG>rf</STRONG>).  If the <EM>reset</EM> strings are not  present,  but
-                   <EM>initialization</EM> strings are, the <EM>initialization</EM> strings will
-                   be output.
+                       <STRONG>o</STRONG>   enabling cooked and echo modes,
 
-              Otherwise, <STRONG>reset</STRONG> acts identically to <STRONG>init</STRONG>.
+                       <STRONG>o</STRONG>   disabling cbreak and raw modes,
 
-       <STRONG>longname</STRONG>
-              If the terminal database is present and an entry for the  user's
-              terminal  exists  (see  <STRONG>-T</STRONG><EM>type</EM> above), then the long name of the
-              terminal will be put out.  The long name is the last name in the
-              first  line  of  the  terminal's  description  in  the  <STRONG>terminfo</STRONG>
-              database [see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>].
+                       <STRONG>o</STRONG>   enabling newline translation, and
 
+                       <STRONG>o</STRONG>   setting  any  unset  special  characters  to  their
+                           default values.
 
-</PRE><H3><a name="h3-Aliases">Aliases</a></H3><PRE>
-       <STRONG>tput</STRONG> handles the <STRONG>clear</STRONG>, <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands  specially:  it  allows
-       for the possibility that it is invoked by a link with those names.
+                  (2)  If any reset capabilities are defined for the  terminal
+                       type,   <STRONG>tput</STRONG>   writes   them   to  the  output  stream.
+                       Otherwise,  <STRONG>tput</STRONG>  uses   any   defined   initialization
+                       capabilities.    Reset  capabilities  are  detailed  in
+                       subsection "Tabs and Initialization" of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       If  <STRONG>tput</STRONG>  is invoked by a link named <STRONG>reset</STRONG>, this has the same effect as
-       <STRONG>tput</STRONG> <STRONG>reset</STRONG>.  The  <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>  utility  also  treats  a  link  named  <STRONG>reset</STRONG>
-       specially.
+       <STRONG>longname</STRONG>   A <EM>terminfo</EM> entry begins with one or more names by  which  an
+                  application  can  refer  to  the  entry,  before the list of
+                  terminal capabilities.   The  names  are  separated  by  "|"
+                  characters.   X/Open  Curses  terms  the last name the "long
+                  name", and indicates that it may include blanks.
 
-       Before ncurses 6.1, the two utilities were different from each other:
+                  <STRONG>tic</STRONG> warns if the last  name  does  not  include  blanks,  to
+                  accommodate  old <EM>terminfo</EM> entries that treated the long name
+                  as an optional feature.  The long name is often referred  to
+                  as the description field.
 
-       <STRONG>o</STRONG>   <STRONG>tset</STRONG>  utility  reset the terminal modes and special characters (not
-           done with <STRONG>tput</STRONG>).
+                  If  the  terminal  database  is present and an entry for the
+                  user's terminal type exists, <STRONG>tput</STRONG> reports its description to
+                  the standard output stream, without a trailing newline.  See
+                  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       <STRONG>o</STRONG>   On the other hand, <STRONG>tset</STRONG>'s repertoire of terminal  capabilities  for
-           resetting  the terminal was more limited, i.e., only <STRONG>reset_1string</STRONG>,
-           <STRONG>reset_2string</STRONG> and <STRONG>reset_file</STRONG>  in  contrast  to  the  tab-stops  and
-           margins which are set by this utility.
+       <EM>Note:</EM> Redirecting the output of "<STRONG>tput</STRONG> <STRONG>init</STRONG>" or "<STRONG>tput</STRONG> <STRONG>reset</STRONG>" to  a  file
+       will capture only part of their actions.  Changes to the terminal modes
+       are not affected by file descriptor  redirection,  since  the  terminal
+       modes are altered via <STRONG>ioctl(2)</STRONG>.
 
-       <STRONG>o</STRONG>   The  <STRONG>reset</STRONG>  program  is  usually an alias for <STRONG>tset</STRONG>, because of this
-           difference with resetting terminal modes and special characters.
 
-       With the changes made for ncurses 6.1, the <EM>reset</EM>  feature  of  the  two
-       programs is (mostly) the same.  A few differences remain:
+</PRE><H3><a name="h3-Aliases">Aliases</a></H3><PRE>
+       If  <STRONG>tput</STRONG>  is  invoked  via  link  with any of the names <STRONG>clear</STRONG>, <STRONG>init</STRONG>, or
+       <STRONG>reset</STRONG>, it operates as if run with the corresponding (pseudo-)capability
+       operand.  For example, executing a link named <STRONG>reset</STRONG> that points to <STRONG>tput</STRONG>
+       has the same effect as "<STRONG>tput</STRONG> <STRONG>reset</STRONG>".
 
-       <STRONG>o</STRONG>   The  <STRONG>tset</STRONG>  program  waits  one  second  when  resetting, in case it
-           happens to be a hardware terminal.
+       This feature was introduced by <EM>ncurses</EM> 5.2 in 2000.  It is rarely used:
 
-       <STRONG>o</STRONG>   The two programs  write  the  terminal  initialization  strings  to
-           different  streams  (i.e.,  the  standard  error  for  <STRONG>tset</STRONG> and the
-           standard output for <STRONG>tput</STRONG>).
+       <STRONG>clear</STRONG>  is a separate program, which is both smaller and more frequently
+              executed.
 
-           <STRONG>Note:</STRONG>  although  these  programs  write   to   different   streams,
-           redirecting  their output to a file will capture only part of their
-           actions.  The changes to the terminal modes  are  not  affected  by
-           redirecting the output.
+       <STRONG>init</STRONG>   has the same name as another program in widespread use.
 
-       If  <STRONG>tput</STRONG>  is  invoked by a link named <STRONG>init</STRONG>, this has the same effect as
-       <STRONG>tput</STRONG> <STRONG>init</STRONG>.  Again, you are less likely to use that link because another
-       program named <STRONG>init</STRONG> has a more well-established use.
+       <STRONG>reset</STRONG>  is  provided  by  the  <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>  utility  (also  via a link named
+              <STRONG>reset</STRONG>).
 
 
 </PRE><H3><a name="h3-Terminal-Size">Terminal Size</a></H3><PRE>
-       Besides  the  special  commands  (e.g.,  <STRONG>clear</STRONG>),  tput  treats  certain
-       terminfo  capabilities  specially:  <STRONG>lines</STRONG>   and   <STRONG>cols</STRONG>.    tput   calls
-       <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to obtain the terminal size:
+       Besides the pseudo-capabilities (such as <STRONG>init</STRONG>), <STRONG>tput</STRONG> treats  the  <STRONG>lines</STRONG>
+       and  <STRONG>cols</STRONG>  <EM>cap-codes</EM> specially: it may call <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to obtain the
+       terminal size.
 
-       <STRONG>o</STRONG>   first, it gets the size from the terminal database (which generally
-           is not provided for terminal emulators which do not  have  a  fixed
-           window size)
+       <STRONG>o</STRONG>   First, <STRONG>tput</STRONG> attempts to obtain these capabilities from the terminal
+           database.   This generally fails for terminal emulators, which lack
+           a fixed window size and thus omit the capabilities.
 
-       <STRONG>o</STRONG>   then  it  asks  the operating system for the terminal's size (which
-           generally works, unless connecting via a serial line which does not
-           support <EM>NAWS</EM>: negotiations about window size).
+       <STRONG>o</STRONG>   It then asks the operating system for the  terminal's  size,  which
+           generally  works,  unless  the connection is via a serial line that
+           does not support "NAWS": negotiations about window size.
 
-       <STRONG>o</STRONG>   finally,  it  inspects  the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG>
+       <STRONG>o</STRONG>   Finally, it inspects the environment variables <EM>LINES</EM>  and  <EM>COLUMNS</EM>,
            which may override the terminal size.
 
-       If the <STRONG>-T</STRONG> option is given tput ignores  the  environment  variables  by
-       calling   <STRONG>use_tioctl(TRUE)</STRONG>,  relying  upon  the  operating  system  (or
-       finally, the terminal database).
+       If  the  <STRONG>-T</STRONG>  option is given, <STRONG>tput</STRONG> ignores the environment variables by
+       calling  <STRONG>use_tioctl(TRUE)</STRONG>,  relying  upon  the  operating  system  (or,
+       ultimately, the terminal database).
 
 
-</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
-       <STRONG>tput</STRONG> <STRONG>init</STRONG>
-            Initialize the terminal according to the type of terminal  in  the
-            environmental  variable  <STRONG>TERM</STRONG>.  This command should be included in
-            everyone's .profile after the environmental variable <STRONG>TERM</STRONG> has been
-            exported, as illustrated on the <STRONG>profile(5)</STRONG> manual page.
+</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
+       <STRONG>-S</STRONG>       retrieves  more  than  one  capability per invocation of <STRONG>tput</STRONG>.
+                The capabilities must be passed  to  <STRONG>tput</STRONG>  from  the  standard
+                input  stream  instead  of  from the command line (see section
+                "EXAMPLES" below).  Only one <EM>cap-code</EM>  is  allowed  per  line.
+                The  <STRONG>-S</STRONG>  option  changes  the  meanings  of  the  <STRONG>0</STRONG> and <STRONG>1</STRONG> exit
+                statuses (see section "EXIT STATUS" below).
 
-       <STRONG>tput</STRONG> <STRONG>-T5620</STRONG> <STRONG>reset</STRONG>
-            Reset  an  AT&amp;T  5620 terminal, overriding the type of terminal in
-            the environmental variable <STRONG>TERM</STRONG>.
+                Some capabilities use string parameters  rather  than  numeric
+                ones.   <STRONG>tput</STRONG>  employs  a  built-in  table  and the presence of
+                parameters in its input to decide how to interpret  them,  and
+                whether to use <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>.
 
-       <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>0</STRONG> <STRONG>0</STRONG>
-            Send the sequence to move the cursor to row <STRONG>0</STRONG>, column <STRONG>0</STRONG> (the upper
-            left  corner  of  the  screen,  usually known as the "home" cursor
-            position).
+       <STRONG>-T</STRONG> <EM>type</EM>  indicates  the  terminal's  <EM>type</EM>.   Normally  this  option  is
+                unnecessary,  because  a  default  is  taken  from  the   <EM>TERM</EM>
+                environment variable.  If specified, the environment variables
+                <EM>LINES</EM> and <EM>COLUMNS</EM> are also ignored.
 
-       <STRONG>tput</STRONG> <STRONG>clear</STRONG>
-            Echo the clear-screen sequence for the current terminal.
+       <STRONG>-V</STRONG>       reports the version of <EM>ncurses</EM> associated with <STRONG>tput</STRONG>, and exits
+                with a successful status.
 
-       <STRONG>tput</STRONG> <STRONG>cols</STRONG>
-            Print the number of columns for the current terminal.
+       <STRONG>-x</STRONG>       prevents  "<STRONG>tput</STRONG> <STRONG>clear</STRONG>" from attempting to clear the scrollback
+                buffer.
 
-       <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>cols</STRONG>
-            Print the number of columns for the 450 terminal.
 
-       <STRONG>bold=`tput</STRONG> <STRONG>smso`</STRONG> <STRONG>offbold=`tput</STRONG> <STRONG>rmso`</STRONG>
-            Set the shell variables <STRONG>bold</STRONG>, to begin  stand-out  mode  sequence,
-            and  <STRONG>offbold</STRONG>,  to  end  standout  mode  sequence,  for the current
-            terminal.  This might be followed by a prompt: <STRONG>echo</STRONG> <STRONG>"${bold}Please</STRONG>
-            <STRONG>type</STRONG> <STRONG>in</STRONG> <STRONG>your</STRONG> <STRONG>name:</STRONG> <STRONG>${offbold}\c"</STRONG>
+</PRE><H2><a name="h2-EXIT-STATUS">EXIT STATUS</a></H2><PRE>
+       Normally, one should interpret <STRONG>tput</STRONG>'s exit statuses as follows.
 
-       <STRONG>tput</STRONG> <STRONG>hc</STRONG>
-            Set  exit  code to indicate if the current terminal is a hard copy
-            terminal.
+       <STRONG>Status</STRONG>   <STRONG>Meaning</STRONG> <STRONG>When</STRONG> <STRONG>-S</STRONG> <STRONG>Not</STRONG> <STRONG>Specified</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>0</STRONG>        Boolean or string capability present
+       <STRONG>1</STRONG>        Boolean or numeric capability absent
+       <STRONG>2</STRONG>        usage error or no terminal type specified
+       <STRONG>3</STRONG>        unrecognized terminal type
+       <STRONG>4</STRONG>        unrecognized capability code
+       <STRONG>&gt;4</STRONG>       system error (4 + <STRONG>errno</STRONG>)
 
-       <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>23</STRONG> <STRONG>4</STRONG>
-            Send the sequence to move the cursor to row 23, column 4.
+       When the <STRONG>-S</STRONG> option is used, some statuses change meanings.
 
-       <STRONG>tput</STRONG> <STRONG>cup</STRONG>
-            Send the terminfo string for cursor-movement, with  no  parameters
-            substituted.
+       <STRONG>Status</STRONG>   <STRONG>Meaning</STRONG> <STRONG>When</STRONG> <STRONG>-S</STRONG> <STRONG>Specified</STRONG>
+       ------------------------------------------------------------------------
+       <STRONG>0</STRONG>        all operands interpreted
+       <STRONG>1</STRONG>        unused
+       <STRONG>4</STRONG>        some operands not interpreted
 
-       <STRONG>tput</STRONG> <STRONG>longname</STRONG>
-            Print  the  long  name  from the <STRONG>terminfo</STRONG> database for the type of
-            terminal specified in the environmental variable <STRONG>TERM</STRONG>.
 
-            <STRONG>tput</STRONG> <STRONG>-S</STRONG> <STRONG>&lt;&lt;!</STRONG>
-            <STRONG>&gt;</STRONG> <STRONG>clear</STRONG>
-            <STRONG>&gt;</STRONG> <STRONG>cup</STRONG> <STRONG>10</STRONG> <STRONG>10</STRONG>
-            <STRONG>&gt;</STRONG> <STRONG>bold</STRONG>
-            <STRONG>&gt;</STRONG> <STRONG>!</STRONG>
+</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
+       <STRONG>tput</STRONG> reads one environment variable.
 
-            This example shows <STRONG>tput</STRONG> processing  several  capabilities  in  one
-            invocation.   It  clears  the screen, moves the cursor to position
-            10, 10 and turns  on  bold  (extra  bright)  mode.   The  list  is
-            terminated by an exclamation mark (<STRONG>!</STRONG>) on a line by itself.
+       <EM>TERM</EM>    denotes the terminal type.  Each  terminal  type  is  distinct,
+               though many are similar.  The <STRONG>-T</STRONG> option overrides its value.
 
 
 </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       <STRONG>/usr/share/terminfo</STRONG>
+       <EM>/usr/share/tabset</EM>
+              tab stop initialization database
+
+       <EM>/usr/share/terminfo</EM>
               compiled terminal description database
 
-       <STRONG>/usr/share/tabset/*</STRONG>
-              tab  settings  for some terminals, in a format appropriate to be
-              output to the terminal (escape sequences that  set  margins  and
-              tabs);  for  more  information, see the <EM>Tabs</EM> <EM>and</EM> <EM>Initialization</EM>,
-              section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       Over  time  <EM>ncurses</EM>  <STRONG>tput</STRONG>  has  differed  from  that of System V in two
+       important respects, one now mostly historical.
 
-</PRE><H2><a name="h2-EXIT-CODES">EXIT CODES</a></H2><PRE>
-       If the <STRONG>-S</STRONG> option is used, <STRONG>tput</STRONG> checks for errors from each line, and if
-       any  errors  are  found, will set the exit code to 4 plus the number of
-       lines with errors.  If no errors are found, the exit  code  is  <STRONG>0</STRONG>.   No
-       indication  of which line failed can be given so exit code <STRONG>1</STRONG> will never
-       appear.  Exit codes <STRONG>2</STRONG>, <STRONG>3</STRONG>, and <STRONG>4</STRONG> retain their usual interpretation.   If
-       the  <STRONG>-S</STRONG>  option  is  not  used,  the  exit  code depends on the type of
-       <EM>capname</EM>:
+       <STRONG>o</STRONG>   "<STRONG>tput</STRONG> <EM>cap-code</EM>" writes to the standard output, which need not be  a
+           terminal  device.   However,  the operands that manipulate terminal
+           modes might not use the standard output.
 
-          <EM>boolean</EM>
-                 a value of <STRONG>0</STRONG> is set for TRUE and <STRONG>1</STRONG> for FALSE.
+           System V <STRONG>tput</STRONG>'s <STRONG>init</STRONG> and <STRONG>reset</STRONG>  operands  use  logic  from  4.1cBSD
+           <STRONG>tset</STRONG>,  manipulating  terminal  modes.   It  checks  the  same  file
+           descriptors (and <EM>/dev/tty</EM>) for association with a  terminal  device
+           as  <EM>ncurses</EM>  now does, and if none are, finally assumes a 1200 baud
+           terminal.  When updating terminal modes, it ignores errors.
 
-          <EM>string</EM> a value of <STRONG>0</STRONG> is set  if  the  <EM>capname</EM>  is  defined  for  this
-                 terminal  <EM>type</EM>  (the value of <EM>capname</EM> is returned on standard
-                 output); a value of <STRONG>1</STRONG> is set if <EM>capname</EM> is  not  defined  for
-                 this terminal <EM>type</EM> (nothing is written to standard output).
+           Until <EM>ncurses</EM> 6.1 (see  section  "HISTORY"  below),  <STRONG>tput</STRONG>  did  not
+           modify  terminal  modes.   It  now  employs  a  scheme  similar  to
+           System V, using functions shared with <STRONG>tset</STRONG> (and ultimately based on
+           4.4BSD  <STRONG>tset</STRONG>).  If it is not able to open a terminal (for instance,
+           when run by <STRONG>cron(1)</STRONG>), <STRONG>tput</STRONG> exits with an error status.
 
-          <EM>integer</EM>
-                 a value of <STRONG>0</STRONG> is always set, whether or not <EM>capname</EM> is defined
-                 for this terminal <EM>type</EM>.  To determine if <EM>capname</EM>  is  defined
-                 for  this terminal <EM>type</EM>, the user must test the value written
-                 to standard output.  A value of <STRONG>-1</STRONG> means that <EM>capname</EM> is  not
-                 defined for this terminal <EM>type</EM>.
+       <STRONG>o</STRONG>   System V <STRONG>tput</STRONG> assumes that  the  type  of  a  <EM>cap-code</EM>  operand  is
+           numeric  if all the characters of its value are decimal numbers; if
+           they are not, it treats <EM>cap-code</EM> as a string capability.
 
-          <EM>other</EM>  <STRONG>reset</STRONG>  or  <STRONG>init</STRONG>  may fail to find their respective files.  In
-                 that case, the exit code is set to 4 + <STRONG>errno</STRONG>.
+           Most implementations that provide support for <EM>cap-code</EM> operands use
+           the  <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>  function  to  expand its parameters.  That function
+           expects a mixture of numeric and string parameters, requiring  <STRONG>tput</STRONG>
+           to know which type to use.
+
+           <EM>ncurses</EM>  <STRONG>tput</STRONG> uses a table to determine the parameter types for the
+           standard <EM>cap-code</EM> operands, and an  internal  function  to  analyze
+           nonstandard <EM>cap-code</EM> operands.
+
+           While  more reliable than System V's utility, a portability problem
+           is introduced by this analysis.  An OpenBSD developer  adapted  the
+           internal  library  function  from <EM>ncurses</EM> to port NetBSD's <EM>termcap</EM>-
+           based <STRONG>tput</STRONG> to <EM>terminfo</EM>, and modified it to interpret multiple  <EM>cap-</EM>
+           <EM>codes</EM>  (and parameters) on the command line.  Portable applications
+           should not rely upon this feature; <EM>ncurses</EM>  offers  it  to  support
+           applications written specifically for OpenBSD.
+
+       This  implementation,  unlike others, accepts both <EM>termcap</EM> and <EM>terminfo</EM>
+       <EM>cap-codes</EM> if <EM>termcap</EM> support is compiled in.  In  that  case,  however,
+       the predefined <EM>termcap</EM> and <EM>terminfo</EM> codes have two ambiguities; <EM>ncurses</EM>
+       assumes the <EM>terminfo</EM> code.
+
+       <STRONG>o</STRONG>   The <EM>cap-code</EM> <STRONG>dl</STRONG> means <STRONG>delete_line</STRONG> to <EM>termcap</EM>  but  <STRONG>parm_delete_line</STRONG>
+           to <EM>terminfo</EM>.  <EM>termcap</EM> uses the code <STRONG>DL</STRONG> for <STRONG>parm_delete_line</STRONG>.  <EM>term-</EM>
+           <EM>info</EM> uses the code <STRONG>dl1</STRONG> for <STRONG>delete_line</STRONG>.
+
+       <STRONG>o</STRONG>   The <EM>cap-code</EM> <STRONG>ed</STRONG> means <STRONG>exit_delete_mode</STRONG> to <EM>termcap</EM>  but  <STRONG>clr_eos</STRONG>  to
+           <EM>terminfo</EM>.  <EM>termcap</EM> uses the code <STRONG>cd</STRONG> for <STRONG>clr_eos</STRONG>.  <EM>terminfo</EM> uses the
+           code <STRONG>rmdc</STRONG> for <STRONG>exit_delete_mode</STRONG>.
+
+       The  <STRONG>longname</STRONG>  operand,  <STRONG>-S</STRONG>  option,  and  the   parameter-substitution
+       features  used in the <STRONG>cup</STRONG> example below, were not supported in AT&amp;T/USL
+       <EM>curses</EM> before SVr4 (1989).  Later, 4.3BSD-Reno (1990) added support for
+       <STRONG>longname</STRONG>,  and  in  1994,  NetBSD  added  support  for  the  parameter-
+       substitution features.
+
+       IEEE  Std  1003.1/The  Open   Group   Base   Specifications   Issue   7
+       (POSIX.1-2008)  documents  only the <STRONG>clear</STRONG>, <STRONG>init</STRONG>, and <STRONG>reset</STRONG> operands.  A
+       few observations of interest arise from that selection.
+
+       <STRONG>o</STRONG>   <EM>ncurses</EM> supports <STRONG>clear</STRONG> as it does any other standard <EM>cap-code</EM>.  The
+           others   (<STRONG>init</STRONG>   and   <STRONG>longname</STRONG>)  do  not  correspond  to  terminal
+           capabilities.
 
-       Any other exit code indicates an error; see the DIAGNOSTICS section.
+       <STRONG>o</STRONG>   The <STRONG>tput</STRONG> on SVr4-based systems such as Solaris, IRIX64, and  HP-UX,
+           as well as others such as AIX and Tru64, also support standard <EM>cap-</EM>
+           <EM>code</EM> operands.
 
+       <STRONG>o</STRONG>   A few platforms such as FreeBSD recognize <EM>termcap</EM> codes rather than
+           <EM>terminfo</EM> capability codes in their respective <STRONG>tput</STRONG> commands.  Since
+           2010, NetBSD's <STRONG>tput</STRONG> uses <EM>terminfo</EM> codes.   Before  that,  it  (like
+           FreeBSD) recognized <EM>termcap</EM> codes.
 
-</PRE><H2><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></H2><PRE>
-       <STRONG>tput</STRONG> prints the following error messages  and  sets  the  corresponding
-       exit codes.
+           Beginning  in  2021, FreeBSD uses <EM>ncurses</EM> <STRONG>tput</STRONG>, configured for both
+           <EM>terminfo</EM> (tested first) and <EM>termcap</EM> (as a fallback).
 
-       exit code   error message
-       ---------------------------------------------------------------------
-       <STRONG>0</STRONG>           (<EM>capname</EM>  is a numeric variable that is not specified in
-                   the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> database for this  terminal  type,  e.g.
-                   <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>lines</STRONG> and <STRONG>tput</STRONG> <STRONG>-Thp2621</STRONG> <STRONG>xmc</STRONG>)
-       <STRONG>1</STRONG>           no error message is printed, see the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> section.
-       <STRONG>2</STRONG>           usage error
-       <STRONG>3</STRONG>           unknown terminal <EM>type</EM> or no <STRONG>terminfo</STRONG> database
-       <STRONG>4</STRONG>           unknown <STRONG>terminfo</STRONG> capability <EM>capname</EM>
-       <STRONG>&gt;4</STRONG>          error occurred in -S
-       ---------------------------------------------------------------------
+       Because (apparently) all <EM>certified</EM> Unix systems support the full set of
+       capability  codes,  the  reason  for  documenting only a few may not be
+       apparent.
 
+       <STRONG>o</STRONG>   X/Open Curses Issue 7 documents <STRONG>tput</STRONG> differently, with <EM>cap-code</EM> and
+           the other features used in this implementation.
 
-</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       The  <STRONG>tput</STRONG>  command  was begun by Bill Joy in 1980.  The initial version
-       only cleared the screen.
+       <STRONG>o</STRONG>   That  is,  there  are  two standards for <STRONG>tput</STRONG>: POSIX (a subset) and
+           X/Open Curses (the full implementation).  POSIX documents a  subset
+           to  avoid  the  complication  of  including  X/Open  Curses and the
+           terminal capability database.
 
-       AT&amp;T System V provided a different <STRONG>tput</STRONG> command:
+       <STRONG>o</STRONG>   While it is certainly possible to  write  a  <STRONG>tput</STRONG>  program  without
+           using  <EM>curses</EM>,  no  system  with a <EM>curses</EM> implementation provides a
+           <STRONG>tput</STRONG> utility that does not also support standard <EM>cap-codes</EM>.
 
-       <STRONG>o</STRONG>   SVr2 provided  a  rudimentary  <STRONG>tput</STRONG>  which  checked  the  parameter
-           against  each  predefined capability and returned the corresponding
-           value.  This  version  of  <STRONG>tput</STRONG>  did  not  use  <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>  for  the
-           capabilities which are parameterized.
+       X/Open  Curses  Issue  7  (2009)  is  the  first  version  to  document
+       utilities.  However that part of X/Open Curses does not follow existing
+       practice (that is, System V <EM>curses</EM> behavior).
 
-       <STRONG>o</STRONG>   SVr3 replaced that, a year later, by a more extensive program whose
-           <STRONG>init</STRONG> and <STRONG>reset</STRONG>  subcommands  (more  than  half  the  program)  were
-           incorporated  from  the  <STRONG>reset</STRONG>  feature of BSD <STRONG>tset</STRONG> written by Eric
-           Allman.
+       <STRONG>o</STRONG>   It assigns exit status 4 to "invalid operand", which may  have  the
+           same  meaning  as  "unknown  capability".  For instance, the source
+           code for Solaris <EM>xcurses</EM> uses the term "invalid" in this case.
 
-       <STRONG>o</STRONG>   SVr4 added color initialization using the <STRONG>orig_colors</STRONG> and <STRONG>orig_pair</STRONG>
-           capabilities in the <STRONG>init</STRONG> subcommand.
+       <STRONG>o</STRONG>   It assigns exit status 255  to  a  numeric  variable  that  is  not
+           specified in the <EM>terminfo</EM> database.  That likely is a documentation
+           error, mistaking  the  "-1"  written  to  the  standard  output  to
+           indicate   an   absent  or  cancelled  numeric  capability  for  an
+           (unsigned) exit status.
 
-       Keith  Bostic  replaced  the  BSD  <STRONG>tput</STRONG>  command  in  1989  with  a new
-       implementation based on the AT&amp;T System V program <STRONG>tput</STRONG>.  Like the  AT&amp;T
-       program,  Bostic's  version accepted some parameters named for <EM>terminfo</EM>
-       capabilities (<STRONG>clear</STRONG>, <STRONG>init</STRONG>, <STRONG>longname</STRONG> and <STRONG>reset</STRONG>).   However  (because  he
-       had  only  <EM>termcap</EM>  available),  it  accepted  <EM>termcap</EM>  names for other
-       capabilities.  Also, Bostic's BSD <STRONG>tput</STRONG> did not modify the terminal  I/O
-       modes as the earlier BSD <STRONG>tset</STRONG> had done.
+       The various System V implementations (AIX, HP-UX, Solaris) use the same
+       exit statuses as <EM>ncurses</EM>.
 
-       At the same time, Bostic added a shell script named "clear", which used
-       <STRONG>tput</STRONG> to clear the screen.
+       NetBSD  <EM>curses</EM>  documents  exit  statuses  that  correspond  to neither
+       <EM>ncurses</EM> nor X/Open Curses.
 
-       Both  of  these  appeared  in  4.4BSD,  becoming   the   "modern"   BSD
-       implementation of <STRONG>tput</STRONG>.
 
-       This  implementation of <STRONG>tput</STRONG> began from a different source than AT&amp;T or
-       BSD: Ross Ridge's <EM>mytinfo</EM> package, published  on  <EM>comp.sources.unix</EM>  in
-       December  1992.   Ridge's  program  made  more sophisticated use of the
-       terminal capabilities than the BSD program.   Eric  Raymond  used  that
-       <STRONG>tput</STRONG>  program  (and  other  parts  of <EM>mytinfo</EM>) in ncurses in June 1995.
-       Using the portions dealing with terminal  capabilities  almost  without
-       change,   Raymond   made  improvements  to  the  way  the  command-line
-       parameters were handled.
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       Bill Joy wrote a <STRONG>tput</STRONG> command during development  of  4BSD  in  October
+       1980.   This  initial version only cleared the screen, and did not ship
+       with official distributions.
 
+       System V developed a different <STRONG>tput</STRONG> command.
 
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       This implementation of <STRONG>tput</STRONG> differs from AT&amp;T  <STRONG>tput</STRONG>  in  two  important
-       areas:
+       <STRONG>o</STRONG>   SVr2 (1984) provided a rudimentary <STRONG>tput</STRONG> that checked the  parameter
+           against  each  predefined capability and returned the corresponding
+           value.   This  version  of  <STRONG>tput</STRONG>  did   not   use   <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>   for
+           parameterized capabilities.
+
+       <STRONG>o</STRONG>   SVr3  (1987)  replaced  that  with  a  more extensive program whose
+           support for <STRONG>init</STRONG> and <STRONG>reset</STRONG> operands (more than  half  the  program)
+           incorporated the <STRONG>reset</STRONG> feature of BSD <STRONG>tset</STRONG> written by Eric Allman.
+
+       <STRONG>o</STRONG>   SVr4  (1989)  added  color  initialization by using the <STRONG>orig_colors</STRONG>
+           (<STRONG>oc</STRONG>) and <STRONG>orig_pair</STRONG> (<STRONG>op</STRONG>) capabilities in its <STRONG>init</STRONG> logic.
+
+       Keith Bostic refactored BSD <STRONG>tput</STRONG> for shipment in  4.3BSD-Tahoe  (1988),
+       then  replaced  it  the  next  year  with a new implementation based on
+       System V <STRONG>tput</STRONG>.  Bostic's version  similarly  accepted  some  parameters
+       named  for  <EM>terminfo</EM>  (pseudo-)capabilities: <STRONG>clear</STRONG>, <STRONG>init</STRONG>, <STRONG>longname</STRONG>, and
+       <STRONG>reset</STRONG>.  However, because he had only  <EM>termcap</EM>  available,  it  accepted
+       <EM>termcap</EM>  codes for other capabilities.  Also, Bostic's BSD <STRONG>tput</STRONG> did not
+       modify the terminal modes as the earlier BSD <STRONG>tset</STRONG> had done.
+
+       At the same time, Bostic added a shell script named "clear"  that  used
+       <STRONG>tput</STRONG>  to  clear the screen.  Both of these appeared in 4.4BSD, becoming
+       the "modern" BSD implementation of <STRONG>tput</STRONG>.
+
+       The origin of <EM>ncurses</EM> <STRONG>tput</STRONG> lies outside both System V and BSD, in  Ross
+       Ridge's  <EM>mytinfo</EM>  package,  published  on <EM>comp.sources.unix</EM> in December
+       1992.  Ridge's program made more  sophisticated  use  of  the  terminal
+       capabilities than the BSD program.  Eric Raymond used that <STRONG>tput</STRONG> program
+       (and other parts of <EM>mytinfo</EM>) in <EM>ncurses</EM> in  June  1995.   Incorporating
+       the  portions dealing with terminal capabilities almost without change,
+       Raymond made improvements  to  the  way  command-line  parameters  were
+       handled.
+
+       Before <EM>ncurses</EM> 6.1 (2018), its <STRONG>tset</STRONG> and <STRONG>tput</STRONG> utilities differed.
+
+       <STRONG>o</STRONG>   <STRONG>tset</STRONG>  was  more effective, resetting the terminal modes and special
+           characters.
 
-       <STRONG>o</STRONG>   <STRONG>tput</STRONG>  <EM>capname</EM>  writes  to  the standard output.  That need not be a
-           regular  terminal.   However,  the  subcommands  which   manipulate
-           terminal modes may not use the standard output.
+       <STRONG>o</STRONG>   On the other hand, <STRONG>tset</STRONG>'s repertoire of terminal  capabilities  for
+           resetting the terminal was more limited; it had only equivalents of
+           <STRONG>reset_1string</STRONG> (<STRONG>rs1</STRONG>), <STRONG>reset_2string</STRONG> (<STRONG>rs2</STRONG>), and <STRONG>reset_file</STRONG> (<STRONG>rf</STRONG>),  and
+           not the tab stop and margin update features of <STRONG>tput</STRONG>.
 
-           The  AT&amp;T  implementation's  <STRONG>init</STRONG>  and  <STRONG>reset</STRONG>  commands use the BSD
-           (4.1c)  <STRONG>tset</STRONG>  source,  which  manipulates   terminal   modes.    It
-           successively  tries standard output, standard error, standard input
-           before falling back to "/dev/tty" and finally just assumes a 1200Bd
-           terminal.  When updating terminal modes, it ignores errors.
+       The <STRONG>reset</STRONG> program is traditionally an alias for <STRONG>tset</STRONG> due to its ability
+       to reset terminal modes and special characters.
 
-           Until  changes made after ncurses 6.0, <STRONG>tput</STRONG> did not modify terminal
-           modes.  <STRONG>tput</STRONG> now uses a similar scheme, using functions shared with
-           <STRONG>tset</STRONG>  (and ultimately based on the 4.4BSD <STRONG>tset</STRONG>).  If it is not able
-           to open a terminal, e.g., when running in <STRONG>cron(1)</STRONG>, <STRONG>tput</STRONG> will return
-           an error.
+       As of <EM>ncurses</EM> 6.1,  the  "reset"  features  of  the  two  programs  are
+       (mostly) the same.  Two minor differences remain.
 
-       <STRONG>o</STRONG>   AT&amp;T <STRONG>tput</STRONG> guesses the type of its <EM>capname</EM> operands by seeing if all
-           of the characters are numeric, or not.
+       <STRONG>o</STRONG>   The  <STRONG>tset</STRONG>  program  waits  one  second  when resetting, in case the
+           terminal happens to be a hardware device.
 
-           Most implementations which provide support for <EM>capname</EM> operands use
-           the  <STRONG>tparm</STRONG>  function  to  expand  parameters  in it.  That function
-           expects a mixture of numeric and string parameters, requiring  <STRONG>tput</STRONG>
-           to know which type to use.
+       <STRONG>o</STRONG>   The two programs  write  the  terminal  initialization  strings  to
+           different  streams;  that  is, standard error for <STRONG>tset</STRONG> and standard
+           output for <STRONG>tput</STRONG>.
 
-           This  implementation  uses a table to determine the parameter types
-           for the standard <EM>capname</EM> operands, and an internal library function
-           to analyze nonstandard <EM>capname</EM> operands.
-
-           Besides  providing  more  reliable operation than AT&amp;T's utility, a
-           portability problem is introduced  by  this  analysis:  An  OpenBSD
-           developer  adapted  the  internal  library function from ncurses to
-           port NetBSD's  termcap-based  <STRONG>tput</STRONG>  to  terminfo.   That  had  been
-           modified  to  interpret  multiple  commands  on  a  line.  Portable
-           applications should not rely upon this feature; ncurses provides it
-           to support applications written specifically for OpenBSD.
-
-       This  implementation  (unlike  others)  can  accept  both  <EM>termcap</EM>  and
-       <EM>terminfo</EM> names for the <EM>capname</EM> feature, if <EM>termcap</EM> support is  compiled
-       in.   However,  the  predefined  <EM>termcap</EM>  and  <EM>terminfo</EM>  names have two
-       ambiguities in this case (and the <EM>terminfo</EM> name is assumed):
-
-       <STRONG>o</STRONG>   The <EM>termcap</EM> name <STRONG>dl</STRONG> corresponds to the <EM>terminfo</EM>  name  <STRONG>dl1</STRONG>  (delete
-           one line).
-           The  <EM>terminfo</EM>  name <STRONG>dl</STRONG> corresponds to the <EM>termcap</EM> name <STRONG>DL</STRONG> (delete a
-           given number of lines).
-
-       <STRONG>o</STRONG>   The <EM>termcap</EM> name <STRONG>ed</STRONG> corresponds to  the  <EM>terminfo</EM>  name  <STRONG>rmdc</STRONG>  (end
-           delete mode).
-           The  <EM>terminfo</EM>  name <STRONG>ed</STRONG> corresponds to the <EM>termcap</EM> name <STRONG>cd</STRONG> (clear to
-           end of screen).
-
-       The <STRONG>longname</STRONG> and <STRONG>-S</STRONG> options, and  the  parameter-substitution  features
-       used  in  the  <STRONG>cup</STRONG>  example,  were  not  supported in BSD curses before
-       4.3reno (1989) or in AT&amp;T/USL curses before SVr4 (1988).
-
-       IEEE  Std  1003.1/The  Open  Group    Base   Specifications   Issue   7
-       (POSIX.1-2008)  documents  only the operands for <STRONG>clear</STRONG>, <STRONG>init</STRONG> and <STRONG>reset</STRONG>.
-       There are a few interesting observations to make regarding that:
-
-       <STRONG>o</STRONG>   In this implementation, <STRONG>clear</STRONG> is part of the <EM>capname</EM> support.   The
-           others   (<STRONG>init</STRONG>   and   <STRONG>longname</STRONG>)  do  not  correspond  to  terminal
-           capabilities.
 
-       <STRONG>o</STRONG>   Other  implementations  of  <STRONG>tput</STRONG>  on  SVr4-based  systems  such  as
-           Solaris,  IRIX64  and  HPUX as well as others such as AIX and Tru64
-           provide support for <EM>capname</EM> operands.
+</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
+       <STRONG>tput</STRONG> <STRONG>init</STRONG>
+              Initialize the terminal according to the type of terminal in the
+              <EM>TERM</EM>  environment  variable.   If  the  system does not reliably
+              initialize the terminal upon login, this command can be included
+              in <EM>$HOME/.profile</EM> after exporting the <EM>TERM</EM> environment variable.
 
-       <STRONG>o</STRONG>   A few platforms such as FreeBSD recognize termcap names rather than
-           terminfo capability names in their respective <STRONG>tput</STRONG> commands.  Since
-           2010, NetBSD's <STRONG>tput</STRONG> uses terminfo names.   Before  that,  it  (like
-           FreeBSD) recognized termcap names.
+       <STRONG>tput</STRONG> <STRONG>-T5620</STRONG> <STRONG>reset</STRONG>
+              Reset an AT&amp;T 5620 terminal, overriding the terminal type in the
+              <EM>TERM</EM> environment variable.
 
-           Beginning  in  2021,  FreeBSD uses the ncurses <STRONG>tput</STRONG>, configured for
-           both terminfo (tested first) and termcap (as a fallback).
+       <STRONG>tput</STRONG> <STRONG>cnorm</STRONG>
+              Set cursor to normal visibility.
 
-       Because (apparently) <EM>all</EM> of the certified Unix systems support the full
-       set  of  capability names, the reasoning for documenting only a few may
-       not be apparent.
+       <STRONG>tput</STRONG> <STRONG>home</STRONG>
+              Move the cursor to row 0, column 0: the upper left corner of the
+              screen, usually known as the "home" cursor position.
 
-       <STRONG>o</STRONG>   X/Open Curses Issue 7 documents <STRONG>tput</STRONG> differently, with <EM>capname</EM>  and
-           the other features used in this implementation.
+       <STRONG>tput</STRONG> <STRONG>clear</STRONG>
+              Clear  the  screen: write the <STRONG>clear_screen</STRONG> capability's value to
+              the standard output stream.
 
-       <STRONG>o</STRONG>   That  is,  there  are  two standards for <STRONG>tput</STRONG>: POSIX (a subset) and
-           X/Open Curses (the full implementation).  POSIX documents a  subset
-           to  avoid  the  complication  of  including  X/Open  Curses and the
-           terminal capabilities database.
+       <STRONG>tput</STRONG> <STRONG>cols</STRONG>
+              Report the number of columns used by the current terminal type.
 
-       <STRONG>o</STRONG>   While it is certainly possible to  write  a  <STRONG>tput</STRONG>  program  without
-           using   curses,   none   of   the   systems  which  have  a  curses
-           implementation provide a <STRONG>tput</STRONG> utility which does  not  provide  the
-           <EM>capname</EM> feature.
+       <STRONG>tput</STRONG> <STRONG>-Tadm3a</STRONG> <STRONG>cols</STRONG>
+              Report the number of columns used by an ADM-3A terminal.
 
-       X/Open  Curses  Issue  7  (2009)  is  the  first  version  to  document
-       utilities.  However that part of X/Open Curses does not follow existing
-       practice (i.e., Unix features documented in SVID 3):
+       <STRONG>strong=`tput</STRONG> <STRONG>smso`</STRONG> <STRONG>normal=`tput</STRONG> <STRONG>rmso`</STRONG>
+              Set shell variables to capability values: <STRONG>strong</STRONG> and <STRONG>normal</STRONG>,  to
+              begin  and  end,  respectively, stand-out mode for the terminal.
+              One might use these to present a prompt.
 
-       <STRONG>o</STRONG>   It  assigns exit code 4 to "invalid operand", which may be the same
-           as <EM>unknown</EM> <EM>capability</EM>.  For instance, the source code for  Solaris'
-           xcurses uses the term "invalid" in this case.
+                     printf "${strong}Username:${normal} "
 
-       <STRONG>o</STRONG>   It  assigns  exit  code  255  to  a  numeric  variable  that is not
-           specified in the terminfo database.  That likely is a documentation
-           error,  confusing  the  <STRONG>-1</STRONG>  written  to  the standard output for an
-           absent or cancelled numeric value versus an (unsigned) exit code.
+       <STRONG>tput</STRONG> <STRONG>hc</STRONG>
+              Indicate via exit status whether the terminal  is  a  hard  copy
+              device.
 
-       The various Unix systems (AIX, HPUX, Solaris) use the  same  exit-codes
-       as ncurses.
+       <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>23</STRONG> <STRONG>4</STRONG>
+              Move the cursor to row 23, column 4.
 
-       NetBSD curses documents different exit codes which do not correspond to
-       either ncurses or X/Open.
+       <STRONG>tput</STRONG> <STRONG>cup</STRONG>
+              Report  the  value  of the <STRONG>cursor_address</STRONG> (<STRONG>cup</STRONG>) capability (used
+              for cursor movement), with no parameters substituted.
 
+       <STRONG>tput</STRONG> <STRONG>longname</STRONG>
+              Report the <EM>terminfo</EM> database's description of the terminal  type
+              specified in the <EM>TERM</EM> environment variable.
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+       <STRONG>tput</STRONG> <STRONG>-S</STRONG>
+              Process  multiple capabilities.  The <STRONG>-S</STRONG> option can be profitably
+              used with a shell "here document".
 
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
+              $ <STRONG>tput</STRONG> <STRONG>-S</STRONG> <STRONG>&lt;&lt;!</STRONG>
+              &gt; <STRONG>clear</STRONG>
+              &gt; <STRONG>cup</STRONG> <STRONG>10</STRONG> <STRONG>10</STRONG>
+              &gt; <STRONG>bold</STRONG>
+              &gt; <STRONG>!</STRONG>
 
+              The foregoing clears the screen, moves the  cursor  to  position
+              (10, 10) and turns on bold (extra bright) mode.
 
+       <STRONG>tput</STRONG> <STRONG>clear</STRONG> <STRONG>cup</STRONG> <STRONG>10</STRONG> <STRONG>10</STRONG> <STRONG>bold</STRONG>
+              Perform the same actions as the foregoing "<STRONG>tput</STRONG> <STRONG>-S</STRONG>" example.
 
-                                                                       <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
+
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+
+
+
+ncurses 6.5                       2024-04-20                           <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-Options">Options</a></li>
-<li><a href="#h3-Commands">Commands</a></li>
+<li><a href="#h3-Operands">Operands</a></li>
 <li><a href="#h3-Aliases">Aliases</a></li>
 <li><a href="#h3-Terminal-Size">Terminal Size</a></li>
 </ul>
 </li>
-<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a></li>
+<li><a href="#h2-EXIT-STATUS">EXIT STATUS</a></li>
+<li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a></li>
 <li><a href="#h2-FILES">FILES</a></li>
-<li><a href="#h2-EXIT-CODES">EXIT CODES</a></li>
-<li><a href="#h2-DIAGNOSTICS">DIAGNOSTICS</a></li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index c610a8c8791d37549ef4f809817b6dceb33917cf..a5669568fb27542268dcf7936a7295962d47ed64 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: tset.1,v 1.62 2022/02/12 20:02:20 tom Exp @
+  * @Id: tset.1,v 1.85 2024/04/27 17:57:47 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>tset 1</TITLE>
+<TITLE>tset 1 2024-04-27 ncurses 6.5 User commands</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">tset 1</H1>
+<H1 class="no-header">tset 1 2024-04-27 ncurses 6.5 User commands</H1>
 <PRE>
-<STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>                     General Commands Manual                    <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
+<STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>                          User commands                         <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>tset</STRONG>, <STRONG>reset</STRONG> - terminal initialization
+       <STRONG>tset</STRONG>, <STRONG>reset</STRONG> - initialize or reset terminal state
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>tset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>] [<EM>terminal</EM>]
-       <STRONG>reset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>] [<EM>terminal</EM>]
+       <STRONG>tset</STRONG>  [<STRONG>-IQVcqrsw</STRONG>]  [<STRONG>-</STRONG>]  [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>] [<EM>terminal-</EM>
+       <EM>type</EM>]
+       <STRONG>reset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG>  <EM>mapping</EM>]  [<EM>terminal-</EM>
+       <EM>type</EM>]
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
-</PRE><H3><a name="h3-tset---initialization">tset - initialization</a></H3><PRE>
+</PRE><H3><a name="h3-tset----initialization"><EM>tset</EM> -- initialization</a></H3><PRE>
        This program initializes terminals.
 
        First,  <STRONG>tset</STRONG>  retrieves  the  current  terminal  mode settings for your
 
        1. The <STRONG>terminal</STRONG> argument specified on the command line.
 
-       2. The value of the <STRONG>TERM</STRONG> environmental variable.
+       2. The value of the <EM>TERM</EM> environment variable.
 
        3. (BSD systems only.) The terminal type associated with  the  standard
-       error  output  device  in the <EM>/etc/ttys</EM> file.  (On System-V-like UNIXes
-       and systems using that convention, <STRONG>getty(1)</STRONG> does this  job  by  setting
-       <STRONG>TERM</STRONG> according to the type passed to it by <EM>/etc/inittab</EM>.)
-
-       4. The default terminal type, "unknown".
-
-       If  the  terminal  type  was  not specified on the command-line, the <STRONG>-m</STRONG>
-       option mappings are then applied (see the section <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG>
-       for  more  information).   Then,  if  the  terminal  type begins with a
-       question mark ("?"), the user  is  prompted  for  confirmation  of  the
-       terminal  type.   An empty response confirms the type, or, another type
-       can be entered to specify a new type.  Once the terminal type has  been
-       determined, the terminal description for the terminal is retrieved.  If
-       no terminal description is found for the type, the user is prompted for
-       another terminal type.
+       error  output  device  in  the  <EM>/etc/ttys</EM> file.  (On System V hosts and
+       systems using that convention, <STRONG>getty(8)</STRONG> does this job by  setting  <EM>TERM</EM>
+       according to the type passed to it by <EM>/etc/inittab</EM>.)
+
+       4.  The  default  terminal  type, "unknown", is not suitable for curses
+       applications.
+
+       If the terminal type was not specified  on  the  command-line,  the  <STRONG>-m</STRONG>
+       option  mappings  are  then  applied;  see  subsection  "Terminal  Type
+       Mapping".  Then, if the terminal  type  begins  with  a  question  mark
+       ("?"),  the user is prompted for confirmation of the terminal type.  An
+       empty response confirms the type, or, another type can  be  entered  to
+       specify  a  new  type.  Once the terminal type has been determined, the
+       terminal description for the terminal is  retrieved.   If  no  terminal
+       description  is  found  for  the type, the user is prompted for another
+       terminal type.
 
        Once the terminal description is retrieved,
 
-       <STRONG>o</STRONG>   if  the  "<STRONG>-w</STRONG>"  option  is  enabled,  <STRONG>tset</STRONG> may update the terminal's
+       <STRONG>o</STRONG>   if the "<STRONG>-w</STRONG>" option is  enabled,  <STRONG>tset</STRONG>  may  update  the  terminal's
            window size.
 
-           If the window size cannot be obtained from  the  operating  system,
-           but  the  terminal  description  (or  environment,  e.g., <STRONG>LINES</STRONG> and
-           <STRONG>COLUMNS</STRONG> variables specify this), use  this  to  set  the  operating
+           If  the  window  size cannot be obtained from the operating system,
+           but the terminal  description  (or  environment,  e.g.,  <EM>LINES</EM>  and
+           <EM>COLUMNS</EM>  variables  specify  this),  use  this to set the operating
            system's notion of the window size.
 
-       <STRONG>o</STRONG>   if  the  "<STRONG>-c</STRONG>"  option is enabled, the backspace, interrupt and line
+       <STRONG>o</STRONG>   if the "<STRONG>-c</STRONG>" option is enabled, the backspace,  interrupt  and  line
            kill characters (among many other things) are set
 
-       <STRONG>o</STRONG>   unless  the  "<STRONG>-I</STRONG>"  option  is  enabled,  the   terminal   and   tab
-           <EM>initialization</EM>  strings  are sent to the standard error output, and
+       <STRONG>o</STRONG>   unless   the   "<STRONG>-I</STRONG>"   option  is  enabled,  the  terminal  and  tab
+           <EM>initialization</EM> strings are sent to the standard error  output,  and
            <STRONG>tset</STRONG> waits one second (in case a hardware reset was issued).
 
-       <STRONG>o</STRONG>   Finally, if the erase, interrupt  and  line  kill  characters  have
-           changed,  or  are not set to their default values, their values are
+       <STRONG>o</STRONG>   Finally,  if  the  erase,  interrupt  and line kill characters have
+           changed, or are not set to their default values, their  values  are
            displayed to the standard error output.
 
 
-</PRE><H3><a name="h3-reset---reinitialization">reset - reinitialization</a></H3><PRE>
+</PRE><H3><a name="h3-reset----reinitialization"><EM>reset</EM> -- reinitialization</a></H3><PRE>
        When invoked as <STRONG>reset</STRONG>, <STRONG>tset</STRONG> sets the terminal modes to "sane" values:
 
        <STRONG>o</STRONG>   sets cooked and echo modes,
        <STRONG>o</STRONG>   resets any unset special characters to their default values
 
        before doing the terminal initialization described above.  Also, rather
-       than  using  the  terminal <EM>initialization</EM> strings, it uses the terminal
+       than using the terminal <EM>initialization</EM> strings, it  uses  the  terminal
        <EM>reset</EM> strings.
 
-       The <STRONG>reset</STRONG> command is useful after a program dies leaving a terminal  in
+       The  <STRONG>reset</STRONG> command is useful after a program dies leaving a terminal in
        an abnormal state:
 
        <STRONG>o</STRONG>   you may have to type
                <EM>&lt;LF&gt;</EM><STRONG>reset</STRONG><EM>&lt;LF&gt;</EM>
 
            (the line-feed character is normally control-J) to get the terminal
-           to work, as carriage-return may no  longer  work  in  the  abnormal
+           to  work,  as  carriage-return  may  no longer work in the abnormal
            state.
 
        <STRONG>o</STRONG>   Also, the terminal will often not echo the command.
 
 
+</PRE><H3><a name="h3-Setting-the-Environment">Setting the Environment</a></H3><PRE>
+       It is often desirable to enter the terminal type and information  about
+       the terminal's capabilities into the shell's environment.  This is done
+       using the <STRONG>-s</STRONG> option.
+
+       When the <STRONG>-s</STRONG> option is specified, the commands to enter the  information
+       into  the  shell's  environment are written to the standard output.  If
+       the <EM>SHELL</EM> environment variable ends in  "csh",  the  commands  are  for
+       <STRONG>csh(1)</STRONG>,  otherwise, they are for <STRONG>sh(1)</STRONG>.  The <EM>csh</EM> commands set and unset
+       the shell variable <STRONG>noglob</STRONG>, leaving it unset.  The following line in the
+       <STRONG>.login</STRONG> or <STRONG>.profile</STRONG> files will initialize the environment correctly:
+
+           eval `tset -s options ... `
+
+
+</PRE><H3><a name="h3-Terminal-Type-Mapping">Terminal Type Mapping</a></H3><PRE>
+       When  the  terminal  is  not  hardwired into the system (or the current
+       system information is incorrect) the terminal  type  derived  from  the
+       <EM>/etc/ttys</EM>  file  or  the  <EM>TERM</EM>  environment variable is often something
+       generic like <STRONG>network</STRONG>, <STRONG>dialup</STRONG>, or <STRONG>unknown</STRONG>.   When  <STRONG>tset</STRONG>  is  used  in  a
+       startup  script  it is often desirable to provide information about the
+       type of terminal used on such ports.
+
+       The <STRONG>-m</STRONG> options maps from some set of conditions  to  a  terminal  type,
+       that is, to tell <STRONG>tset</STRONG> "If I'm on this port at a particular speed, guess
+       that I'm on that kind of terminal".
+
+       The argument to the <STRONG>-m</STRONG> option consists of an  optional  port  type,  an
+       optional  operator,  an  optional  baud rate specification, an optional
+       colon (":") character and a terminal type.  The port type is  a  string
+       (delimited  by  either  the  operator  or  the  colon  character).  The
+       operator may be any combination of "&gt;", "&lt;", "@", and  "!";  "&gt;"  means
+       greater  than,  "&lt;" means less than, "@" means equal to and "!" inverts
+       the sense of the test.  The baud rate is specified as a number  and  is
+       compared  with  the speed of the standard error output (which should be
+       the control terminal).  The terminal type is a string.
+
+       If the terminal type is not specified  on  the  command  line,  the  <STRONG>-m</STRONG>
+       mappings  are  applied to the terminal type.  If the port type and baud
+       rate match the mapping, the terminal  type  specified  in  the  mapping
+       replaces  the current type.  If more than one mapping is specified, the
+       first applicable mapping is used.
+
+       For example, consider the following  mapping:  <STRONG>dialup&gt;9600:vt100</STRONG>.   The
+       port type is dialup , the operator is &gt;, the baud rate specification is
+       9600, and the terminal type is vt100.  The result of this mapping is to
+       specify  that  if  the  terminal  type  is <STRONG>dialup</STRONG>, and the baud rate is
+       greater than 9600 baud, a terminal type of <STRONG>vt100</STRONG> will be used.
+
+       If no baud rate is specified, the terminal type  will  match  any  baud
+       rate.   If  no port type is specified, the terminal type will match any
+       port type.  For example, <STRONG>-m</STRONG> <STRONG>dialup:vt100</STRONG>  <STRONG>-m</STRONG>  <STRONG>:?xterm</STRONG>  will  cause  any
+       dialup port, regardless of baud rate, to match the terminal type vt100,
+       and any non-dialup port type to match the terminal type ?xterm.   Note,
+       because  of  the  leading  question mark, the user will be queried on a
+       default port as to whether they are actually using an xterm terminal.
+
+       No whitespace characters are  permitted  in  the  <STRONG>-m</STRONG>  option  argument.
+       Also,  to avoid problems with meta-characters, it is suggested that the
+       entire <STRONG>-m</STRONG> option argument be placed within single quote characters, and
+       that   <EM>csh</EM>   users  insert  a  backslash  character  ("\")  before  any
+       exclamation marks ("!").
+
+
 </PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
        The options are as follows:
 
        <STRONG>-e</STRONG> <EM>ch</EM>
             Set the erase character to <EM>ch</EM>.
 
-       <STRONG>-I</STRONG>   Do  not  send  the  terminal  or tab initialization strings to the
+       <STRONG>-I</STRONG>   Do not send the terminal or  tab  initialization  strings  to  the
             terminal.
 
        <STRONG>-i</STRONG> <EM>ch</EM>
             Set the line kill character to <EM>ch</EM>.
 
        <STRONG>-m</STRONG> <EM>mapping</EM>
-            Specify a mapping from a port type to a terminal.  See the section
-            <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG> for more information.
+            Specify  a  mapping from a port type to a terminal; see subsection
+            "Terminal Type Mapping".
 
-       <STRONG>-Q</STRONG>   Do  not  display any values for the erase, interrupt and line kill
-            characters.   Normally  <STRONG>tset</STRONG>  displays  the  values  for   control
+       <STRONG>-Q</STRONG>   Do not display any values for the erase, interrupt and  line  kill
+            characters.    Normally  <STRONG>tset</STRONG>  displays  the  values  for  control
             characters which differ from the system's default values.
 
-       <STRONG>-q</STRONG>   The  terminal  type  is  displayed to the standard output, and the
-            terminal is not initialized in any way.  The option "-" by  itself
+       <STRONG>-q</STRONG>   The terminal type is displayed to the  standard  output,  and  the
+            terminal  is not initialized in any way.  The option "-" by itself
             is equivalent but archaic.
 
        <STRONG>-r</STRONG>   Print the terminal type to the standard error output.
 
        <STRONG>-s</STRONG>   Print the sequence of shell commands to initialize the environment
-            variable <STRONG>TERM</STRONG> to the standard output.  See the section <STRONG>SETTING</STRONG> <STRONG>THE</STRONG>
-            <STRONG>ENVIRONMENT</STRONG> for details.
+            variable  <EM>TERM</EM> to the standard output; see subsection "Setting the
+            Environment".
 
-       <STRONG>-V</STRONG>   reports the version of ncurses which was used in this program, and
+       <STRONG>-V</STRONG>   reports the version of <EM>ncurses</EM> which was used in this program, and
             exits.
 
-       <STRONG>-w</STRONG>   Resize the window to match the  size  deduced  via  <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>.
-            Normally  this  has  no  effect,  unless  <STRONG>setupterm</STRONG> is not able to
+       <STRONG>-w</STRONG>   Resize  the  window  to  match the size deduced via <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>.
+            Normally this has no effect,  unless  <STRONG>setupterm</STRONG>  is  not  able  to
             detect the window size.
 
-       The arguments for the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options may either be  entered  as
-       actual  characters  or by using the "hat" notation, i.e., control-h may
+       The  arguments  for the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options may either be entered as
+       actual characters or by using the "hat" notation, i.e.,  control-h  may
        be specified as "^H" or "^h".
 
        If neither <STRONG>-c</STRONG> or <STRONG>-w</STRONG> is given, both options are assumed.
 
 
-</PRE><H2><a name="h2-SETTING-THE-ENVIRONMENT">SETTING THE ENVIRONMENT</a></H2><PRE>
-       It is often desirable to enter the terminal type and information  about
-       the terminal's capabilities into the shell's environment.  This is done
-       using the <STRONG>-s</STRONG> option.
-
-       When the <STRONG>-s</STRONG> option is specified, the commands to enter the  information
-       into  the  shell's  environment are written to the standard output.  If
-       the <STRONG>SHELL</STRONG> environmental variable ends in "csh", the  commands  are  for
-       <STRONG>csh</STRONG>,  otherwise,  they  are  for <STRONG>sh(1)</STRONG>.  Note, the <STRONG>csh</STRONG> commands set and
-       unset the shell variable <STRONG>noglob</STRONG>, leaving it unset.  The following  line
-       in  the  <STRONG>.login</STRONG>  or  <STRONG>.profile</STRONG>  files  will  initialize  the environment
-       correctly:
-
-           eval `tset -s options ... `
-
-
-</PRE><H2><a name="h2-TERMINAL-TYPE-MAPPING">TERMINAL TYPE MAPPING</a></H2><PRE>
-       When the terminal is not hardwired into  the  system  (or  the  current
-       system  information  is  incorrect)  the terminal type derived from the
-       <EM>/etc/ttys</EM> file or the <STRONG>TERM</STRONG> environmental variable  is  often  something
-       generic  like  <STRONG>network</STRONG>,  <STRONG>dialup</STRONG>,  or  <STRONG>unknown</STRONG>.   When <STRONG>tset</STRONG> is used in a
-       startup script it is often desirable to provide information  about  the
-       type of terminal used on such ports.
-
-       The  <STRONG>-m</STRONG>  options  maps  from some set of conditions to a terminal type,
-       that is, to tell <STRONG>tset</STRONG> "If I'm on this port at a particular speed, guess
-       that I'm on that kind of terminal".
-
-       The  argument  to  the  <STRONG>-m</STRONG> option consists of an optional port type, an
-       optional operator, an optional baud  rate  specification,  an  optional
-       colon  (":")  character and a terminal type.  The port type is a string
-       (delimited by  either  the  operator  or  the  colon  character).   The
-       operator  may  be  any combination of "&gt;", "&lt;", "@", and "!"; "&gt;" means
-       greater than, "&lt;" means less than, "@" means equal to and  "!"  inverts
-       the  sense  of the test.  The baud rate is specified as a number and is
-       compared with the speed of the standard error output (which  should  be
-       the control terminal).  The terminal type is a string.
-
-       If  the  terminal  type  is  not  specified on the command line, the <STRONG>-m</STRONG>
-       mappings are applied to the terminal type.  If the port type  and  baud
-       rate  match  the  mapping,  the  terminal type specified in the mapping
-       replaces the current type.  If more than one mapping is specified,  the
-       first applicable mapping is used.
-
-       For  example,  consider  the following mapping: <STRONG>dialup&gt;9600:vt100</STRONG>.  The
-       port type is dialup , the operator is &gt;, the baud rate specification is
-       9600, and the terminal type is vt100.  The result of this mapping is to
-       specify that if the terminal type is  <STRONG>dialup</STRONG>,  and  the  baud  rate  is
-       greater than 9600 baud, a terminal type of <STRONG>vt100</STRONG> will be used.
-
-       If  no  baud  rate  is specified, the terminal type will match any baud
-       rate.  If no port type is specified, the terminal type will  match  any
-       port  type.   For  example,  <STRONG>-m</STRONG>  <STRONG>dialup:vt100</STRONG> <STRONG>-m</STRONG> <STRONG>:?xterm</STRONG> will cause any
-       dialup port, regardless of baud rate, to match the terminal type vt100,
-       and  any non-dialup port type to match the terminal type ?xterm.  Note,
-       because of the leading question mark, the user will  be  queried  on  a
-       default port as to whether they are actually using an xterm terminal.
-
-       No  whitespace  characters  are  permitted  in  the <STRONG>-m</STRONG> option argument.
-       Also, to avoid problems with meta-characters, it is suggested that  the
-       entire <STRONG>-m</STRONG> option argument be placed within single quote characters, and
-       that  <STRONG>csh</STRONG>  users  insert  a  backslash  character  ("\")   before   any
-       exclamation marks ("!").
+</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
+       The <STRONG>tset</STRONG> command uses these environment variables:
 
+       <EM>SHELL</EM>
+            tells  <STRONG>tset</STRONG>  whether  to  initialize  <EM>TERM</EM>  using  <STRONG>sh(1)</STRONG> or <STRONG>csh(1)</STRONG>
+            syntax.
 
-</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
-       A  <STRONG>reset</STRONG> command appeared in 1BSD (March 1978), written by Kurt Shoens.
-       This program set the <EM>erase</EM> and <EM>kill</EM> characters to <STRONG>^H</STRONG> (backspace) and  <STRONG>@</STRONG>
-       respectively.  Mark Horton improved that in 3BSD (October 1979), adding
-       <EM>intr</EM>, <EM>quit</EM>, <EM>start</EM>/<EM>stop</EM> and <EM>eof</EM>  characters  as  well  as  changing  the
-       program  to  avoid  modifying any user settings.  That version of <STRONG>reset</STRONG>
-       did not use the termcap database.
+       <EM>TERM</EM> Denotes your terminal  type.   Each  terminal  type  is  distinct,
+            though many are similar.
 
-       A separate <STRONG>tset</STRONG> command was provided in 1BSD by Eric Allman, using  the
-       termcap  database.   Allman's comments in the source code indicate that
-       he began work in October 1977, continuing development over the next few
-       years.
+       <EM>TERMCAP</EM>
+            may  denote  the  location of a termcap database.  If it is not an
+            absolute pathname, e.g., begins  with  a  "/",  <STRONG>tset</STRONG>  removes  the
+            variable  from  the  environment  before  looking for the terminal
+            description.
 
-       According to comments in the source code, the <STRONG>tset</STRONG> program was modified
-       in September 1980, to use logic copied from the 3BSD  "reset"  when  it
-       was invoked as <STRONG>reset</STRONG>.  This version appeared in 4.1cBSD, late in 1982.
 
-       Other developers (e.g., Keith Bostic and Jim Bloom) continued to modify
-       <STRONG>tset</STRONG> until 4.4BSD was released in 1993.
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+       <EM>/etc/ttys</EM>
+              system port name to terminal type mapping database (BSD versions
+              only).
 
-       The <STRONG>ncurses</STRONG> implementation was lightly adapted from the 4.4BSD  sources
-       for a terminfo environment by Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;.
+       <EM>/usr/share/terminfo</EM>
+              compiled terminal description database directory
 
 
-</PRE><H2><a name="h2-COMPATIBILITY">COMPATIBILITY</a></H2><PRE>
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        Neither  IEEE  Std  1003.1/The  Open  Group Base Specifications Issue 7
        (POSIX.1-2008) nor X/Open Curses Issue 7 documents <STRONG>tset</STRONG> or <STRONG>reset</STRONG>.
 
-       The AT&amp;T <STRONG>tput</STRONG> utility (AIX, HPUX, Solaris) incorporated  the  terminal-
+       The AT&amp;T <STRONG>tput</STRONG> utility (AIX, HP-UX, Solaris) incorporated the  terminal-
        mode  manipulation  as well as termcap-based features such as resetting
        tabstops from <STRONG>tset</STRONG> in BSD (4.1c),  presumably  with  the  intention  of
        making  <STRONG>tset</STRONG>  obsolete.   However, each of those systems still provides
        <STRONG>tset</STRONG>.  In fact, the commonly-used <STRONG>reset</STRONG> utility is always an alias  for
        <STRONG>tset</STRONG>.
 
-       The   <STRONG>tset</STRONG>   utility   provides  for  backward-compatibility  with  BSD
-       environments (under most modern UNIXes, <STRONG>/etc/inittab</STRONG> and  <STRONG>getty(1)</STRONG>  can
-       set  <STRONG>TERM</STRONG>  appropriately  for each dial-up line; this obviates what was
-       <STRONG>tset</STRONG>'s most important use).  This implementation  behaves  like  4.4BSD
-       <STRONG>tset</STRONG>, with a few exceptions specified here.
+       The <STRONG>tset</STRONG> utility provides backward compatibility with BSD environments;
+       under most modern  Unices,  <EM>/etc/inittab</EM>  and  <STRONG>getty(8)</STRONG>  can  set  <EM>TERM</EM>
+       appropriately  for  each  dial-up  line, obviating what was <STRONG>tset</STRONG>'s most
+       important use.  This implementation behaves like 4.4BSD  <STRONG>tset</STRONG>,  with  a
+       few exceptions we shall consider now.
 
-       A  few  options are different because the <STRONG>TERMCAP</STRONG> variable is no longer
-       supported under terminfo-based <STRONG>ncurses</STRONG>:
+       A  few  options are different because the <EM>TERMCAP</EM> variable is no longer
+       supported under terminfo-based <EM>ncurses</EM>:
 
        <STRONG>o</STRONG>   The <STRONG>-S</STRONG> option of BSD <STRONG>tset</STRONG> no  longer  works;  it  prints  an  error
            message to the standard error and dies.
 
-       <STRONG>o</STRONG>   The <STRONG>-s</STRONG> option only sets <STRONG>TERM</STRONG>, not <STRONG>TERMCAP</STRONG>.
+       <STRONG>o</STRONG>   The <STRONG>-s</STRONG> option only sets <EM>TERM</EM>, not <EM>TERMCAP</EM>.
 
        There  was an undocumented 4.4BSD feature that invoking <STRONG>tset</STRONG> via a link
        named "TSET" (or via  any  other  name  beginning  with  an  upper-case
            to set the window size if <STRONG>tset</STRONG> is not able  to  obtain  the  window
            size from the operating system.
 
-       <STRONG>o</STRONG>   In ncurses, <STRONG>tset</STRONG> obtains the window size using <STRONG>setupterm</STRONG>, which may
-           be from the operating system, the  <STRONG>LINES</STRONG>  and  <STRONG>COLUMNS</STRONG>  environment
+       <STRONG>o</STRONG>   In <EM>ncurses</EM>, <STRONG>tset</STRONG> obtains the window size using <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>, which
+           may be from the operating system, the <EM>LINES</EM> and <EM>COLUMNS</EM> environment
            variables or the terminal description.
 
-       Obtaining  the  window  size from the terminal description is common to
-       both implementations, but considered obsolescent.  Its  only  practical
-       use is for hardware terminals.  Generally speaking, a window size would
-       be unset only if there were some problem obtaining the value  from  the
-       operating  system  (and  <STRONG>setupterm</STRONG> would still fail).  For that reason,
-       the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables may be useful  for  working
-       around  window-size  problems.   Those  have  the  drawback that if the
-       window is resized, those variables must be recomputed  and  reassigned.
-       To do this more easily, use the <STRONG>resize(1)</STRONG> program.
-
+       Obtaining  the window size from a terminal's type description is common
+       to  both  implementations,  but  considered  obsolescent.    Its   only
+       practical  use  is  for hardware terminals.  Generally, the window size
+       will remain uninitialized only if there were a  problem  obtaining  the
+       value  from the operating system (and <STRONG>setupterm</STRONG> would still fail).  The
+       <EM>LINES</EM> and <EM>COLUMNS</EM> environment variables may thus be useful for  working
+       around  window-size  problems, but have the drawback that if the window
+       is resized, their  values  must  be  recomputed  and  reassigned.   The
+       <STRONG>resize(1)</STRONG> program distributed with <STRONG>xterm(1)</STRONG> assists this activity.
 
-</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
-       The <STRONG>tset</STRONG> command uses these environment variables:
 
-       SHELL
-            tells  <STRONG>tset</STRONG>  whether  to  initialize  <STRONG>TERM</STRONG>  using  <STRONG>sh(1)</STRONG> or <STRONG>csh(1)</STRONG>
-            syntax.
-
-       TERM Denotes your terminal  type.   Each  terminal  type  is  distinct,
-            though many are similar.
-
-       TERMCAP
-            may  denote  the  location of a termcap database.  If it is not an
-            absolute pathname, e.g., begins  with  a  "/",  <STRONG>tset</STRONG>  removes  the
-            variable  from  the  environment  before  looking for the terminal
-            description.
-
-
-</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
-       /etc/ttys
-            system port name to terminal type mapping database  (BSD  versions
-            only).
-
-       /usr/share/terminfo
-            terminal capability database
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       A  <STRONG>reset</STRONG>  command written by Kurt Shoens appeared in 1BSD (March 1978).
+       It  set  the  <EM>erase</EM>  and  <EM>kill</EM>  characters  to  <STRONG>^H</STRONG>  (backspace)  and  <STRONG>@</STRONG>
+       respectively.   Mark Horton improved this <STRONG>reset</STRONG> in 3BSD (October 1979),
+       adding <EM>intr</EM>, <EM>quit</EM>, <EM>start</EM>/<EM>stop</EM>, and <EM>eof</EM> characters as well  as  changing
+       the  program  to  avoid  modifying  any user settings.  That version of
+       <STRONG>reset</STRONG> did not use <EM>termcap</EM>.
+
+       Eric Allman wrote a distinct <STRONG>tset</STRONG> command for 1BSD, using a  forerunner
+       of  <EM>termcap</EM>  called  <EM>ttycap</EM>.   Allman's  comments  in  the  source code
+       indicate that he began work in  October  1977,  continuing  development
+       over  the next few years.  By late 1979, it had migrated to <EM>termcap</EM> and
+       handled the <EM>TERMCAP</EM> variable.  Later comments indicate  that  <STRONG>tset</STRONG>  was
+       modified  in  September  1980 to use logic copied from the 3BSD "reset"
+       program when it  was  invoked  as  <STRONG>reset</STRONG>.   This  version  appeared  in
+       4.1cBSD,  late  in 1982.  Other developers such as Keith Bostic and Jim
+       Bloom continued to modify <STRONG>tset</STRONG> until 4.4BSD was released in 1993.
+
+       The <EM>ncurses</EM> implementation was lightly adapted from the 4.4BSD  sources
+       to use the <EM>terminfo</EM> API by Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG>csh(1)</STRONG>,   <STRONG>sh(1)</STRONG>,   <STRONG>stty(1)</STRONG>,   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,  <STRONG>tty(4)</STRONG>,  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>,
        <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.4 (patch 20221231).
-
 
 
-                                                                       <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
+ncurses 6.5                       2024-04-27                           <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
-<li><a href="#h3-tset---initialization">tset - initialization</a></li>
-<li><a href="#h3-reset---reinitialization">reset - reinitialization</a></li>
+<li><a href="#h3-tset----initialization">tset -- initialization</a></li>
+<li><a href="#h3-reset----reinitialization">reset -- reinitialization</a></li>
+<li><a href="#h3-Setting-the-Environment">Setting the Environment</a></li>
+<li><a href="#h3-Terminal-Type-Mapping">Terminal Type Mapping</a></li>
 </ul>
 </li>
 <li><a href="#h2-OPTIONS">OPTIONS</a></li>
-<li><a href="#h2-SETTING-THE-ENVIRONMENT">SETTING THE ENVIRONMENT</a></li>
-<li><a href="#h2-TERMINAL-TYPE-MAPPING">TERMINAL TYPE MAPPING</a></li>
-<li><a href="#h2-HISTORY">HISTORY</a></li>
-<li><a href="#h2-COMPATIBILITY">COMPATIBILITY</a></li>
 <li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a></li>
 <li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
index d99c5397bea728532a2c443b9b2df0051820e798..10b6f77649da23342a945c67dca73e3d64858ea1 100644 (file)
@@ -1,6 +1,7 @@
 <!--
+  * t
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 2017 Free Software Foundation, Inc.                            *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: user_caps.5,v 1.22 2022/07/03 20:01:04 tom Exp @
+  * @Id: user_caps.5,v 1.49 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>user_caps 5</TITLE>
+<TITLE>user_caps 5 2024-03-16 ncurses 6.5 File formats</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">user_caps 5</H1>
+<H1 class="no-header">user_caps 5 2024-03-16 ncurses 6.5 File formats</H1>
 <PRE>
-<STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>                  File Formats Manual                 <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
+<STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>                     File formats                     <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       user_caps - user-defined terminfo capabilities
+       user_caps - user-defined <EM>terminfo</EM> capability format
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
-       <STRONG>tic</STRONG> <STRONG>-x,</STRONG> <STRONG>infocmp</STRONG> <STRONG>-x</STRONG>
+       <STRONG>infocmp</STRONG> <STRONG>-x</STRONG>
+
+       <STRONG>tic</STRONG> <STRONG>-x</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
 </PRE><H3><a name="h3-Background">Background</a></H3><PRE>
-       Before  ncurses  5.0,  terminfo  databases  used  a <EM>fixed</EM> <EM>repertoire</EM> of
+       Before  <EM>ncurses</EM>  5.0,  terminfo  databases  used  a <EM>fixed</EM> <EM>repertoire</EM> of
        terminal capabilities designed for the SVr2 terminal database in  1984,
        and  extended  in  stages  through SVr4 (1989), and standardized in the
        Single Unix Specification beginning in 1995.
 
        Most of the <EM>extensions</EM> in this fixed repertoire were additions  to  the
-       tables of boolean, numeric and string capabilities.  Rather than change
+       tables of Boolean, numeric and string capabilities.  Rather than change
        the meaning of an existing capability,  a  new  name  was  added.   The
        terminfo  database  uses  a  binary  format;  binary  compatibility was
        ensured by using a header which gave the number of items in the  tables
            needed, while others were added  (out  of  order)  to  comply  with
            X/Open Curses.
 
-           While  ncurses' repertoire of predefined capabilities is closest to
+           While  <EM>ncurses</EM>' repertoire of predefined capabilities is closest to
            Solaris, Solaris's terminfo database has a few differences from the
-           list  published  by  X/Open  Curses.   For  example, ncurses can be
+           list  published  by  X/Open  Curses.   For  example, <EM>ncurses</EM> can be
            configured with tables which match the terminal databases for  AIX,
            HP-UX or OSF/1, rather than the default Solaris-like configuration.
 
-       <STRONG>o</STRONG>   In  SVr4  curses  and  ncurses, the terminal database is defined at
+       <STRONG>o</STRONG>   In  SVr4  curses  and  <EM>ncurses</EM>, the terminal database is defined at
            compile-time using a text file which lists the  different  terminal
            capabilities.
 
            In  principle,  the  text-file  can  be  extended,  but  doing this
            requires recompiling and reinstalling the library.   The  text-file
-           used  in  ncurses  for  terminal  capabilities includes details for
+           used  in  <EM>ncurses</EM>  for  terminal  capabilities includes details for
            various systems past the documented X/Open  Curses  features.   For
-           example, ncurses supports these capabilities in each configuration:
+           example, <EM>ncurses</EM> supports these capabilities in each configuration:
 
                memory_lock
                     (meml) lock memory above cursor
 
        Although  termcap's  extensibility  was  rarely  used (it was never the
        <EM>speaker</EM> who had actually used the feature), the criticism had a  point.
-       ncurses   5.0  provided  a  way  to  detect  nonstandard  capabilities,
+       <EM>ncurses</EM>   5.0  provided  a  way  to  detect  nonstandard  capabilities,
        determine their type and optionally store and retrieve them  in  a  way
        which did not interfere with other applications.  These are referred to
        as <EM>user-defined</EM> <EM>capabilities</EM> because no modifications to the  toolset's
        predefined capability names are needed.
 
-       The  ncurses  utilities <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> have a command-line option "-x"
+       The  <EM>ncurses</EM>  utilities <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> have a command-line option "-x"
        to  control  whether  the  nonstandard  capabilities  are   stored   or
        retrieved.   A  library function <STRONG>use_extended_names</STRONG> is provided for the
        same purpose.
        user-defined  capability  if  the  capability  name  is  not one of the
        predefined names.
 
-       Because ncurses provides  a  termcap  library  interface,  these  user-
+       Because <EM>ncurses</EM> provides  a  termcap  library  interface,  these  user-
        defined capabilities may be visible to termcap applications:
 
        <STRONG>o</STRONG>   The   termcap  interface  (like  all  implementations  of  termcap)
            predefined function-key names, to which a series  of  keys  can  be
            assigned,   that  is  insufficient  for  more  than  a  dozen  keys
            multiplied by more than a couple  of  modifier  combinations.   The
-           ncurses  database  uses  a  convention based on <STRONG>xterm(1)</STRONG> to provide
+           <EM>ncurses</EM>  database  uses  a  convention based on <STRONG>xterm(1)</STRONG> to provide
            extended special-key names.
 
            Fitting that into termcap's limitation of 2-character  names  would
            terminfo.
 
 
-</PRE><H3><a name="h3-Recognized-capabilities">Recognized capabilities</a></H3><PRE>
-       The ncurses library uses the user-definable  capabilities.   While  the
-       terminfo  database  may  have  other extensions, ncurses makes explicit
+</PRE><H3><a name="h3-Recognized-Capabilities">Recognized Capabilities</a></H3><PRE>
+       The <EM>ncurses</EM> library uses the user-definable  capabilities.   While  the
+       terminfo  database  may  have  other extensions, <EM>ncurses</EM> makes explicit
        checks for these:
 
-          AX <EM>boolean</EM>, asserts that the terminal interprets SGR 39 and  SGR  49
+          AX <EM>Boolean</EM>, asserts that the terminal interprets SGR 39 and  SGR  49
              by  resetting  the foreground and background color, respectively,
              to the default.
 
 
              The command "<STRONG>tput</STRONG> <STRONG>clear</STRONG>" does the same thing.
 
-          NQ used to suppress a consistency  check  in  tic  for  the  ncurses
-             capabilities  in  user6  through  user9 (u6, u7, u8 and u9) which
-             tell how to query the terminal's cursor position and  its  device
-             attributes.
+          NQ <EM>Boolean</EM>, used to suppress a consistency  check  in  tic  for  the
+             <EM>ncurses</EM>  capabilities  in user6 through user9 (u6, u7, u8 and u9)
+             which tell how to query the terminal's cursor  position  and  its
+             device attributes.
 
           RGB
-             <EM>boolean</EM>,   <EM>number</EM>   <STRONG>or</STRONG>   <EM>string</EM>,   used   to   assert   that  the
+             <EM>Boolean</EM>,   <EM>number</EM>   <STRONG>or</STRONG>   <EM>string</EM>,   used   to   assert   that  the
              <STRONG>set_a_foreground</STRONG> and <STRONG>set_a_background</STRONG> capabilities correspond  to
              <EM>direct</EM>  <EM>colors</EM>,  using  an RGB (red/green/blue) convention.  This
              capability  allows   the   <STRONG>color_content</STRONG>   function   to   return
              appropriate   values   without   requiring   the  application  to
              initialize colors using <STRONG>init_color</STRONG>.
 
-             The capability type determines the values which ncurses sees:
+             The capability type determines the values which <EM>ncurses</EM> sees:
 
-             <EM>boolean</EM>
+             <EM>Boolean</EM>
                 implies that the number of bits for red, green  and  blue  are
-                the  same.   Using  the maximum number of colors, ncurses adds
+                the  same.   Using  the maximum number of colors, <EM>ncurses</EM> adds
                 two, divides that sum by three, and assigns the result to red,
                 green and blue in that order.
 
                 comparison to red.
 
              <EM>number</EM>
-                tells  ncurses  what result to add to red, green and blue.  If
-                ncurses runs out of bits, blue (and green) lose just as in the
-                <EM>boolean</EM> case.
+                tells  <EM>ncurses</EM>  what result to add to red, green and blue.  If
+                <EM>ncurses</EM> runs out of bits, blue (and green) lose just as in the
+                <EM>Boolean</EM> case.
 
              <EM>string</EM>
                 explicitly  list  the  number  of bits used for red, green and
              could  define  <STRONG>RGB#1</STRONG> to represent the standard eight ANSI colors,
              i.e., one bit per color.
 
-          U8 <EM>number</EM>, asserts that ncurses must use Unicode  values  for  line-
+          U8 <EM>number</EM>, asserts that <EM>ncurses</EM> must use Unicode  values  for  line-
              drawing  characters,  and  that  it  should  ignore the alternate
              character set capabilities when the locale uses  UTF-8  encoding.
              For  more  information, see the discussion of <STRONG>NCURSES_NO_UTF8_ACS</STRONG>
 
              Set this capability to a nonzero value to enable it.
 
-          XM <EM>string</EM>, override ncurses's built-in string which enables/disables
+          XM <EM>string</EM>, override <EM>ncurses</EM>'s built-in string which enables/disables
              <STRONG>xterm(1)</STRONG> mouse mode.
 
-             ncurses  sends a character sequence to the terminal to initialize
+             <EM>ncurses</EM>  sends a character sequence to the terminal to initialize
              mouse mode, and when the user clicks the  mouse  buttons  or  (in
              certain  modes) moves the mouse, handles the characters sent back
              by the terminal to tell it what was done with the mouse.
 
              The mouse protocol  is  enabled  when  the  <EM>mask</EM>  passed  in  the
-             <STRONG>mousemask</STRONG>  function  is nonzero.  By default, ncurses handles the
+             <STRONG>mousemask</STRONG>  function  is nonzero.  By default, <EM>ncurses</EM> handles the
              responses for the X11 xterm mouse protocol.  It also knows  about
              the  <EM>SGR</EM>  <EM>1006</EM>  xterm mouse protocol, but must to be told to look
              for this specifically.  It will not be able to guess  which  mode
 
              The <STRONG>XM</STRONG> capability has a single parameter.  If nonzero, the  mouse
              protocol  should  be enabled.  If zero, the mouse protocol should
-             be disabled.  ncurses inspects this capability if it is  present,
+             be disabled.  <EM>ncurses</EM> inspects this capability if it is  present,
              to  see whether the 1006 protocol is used.  If so, it expects the
              responses to use the <EM>SGR</EM> <EM>1006</EM> xterm mouse protocol.
 
                           %?%p4%tM%em%;,
 
 
-</PRE><H3><a name="h3-Extended-key-definitions">Extended key-definitions</a></H3><PRE>
+</PRE><H3><a name="h3-Extended-Key-Definitions">Extended Key Definitions</a></H3><PRE>
        Several  terminals  provide  the  ability  to send distinct strings for
        combinations of modified special keys.  There is no standard  for  what
        those keys can send.
 
        Since  1999,  <STRONG>xterm(1)</STRONG>  has  supported  <EM>shift</EM>,  <EM>control</EM>,  <EM>alt</EM>, and <EM>meta</EM>
        modifiers which produce distinct special-key strings.   In  a  terminal
-       description,  ncurses  has  no special knowledge of the modifiers used.
+       description,  <EM>ncurses</EM>  has  no special knowledge of the modifiers used.
        Applications can use the <EM>naming</EM> <EM>convention</EM>  established  for  <STRONG>xterm</STRONG>  to
        find these special keys in the terminal description.
 
-       Starting  with  the curses convention that <EM>key</EM> <EM>names</EM> begin with "k" and
-       that shifted special keys are  an  uppercase  name,  ncurses'  terminal
-       database defines these names to which a suffix is added:
-
-            <STRONG>Name</STRONG>   <STRONG>Description</STRONG>
-            ---------------------------------------------------------------
-            kDC    special form of kdch1 (delete character)
-            kDN    special form of kcud1 (cursor down)
-            kEND   special form of kend (End)
-            kHOM   special form of khome (Home)
-            kLFT   special form of kcub1 (cursor-left or cursor-back)
-            kNXT   special form of knext (Next, or Page-Down)
-            kPRV   special form of kprev (Prev, or Page-Up)
-            kRIT   special form of kcuf1 (cursor-right, or cursor-forward)
-            kUP    special form of kcuu1 (cursor-up)
+       Starting  with  the  <EM>curses</EM> convention that capability codes describing
+       the input generated by a terminal's key caps begin with "k",  and  that
+       shifted  special  keys  use uppercase letters in their names, <EM>ncurses</EM>'s
+       terminal database defines the following names  and  codes  to  which  a
+       suffix is added.
+
+            <STRONG>Code</STRONG>   <STRONG>Description</STRONG>
+            -------------------------------------------------------------------
+            <STRONG>kDC</STRONG>    shifted kdch1 (delete character)
+            <STRONG>kDN</STRONG>    shifted kcud1 (cursor down)
+            <STRONG>kEND</STRONG>   shifted kend (end)
+            <STRONG>kHOM</STRONG>   shifted khome (home)
+            <STRONG>kLFT</STRONG>   shifted kcub1 (cursor back)
+            <STRONG>kNXT</STRONG>   shifted knext (next)
+            <STRONG>kPRV</STRONG>   shifted kprev (previous)
+            <STRONG>kRIT</STRONG>   shifted kcuf1 (cursor forward)
+            <STRONG>kUP</STRONG>    shifted kcuu1 (cursor up)
+
+       Keycap  nomenclature on the Unix systems for which <EM>curses</EM> was developed
+       differs from today's ubiquitous descendants of the IBM  PC/AT  keyboard
+       layout.  In the foregoing, interpret "backward" as "left", "forward" as
+       "right", "next" as "page down", and "prev(ious)" as "page up".
 
        These are the suffixes used to denote the modifiers:
 
             15      Meta + Ctrl + Alt
             16      Meta + Ctrl + Alt + Shift
 
-       None  of these are predefined; terminal descriptions can refer to <EM>names</EM>
-       which ncurses will allocate at runtime to <EM>key-codes</EM>.  To use these keys
-       in an ncurses program, an application could do this:
+       None of these are predefined; terminal descriptions can refer to  <EM>names</EM>
+       which <EM>ncurses</EM> will allocate at runtime to <EM>key-codes</EM>.  To use these keys
+       in an <EM>ncurses</EM> program, an application could do this:
 
-       <STRONG>o</STRONG>   using  a  list  of  extended  key <EM>names</EM>, ask <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG> for their
+       <STRONG>o</STRONG>   using a list of extended key  <EM>names</EM>,  ask  <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG>  for  their
            values, and
 
-       <STRONG>o</STRONG>   given the list of values,  ask  <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>  for  the  <EM>key-code</EM>
+       <STRONG>o</STRONG>   given  the  list  of  values,  ask <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG> for the <EM>key-code</EM>
            which would be returned for those keys by <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The  "-x"  extension  feature  of  <STRONG>tic</STRONG>  and <STRONG>infocmp</STRONG> has been adopted in
-       NetBSD curses.  That implementation stores  user-defined  capabilities,
+       The "-x" extension feature of <STRONG>tic</STRONG>  and  <STRONG>infocmp</STRONG>  has  been  adopted  in
+       NetBSD  curses.   That implementation stores user-defined capabilities,
        but makes no use of these capabilities itself.
 
 
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Thomas E. Dickey
+       beginning with <EM>ncurses</EM> 5.0 (1999)
+
+
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>.
+       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
 
        The  terminal  database  section  <EM>NCURSES</EM>  <EM>USER-DEFINABLE</EM>  <EM>CAPABILITIES</EM>
-       summarizes commonly-used user-defined capabilities which  are  used  in
-       the  terminal  descriptions.   Some  of those features are mentioned in
+       summarizes  commonly-used  user-defined  capabilities which are used in
+       the terminal descriptions.  Some of those  features  are  mentioned  in
        <STRONG>screen(1)</STRONG> or <STRONG>tmux(1)</STRONG>.
 
-       <EM>XTerm</EM> <EM>Control</EM> <EM>Sequences</EM> provides further information  on  the  <STRONG>xterm(1)</STRONG>
-       features which are used in these extended capabilities.
-
-
-</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
-       Thomas E. Dickey
-       beginning with ncurses 5.0 (1999)
+       <EM>XTerm</EM>  <EM>Control</EM>  <EM>Sequences</EM>  provides further information on the <STRONG>xterm(1)</STRONG>
+       features that are used in these extended capabilities.
 
 
 
-                                                                  <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
+ncurses 6.5                       2024-03-16                      <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
 <ul>
 <li><a href="#h3-Background">Background</a></li>
-<li><a href="#h3-Recognized-capabilities">Recognized capabilities</a></li>
-<li><a href="#h3-Extended-key-definitions">Extended key-definitions</a></li>
+<li><a href="#h3-Recognized-Capabilities">Recognized Capabilities</a></li>
+<li><a href="#h3-Extended-Key-Definitions">Extended Key Definitions</a></li>
 </ul>
 </li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
-<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 <li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 </BODY>
index 905a2929d2428d825afb2a1a12d69f3549c3e5c0..b224fd3937070fad44680e4d9ba78ba88dc153b6 100644 (file)
@@ -1,6 +1,6 @@
 <!--
   ****************************************************************************
-  * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1996
-  * @Id: wresize.3x,v 1.20 2022/02/12 20:07:29 tom Exp @
+  * @Id: wresize.3x,v 1.36 2024/03/16 15:35:01 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>wresize 3x</TITLE>
+<TITLE>wresize 3x 2024-03-16 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 
 </HEAD>
 <BODY>
-<H1 class="no-header">wresize 3x</H1>
+<H1 class="no-header">wresize 3x 2024-03-16 ncurses 6.5 Library calls</H1>
 <PRE>
-<STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>                                                        <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
+<STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>                      Library calls                     <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>wresize</STRONG> - resize a curses window
+       <STRONG>wresize</STRONG> - resize a <EM>curses</EM> window
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       This is an extension to the curses library.  It reallocates storage for
-       an <STRONG>ncurses</STRONG> window to adjust its dimensions to the specified values.  If
-       either  dimension  is larger than the current values, the window's data
-       is filled with blanks that have the current  background  rendition  (as
-       set by <STRONG>wbkgdset</STRONG>) merged into them.
+       This  <EM>ncurses</EM>  extension  to  standard <EM>curses</EM> reallocates storage for a
+       <EM>curses</EM> window to adjust its dimensions to  the  specified  values.   If
+       either dimension is larger than its current value, the expanded part of
+       the window  is  filled  with  blanks  merged  with  current  background
+       rendition (as set by <STRONG><A HREF="curs_bkgd.3x.html">wbkgdset(3x)</A></STRONG>).
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       The  function  returns  the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success.
-       It will fail if either of the dimensions less than or equal to zero, or
-       if an error occurs while (re)allocating memory for the window.
+       <STRONG>wresize</STRONG>  returns  <STRONG>ERR</STRONG>  upon failure and <STRONG>OK</STRONG> on success.  It will fail if
+       either of the dimensions is less than or equal to zero, or if an  error
+       occurs while (re)allocating memory for the window.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The  only  restriction placed on the dimensions is that they be greater
-       than zero.  The dimensions are not compared to <STRONG>curses</STRONG> screen dimensions
-       to  simplify  the logic of <STRONG>resizeterm</STRONG>.  The caller must ensure that the
-       window's dimensions fit within the actual screen dimensions.
+       than zero.  They are <EM>not</EM> compared to the <EM>curses</EM> screen dimensions; this
+       keeps  the logic of <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> simple.  The caller must ensure that
+       the window's dimensions fit within the actual screen dimensions.
 
 
 </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       It is not possible to resize windows with SVr4 curses.
+       It is not possible to resize windows with SVr4 <EM>curses</EM>.
 
-       This extension of ncurses was introduced in mid-1995.  It  was  adopted
-       in NetBSD curses (2001) and PDCurses (2003).
+       <EM>ncurses</EM> introduced this extension in mid-1995.  NetBSD  <EM>curses</EM>  adopted
+       it in 2001, and <EM>PDCurses</EM> in 2003.
 
 
-</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>.
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Thomas  Dickey  (from  an  equivalent  function written in 1988 for BSD
+       <EM>curses</EM>).
 
 
-</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
-       Thomas  Dickey  (from  an  equivalent  function written in 1988 for BSD
-       curses).
+</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
 
 
 
-                                                                   <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
+ncurses 6.5                       2024-03-16                       <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
index 4cf307135df60cb8554bfafdaa601f02d240f2a2..ad5af63ad807c69dce3775cb496661f1971ff004 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2021,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -31,7 +31,7 @@
  *   Author:  Juergen Pfeifer, 1995,1997                                    *
  ****************************************************************************/
 
-/* $Id: form.priv.h,v 0.48 2021/06/17 21:30:22 tom Exp $ */
+/* $Id: form.priv.h,v 0.49 2024/02/24 12:17:31 tom Exp $ */
 
 #ifndef FORM_PRIV_H
 #define FORM_PRIV_H 1
 #include <wctype.h>
 #endif
 
-#ifndef MB_LEN_MAX
-#define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */
-#endif
-
 #define FIELD_CELL NCURSES_CH_T
 
 #define NCURSES_FIELD_INTERNALS char** expanded; WINDOW *working;
index 7bc00ea6b92dbbdf27a4e07de7efdc8e6f4070ab..cd077b9691924b5a5f4f1fd22eecebf573e41515 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright 2019-2020,2021 Thomas E. Dickey                                  #
+# Copyright 2019-2023,2024 Thomas E. Dickey                                  #
 # Copyright 1998-2015,2016 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -30,7 +30,7 @@
 # Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995
 #    and: Eric S. Raymond <esr@snark.thyrsus.com>
 #
-# $Id: Caps,v 1.48 2021/10/08 07:55:48 tom Exp $
+# $Id: Caps,v 1.56 2024/04/20 21:05:02 tom Exp $
 #
 # This is the master termcap/terminfo capability table.
 #
@@ -48,7 +48,7 @@
 #
 # Column 1: terminfo variable name
 # Column 2: terminfo capability name
-# Column 3: capability type (boolean, numeric, or string)
+# Column 3: capability type (Boolean, numeric, or string)
 # Column 4: termcap capability name
 # Column 5: KEY_xxx name, if any, `-' otherwise
 # Column 6: value for KEY_xxx name, if any, `-' otherwise
 # to buy space for non-essentials Emacs is still using.  Capabilities high
 # on that hit list: rc, sc, uc.
 #
+# FORMATTING THE TABLES
+#
+# We manually specify a (minimum) column width for the capability name
+# and terminfo code columns in the tables to achieve a consistent
+# arrangement; as used here, tbl(1) cannot know the width required by
+# one table's data while formatting another's.
+#
+# The longest capability names (C variables) are
+# "enter_near_letter_quality" and "bit_image_carriage_return" (tied at
+# 25n), and the longest terminfo code is "setcolor" (8n).
+#
+# The tables are a tight fit on traditional man(7) implementations that
+# use a line length of 65n, and the "Description" column has little room
+# within which the formatter can make breaking or adjustment decisions.
+# Words like "micro_..._address" and "parm_..._micro" don't break.
+# Reducing the inter-column gaps to 2 ens gives them enough room.  --GBR
+#
 #############################################################################
 #
 # STANDARD CAPABILITIES
 #
-#%The following is a complete table of the capabilities included in a
-#%terminfo description block and available to terminfo-using code.  In each
-#%line of the table,
-#%
-#%The \fBvariable\fR is the name by which the programmer (at the terminfo level)
-#%accesses the capability.
-#%
-#%The \fBcapname\fR is the short name used in the text of the database,
-#%and is used by a person updating the database.
-#%Whenever possible, capnames are chosen to be the same as or similar to
-#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
-#%identical or very similar names).  Semantics are also intended to match
-#%those of the specification.
-#%
-#%The termcap code is the old
-#%.B termcap
-#%capability name (some capabilities are new, and have names which termcap
-#%did not originate).
-#%.P
-#%Capability names have no hard length limit, but an informal limit of 5
-#%characters has been adopted to keep them short and to allow the tabs in
-#%the source file
-#%.B Caps
+#%Tables of capabilities
+#%.I \%ncurses
+#%recognizes in a
+#%.I \%term\%info
+#%terminal type description and available to
+#%.IR \%term\%info -using
+#%code follow.
+#%.bP
+#%The capability name identifies the symbol by which the programmer
+#%using the
+#%.I \%term\%info
+#%API accesses the capability.
+#%.bP
+#%The TI
+#%.RI ( \%term\%info )
+#%code is the short name used by a person composing or updating a
+#%terminal type entry.
+#%.IP
+#%Whenever possible,
+#%these codes are the same as or similar to those of the ANSI X3.64-1979
+#%standard
+#%(now superseded by ECMA-48,
+#%which uses identical or very similar names).
+#%Semantics are also intended to match those of the specification.
+#%.IP
+#%.I \%term\%info
+#%codes have no hard length limit,
+#%but
+#%.I \%ncurses
+#%maintains an informal one of 5 characters to keep them short and to
+#%allow the tabs in the source file
+#%.I Caps
 #%to line up nicely.
-#%
-#%Finally, the description field attempts to convey the semantics of the
-#%capability.  You may find some codes in the description field:
-#%.TP
-#%(P)
-#%indicates that padding may be specified
+#%(Some standard codes exceed this limit regardless.)
+#%.bP
+#%The TC
+#%.RI ( termcap )
+#%code is that used by the corresponding API of
+#%.IR \%ncurses .
+#%(Some capabilities are new,
+#%and have names that BSD
+#%.I termcap
+#%did not originate.)
+#%.bP
+#%The description field attempts to convey the capability's semantics.
+#%.PP
+#%The description field employs a handful of notations.
 #%.TP
-#%#[1-9]
-#%in the description field indicates that the string is passed
-#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
-#%.IP
-#%If no parameters are listed in the description,
-#%passing the string through \fBtparm\fP(3X) may give unexpected results,
-#%e.g., if it contains percent (%%) signs.
+#%.B (P)
+#%indicates that padding may be specified.
 #%.TP
-#%(P*)
-#%indicates that padding may vary in proportion to the number of
-#%lines affected
+#%.B (P*)
+#%indicates that padding may vary in proportion to the number of output
+#%lines affected.
 #%.TP
-#%(#\d\fIi\fP\u)
-#%indicates the \fIi\fP\uth\d parameter.
-#%
+#%.BI # i
+#%indicates the
+#%.IR i th
+#%parameter of a string capability;
+#%the programmer should pass the string to \fB\%tparm\fP(3X) with the
+#%parameters listed.
+#%.IP
+#%If the description lists no parameters,
+#%passing the string to \fB\%tparm\fP(3X) may produce unexpected
+#%behavior,
+#%for instance if the string contains percent signs.
+#%.
 #%.PP
-#% These are the boolean capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBBooleans  name    Code\fR
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Boolean Capability Name      TI      TC      Description
+#%_
 auto_left_margin               bw      bool    bw      -       -       YB-G-   cub1 wraps from column 0 to last column
 auto_right_margin              am      bool    am      -       -       YBCGE   terminal has automatic margins
 no_esc_ctlc                    xsb     bool    xb      -       -       YBCG-   beehive (f1=escape, f2=ctrl C)
@@ -252,18 +288,16 @@ semi_auto_right_margin            sam     bool    YE      -       -       -----   printing in last column causes cr
 cpi_changes_res                        cpix    bool    YF      -       -       -----   changing character pitch changes resolution
 lpi_changes_res                        lpix    bool    YG      -       -       -----   changing line pitch changes resolution
 #%.TE
-#%.ad
-#%
-#%These are the numeric capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBNumeric   name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Numeric Capability Name      TI      TC      Description
+#%_
 columns                                cols    num     co      -       -       YBCGE   number of columns in a line
 init_tabs                      it      num     it      -       -       YB-G-   tabs initially every # spaces
 lines                          lines   num     li      -       -       YBCGE   number of lines on screen or page
@@ -282,20 +316,21 @@ max_colors                        colors  num     Co      -       -       -----   maximum number of colors on screen
 max_pairs                      pairs   num     pa      -       -       -----   maximum number of color-pairs on the screen
 no_color_video                 ncv     num     NC      -       -       -----   video attributes that cannot be used with colors
 #%.TE
-#%.ad
-#%
+#%.PP
+#%.
 #%The following numeric capabilities are present in the SVr4.0 term structure,
-#%but are not yet documented in the man page.  They came in with SVr4's
-#%printer support.
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBNumeric   name    Code\fR
+#%but are not yet documented in the man page.
+#%They came in with SVr4's printer support.
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Numeric Capability Name      TI      TC      Description
+#%_
 buffer_capacity                        bufsz   num     Ya      -       -       -----   numbers of bytes buffered before printing
 dot_vert_spacing               spinv   num     Yb      -       -       -----   spacing of pins vertically in pins per inch
 dot_horz_spacing               spinh   num     Yc      -       -       -----   spacing of dots horizontally in dots per inch
@@ -314,18 +349,16 @@ buttons                           btns    num     BT      -       -       -----   number of buttons on mouse
 bit_image_entwining            bitwin  num     Yo      -       -       -----   number of passes for each bit-image row
 bit_image_type                 bitype  num     Yp      -       -       -----   type of bit-image device
 #%.TE
-#%.ad
-#%
-#%These are the string capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 back_tab                       cbt     str     bt      -               -       YBCGE   back tab (P)
 bell                           bel     str     bl      -               -       YB-GE   audible signal (bell) (P)
 carriage_return                        cr      str     cr      -               -       YBCGE   carriage return (P*) (P*)
@@ -388,6 +421,10 @@ key_ctab                   kctab   str     kt      KEY_CTAB        0525    -B-G-*  clear-tab key
 key_dc                         kdch1   str     kD      KEY_DC          0512    YB-G-   delete-character key
 key_dl                         kdl1    str     kL      KEY_DL          0510    -B-G-*  delete-line key
 key_down                       kcud1   str     kd      KEY_DOWN        0402    YBCGE   down-arrow key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_eic                                krmir   str     kM      KEY_EIC         0514    -B-G-*  sent by rmir or smir in insert mode
 key_eol                                kel     str     kE      KEY_EOL         0517    -B-G-*  clear-to-end-of-line key
 key_eos                                ked     str     kS      KEY_EOS         0516    -B-G-*  clear-to-end-of-screen key
@@ -414,8 +451,8 @@ key_sf                              kind    str     kF      KEY_SF          0520    -B-G-*  scroll-forward key
 key_sr                         kri     str     kR      KEY_SR          0521    -B-G-*  scroll-backward key
 key_stab                       khts    str     kT      KEY_STAB        0524    -B-G-*  set-tab key
 key_up                         kcuu1   str     ku      KEY_UP          0403    YBCGE   up-arrow key
-keypad_local                   rmkx    str     ke      -               -       YBCGE   leave 'keyboard_transmit' mode
-keypad_xmit                    smkx    str     ks      -               -       YBCGE   enter 'keyboard_transmit' mode
+keypad_local                   rmkx    str     ke      -               -       YBCGE   leave keyboard transmit mode
+keypad_xmit                    smkx    str     ks      -               -       YBCGE   enter keyboard transmit mode
 lab_f0                         lf0     str     l0      -               -       -B-G-*  label on function key f0 if not f0
 lab_f1                         lf1     str     l1      -               -       -B-G-*  label on function key f1 if not f1
 lab_f10                                lf10    str     la      -               -       -----   label on function key f10 if not f10
@@ -450,6 +487,10 @@ prtr_on                            mc5     str     po      -               -       -B-G-*  turn on printer
 repeat_char                    rep     str     rp      -               -       YB-GE   repeat char #1 #2 times (P*)
 reset_1string                  rs1     str     r1      -               -       -B---   reset string
 reset_2string                  rs2     str     r2      -               -       -B---   reset string
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 reset_3string                  rs3     str     r3      -               -       -B---   reset string
 reset_file                     rf      str     rf      -               -       -B---   name of reset file
 restore_cursor                 rc      str     rc      -               -       YBCG-   restore cursor to position of last save_cursor
@@ -516,6 +557,10 @@ key_resume                 kres    str     &5      KEY_RESUME      0570    -----   resume key
 key_save                       ksav    str     &6      KEY_SAVE        0571    -----   save key
 key_suspend                    kspd    str     &7      KEY_SUSPEND     0627    -----   suspend key
 key_undo                       kund    str     &8      KEY_UNDO        0630    -----   undo key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_sbeg                       kBEG    str     &9      KEY_SBEG        0572    -----   shifted begin key
 key_scancel                    kCAN    str     &0      KEY_SCANCEL     0573    -----   shifted cancel key
 key_scommand                   kCMD    str     *1      KEY_SCOMMAND    0574    -----   shifted command key
@@ -578,6 +623,10 @@ key_f39                            kf39    str     FT      KEY_F(39)       -       ----E   F39 function key
 key_f40                                kf40    str     FU      KEY_F(40)       -       ----E   F40 function key
 key_f41                                kf41    str     FV      KEY_F(41)       -       ----E   F41 function key
 key_f42                                kf42    str     FW      KEY_F(42)       -       ----E   F42 function key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_f43                                kf43    str     FX      KEY_F(43)       -       ----E   F43 function key
 key_f44                                kf44    str     FY      KEY_F(44)       -       ----E   F44 function key
 key_f45                                kf45    str     FZ      KEY_F(45)       -       ----E   F45 function key
@@ -601,7 +650,7 @@ key_f62                             kf62    str     Fq      KEY_F(62)       -       ----E   F62 function key
 key_f63                                kf63    str     Fr      KEY_F(63)       -       ----E   F63 function key
 clr_bol                                el1     str     cb      -               -       -----   Clear to beginning of line
 clear_margins                  mgc     str     MC      -               -       -----   clear right and left soft margins
-set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column.  (ML is not in BSD termcap).
+set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column (not in BSD \fItermcap\fP)
 set_right_margin               smgr    str     MR      -               -       -----   set right soft margin at current column
 label_format                   fln     str     Lf      -               -       -----   label format
 set_clock                      sclk    str     SC      -               -       -----   set clock, #1 hrs #2 mins #3 secs
@@ -646,6 +695,10 @@ change_res_horz                    chr     str     ZC      -               -       -----   Change horizontal resolution to #1
 change_res_vert                        cvr     str     ZD      -               -       -----   Change vertical resolution to #1
 define_char                    defc    str     ZE      -               -       -----   Define a character #1, #2 dots wide, descender #3
 enter_doublewide_mode          swidm   str     ZF      -               -       -----   Enter double-wide mode
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 enter_draft_quality            sdrfq   str     ZG      -               -       -----   Enter draft-quality mode
 enter_italics_mode             sitm    str     ZH      -               -       -----   Enter italic mode
 enter_leftward_mode            slm     str     ZI      -               -       -----   Start leftward carriage motion
@@ -691,19 +744,20 @@ superscript_characters            supcs   str     Zv      -               -       -----   List of superscriptable characte
 these_cause_cr                 docr    str     Zw      -               -       -----   Printing any of these characters causes CR
 zero_motion                    zerom   str     Zx      -               -       -----   No motion for subsequent character
 #%.TE
-#%.ad
-#%
+#%.PP
+#%.
 #%The following string capabilities are present in the SVr4.0 term structure,
 #%but were originally not documented in the man page.
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw18.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 char_set_names                 csnm    str     Zy      -               -       -----   Produce #1'th item from list of character set names
 key_mouse                      kmous   str     Km      KEY_MOUSE       0631    -----   Mouse event has occurred
 mouse_info                     minfo   str     Mi      -               -       -----   Mouse status information
@@ -712,7 +766,7 @@ get_mouse                   getm    str     Gm      -               -       -----   Curses should get button events, parameter #1
 set_a_foreground               setaf   str     AF      -               -       -----   Set foreground color to #1, using ANSI escape
 set_a_background               setab   str     AB      -               -       -----   Set background color to #1, using ANSI escape
 pkey_plab                      pfxl    str     xl      -               -       -----   Program function key #1 to type string #2 and show string #3
-device_type                    devt    str     dv      -               -       -----   Indicate language/codeset support
+device_type                    devt    str     dv      -               -       -----   Indicate languagecodeset support
 code_set_init                  csin    str     ci      -               -       -----   Init sequence for multiple codesets
 set0_des_seq                   s0ds    str     s0      -               -       -----   Shift to codeset 0 (EUC set 0, ASCII)
 set1_des_seq                   s1ds    str     s1      -               -       -----   Shift to codeset 1
@@ -740,9 +794,8 @@ pc_term_options                     pctrm   str     S6      -               -       -----   PC terminal options
 scancode_escape                        scesc   str     S7      -               -       -----   Escape for scancode emulation
 alt_scancode_esc               scesa   str     S8      -               -       -----   Alternate escape for scancode emulation
 #%.TE
-#%.ad
-#%
-#%.in .8i
+#%.PP
+#%.
 #%The XSI Curses standard added these hardcopy capabilities.
 #%They were used in some post-4.1 versions of System V curses,
 #%e.g., Solaris 2.5 and IRIX 6.x.
@@ -751,15 +804,16 @@ alt_scancode_esc          scesa   str     S8      -               -       -----   Alternate escape for scancode emulatio
 #%If your compiled terminfo entries use these,
 #%they may not be binary-compatible with System V terminfo
 #%entries after SVr4.1; beware!
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 enter_horizontal_hl_mode       ehhlm   str     Xh      -               -       -----   Enter horizontal highlight mode
 enter_left_hl_mode             elhlm   str     Xl      -               -       -----   Enter left highlight mode
 enter_low_hl_mode              elohlm  str     Xo      -               -       -----   Enter low highlight mode
@@ -769,7 +823,6 @@ enter_vertical_hl_mode              evhlm   str     Xv      -               -       -----   Enter vertical highlight mode
 set_a_attributes               sgr1    str     sA      -               -       -----   Define second set of video attributes #1-#6
 set_pglen_inch                 slength str     YI      -               -       -----   Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
 #%.TE
-#%.ad
 #
 # The magic token below tells the tic compiler-generator code that all the caps
 # past it should be ignored (not written out) when dumping terminfo objects. It
index 826843a7377e187507537d85d81ca08edbb184cf..f9a5da06911a28bfc498b5da285be2a7aae17c2e 100644 (file)
@@ -28,7 +28,7 @@
 #
 # Author: Thomas E. Dickey
 #
-# $Id: Caps-ncurses,v 1.14 2023/01/15 01:02:07 tom Exp $
+# $Id: Caps-ncurses,v 1.15 2023/10/28 21:55:47 tom Exp $
 #
 #############################################################################
 #
@@ -410,6 +410,8 @@ userdef     PS      str     -       is sent before pasted text
 userdef        RV      str     -       report terminal secondary device attributes
 userdef        XR      str     -       report terminal version as a free-format string.
 userdef        XF      bool    -       terminal supports xterm focus in/out
+userdef        fd      str     -       disable xterm focus-events
+userdef        fe      str     -       enable xterm focus-events
 userdef        rv      str     -       response to RV, regular expression
 userdef        xr      str     -       response to XR, regular expression
 #
index ee9f2cf24df1ec939c4c4f02c781f94387a39fd5..1adb848e08b12ca6affb78ade47f4d911bfecce0 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright 2019-2020,2021 Thomas E. Dickey                                  #
+# Copyright 2019-2023,2024 Thomas E. Dickey                                  #
 # Copyright 2001-2015,2016 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -29,7 +29,7 @@
 #
 # Author: Thomas Dickey
 #
-# $Id: Caps.aix4,v 1.20 2021/10/08 07:55:48 tom Exp $
+# $Id: Caps.aix4,v 1.28 2024/04/20 21:05:02 tom Exp $
 #
 # This is an adaptation of ncurses' termcap/terminfo capability table, which
 # is designed to align with AIX 4.x's terminfo.
@@ -48,7 +48,7 @@
 #
 # Column 1: terminfo variable name
 # Column 2: terminfo capability name
-# Column 3: capability type (boolean, numeric, or string)
+# Column 3: capability type (Boolean, numeric, or string)
 # Column 4: termcap capability name
 # Column 5: KEY_xxx name, if any, `-' otherwise
 # Column 6: value for KEY_xxx name, if any, `-' otherwise
 # to buy space for non-essentials Emacs is still using.  Capabilities high
 # on that hit list: rc, sc, uc.
 #
+# FORMATTING THE TABLES
+#
+# We manually specify a (minimum) column width for the capability name
+# and terminfo code columns in the tables to achieve a consistent
+# arrangement; as used here, tbl(1) cannot know the width required by
+# one table's data while formatting another's.
+#
+# The longest capability names (C variables) are
+# "enter_near_letter_quality" and "bit_image_carriage_return" (tied at
+# 25n), and the longest terminfo code is "setcolor" (8n).
+#
+# The tables are a tight fit on traditional man(7) implementations that
+# use a line length of 65n, and the "Description" column has little room
+# within which the formatter can make breaking or adjustment decisions.
+# Words like "micro_..._address" and "parm_..._micro" don't break.
+# Reducing the inter-column gaps to 2 ens gives them enough room.  --GBR
+#
 #############################################################################
 #
 # STANDARD CAPABILITIES
 #
-#%The following is a complete table of the capabilities included in a
-#%terminfo description block and available to terminfo-using code.  In each
-#%line of the table,
-#%
-#%The \fBvariable\fR is the name by which the programmer (at the terminfo level)
-#%accesses the capability.
-#%
-#%The \fBcapname\fR is the short name used in the text of the database,
-#%and is used by a person updating the database.
-#%Whenever possible, capnames are chosen to be the same as or similar to
-#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
-#%identical or very similar names).  Semantics are also intended to match
-#%those of the specification.
-#%
-#%The termcap code is the old
-#%.B termcap
-#%capability name (some capabilities are new, and have names which termcap
-#%did not originate).
-#%.P
-#%Capability names have no hard length limit, but an informal limit of 5
-#%characters has been adopted to keep them short and to allow the tabs in
-#%the source file
-#%.B Caps
+#%Tables of capabilities
+#%.I \%ncurses
+#%recognizes in a
+#%.I \%term\%info
+#%terminal type description and available to
+#%.IR \%term\%info -using
+#%code follow.
+#%.bP
+#%The capability name identifies the symbol by which the programmer
+#%using the
+#%.I \%term\%info
+#%API accesses the capability.
+#%.bP
+#%The TI
+#%.RI ( \%term\%info )
+#%code is the short name used by a person composing or updating a
+#%terminal type entry.
+#%.IP
+#%Whenever possible,
+#%these codes are the same as or similar to those of the ANSI X3.64-1979
+#%standard
+#%(now superseded by ECMA-48,
+#%which uses identical or very similar names).
+#%Semantics are also intended to match those of the specification.
+#%.IP
+#%.I \%term\%info
+#%codes have no hard length limit,
+#%but
+#%.I \%ncurses
+#%maintains an informal one of 5 characters to keep them short and to
+#%allow the tabs in the source file
+#%.I Caps
 #%to line up nicely.
-#%
-#%Finally, the description field attempts to convey the semantics of the
-#%capability.  You may find some codes in the description field:
-#%.TP
-#%(P)
-#%indicates that padding may be specified
+#%(Some standard codes exceed this limit regardless.)
+#%.bP
+#%The TC
+#%.RI ( termcap )
+#%code is that used by the corresponding API of
+#%.IR \%ncurses .
+#%(Some capabilities are new,
+#%and have names that BSD
+#%.I termcap
+#%did not originate.)
+#%.bP
+#%The description field attempts to convey the capability's semantics.
+#%.PP
+#%The description field employs a handful of notations.
 #%.TP
-#%#[1-9]
-#%in the description field indicates that the string is passed
-#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
-#%.IP
-#%If no parameters are listed in the description,
-#%passing the string through \fBtparm\fP(3X) may give unexpected results,
-#%e.g., if it contains percent (%%) signs.
+#%.B (P)
+#%indicates that padding may be specified.
 #%.TP
-#%(P*)
-#%indicates that padding may vary in proportion to the number of
-#%lines affected
+#%.B (P*)
+#%indicates that padding may vary in proportion to the number of output
+#%lines affected.
 #%.TP
-#%(#\d\fIi\fP\u)
-#%indicates the \fIi\fP\uth\d parameter.
-#%
+#%.BI # i
+#%indicates the
+#%.IR i th
+#%parameter of a string capability;
+#%the programmer should pass the string to \fB\%tparm\fP(3X) with the
+#%parameters listed.
+#%.IP
+#%If the description lists no parameters,
+#%passing the string to \fB\%tparm\fP(3X) may produce unexpected
+#%behavior,
+#%for instance if the string contains percent signs.
+#%.
 #%.PP
-#% These are the boolean capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBBooleans  name    Code\fR
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Boolean Capability Name      TI      TC      Description
+#%_
 auto_left_margin               bw      bool    bw      -       -       YB-G-   cub1 wraps from column 0 to last column
 auto_right_margin              am      bool    am      -       -       YBCGE   terminal has automatic margins
 no_esc_ctlc                    xsb     bool    xb      -       -       YBCG-   beehive (f1=escape, f2=ctrl C)
@@ -252,18 +288,16 @@ semi_auto_right_margin            sam     bool    YE      -       -       -----   printing in last column causes cr
 cpi_changes_res                        cpix    bool    YF      -       -       -----   changing character pitch changes resolution
 lpi_changes_res                        lpix    bool    YG      -       -       -----   changing line pitch changes resolution
 #%.TE
-#%.ad
-#%
-#%These are the numeric capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBNumeric   name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Numeric Capability Name      TI      TC      Description
+#%_
 columns                                cols    num     co      -       -       YBCGE   number of columns in a line
 init_tabs                      it      num     it      -       -       YB-G-   tabs initially every # spaces
 lines                          lines   num     li      -       -       YBCGE   number of lines on screen or page
@@ -282,20 +316,21 @@ max_colors                        colors  num     Co      -       -       -----   maximum number of colors on screen
 max_pairs                      pairs   num     pa      -       -       -----   maximum number of color-pairs on the screen
 no_color_video                 ncv     num     NC      -       -       -----   video attributes that cannot be used with colors
 #%.TE
-#%.ad
-#%
+#%.PP
+#%.
 #%The following numeric capabilities are present in the SVr4.0 term structure,
-#%but are not yet documented in the man page.  They came in with SVr4's
-#%printer support.
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBNumeric   name    Code\fR
+#%but are not yet documented in the man page.
+#%They came in with SVr4's printer support.
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Numeric Capability Name      TI      TC      Description
+#%_
 buffer_capacity                        bufsz   num     Ya      -       -       -----   numbers of bytes buffered before printing
 dot_vert_spacing               spinv   num     Yb      -       -       -----   spacing of pins vertically in pins per inch
 dot_horz_spacing               spinh   num     Yc      -       -       -----   spacing of dots horizontally in dots per inch
@@ -314,18 +349,16 @@ buttons                           btns    num     BT      -       -       -----   number of buttons on mouse
 bit_image_entwining            bitwin  num     Yo      -       -       -----   number of passes for each bit-image row
 bit_image_type                 bitype  num     Yp      -       -       -----   type of bit-image device
 #%.TE
-#%.ad
-#%
-#%These are the string capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 back_tab                       cbt     str     bt      -               -       YBCGE   back tab (P)
 bell                           bel     str     bl      -               -       YB-GE   audible signal (bell) (P)
 carriage_return                        cr      str     cr      -               -       YBCGE   carriage return (P*) (P*)
@@ -388,6 +421,10 @@ key_ctab                   kctab   str     kt      KEY_CTAB        0525    -B-G-*  clear-tab key
 key_dc                         kdch1   str     kD      KEY_DC          0512    YB-G-   delete-character key
 key_dl                         kdl1    str     kL      KEY_DL          0510    -B-G-*  delete-line key
 key_down                       kcud1   str     kd      KEY_DOWN        0402    YBCGE   down-arrow key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_eic                                krmir   str     kM      KEY_EIC         0514    -B-G-*  sent by rmir or smir in insert mode
 key_eol                                kel     str     kE      KEY_EOL         0517    -B-G-*  clear-to-end-of-line key
 key_eos                                ked     str     kS      KEY_EOS         0516    -B-G-*  clear-to-end-of-screen key
@@ -450,6 +487,10 @@ prtr_on                            mc5     str     po      -               -       -B-G-*  turn on printer
 repeat_char                    rep     str     rp      -               -       YB-GE   repeat char #1 #2 times (P*)
 reset_1string                  rs1     str     r1      -               -       -B---   reset string
 reset_2string                  rs2     str     r2      -               -       -B---   reset string
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 reset_3string                  rs3     str     r3      -               -       -B---   reset string
 reset_file                     rf      str     rf      -               -       -B---   name of reset file
 restore_cursor                 rc      str     rc      -               -       YBCG-   restore cursor to position of last save_cursor
@@ -598,6 +639,10 @@ key_f39                            kf39    str     FT      KEY_F(39)       -       ----E   F39 function key
 key_f40                                kf40    str     FU      KEY_F(40)       -       ----E   F40 function key
 key_f41                                kf41    str     FV      KEY_F(41)       -       ----E   F41 function key
 key_f42                                kf42    str     FW      KEY_F(42)       -       ----E   F42 function key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_f43                                kf43    str     FX      KEY_F(43)       -       ----E   F43 function key
 key_f44                                kf44    str     FY      KEY_F(44)       -       ----E   F44 function key
 key_f45                                kf45    str     FZ      KEY_F(45)       -       ----E   F45 function key
@@ -671,6 +716,10 @@ key_resume                 kres    str     &5      KEY_RESUME      0570    -----   resume key
 key_save                       ksav    str     &6      KEY_SAVE        0571    -----   save key
 key_suspend                    kspd    str     &7      KEY_SUSPEND     0627    -----   suspend key
 key_undo                       kund    str     &8      KEY_UNDO        0630    -----   undo key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_sbeg                       kBEG    str     &9      KEY_SBEG        0572    -----   shifted begin key
 key_scancel                    kCAN    str     &0      KEY_SCANCEL     0573    -----   shifted cancel key
 key_scommand                   kCMD    str     *1      KEY_SCOMMAND    0574    -----   shifted command key
@@ -703,7 +752,7 @@ key_sundo                   kUND    str     !3      KEY_SUNDO       0626    -----   shifted undo key
 req_for_input                  rfi     str     RF      -               -       -----   send next input char (for ptys)
 clr_bol                                el1     str     cb      -               -       -----   Clear to beginning of line
 clear_margins                  mgc     str     MC      -               -       -----   clear right and left soft margins
-set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column.  (ML is not in BSD termcap).
+set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column (not in BSD \fItermcap\fP)
 set_right_margin               smgr    str     MR      -               -       -----   set right soft margin at current column
 label_format                   fln     str     Lf      -               -       -----   label format
 set_clock                      sclk    str     SC      -               -       -----   set clock, #1 hrs #2 mins #3 secs
@@ -748,6 +797,10 @@ change_res_horz                    chr     str     ZC      -               -       -----   Change horizontal resolution to #1
 change_res_vert                        cvr     str     ZD      -               -       -----   Change vertical resolution to #1
 define_char                    defc    str     ZE      -               -       -----   Define a character #1, #2 dots wide, descender #3
 enter_doublewide_mode          swidm   str     ZF      -               -       -----   Enter double-wide mode
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 enter_draft_quality            sdrfq   str     ZG      -               -       -----   Enter draft-quality mode
 enter_italics_mode             sitm    str     ZH      -               -       -----   Enter italic mode
 enter_leftward_mode            slm     str     ZI      -               -       -----   Start leftward carriage motion
@@ -793,19 +846,20 @@ superscript_characters            supcs   str     Zv      -               -       -----   List of superscriptable characte
 these_cause_cr                 docr    str     Zw      -               -       -----   Printing any of these characters causes CR
 zero_motion                    zerom   str     Zx      -               -       -----   No motion for subsequent character
 #%.TE
-#%.ad
-#%
+#%.PP
+#%.
 #%The following string capabilities are present in the SVr4.0 term structure,
 #%but were originally not documented in the man page.
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw18.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 char_set_names                 csnm    str     Zy      -               -       -----   Produce #1'th item from list of character set names
 key_mouse                      kmous   str     Km      KEY_MOUSE       0631    -----   Mouse event has occurred
 mouse_info                     minfo   str     Mi      -               -       -----   Mouse status information
@@ -842,9 +896,8 @@ pc_term_options                     pctrm   str     S6      -               -       -----   PC terminal options
 scancode_escape                        scesc   str     S7      -               -       -----   Escape for scancode emulation
 alt_scancode_esc               scesa   str     S8      -               -       -----   Alternate escape for scancode emulation
 #%.TE
-#%.ad
-#%
-#%.in .8i
+#%.PP
+#%.
 #%The XSI Curses standard added these hardcopy capabilities.
 #%They were used in some post-4.1 versions of System V curses,
 #%e.g., Solaris 2.5 and IRIX 6.x.
@@ -853,15 +906,16 @@ alt_scancode_esc          scesa   str     S8      -               -       -----   Alternate escape for scancode emulatio
 #%If your compiled terminfo entries use these,
 #%they may not be binary-compatible with System V terminfo
 #%entries after SVr4.1; beware!
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 #enter_horizontal_hl_mode      ehhlm   str     Xh      -               -       -----   Enter horizontal highlight mode
 #enter_left_hl_mode            elhlm   str     Xl      -               -       -----   Enter left highlight mode
 #enter_low_hl_mode             elohlm  str     Xo      -               -       -----   Enter low highlight mode
@@ -871,7 +925,6 @@ alt_scancode_esc            scesa   str     S8      -               -       -----   Alternate escape for scancode emulatio
 #set_a_attributes              sgr1    str     sA      -               -       -----   Define second set of video attributes #1-#6
 set_pglen_inch                 slength str     YI      -               -       -----   Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
 #%.TE
-#%.ad
 #
 # The magic token below tells the tic compiler-generator code that all the caps
 # past it should be ignored (not written out) when dumping terminfo objects. It
index 3c0444f81d64ba61115943dfc7fa7b47ad1909a1..723556fa18f46ca467141448396f37bb540b410b 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright 2019-2020,2021 Thomas E. Dickey                                  #
+# Copyright 2019-2023,2024 Thomas E. Dickey                                  #
 # Copyright 2002-2015,2016 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -29,7 +29,7 @@
 #
 # Author: Thomas Dickey
 #
-# $Id: Caps.hpux11,v 1.18 2021/10/08 07:55:48 tom Exp $
+# $Id: Caps.hpux11,v 1.26 2024/04/20 21:05:02 tom Exp $
 #
 # This is an adaptation of ncurses' termcap/terminfo capability table, which
 # is designed to align with HPUX 11.x's terminfo.
@@ -48,7 +48,7 @@
 #
 # Column 1: terminfo variable name
 # Column 2: terminfo capability name
-# Column 3: capability type (boolean, numeric, or string)
+# Column 3: capability type (Boolean, numeric, or string)
 # Column 4: termcap capability name
 # Column 5: KEY_xxx name, if any, `-' otherwise
 # Column 6: value for KEY_xxx name, if any, `-' otherwise
 # to buy space for non-essentials Emacs is still using.  Capabilities high
 # on that hit list: rc, sc, uc.
 #
+# FORMATTING THE TABLES
+#
+# We manually specify a (minimum) column width for the capability name
+# and terminfo code columns in the tables to achieve a consistent
+# arrangement; as used here, tbl(1) cannot know the width required by
+# one table's data while formatting another's.
+#
+# The longest capability names (C variables) are
+# "enter_near_letter_quality" and "bit_image_carriage_return" (tied at
+# 25n), and the longest terminfo code is "setcolor" (8n).
+#
+# The tables are a tight fit on traditional man(7) implementations that
+# use a line length of 65n, and the "Description" column has little room
+# within which the formatter can make breaking or adjustment decisions.
+# Words like "micro_..._address" and "parm_..._micro" don't break.
+# Reducing the inter-column gaps to 2 ens gives them enough room.  --GBR
+#
 #############################################################################
 #
 # STANDARD CAPABILITIES
 #
-#%The following is a complete table of the capabilities included in a
-#%terminfo description block and available to terminfo-using code.  In each
-#%line of the table,
-#%
-#%The \fBvariable\fR is the name by which the programmer (at the terminfo level)
-#%accesses the capability.
-#%
-#%The \fBcapname\fR is the short name used in the text of the database,
-#%and is used by a person updating the database.
-#%Whenever possible, capnames are chosen to be the same as or similar to
-#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
-#%identical or very similar names).  Semantics are also intended to match
-#%those of the specification.
-#%
-#%The termcap code is the old
-#%.B termcap
-#%capability name (some capabilities are new, and have names which termcap
-#%did not originate).
-#%.P
-#%Capability names have no hard length limit, but an informal limit of 5
-#%characters has been adopted to keep them short and to allow the tabs in
-#%the source file
-#%.B Caps
+#%Tables of capabilities
+#%.I \%ncurses
+#%recognizes in a
+#%.I \%term\%info
+#%terminal type description and available to
+#%.IR \%term\%info -using
+#%code follow.
+#%.bP
+#%The capability name identifies the symbol by which the programmer
+#%using the
+#%.I \%term\%info
+#%API accesses the capability.
+#%.bP
+#%The TI
+#%.RI ( \%term\%info )
+#%code is the short name used by a person composing or updating a
+#%terminal type entry.
+#%.IP
+#%Whenever possible,
+#%these codes are the same as or similar to those of the ANSI X3.64-1979
+#%standard
+#%(now superseded by ECMA-48,
+#%which uses identical or very similar names).
+#%Semantics are also intended to match those of the specification.
+#%.IP
+#%.I \%term\%info
+#%codes have no hard length limit,
+#%but
+#%.I \%ncurses
+#%maintains an informal one of 5 characters to keep them short and to
+#%allow the tabs in the source file
+#%.I Caps
 #%to line up nicely.
-#%
-#%Finally, the description field attempts to convey the semantics of the
-#%capability.  You may find some codes in the description field:
-#%.TP
-#%(P)
-#%indicates that padding may be specified
+#%(Some standard codes exceed this limit regardless.)
+#%.bP
+#%The TC
+#%.RI ( termcap )
+#%code is that used by the corresponding API of
+#%.IR \%ncurses .
+#%(Some capabilities are new,
+#%and have names that BSD
+#%.I termcap
+#%did not originate.)
+#%.bP
+#%The description field attempts to convey the capability's semantics.
+#%.PP
+#%The description field employs a handful of notations.
 #%.TP
-#%#[1-9]
-#%in the description field indicates that the string is passed
-#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
-#%.IP
-#%If no parameters are listed in the description,
-#%passing the string through \fBtparm\fP(3X) may give unexpected results,
-#%e.g., if it contains percent (%%) signs.
+#%.B (P)
+#%indicates that padding may be specified.
 #%.TP
-#%(P*)
-#%indicates that padding may vary in proportion to the number of
-#%lines affected
+#%.B (P*)
+#%indicates that padding may vary in proportion to the number of output
+#%lines affected.
 #%.TP
-#%(#\d\fIi\fP\u)
-#%indicates the \fIi\fP\uth\d parameter.
-#%
+#%.BI # i
+#%indicates the
+#%.IR i th
+#%parameter of a string capability;
+#%the programmer should pass the string to \fB\%tparm\fP(3X) with the
+#%parameters listed.
+#%.IP
+#%If the description lists no parameters,
+#%passing the string to \fB\%tparm\fP(3X) may produce unexpected
+#%behavior,
+#%for instance if the string contains percent signs.
+#%.
 #%.PP
-#% These are the boolean capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBBooleans  name    Code\fR
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Boolean Capability Name      TI      TC      Description
+#%_
 auto_left_margin               bw      bool    bw      -       -       YB-G-   cub1 wraps from column 0 to last column
 auto_right_margin              am      bool    am      -       -       YBCGE   terminal has automatic margins
 no_esc_ctlc                    xsb     bool    xb      -       -       YBCG-   beehive (f1=escape, f2=ctrl C)
@@ -235,7 +271,7 @@ dest_tabs_magic_smso                xt      bool    xt      -       -       YBCGE   tabs destructive, magic so char (t106
 tilde_glitch                   hz      bool    hz      -       -       YB-GE   cannot print ~'s (Hazeltine)
 transparent_underline          ul      bool    ul      -       -       YBCGE   underline character overstrikes
 xon_xoff                       xon     bool    xo      -       -       YB---   terminal uses xon/xoff handshaking
-# end booleans for HPUX 9, 10 (non-color curses)
+# end Booleans for HPUX 9, 10 (non-color curses)
 needs_xon_xoff                 nxon    bool    nx      -       -       -----   padding will not work, xon/xoff required
 prtr_silent                    mc5i    bool    5i      -       -       -----   printer will not echo on screen
 hard_cursor                    chts    bool    HC      -       -       -----   cursor is hard to see
@@ -253,18 +289,16 @@ semi_auto_right_margin            sam     bool    YE      -       -       -----   printing in last column causes cr
 cpi_changes_res                        cpix    bool    YF      -       -       -----   changing character pitch changes resolution
 lpi_changes_res                        lpix    bool    YG      -       -       -----   changing line pitch changes resolution
 #%.TE
-#%.ad
-#%
-#%These are the numeric capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBNumeric   name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Numeric Capability Name      TI      TC      Description
+#%_
 columns                                cols    num     co      -       -       YBCGE   number of columns in a line
 init_tabs                      it      num     it      -       -       YB-G-   tabs initially every # spaces
 lines                          lines   num     li      -       -       YBCGE   number of lines on screen or page
@@ -284,20 +318,21 @@ max_colors                        colors  num     Co      -       -       -----   maximum number of colors on screen
 max_pairs                      pairs   num     pa      -       -       -----   maximum number of color-pairs on the screen
 no_color_video                 ncv     num     NC      -       -       -----   video attributes that cannot be used with colors
 #%.TE
-#%.ad
-#%
+#%.PP
+#%.
 #%The following numeric capabilities are present in the SVr4.0 term structure,
-#%but are not yet documented in the man page.  They came in with SVr4's
-#%printer support.
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBNumeric   name    Code\fR
+#%but are not yet documented in the man page.
+#%They came in with SVr4's printer support.
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Numeric Capability Name      TI      TC      Description
+#%_
 buffer_capacity                        bufsz   num     Ya      -       -       -----   numbers of bytes buffered before printing
 dot_vert_spacing               spinv   num     Yb      -       -       -----   spacing of pins vertically in pins per inch
 dot_horz_spacing               spinh   num     Yc      -       -       -----   spacing of dots horizontally in dots per inch
@@ -316,18 +351,16 @@ buttons                           btns    num     BT      -       -       -----   number of buttons on mouse
 bit_image_entwining            bitwin  num     Yo      -       -       -----   number of passes for each bit-image row
 bit_image_type                 bitype  num     Yp      -       -       -----   type of bit-image device
 #%.TE
-#%.ad
-#%
-#%These are the string capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 back_tab                       cbt     str     bt      -               -       YBCGE   back tab (P)
 bell                           bel     str     bl      -               -       YB-GE   audible signal (bell) (P)
 carriage_return                        cr      str     cr      -               -       YBCGE   carriage return (P*) (P*)
@@ -390,6 +423,10 @@ key_ctab                   kctab   str     kt      KEY_CTAB        0525    -B-G-*  clear-tab key
 key_dc                         kdch1   str     kD      KEY_DC          0512    YB-G-   delete-character key
 key_dl                         kdl1    str     kL      KEY_DL          0510    -B-G-*  delete-line key
 key_down                       kcud1   str     kd      KEY_DOWN        0402    YBCGE   down-arrow key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_eic                                krmir   str     kM      KEY_EIC         0514    -B-G-*  sent by rmir or smir in insert mode
 key_eol                                kel     str     kE      KEY_EOL         0517    -B-G-*  clear-to-end-of-line key
 key_eos                                ked     str     kS      KEY_EOS         0516    -B-G-*  clear-to-end-of-screen key
@@ -452,6 +489,10 @@ prtr_on                            mc5     str     po      -               -       -B-G-*  turn on printer
 repeat_char                    rep     str     rp      -               -       YB-GE   repeat char #1 #2 times (P*)
 reset_1string                  rs1     str     r1      -               -       -B---   reset string
 reset_2string                  rs2     str     r2      -               -       -B---   reset string
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 reset_3string                  rs3     str     r3      -               -       -B---   reset string
 reset_file                     rf      str     rf      -               -       -B---   name of reset file
 restore_cursor                 rc      str     rc      -               -       YBCG-   restore cursor to position of last save_cursor
@@ -517,6 +558,10 @@ key_f39                            kf39    str     FT      KEY_F(39)       -       ----E   F39 function key
 key_f40                                kf40    str     FU      KEY_F(40)       -       ----E   F40 function key
 key_f41                                kf41    str     FV      KEY_F(41)       -       ----E   F41 function key
 key_f42                                kf42    str     FW      KEY_F(42)       -       ----E   F42 function key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_f43                                kf43    str     FX      KEY_F(43)       -       ----E   F43 function key
 key_f44                                kf44    str     FY      KEY_F(44)       -       ----E   F44 function key
 key_f45                                kf45    str     FZ      KEY_F(45)       -       ----E   F45 function key
@@ -577,6 +622,10 @@ key_resume                 kres    str     &5      KEY_RESUME      0570    -----   resume key
 key_save                       ksav    str     &6      KEY_SAVE        0571    -----   save key
 key_suspend                    kspd    str     &7      KEY_SUSPEND     0627    -----   suspend key
 key_undo                       kund    str     &8      KEY_UNDO        0630    -----   undo key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_sbeg                       kBEG    str     &9      KEY_SBEG        0572    -----   shifted begin key
 key_scancel                    kCAN    str     &0      KEY_SCANCEL     0573    -----   shifted cancel key
 key_scommand                   kCMD    str     *1      KEY_SCOMMAND    0574    -----   shifted command key
@@ -609,7 +658,7 @@ key_sundo                   kUND    str     !3      KEY_SUNDO       0626    -----   shifted undo key
 req_for_input                  rfi     str     RF      -               -       -----   send next input char (for ptys)
 clr_bol                                el1     str     cb      -               -       -----   Clear to beginning of line
 clear_margins                  mgc     str     MC      -               -       -----   clear right and left soft margins
-set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column.  (ML is not in BSD termcap).
+set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column (not in BSD \fItermcap\fP)
 set_right_margin               smgr    str     MR      -               -       -----   set right soft margin at current column
 label_format                   fln     str     Lf      -               -       -----   label format
 set_clock                      sclk    str     SC      -               -       -----   set clock, #1 hrs #2 mins #3 secs
@@ -654,6 +703,10 @@ change_res_horz                    chr     str     ZC      -               -       -----   Change horizontal resolution to #1
 change_res_vert                        cvr     str     ZD      -               -       -----   Change vertical resolution to #1
 define_char                    defc    str     ZE      -               -       -----   Define a character #1, #2 dots wide, descender #3
 enter_doublewide_mode          swidm   str     ZF      -               -       -----   Enter double-wide mode
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 enter_draft_quality            sdrfq   str     ZG      -               -       -----   Enter draft-quality mode
 enter_italics_mode             sitm    str     ZH      -               -       -----   Enter italic mode
 enter_leftward_mode            slm     str     ZI      -               -       -----   Start leftward carriage motion
@@ -699,19 +752,20 @@ superscript_characters            supcs   str     Zv      -               -       -----   List of superscriptable characte
 these_cause_cr                 docr    str     Zw      -               -       -----   Printing any of these characters causes CR
 zero_motion                    zerom   str     Zx      -               -       -----   No motion for subsequent character
 #%.TE
-#%.ad
-#%
+#%.PP
+#%.
 #%The following string capabilities are present in the SVr4.0 term structure,
 #%but were originally not documented in the man page.
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw18.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 char_set_names                 csnm    str     Zy      -               -       -----   Produce #1'th item from list of character set names
 key_mouse                      kmous   str     Km      KEY_MOUSE       0631    -----   Mouse event has occurred
 mouse_info                     minfo   str     Mi      -               -       -----   Mouse status information
@@ -748,9 +802,8 @@ pc_term_options                     pctrm   str     S6      -               -       -----   PC terminal options
 scancode_escape                        scesc   str     S7      -               -       -----   Escape for scancode emulation
 alt_scancode_esc               scesa   str     S8      -               -       -----   Alternate escape for scancode emulation
 #%.TE
-#%.ad
-#%
-#%.in .8i
+#%.PP
+#%.
 #%The XSI Curses standard added these hardcopy capabilities.
 #%They were used in some post-4.1 versions of System V curses,
 #%e.g., Solaris 2.5 and IRIX 6.x.
@@ -759,17 +812,18 @@ alt_scancode_esc          scesa   str     S8      -               -       -----   Alternate escape for scancode emulatio
 #%If your compiled terminfo entries use these,
 #%they may not be binary-compatible with System V terminfo
 #%entries after SVr4.1; beware!
-#%
+#%.
 #%AIX and Solaris do not provide termcap names for these; HPUX does.
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 set_pglen_inch                 slength str     YI      -               -       -----   Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
 enter_horizontal_hl_mode       ehhlm   str     Q1      -               -       -----   Enter horizontal highlight mode
 enter_left_hl_mode             elhlm   str     Q2      -               -       -----   Enter left highlight mode
@@ -785,7 +839,6 @@ exit_right_hl_mode          rmrhlm  str     Qb      -               -       ----K   Exit right highlight mode
 exit_top_hl_mode               rmthlm  str     Qc      -               -       ----K   Exit top highlight mode
 exit_vertical_hl_mode          rmvhlm  str     Qd      -               -       ----K   Exit vertical highlight mode
 #%.TE
-#%.ad
 #
 # The magic token below tells the tic compiler-generator code that all the caps
 # past it should be ignored (not written out) when dumping terminfo objects. It
index 09d7a472d6bcc68a4f756cade931f7d8434b7ebf..6f8a84e3455f2ac39dbc8beda420b6519746245b 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright 2019-2020,2021 Thomas E. Dickey                                  #
+# Copyright 2019-2023,2024 Thomas E. Dickey                                  #
 # Copyright 2001-2015,2016 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -30,7 +30,7 @@
 # Author: Thomas Dickey
 #    and: Ilya Zakharevich
 #
-# $Id: Caps.keys,v 1.17 2021/10/08 07:55:48 tom Exp $
+# $Id: Caps.keys,v 1.25 2024/04/20 21:05:02 tom Exp $
 #
 # This is an adaptation of ncurses' termcap/terminfo capability table, which
 # is illustrates an experimental extension to describe alt-, shift- and
@@ -50,7 +50,7 @@
 #
 # Column 1: terminfo variable name
 # Column 2: terminfo capability name
-# Column 3: capability type (boolean, numeric, or string)
+# Column 3: capability type (Boolean, numeric, or string)
 # Column 4: termcap capability name
 # Column 5: KEY_xxx name, if any, `-' otherwise
 # Column 6: value for KEY_xxx name, if any, `-' otherwise
 # to buy space for non-essentials Emacs is still using.  Capabilities high
 # on that hit list: rc, sc, uc.
 #
+# FORMATTING THE TABLES
+#
+# We manually specify a (minimum) column width for the capability name
+# and terminfo code columns in the tables to achieve a consistent
+# arrangement; as used here, tbl(1) cannot know the width required by
+# one table's data while formatting another's.
+#
+# The longest capability names (C variables) are
+# "enter_near_letter_quality" and "bit_image_carriage_return" (tied at
+# 25n), and the longest terminfo codes are "setcolor", "kcdelete",
+# "kcinsert", "kadelete", and "kcinsert" (8n).
+#
+# The tables are a tight fit on traditional man(7) implementations that
+# use a line length of 65n, and the "Description" column has little room
+# within which the formatter can make breaking or adjustment decisions.
+# Words like "micro_..._address" and "parm_..._micro" don't break.
+# Reducing the inter-column gaps to 2 ens gives them enough room.  --GBR
+#
 #############################################################################
 #
 # STANDARD CAPABILITIES
 #
-#%The following is a complete table of the capabilities included in a
-#%terminfo description block and available to terminfo-using code.  In each
-#%line of the table,
-#%
-#%The \fBvariable\fR is the name by which the programmer (at the terminfo level)
-#%accesses the capability.
-#%
-#%The \fBcapname\fR is the short name used in the text of the database,
-#%and is used by a person updating the database.
-#%Whenever possible, capnames are chosen to be the same as or similar to
-#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
-#%identical or very similar names).  Semantics are also intended to match
-#%those of the specification.
-#%
-#%The termcap code is the old
-#%.B termcap
-#%capability name (some capabilities are new, and have names which termcap
-#%did not originate).
-#%.P
-#%Capability names have no hard length limit, but an informal limit of 5
-#%characters has been adopted to keep them short and to allow the tabs in
-#%the source file
-#%.B Caps
+#%Tables of capabilities
+#%.I \%ncurses
+#%recognizes in a
+#%.I \%term\%info
+#%terminal type description and available to
+#%.IR \%term\%info -using
+#%code follow.
+#%.bP
+#%The capability name identifies the symbol by which the programmer
+#%using the
+#%.I \%term\%info
+#%API accesses the capability.
+#%.bP
+#%The TI
+#%.RI ( \%term\%info )
+#%code is the short name used by a person composing or updating a
+#%terminal type entry.
+#%.IP
+#%Whenever possible,
+#%these codes are the same as or similar to those of the ANSI X3.64-1979
+#%standard
+#%(now superseded by ECMA-48,
+#%which uses identical or very similar names).
+#%Semantics are also intended to match those of the specification.
+#%.IP
+#%.I \%term\%info
+#%codes have no hard length limit,
+#%but
+#%.I \%ncurses
+#%maintains an informal one of 5 characters to keep them short and to
+#%allow the tabs in the source file
+#%.I Caps
 #%to line up nicely.
-#%
-#%Finally, the description field attempts to convey the semantics of the
-#%capability.  You may find some codes in the description field:
-#%.TP
-#%(P)
-#%indicates that padding may be specified
+#%(Some standard codes exceed this limit regardless.)
+#%.bP
+#%The TC
+#%.RI ( termcap )
+#%code is that used by the corresponding API of
+#%.IR \%ncurses .
+#%(Some capabilities are new,
+#%and have names that BSD
+#%.I termcap
+#%did not originate.)
+#%.bP
+#%The description field attempts to convey the capability's semantics.
+#%.PP
+#%The description field employs a handful of notations.
 #%.TP
-#%#[1-9]
-#%in the description field indicates that the string is passed
-#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
-#%.IP
-#%If no parameters are listed in the description,
-#%passing the string through \fBtparm\fP(3X) may give unexpected results,
-#%e.g., if it contains percent (%%) signs.
+#%.B (P)
+#%indicates that padding may be specified.
 #%.TP
-#%(P*)
-#%indicates that padding may vary in proportion to the number of
-#%lines affected
+#%.B (P*)
+#%indicates that padding may vary in proportion to the number of output
+#%lines affected.
 #%.TP
-#%(#\d\fIi\fP\u)
-#%indicates the \fIi\fP\uth\d parameter.
-#%
+#%.BI # i
+#%indicates the
+#%.IR i th
+#%parameter of a string capability;
+#%the programmer should pass the string to \fB\%tparm\fP(3X) with the
+#%parameters listed.
+#%.IP
+#%If the description lists no parameters,
+#%passing the string to \fB\%tparm\fP(3X) may produce unexpected
+#%behavior,
+#%for instance if the string contains percent signs.
+#%.
 #%.PP
-#% These are the boolean capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBBooleans  name    Code\fR
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Boolean Capability Name      TI      TC      Description
+#%_
 auto_left_margin               bw      bool    bw      -       -       YB-G-   cub1 wraps from column 0 to last column
 auto_right_margin              am      bool    am      -       -       YBCGE   terminal has automatic margins
 no_esc_ctlc                    xsb     bool    xb      -       -       YBCG-   beehive (f1=escape, f2=ctrl C)
@@ -254,18 +291,16 @@ semi_auto_right_margin            sam     bool    YE      -       -       -----   printing in last column causes cr
 cpi_changes_res                        cpix    bool    YF      -       -       -----   changing character pitch changes resolution
 lpi_changes_res                        lpix    bool    YG      -       -       -----   changing line pitch changes resolution
 #%.TE
-#%.ad
-#%
-#%These are the numeric capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBNumeric   name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Numeric Capability Name      TI      TC      Description
+#%_
 columns                                cols    num     co      -       -       YBCGE   number of columns in a line
 init_tabs                      it      num     it      -       -       YB-G-   tabs initially every # spaces
 lines                          lines   num     li      -       -       YBCGE   number of lines on screen or page
@@ -284,20 +319,21 @@ max_colors                        colors  num     Co      -       -       -----   maximum number of colors on screen
 max_pairs                      pairs   num     pa      -       -       -----   maximum number of color-pairs on the screen
 no_color_video                 ncv     num     NC      -       -       -----   video attributes that cannot be used with colors
 #%.TE
-#%.ad
-#%
+#%.PP
+#%.
 #%The following numeric capabilities are present in the SVr4.0 term structure,
-#%but are not yet documented in the man page.  They came in with SVr4's
-#%printer support.
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBNumeric   name    Code\fR
+#%but are not yet documented in the man page.
+#%They came in with SVr4's printer support.
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Numeric Capability Name      TI      TC      Description
+#%_
 buffer_capacity                        bufsz   num     Ya      -       -       -----   numbers of bytes buffered before printing
 dot_vert_spacing               spinv   num     Yb      -       -       -----   spacing of pins vertically in pins per inch
 dot_horz_spacing               spinh   num     Yc      -       -       -----   spacing of dots horizontally in dots per inch
@@ -316,18 +352,16 @@ buttons                           btns    num     BT      -       -       -----   number of buttons on mouse
 bit_image_entwining            bitwin  num     Yo      -       -       -----   number of passes for each bit-image row
 bit_image_type                 bitype  num     Yp      -       -       -----   type of bit-image device
 #%.TE
-#%.ad
-#%
-#%These are the string capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 back_tab                       cbt     str     bt      -               -       YBCGE   back tab (P)
 bell                           bel     str     bl      -               -       YB-GE   audible signal (bell) (P)
 carriage_return                        cr      str     cr      -               -       YBCGE   carriage return (P*) (P*)
@@ -390,6 +424,10 @@ key_ctab                   kctab   str     kt      KEY_CTAB        0525    -B-G-*  clear-tab key
 key_dc                         kdch1   str     kD      KEY_DC          0512    YB-G-   delete-character key
 key_dl                         kdl1    str     kL      KEY_DL          0510    -B-G-*  delete-line key
 key_down                       kcud1   str     kd      KEY_DOWN        0402    YBCGE   down-arrow key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_eic                                krmir   str     kM      KEY_EIC         0514    -B-G-*  sent by rmir or smir in insert mode
 key_eol                                kel     str     kE      KEY_EOL         0517    -B-G-*  clear-to-end-of-line key
 key_eos                                ked     str     kS      KEY_EOS         0516    -B-G-*  clear-to-end-of-screen key
@@ -452,6 +490,10 @@ prtr_on                            mc5     str     po      -               -       -B-G-*  turn on printer
 repeat_char                    rep     str     rp      -               -       YB-GE   repeat char #1 #2 times (P*)
 reset_1string                  rs1     str     r1      -               -       -B---   reset string
 reset_2string                  rs2     str     r2      -               -       -B---   reset string
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 reset_3string                  rs3     str     r3      -               -       -B---   reset string
 reset_file                     rf      str     rf      -               -       -B---   name of reset file
 restore_cursor                 rc      str     rc      -               -       YBCG-   restore cursor to position of last save_cursor
@@ -518,6 +560,10 @@ key_resume                 kres    str     &5      KEY_RESUME      0570    -----   resume key
 key_save                       ksav    str     &6      KEY_SAVE        0571    -----   save key
 key_suspend                    kspd    str     &7      KEY_SUSPEND     0627    -----   suspend key
 key_undo                       kund    str     &8      KEY_UNDO        0630    -----   undo key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_sbeg                       kBEG    str     &9      KEY_SBEG        0572    -----   shifted begin key
 key_scancel                    kCAN    str     &0      KEY_SCANCEL     0573    -----   shifted cancel key
 key_scommand                   kCMD    str     *1      KEY_SCOMMAND    0574    -----   shifted command key
@@ -580,6 +626,10 @@ key_f39                            kf39    str     FT      KEY_F(39)       -       ----E   F39 function key
 key_f40                                kf40    str     FU      KEY_F(40)       -       ----E   F40 function key
 key_f41                                kf41    str     FV      KEY_F(41)       -       ----E   F41 function key
 key_f42                                kf42    str     FW      KEY_F(42)       -       ----E   F42 function key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_f43                                kf43    str     FX      KEY_F(43)       -       ----E   F43 function key
 key_f44                                kf44    str     FY      KEY_F(44)       -       ----E   F44 function key
 key_f45                                kf45    str     FZ      KEY_F(45)       -       ----E   F45 function key
@@ -603,7 +653,7 @@ key_f62                             kf62    str     Fq      KEY_F(62)       -       ----E   F62 function key
 key_f63                                kf63    str     Fr      KEY_F(63)       -       ----E   F63 function key
 clr_bol                                el1     str     cb      -               -       -----   Clear to beginning of line
 clear_margins                  mgc     str     MC      -               -       -----   clear right and left soft margins
-set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column.  (ML is not in BSD termcap).
+set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column (not in BSD \fItermcap\fP)
 set_right_margin               smgr    str     MR      -               -       -----   set right soft margin at current column
 label_format                   fln     str     Lf      -               -       -----   label format
 set_clock                      sclk    str     SC      -               -       -----   set clock, #1 hrs #2 mins #3 secs
@@ -736,6 +786,10 @@ change_res_horz                    chr     str     ZC      -               -       -----   Change horizontal resolution to #1
 change_res_vert                        cvr     str     ZD      -               -       -----   Change vertical resolution to #1
 define_char                    defc    str     ZE      -               -       -----   Define a character #1, #2 dots wide, descender #3
 enter_doublewide_mode          swidm   str     ZF      -               -       -----   Enter double-wide mode
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 enter_draft_quality            sdrfq   str     ZG      -               -       -----   Enter draft-quality mode
 enter_italics_mode             sitm    str     ZH      -               -       -----   Enter italic mode
 enter_leftward_mode            slm     str     ZI      -               -       -----   Start leftward carriage motion
@@ -781,19 +835,20 @@ superscript_characters            supcs   str     Zv      -               -       -----   List of superscriptable characte
 these_cause_cr                 docr    str     Zw      -               -       -----   Printing any of these characters causes CR
 zero_motion                    zerom   str     Zx      -               -       -----   No motion for subsequent character
 #%.TE
-#%.ad
-#%
+#%.PP
+#%.
 #%The following string capabilities are present in the SVr4.0 term structure,
 #%but were originally not documented in the man page.
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw18.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 char_set_names                 csnm    str     Zy      -               -       -----   Produce #1'th item from list of character set names
 key_mouse                      kmous   str     Km      KEY_MOUSE       0631    -----   Mouse event has occurred
 mouse_info                     minfo   str     Mi      -               -       -----   Mouse status information
@@ -830,9 +885,8 @@ pc_term_options                     pctrm   str     S6      -               -       -----   PC terminal options
 scancode_escape                        scesc   str     S7      -               -       -----   Escape for scancode emulation
 alt_scancode_esc               scesa   str     S8      -               -       -----   Alternate escape for scancode emulation
 #%.TE
-#%.ad
-#%
-#%.in .8i
+#%.PP
+#%.
 #%The XSI Curses standard added these hardcopy capabilities.
 #%They were used in some post-4.1 versions of System V curses,
 #%e.g., Solaris 2.5 and IRIX 6.x.
@@ -841,15 +895,16 @@ alt_scancode_esc          scesa   str     S8      -               -       -----   Alternate escape for scancode emulatio
 #%If your compiled terminfo entries use these,
 #%they may not be binary-compatible with System V terminfo
 #%entries after SVr4.1; beware!
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.
+#%.PP
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 enter_horizontal_hl_mode       ehhlm   str     Xh      -               -       -----   Enter horizontal highlight mode
 enter_left_hl_mode             elhlm   str     Xl      -               -       -----   Enter left highlight mode
 enter_low_hl_mode              elohlm  str     Xo      -               -       -----   Enter low highlight mode
@@ -859,7 +914,6 @@ enter_vertical_hl_mode              evhlm   str     Xv      -               -       -----   Enter vertical highlight mode
 set_a_attributes               sgr1    str     sA      -               -       -----   Define second set of video attributes #1-#6
 set_pglen_inch                 slength str     YI      -               -       -----   Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
 #%.TE
-#%.ad
 #
 # The magic token below tells the tic compiler-generator code that all the caps
 # past it should be ignored (not written out) when dumping terminfo objects. It
index beb71c342fb6dd8924867e2df229fbd1db27d750..ece14aef2ea7c5e1e17e677834879756ae74d29a 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright 2019-2020,2021 Thomas E. Dickey                                  #
+# Copyright 2019-2023,2024 Thomas E. Dickey                                  #
 # Copyright 2002-2015,2016 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -29,7 +29,7 @@
 #
 # Author: Thomas Dickey
 #
-# $Id: Caps.osf1r5,v 1.16 2021/10/08 07:55:48 tom Exp $
+# $Id: Caps.osf1r5,v 1.24 2024/04/20 21:05:02 tom Exp $
 #
 # This is an adaptation of ncurses' termcap/terminfo capability table, which
 # is designed to align with OSF/1 version 5 (Tru64) terminfo.
@@ -48,7 +48,7 @@
 #
 # Column 1: terminfo variable name
 # Column 2: terminfo capability name
-# Column 3: capability type (boolean, numeric, or string)
+# Column 3: capability type (Boolean, numeric, or string)
 # Column 4: termcap capability name
 # Column 5: KEY_xxx name, if any, `-' otherwise
 # Column 6: value for KEY_xxx name, if any, `-' otherwise
 # to buy space for non-essentials Emacs is still using.  Capabilities high
 # on that hit list: rc, sc, uc.
 #
+# FORMATTING THE TABLES
+#
+# We manually specify a (minimum) column width for the capability name
+# and terminfo code columns in the tables to achieve a consistent
+# arrangement; as used here, tbl(1) cannot know the width required by
+# one table's data while formatting another's.
+#
+# The longest capability names (C variables) are
+# "enter_near_letter_quality" and "bit_image_carriage_return" (tied at
+# 25n), and the longest terminfo code is "setcolor" (8n).
+#
+# The tables are a tight fit on traditional man(7) implementations that
+# use a line length of 65n, and the "Description" column has little room
+# within which the formatter can make breaking or adjustment decisions.
+# Words like "micro_..._address" and "parm_..._micro" don't break.
+# Reducing the inter-column gaps to 2 ens gives them enough room.  --GBR
+#
 #############################################################################
 #
 # STANDARD CAPABILITIES
 #
-#%The following is a complete table of the capabilities included in a
-#%terminfo description block and available to terminfo-using code.  In each
-#%line of the table,
-#%
-#%The \fBvariable\fR is the name by which the programmer (at the terminfo level)
-#%accesses the capability.
-#%
-#%The \fBcapname\fR is the short name used in the text of the database,
-#%and is used by a person updating the database.
-#%Whenever possible, capnames are chosen to be the same as or similar to
-#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
-#%identical or very similar names).  Semantics are also intended to match
-#%those of the specification.
-#%
-#%The termcap code is the old
-#%.B termcap
-#%capability name (some capabilities are new, and have names which termcap
-#%did not originate).
-#%.P
-#%Capability names have no hard length limit, but an informal limit of 5
-#%characters has been adopted to keep them short and to allow the tabs in
-#%the source file
-#%.B Caps
+#%Tables of capabilities
+#%.I \%ncurses
+#%recognizes in a
+#%.I \%term\%info
+#%terminal type description and available to
+#%.IR \%term\%info -using
+#%code follow.
+#%.bP
+#%The capability name identifies the symbol by which the programmer
+#%using the
+#%.I \%term\%info
+#%API accesses the capability.
+#%.bP
+#%The TI
+#%.RI ( \%term\%info )
+#%code is the short name used by a person composing or updating a
+#%terminal type entry.
+#%.IP
+#%Whenever possible,
+#%these codes are the same as or similar to those of the ANSI X3.64-1979
+#%standard
+#%(now superseded by ECMA-48,
+#%which uses identical or very similar names).
+#%Semantics are also intended to match those of the specification.
+#%.IP
+#%.I \%term\%info
+#%codes have no hard length limit,
+#%but
+#%.I \%ncurses
+#%maintains an informal one of 5 characters to keep them short and to
+#%allow the tabs in the source file
+#%.I Caps
 #%to line up nicely.
-#%
-#%Finally, the description field attempts to convey the semantics of the
-#%capability.  You may find some codes in the description field:
-#%.TP
-#%(P)
-#%indicates that padding may be specified
+#%(Some standard codes exceed this limit regardless.)
+#%.bP
+#%The TC
+#%.RI ( termcap )
+#%code is that used by the corresponding API of
+#%.IR \%ncurses .
+#%(Some capabilities are new,
+#%and have names that BSD
+#%.I termcap
+#%did not originate.)
+#%.bP
+#%The description field attempts to convey the capability's semantics.
+#%.PP
+#%The description field employs a handful of notations.
 #%.TP
-#%#[1-9]
-#%in the description field indicates that the string is passed
-#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
-#%.IP
-#%If no parameters are listed in the description,
-#%passing the string through \fBtparm\fP(3X) may give unexpected results,
-#%e.g., if it contains percent (%%) signs.
+#%.B (P)
+#%indicates that padding may be specified.
 #%.TP
-#%(P*)
-#%indicates that padding may vary in proportion to the number of
-#%lines affected
+#%.B (P*)
+#%indicates that padding may vary in proportion to the number of output
+#%lines affected.
 #%.TP
-#%(#\d\fIi\fP\u)
-#%indicates the \fIi\fP\uth\d parameter.
-#%
+#%.BI # i
+#%indicates the
+#%.IR i th
+#%parameter of a string capability;
+#%the programmer should pass the string to \fB\%tparm\fP(3X) with the
+#%parameters listed.
+#%.IP
+#%If the description lists no parameters,
+#%passing the string to \fB\%tparm\fP(3X) may produce unexpected
+#%behavior,
+#%for instance if the string contains percent signs.
+#%.
 #%.PP
-#% These are the boolean capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBBooleans  name    Code\fR
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Boolean Capability Name      TI      TC      Description
+#%_
 auto_left_margin               bw      bool    bw      -       -       YB-G-   cub1 wraps from column 0 to last column
 auto_right_margin              am      bool    am      -       -       YBCGE   terminal has automatic margins
 no_esc_ctlc                    xsb     bool    xb      -       -       YBCG-   beehive (f1=escape, f2=ctrl C)
@@ -252,18 +288,16 @@ prtr_silent                       mc5i    bool    5i      -       -       -----   printer will not echo on screen
 row_addr_glitch                        xvpa    bool    YD      -       -       -----   only positive motion for vpa/mvpa caps
 semi_auto_right_margin         sam     bool    YE      -       -       -----   printing in last column causes cr
 #%.TE
-#%.ad
-#%
-#%These are the numeric capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBNumeric   name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Numeric Capability Name      TI      TC      Description
+#%_
 columns                                cols    num     co      -       -       YBCGE   number of columns in a line
 init_tabs                      it      num     it      -       -       YB-G-   tabs initially every # spaces
 lines                          lines   num     li      -       -       YBCGE   number of lines on screen or page
@@ -298,18 +332,16 @@ output_res_vert_inch              orvi    num     Yl      -       -       -----   vertical resolution in units per inc
 print_rate                     cps     num     Ym      -       -       -----   print rate in characters per second
 wide_char_size                 widcs   num     Yn      -       -       -----   character step size when in double wide mode
 #%.TE
-#%.ad
-#%
-#%These are the string capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 back_tab                       cbt     str     bt      -               -       YBCGE   back tab (P)
 bell                           bel     str     bl      -               -       YB-GE   audible signal (bell) (P)
 carriage_return                        cr      str     cr      -               -       YBCGE   carriage return (P*) (P*)
@@ -372,6 +404,10 @@ key_ctab                   kctab   str     kt      KEY_CTAB        0525    -B-G-*  clear-tab key
 key_dc                         kdch1   str     kD      KEY_DC          0512    YB-G-   delete-character key
 key_dl                         kdl1    str     kL      KEY_DL          0510    -B-G-*  delete-line key
 key_down                       kcud1   str     kd      KEY_DOWN        0402    YBCGE   down-arrow key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_eic                                krmir   str     kM      KEY_EIC         0514    -B-G-*  sent by rmir or smir in insert mode
 key_eol                                kel     str     kE      KEY_EOL         0517    -B-G-*  clear-to-end-of-line key
 key_eos                                ked     str     kS      KEY_EOS         0516    -B-G-*  clear-to-end-of-screen key
@@ -434,6 +470,10 @@ prtr_on                            mc5     str     po      -               -       -B-G-*  turn on printer
 repeat_char                    rep     str     rp      -               -       YB-GE   repeat char #1 #2 times (P*)
 reset_1string                  rs1     str     r1      -               -       -B---   reset string
 reset_2string                  rs2     str     r2      -               -       -B---   reset string
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 reset_3string                  rs3     str     r3      -               -       -B---   reset string
 reset_file                     rf      str     rf      -               -       -B---   name of reset file
 restore_cursor                 rc      str     rc      -               -       YBCG-   restore cursor to position of last save_cursor
@@ -589,6 +629,10 @@ ena_acs                            enacs   str     eA      -               -       -----   enable alternate char set
 end_bit_image_region           endbi   str     Yy      -               -       -----   End a bit-image region
 enter_am_mode                  smam    str     SA      -               -       -----   turn on automatic margins
 enter_doublewide_mode          swidm   str     ZF      -               -       -----   Enter double-wide mode
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 enter_draft_quality            sdrfq   str     ZG      -               -       -----   Enter draft-quality mode
 enter_italics_mode             sitm    str     ZH      -               -       -----   Enter italic mode
 enter_leftward_mode            slm     str     ZI      -               -       -----   Start leftward carriage motion
@@ -635,6 +679,10 @@ key_f39                            kf39    str     FT      KEY_F(39)       -       ----E   F39 function key
 key_f40                                kf40    str     FU      KEY_F(40)       -       ----E   F40 function key
 key_f41                                kf41    str     FV      KEY_F(41)       -       ----E   F41 function key
 key_f42                                kf42    str     FW      KEY_F(42)       -       ----E   F42 function key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_f43                                kf43    str     FX      KEY_F(43)       -       ----E   F43 function key
 key_f44                                kf44    str     FY      KEY_F(44)       -       ----E   F44 function key
 key_f45                                kf45    str     FZ      KEY_F(45)       -       ----E   F45 function key
@@ -673,6 +721,10 @@ key_replace                        krpl    str     &3      KEY_REPLACE     0566    -----   replace key
 key_restart                    krst    str     &4      KEY_RESTART     0567    -----   restart key
 key_resume                     kres    str     &5      KEY_RESUME      0570    -----   resume key
 key_save                       ksav    str     &6      KEY_SAVE        0571    -----   save key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(25n)2 Lbw(8n)2 Lb2 Lx.
 key_sbeg                       kBEG    str     &9      KEY_SBEG        0572    -----   shifted begin key
 key_scancel                    kCAN    str     &0      KEY_SCANCEL     0573    -----   shifted cancel key
 key_scommand                   kCMD    str     *1      KEY_SCOMMAND    0574    -----   shifted command key
@@ -743,7 +795,7 @@ set_clock                   sclk    str     SC      -               -       -----   set clock, #1 hrs #2 mins #3 secs
 set_color_band         setcolor        str     Yz      -               -       -----   Change to ribbon color #1
 set_color_pair                 scp     str     sp      -               -       -----   Set current color pair to #1
 set_foreground                 setf    str     Sf      -               -       -----   Set foreground color #1
-set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column.  (ML is not in BSD termcap).
+set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column (not in BSD \fItermcap\fP)
 set_left_margin_parm           smglp   str     Zm      -               -       -----   Set left (right) margin at column #1
 set_lr_margin                  smglr   str     ML      -               -       -----   Set both left and right margins to #1, #2.  (ML is not in BSD termcap).
 set_page_length                        slines  str     YZ      -               -       -----   Set page length to #1 lines
index af47de9cc9cc9996aed9b9e533666309a443acd9..a41e9eca7a307cfd488dbe332eab0085f946c7af 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright 2019-2020,2021 Thomas E. Dickey                                  #
+# Copyright 2019-2023,2024 Thomas E. Dickey                                  #
 # Copyright 2001-2015,2016 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -29,7 +29,7 @@
 #
 # Author: Thomas Dickey
 #
-# $Id: Caps.uwin,v 1.15 2021/10/08 07:55:48 tom Exp $
+# $Id: Caps.uwin,v 1.23 2024/04/20 21:05:02 tom Exp $
 #
 # This is an adaptation of ncurses' termcap/terminfo capability table, which
 # is designed to align with U/Win's terminfo.
@@ -48,7 +48,7 @@
 #
 # Column 1: terminfo variable name
 # Column 2: terminfo capability name
-# Column 3: capability type (boolean, numeric, or string)
+# Column 3: capability type (Boolean, numeric, or string)
 # Column 4: termcap capability name
 # Column 5: KEY_xxx name, if any, `-' otherwise
 # Column 6: value for KEY_xxx name, if any, `-' otherwise
 # to buy space for non-essentials Emacs is still using.  Capabilities high
 # on that hit list: rc, sc, uc.
 #
+# FORMATTING THE TABLES
+#
+# We manually specify a (minimum) column width for the capability name
+# and terminfo code columns in the tables to achieve a consistent
+# arrangement; as used here, tbl(1) cannot know the width required by
+# one table's data while formatting another's.
+#
+# The longest capability names (C variable) is
+# "hue_lightness_saturation" (24n), and the longest terminfo code is
+# "colornm" (7n).
+#
+# The tables are a tight fit on traditional man(7) implementations that
+# use a line length of 65n, and the "Description" column has little room
+# within which the formatter can make breaking or adjustment decisions.
+# Words like "micro_..._address" and "parm_..._micro" don't break.
+# Reducing the inter-column gaps to 2 ens gives them enough room.  --GBR
+#
 #############################################################################
 #
 # STANDARD CAPABILITIES
 #
-#%The following is a complete table of the capabilities included in a
-#%terminfo description block and available to terminfo-using code.  In each
-#%line of the table,
-#%
-#%The \fBvariable\fR is the name by which the programmer (at the terminfo level)
-#%accesses the capability.
-#%
-#%The \fBcapname\fR is the short name used in the text of the database,
-#%and is used by a person updating the database.
-#%Whenever possible, capnames are chosen to be the same as or similar to
-#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
-#%identical or very similar names).  Semantics are also intended to match
-#%those of the specification.
-#%
-#%The termcap code is the old
-#%.B termcap
-#%capability name (some capabilities are new, and have names which termcap
-#%did not originate).
-#%.P
-#%Capability names have no hard length limit, but an informal limit of 5
-#%characters has been adopted to keep them short and to allow the tabs in
-#%the source file
-#%.B Caps
+#%Tables of capabilities
+#%.I \%ncurses
+#%recognizes in a
+#%.I \%term\%info
+#%terminal type description and available to
+#%.IR \%term\%info -using
+#%code follow.
+#%.bP
+#%The capability name identifies the symbol by which the programmer
+#%using the
+#%.I \%term\%info
+#%API accesses the capability.
+#%.bP
+#%The TI
+#%.RI ( \%term\%info )
+#%code is the short name used by a person composing or updating a
+#%terminal type entry.
+#%.IP
+#%Whenever possible,
+#%these codes are the same as or similar to those of the ANSI X3.64-1979
+#%standard
+#%(now superseded by ECMA-48,
+#%which uses identical or very similar names).
+#%Semantics are also intended to match those of the specification.
+#%.IP
+#%.I \%term\%info
+#%codes have no hard length limit,
+#%but
+#%.I \%ncurses
+#%maintains an informal one of 5 characters to keep them short and to
+#%allow the tabs in the source file
+#%.I Caps
 #%to line up nicely.
-#%
-#%Finally, the description field attempts to convey the semantics of the
-#%capability.  You may find some codes in the description field:
-#%.TP
-#%(P)
-#%indicates that padding may be specified
+#%(Some standard codes exceed this limit regardless.)
+#%.bP
+#%The TC
+#%.RI ( termcap )
+#%code is that used by the corresponding API of
+#%.IR \%ncurses .
+#%(Some capabilities are new,
+#%and have names that BSD
+#%.I termcap
+#%did not originate.)
+#%.bP
+#%The description field attempts to convey the capability's semantics.
+#%.PP
+#%The description field employs a handful of notations.
 #%.TP
-#%#[1-9]
-#%in the description field indicates that the string is passed
-#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
-#%.IP
-#%If no parameters are listed in the description,
-#%passing the string through \fBtparm\fP(3X) may give unexpected results,
-#%e.g., if it contains percent (%%) signs.
+#%.B (P)
+#%indicates that padding may be specified.
 #%.TP
-#%(P*)
-#%indicates that padding may vary in proportion to the number of
-#%lines affected
+#%.B (P*)
+#%indicates that padding may vary in proportion to the number of output
+#%lines affected.
 #%.TP
-#%(#\d\fIi\fP\u)
-#%indicates the \fIi\fP\uth\d parameter.
-#%
+#%.BI # i
+#%indicates the
+#%.IR i th
+#%parameter of a string capability;
+#%the programmer should pass the string to \fB\%tparm\fP(3X) with the
+#%parameters listed.
+#%.IP
+#%If the description lists no parameters,
+#%passing the string to \fB\%tparm\fP(3X) may produce unexpected
+#%behavior,
+#%for instance if the string contains percent signs.
+#%.
 #%.PP
-#% These are the boolean capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBBooleans  name    Code\fR
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Boolean Capability Name      TI      TC      Description
+#%_
 auto_left_margin               bw      bool    bw      -       -       YB-G-   cub1 wraps from column 0 to last column
 auto_right_margin              am      bool    am      -       -       YBCGE   terminal has automatic margins
 no_esc_ctlc                    xsb     bool    xb      -       -       YBCG-   beehive (f1=escape, f2=ctrl C)
@@ -245,18 +281,16 @@ back_color_erase          bce     bool    ut      -       -       -----   screen erased with background color
 can_change                     ccc     bool    cc      -       -       -----   terminal can re-define existing colors
 hue_lightness_saturation       hls     bool    hl      -       -       -----   terminal uses only HLS color notation (Tektronix)
 #%.TE
-#%.ad
-#%
-#%These are the numeric capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBNumeric   name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx.
+#%\&   Code    \&
+#%Numeric Capability Name      TI      TC      Description
+#%_
 columns                                cols    num     co      -       -       YBCGE   number of columns in a line
 init_tabs                      it      num     it      -       -       YB-G-   tabs initially every # spaces
 lines                          lines   num     li      -       -       YBCGE   number of lines on screen or page
@@ -276,24 +310,16 @@ max_colors                        colors  num     Co      -       -       -----   maximum number of colors on screen
 max_pairs                      pairs   num     pa      -       -       -----   maximum number of color-pairs on the screen
 no_color_video                 ncv     num     NC      -       -       -----   video attributes that cannot be used with colors
 #%.TE
-#%.ad
-#%
-#%The following numeric capabilities are present in the SVr4.0 term structure,
-#%but are not yet documented in the man page.  They came in with SVr4's
-#%printer support.
-#%
-#%.na
-#%
-#%These are the string capabilities:
-#%
-#%.na
-#%.TS H
-#%center expand;
-#%c l l c
-#%c l l c
-#%lw25 lw6 lw2 lw20.
-#%\fBVariable  Cap-    TCap    Description\fR
-#%\fBString    name    Code\fR
+#%.PP
+#%.
+#%.TS
+#%center;
+#%Lb        Cb       S   Lb
+#%Lb        Lb       Lb  Lb
+#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx.
+#%\&   Code    \&
+#%String Capability Name       TI      TC      Description
+#%_
 back_tab                       cbt     str     bt      -               -       YBCGE   back tab (P)
 bell                           bel     str     bl      -               -       YB-GE   audible signal (bell) (P)
 carriage_return                        cr      str     cr      -               -       YBCGE   carriage return (P*) (P*)
@@ -356,6 +382,10 @@ key_ctab                   kctab   str     kt      KEY_CTAB        0525    -B-G-*  clear-tab key
 key_dc                         kdch1   str     kD      KEY_DC          0512    YB-G-   delete-character key
 key_dl                         kdl1    str     kL      KEY_DL          0510    -B-G-*  delete-line key
 key_down                       kcud1   str     kd      KEY_DOWN        0402    YBCGE   down-arrow key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx.
 key_eic                                krmir   str     kM      KEY_EIC         0514    -B-G-*  sent by rmir or smir in insert mode
 key_eol                                kel     str     kE      KEY_EOL         0517    -B-G-*  clear-to-end-of-line key
 key_eos                                ked     str     kS      KEY_EOS         0516    -B-G-*  clear-to-end-of-screen key
@@ -418,6 +448,10 @@ prtr_on                            mc5     str     po      -               -       -B-G-*  turn on printer
 repeat_char                    rep     str     rp      -               -       YB-GE   repeat char #1 #2 times (P*)
 reset_1string                  rs1     str     r1      -               -       -B---   reset string
 reset_2string                  rs2     str     r2      -               -       -B---   reset string
+#%.TE
+#%.TS
+#%center;
+#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx.
 reset_3string                  rs3     str     r3      -               -       -B---   reset string
 reset_file                     rf      str     rf      -               -       -B---   name of reset file
 restore_cursor                 rc      str     rc      -               -       YBCG-   restore cursor to position of last save_cursor
@@ -484,6 +518,10 @@ key_resume                 kres    str     &5      KEY_RESUME      0570    -----   resume key
 key_save                       ksav    str     &6      KEY_SAVE        0571    -----   save key
 key_suspend                    kspd    str     &7      KEY_SUSPEND     0627    -----   suspend key
 key_undo                       kund    str     &8      KEY_UNDO        0630    -----   undo key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx.
 key_sbeg                       kBEG    str     &9      KEY_SBEG        0572    -----   shifted begin key
 key_scancel                    kCAN    str     &0      KEY_SCANCEL     0573    -----   shifted cancel key
 key_scommand                   kCMD    str     *1      KEY_SCOMMAND    0574    -----   shifted command key
@@ -546,6 +584,10 @@ key_f39                            kf39    str     FT      KEY_F(39)       -       ----E   F39 function key
 key_f40                                kf40    str     FU      KEY_F(40)       -       ----E   F40 function key
 key_f41                                kf41    str     FV      KEY_F(41)       -       ----E   F41 function key
 key_f42                                kf42    str     FW      KEY_F(42)       -       ----E   F42 function key
+#%.TE
+#%.TS
+#%center;
+#%Lbw(24n)2 Lbw(7n)2 Lb2 Lx.
 key_f43                                kf43    str     FX      KEY_F(43)       -       ----E   F43 function key
 key_f44                                kf44    str     FY      KEY_F(44)       -       ----E   F44 function key
 key_f45                                kf45    str     FZ      KEY_F(45)       -       ----E   F45 function key
@@ -569,7 +611,7 @@ key_f62                             kf62    str     Fq      KEY_F(62)       -       ----E   F62 function key
 key_f63                                kf63    str     Fr      KEY_F(63)       -       ----E   F63 function key
 clr_bol                                el1     str     cb      -               -       -----   Clear to beginning of line
 clear_margins                  mgc     str     MC      -               -       -----   clear right and left soft margins
-set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column.  (ML is not in BSD termcap).
+set_left_margin                        smgl    str     ML      -               -       -----   set left soft margin at current column (not in BSD \fItermcap\fP)
 set_right_margin               smgr    str     MR      -               -       -----   set right soft margin at current column
 device_type                    devt    str     dv      -               -       -----   Indicate language/codeset support
 code_set_init                  csin    str     ci      -               -       -----   Init sequence for multiple codesets
@@ -593,7 +635,6 @@ set_background                      setb    str     Sb      -               -       -----   Set background color #1
 set_color_pair                 scp     str     sp      -               -       -----   Set current color pair to #1
 set_foreground                 setf    str     Sf      -               -       -----   Set foreground color #1
 #%.TE
-#%.ad
 #%
 # The magic token below tells the tic compiler-generator code that all the caps
 # past it should be ignored (not written out) when dumping terminfo objects. It
index 36057002783eb4ed3caf57e1c63440b25115e6e0..e58ee2b65d799c3f6129f14f13b2c5ec0c5ef730 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
-# $Id: MKkey_defs.sh,v 1.23 2022/07/16 16:54:02 tom Exp $
+# $Id: MKkey_defs.sh,v 1.24 2024/01/19 12:26:17 tom Exp $
 ##############################################################################
-# Copyright 2019-2020,2022 Thomas E. Dickey                                  #
+# Copyright 2019-2022,2024 Thomas E. Dickey                                  #
 # Copyright 2001-2013,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -64,7 +64,7 @@ fi
 
 # add keys that we generate automatically:
 cat >>$data <<EOF
-key_resize     kr1     str     R1      KEY_RESIZE      +       NCURSES_EXT_FUNCS       Terminal resize event
+key_resize     kr1     str     R1      KEY_RESIZE      +       NCURSES_SIGWINCH        Terminal resize event
 EOF
 
 THIS=./`basename "$0"`
@@ -146,7 +146,7 @@ $5 != "-" && $6 != "-" {
                        if (index($7,"NCURSES_") == 1) {
                                ifdef = 1;
                                printf "\n";
-                               printf "#ifdef %s\n", $7;
+                               printf "#if %s\n", $7;
                        }
                        if ($5 == "KEY_F(0)" ) {
                                printf "#define "
index e79840d9974afede3e2a4589716a696e1f687566..a93d8e86e9c14582a04fc1fba5a31963507fbc1a 100644 (file)
@@ -26,7 +26,7 @@ BEGIN {
        lcurl = "{";
        rcurl = "}";
        print  "/****************************************************************************"
-       print  " * Copyright 2018-2020,2021 Thomas E. Dickey                                *"
+       print  " * Copyright 2018-2021,2023 Thomas E. Dickey                                *"
        print  " * Copyright 1998-2013,2017 Free Software Foundation, Inc.                  *"
        print  " *                                                                          *"
        print  " * Permission is hereby granted, free of charge, to any person obtaining a  *"
@@ -60,7 +60,7 @@ BEGIN {
        print  "/*    and: Thomas E. Dickey                        1995-on                  */"
        print  "/****************************************************************************/"
        print  ""
-       print  "/* $Id: MKterm.h.awk.in,v 1.82 2021/09/24 17:02:46 tom Exp $ */"
+       print  "/* $Id: MKterm.h.awk.in,v 1.85 2023/04/23 19:15:36 tom Exp $ */"
        print  ""
        print  "/*"
        print  "**      term.h -- Definition of struct term"
@@ -325,16 +325,11 @@ END {
        print  "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);"
        print  "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);"
        print  "extern NCURSES_EXPORT(char *) _nc_tiparm(int, const char *, ...);"
-       print  ""
-       print  "#endif /* NCURSES_INTERNALS */"
-       print  ""
-       print  ""
-       print  "/*"
-       print  " * These entrypoints are used by tack 1.07."
-       print  " */"
        print  "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);"
        print  "extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);"
        print  ""
+       print  "#endif /* NCURSES_INTERNALS */"
+       print  ""
        print  "/*"
        print  " * Normal entry points"
        print  " */"
@@ -360,6 +355,8 @@ END {
        print  "#endif"
        print  ""
        print  "extern NCURSES_EXPORT(char *) tiparm (const char *, ...);               /* special */"
+       print  "extern NCURSES_EXPORT(char *) tiparm_s (int, int, const char *, ...);   /* special */"
+       print  "extern NCURSES_EXPORT(int) tiscan_s (int *, int *, const char *);       /* special */"
        print  ""
        print  "#endif /* __NCURSES_H */"
        print  ""
index 25a2583fc9b5b28e221d4332eb5000b83d1ccf4b..2509b1bf703af4029c3c58b54f86533cda071946 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id*/
+/* $Id: curses.events,v 1.4 2024/01/19 09:24:17 tom Exp $ */
 /*
  * vile:cmode:
  * This file is part of ncurses, designed to be appended after curses.h.in
@@ -50,6 +50,6 @@ typedef struct
 extern NCURSES_EXPORT(int) wgetch_events (WINDOW *, _nc_eventlist *) GCC_DEPRECATED(experimental option); /* experimental */
 extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *) GCC_DEPRECATED(experimental option); /* experimental */
 
-#define KEY_EVENT      0633            /* We were interrupted by an event */
+#define KEY_EVENT      0634            /* We were interrupted by an event */
 
 #endif /* NCURSES_WGETCH_EVENTS */
index 6acf2d03fe0b6f7d98429e17e50e775b66250f5a..8cfa0b9ff8d6bd8e1830a1fc4c90c6b79473820f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -33,7 +33,7 @@
  *     and: Thomas E. Dickey                        1996-on                 *
  ****************************************************************************/
 
-/* $Id: curses.h.in,v 1.277 2021/09/24 16:07:37 tom Exp $ */
+/* $Id: curses.h.in,v 1.282 2024/01/19 11:50:07 tom Exp $ */
 
 #ifndef __NCURSES_H
 #define __NCURSES_H
@@ -64,6 +64,7 @@
  NCURSES_OSPEED_COMPAT
  NCURSES_PATHSEP
  NCURSES_REENTRANT
+ NCURSES_SIGWINCH
  */
 
 #define CURSES 1
 #define NCURSES_REENTRANT @cf_cv_enable_reentrant@
 #endif
 
+/*
+ * KEY_RESIZE is an extended feature that relies upon the SIGWINCH handler
+ * in ncurses.
+ */
+#if @NCURSES_EXT_FUNCS@
+#ifndef NCURSES_SIGWINCH
+#define NCURSES_SIGWINCH @cf_cv_enable_sigwinch@
+#endif
+#else
+#undef NCURSES_SIGWINCH
+#define NCURSES_SIGWINCH 0
+#endif
+
 /*
  * In certain environments, we must work around linker problems for data
  */
@@ -896,6 +910,8 @@ extern NCURSES_EXPORT(char *) tparm (const char *, NCURSES_TPARM_ARG,NCURSES_TPA
 #endif
 
 extern NCURSES_EXPORT(char *) tiparm (const char *, ...);              /* special */
+extern NCURSES_EXPORT(char *) tiparm_s (int, int, const char *, ...);  /* special */
+extern NCURSES_EXPORT(int) tiscan_s (int *, int *, const char *);      /* special */
 
 /*
  * These functions are not in X/Open, but we use them in macro definitions:
@@ -925,11 +941,9 @@ extern NCURSES_EXPORT(int) getpary (const WINDOW *);                       /* generated */
 #define NCURSES_EXT_FUNCS @NCURSES_PATCH@
 typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
 typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
-extern NCURSES_EXPORT(bool) is_term_resized (int, int);
-extern NCURSES_EXPORT(char *) keybound (int, int);
-extern NCURSES_EXPORT(const char *) curses_version (void);
 extern NCURSES_EXPORT(int) alloc_pair (int, int);
 extern NCURSES_EXPORT(int) assume_default_colors (int, int);
+extern NCURSES_EXPORT(const char *) curses_version (void);
 extern NCURSES_EXPORT(int) define_key (const char *, int);
 extern NCURSES_EXPORT(int) extended_color_content(int, int *, int *, int *);
 extern NCURSES_EXPORT(int) extended_pair_content(int, int *, int *);
@@ -939,20 +953,31 @@ extern NCURSES_EXPORT(int) free_pair (int);
 extern NCURSES_EXPORT(int) get_escdelay (void);
 extern NCURSES_EXPORT(int) init_extended_color(int, int, int, int);
 extern NCURSES_EXPORT(int) init_extended_pair(int, int, int);
+extern NCURSES_EXPORT(int) is_cbreak(void);
+extern NCURSES_EXPORT(int) is_echo(void);
+extern NCURSES_EXPORT(int) is_nl(void);
+extern NCURSES_EXPORT(int) is_raw(void);
+extern NCURSES_EXPORT(bool) is_term_resized (int, int);
 extern NCURSES_EXPORT(int) key_defined (const char *);
+extern NCURSES_EXPORT(char *) keybound (int, int);
 extern NCURSES_EXPORT(int) keyok (int, bool);
+extern NCURSES_EXPORT(void) nofilter(void);
 extern NCURSES_EXPORT(void) reset_color_pairs (void);
 extern NCURSES_EXPORT(int) resize_term (int, int);
 extern NCURSES_EXPORT(int) resizeterm (int, int);
 extern NCURSES_EXPORT(int) set_escdelay (int);
 extern NCURSES_EXPORT(int) set_tabsize (int);
 extern NCURSES_EXPORT(int) use_default_colors (void);
-extern NCURSES_EXPORT(int) use_extended_names (bool);
 extern NCURSES_EXPORT(int) use_legacy_coding (int);
 extern NCURSES_EXPORT(int) use_screen (SCREEN *, NCURSES_SCREEN_CB, void *);
 extern NCURSES_EXPORT(int) use_window (WINDOW *, NCURSES_WINDOW_CB, void *);
 extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int);
-extern NCURSES_EXPORT(void) nofilter(void);
+
+#if @NCURSES_XNAMES@
+#undef  NCURSES_XNAMES
+#define NCURSES_XNAMES @NCURSES_XNAMES@
+extern NCURSES_EXPORT(int) use_extended_names (bool);
+#endif
 
 /*
  * These extensions provide access to information stored in the WINDOW even
@@ -1067,20 +1092,24 @@ extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_tioctl) (SCREEN*, bool); /* impl
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidattr) (SCREEN*, chtype); /* implemented:SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidputs) (SCREEN*, chtype, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
 #if @NCURSES_EXT_FUNCS@
-extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (SCREEN*, int, int);   /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(alloc_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(assume_default_colors) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(define_key) (SCREEN*, const char *, int);   /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_color_content) (SCREEN*, int, int *, int *, int *);        /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_pair_content) (SCREEN*, int, int *, int *);        /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_slk_color) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*);    /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(find_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(free_pair) (SCREEN*, int); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*);    /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_color) (SCREEN*, int, int, int, int); /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_pair) (SCREEN*, int, int, int);       /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_cbreak) (SCREEN*);       /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_echo) (SCREEN*); /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_nl) (SCREEN*);   /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(is_raw) (SCREEN*);  /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(is_term_resized) (SCREEN*, int, int);      /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *);       /* implemented:EXT_SP_FUNC */
+extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (SCREEN*, int, int);   /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool);        /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */     /* implemented:EXT_SP_FUNC */
 extern NCURSES_EXPORT(void) NCURSES_SP_NAME(reset_color_pairs) (SCREEN*); /* implemented:EXT_SP_FUNC */
index 11514498ddbc2a41afa6d3b5f1df1a4450981950..9c9135656048b2fdffe97a8c032ac5bfd6cbd330 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: curses.tail,v 1.26 2021/03/20 15:49:25 tom Exp $ */
+/* $Id: curses.tail,v 1.27 2023/08/05 19:43:46 tom Exp $ */
 /*
  * vile:cmode:
  * This file is part of ncurses, designed to be appended after curses.h.in
 #define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 6))
 #endif
 
-#define        NCURSES_BUTTON_RELEASED 001L
-#define        NCURSES_BUTTON_PRESSED  002L
-#define        NCURSES_BUTTON_CLICKED  004L
-#define        NCURSES_DOUBLE_CLICKED  010L
-#define        NCURSES_TRIPLE_CLICKED  020L
-#define        NCURSES_RESERVED_EVENT  040L
+#define        NCURSES_BUTTON_RELEASED 001UL
+#define        NCURSES_BUTTON_PRESSED  002UL
+#define        NCURSES_BUTTON_CLICKED  004UL
+#define        NCURSES_DOUBLE_CLICKED  010UL
+#define        NCURSES_TRIPLE_CLICKED  020UL
+#define        NCURSES_RESERVED_EVENT  040UL
 
 /* event masks */
 #define        BUTTON1_RELEASED        NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED)
index 32e33fdbc734ab4430b69685e5c7a3afa23d9543..e1293b28a549ee39b41c59980b02a7e18085b4ce 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: headers,v 1.15 2020/08/29 18:51:13 tom Exp $
+# $Id: headers,v 1.16 2023/04/22 12:09:09 tom Exp $
 ##############################################################################
-# Copyright 2020 Thomas E. Dickey                                            #
+# Copyright 2020,2023 Thomas E. Dickey                                       #
 # Copyright 1998-2012,2013 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -39,11 +39,9 @@ ncurses_dll.h
 term.h
 termcap.h
 
-# Headers used only for tic, other programs using internal interfaces
+# Header used by tack 1.08
 @ ticlib
-$(srcdir)/tic.h
 $(srcdir)/term_entry.h
-$(srcdir)/nc_tparm.h
 
 # Porting
 @ port_win32con
index 2e893aa9744ecf9a72dd491f44bf795c04b4f0cb..1d2fb0a4ec5ebb44251d6990918a99b5c1737db3 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2021 Thomas E. Dickey                                          *
+ * Copyright 2021,2023 Thomas E. Dickey                                     *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -26,7 +26,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 
-/* $Id: nc_access.h,v 1.2 2021/07/10 22:07:06 tom Exp $ */
+/* $Id: nc_access.h,v 1.6 2023/05/06 10:54:55 tom Exp $ */
 
 #ifndef NC_ACCESS_included
 #define NC_ACCESS_included 1
@@ -41,33 +41,33 @@ extern "C" {
 #endif
 
 /*
- * Turn off this symbol to limit access to environment variables when root.
+ * Turn off the 'use_terminfo_vars()' symbol to limit access to environment
+ * variables when running with privileges.
  */
-#ifdef USE_ROOT_ENVIRON
-
+#if defined(USE_ROOT_ENVIRON) && defined(USE_SETUID_ENVIRON)
 #define use_terminfo_vars() 1
-
 #else
-
 #define use_terminfo_vars() _nc_env_access()
-extern NCURSES_EXPORT(int) _nc_env_access (void);
-
 #endif
 
+extern NCURSES_EXPORT(int) _nc_env_access (void);
+
 /*
  * Turn off this symbol to limit access to files when running setuid.
  */
 #ifdef USE_ROOT_ACCESS
 
-#define safe_fopen(name,mode) fopen(name,mode)
+#define safe_fopen(name,mode)       fopen(name,mode)
+#define safe_open2(name,flags)      open(name,flags)
 #define safe_open3(name,flags,mode) open(name,flags,mode)
 
 #else
 
-#define safe_fopen(name,mode) fopen(name,mode)
-#define safe_open3(name,flags,mode) open(name,flags,mode)
-extern NCURSES_EXPORT(FILE *) _nc_safe_fopen (const char *, const char *);
-extern NCURSES_EXPORT(int) _nc_safe_open3 (const char *, int, mode_t);
+#define safe_fopen(name,mode)       _nc_safe_fopen(name,mode)
+#define safe_open2(name,flags)      _nc_safe_open3(name,flags,0)
+#define safe_open3(name,flags,mode) _nc_safe_open3(name,flags,mode)
+extern NCURSES_EXPORT(FILE *)       _nc_safe_fopen (const char *, const char *);
+extern NCURSES_EXPORT(int)          _nc_safe_open3 (const char *, int, mode_t);
 
 #endif
 
index 6729b29d3d0945db4cda179b1bab322f897d1ff3..c36f22288c2c803884c8e731fe2422b9703ddb57 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2019,2020 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 2008-2010,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -31,7 +31,7 @@
  * Author: Thomas Dickey, 2008-on                                           *
  ****************************************************************************/
 
-/* $Id: nc_mingw.h,v 1.9 2020/07/11 22:13:19 tom Exp $ */
+/* $Id: nc_mingw.h,v 1.12 2024/05/04 19:16:38 tom Exp $ */
 
 #ifndef NC_MINGW_H
 #define NC_MINGW_H 1
@@ -50,9 +50,6 @@
 #undef sleep
 #define sleep(n) Sleep((n) * 1000)
 
-#undef gettimeofday
-#define gettimeofday(tv,tz) _nc_gettimeofday(tv,tz)
-
 #if HAVE_SYS_TIME_H
 #include <sys/time.h>          /* for struct timeval */
 #endif
 #include <winsock2.h>          /* for struct timeval */
 #endif
 
+#include <stdint.h>            /* for uint32_t */
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 #include <ncurses_dll.h>
 
+#if !HAVE_CLOCK_GETTIME && !HAVE_GETTIMEOFDAY
 NCURSES_EXPORT(int) _nc_gettimeofday(struct timeval *, void *);
-
 #undef HAVE_GETTIMEOFDAY
-#define HAVE_GETTIMEOFDAY 1
+#define HAVE_GETTIMEOFDAY 2
+#define gettimeofday(tv,tz) _nc_gettimeofday(tv,tz)
+#endif
 
 #define SIGHUP  1
 #define SIGKILL 9
@@ -78,7 +79,7 @@ NCURSES_EXPORT(int) _nc_gettimeofday(struct timeval *, void *);
 
 #undef wcwidth
 #define wcwidth(ucs) _nc_wcwidth((wchar_t)(ucs))
-NCURSES_EXPORT(int) _nc_wcwidth(wchar_t);
+NCURSES_EXPORT(int) _nc_wcwidth(uint32_t);
 
 #ifdef __cplusplus
 }
index 943d9476055d53b0a5437e18bdff6770452a8090..78170993fa1720ecd3bc531b1c35978cf32959b9 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018,2020 Thomas E. Dickey                                     *
+ * Copyright 2018-2020,2023 Thomas E. Dickey                                *
  * Copyright 2006-2012,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -31,7 +31,7 @@
  *  Author: Thomas E. Dickey                        2006                    *
  ****************************************************************************/
 
-/* $Id: nc_tparm.h,v 1.11 2020/05/27 23:33:31 tom Exp $ */
+/* $Id: nc_tparm.h,v 1.12 2023/04/16 17:57:28 tom Exp $ */
 
 #ifndef NC_TPARM_included
 #define NC_TPARM_included 1
@@ -78,6 +78,7 @@
 #endif
 
 #ifdef NCURSES_INTERNALS
+#define TIPARM_0(s) _nc_tiparm(0,s)
 #define TIPARM_1(s,a) _nc_tiparm(1,s,a)
 #define TIPARM_2(s,a,b) _nc_tiparm(2,s,a,b)
 #define TIPARM_3(s,a,b,c) _nc_tiparm(3,s,a,b,c)
index 790e8dfe9388153dcefe17f7fd392f58862c88f7..f069d5043ef6541af341b6c47b034bcd6cb51b9b 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2019,2020 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 2008-2010,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -31,7 +31,7 @@
  * Author: Thomas Dickey, 2008-on                                           *
  ****************************************************************************/
 
-/* $Id: nc_win32.h,v 1.9 2020/09/13 00:17:30 tom Exp $ */
+/* $Id: nc_win32.h,v 1.12 2024/05/04 19:17:03 tom Exp $ */
 
 #ifndef NC_WIN32_H
 #define NC_WIN32_H 1
 #include <winsock2.h>          /* for struct timeval */
 #endif
 
+#include <stdint.h>            /* for uint32_t */
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 #include <ncurses_dll.h>
 
+#if !HAVE_CLOCK_GETTIME && !HAVE_GETTIMEOFDAY
 #undef HAVE_GETTIMEOFDAY
-#define HAVE_GETTIMEOFDAY 1
+#define HAVE_GETTIMEOFDAY 2
 extern NCURSES_EXPORT(int) _nc_gettimeofday(struct timeval *, void *);
+#endif
 
 #undef wcwidth
 #define wcwidth(ucs)  _nc_wcwidth((wchar_t)(ucs))
-extern NCURSES_EXPORT(int)    _nc_wcwidth(wchar_t);
+extern NCURSES_EXPORT(int)    _nc_wcwidth(uint32_t);
 
 #ifdef EVENTLIST_2nd /* test.priv.h just needs the preceding */
 
index 16e73018b7be92f49c85a13f1341b826054c5fe2..c0da3ad53ecce857e7664a82e0ddb5492176689b 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: ncurses_defs,v 1.102 2022/08/20 16:36:11 tom Exp $
+# $Id: ncurses_defs,v 1.110 2024/03/02 20:38:23 tom Exp $
 ##############################################################################
-# Copyright 2018-2021,2022 Thomas E. Dickey                                  #
+# Copyright 2018-2023,2024 Thomas E. Dickey                                  #
 # Copyright 2000-2016,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -51,9 +51,11 @@ HAVE_BSD_STRING_H
 HAVE_BTOWC
 HAVE_BUILTIN_H
 HAVE_CHGAT     1
+HAVE_CLOCK_GETTIME
 HAVE_COLOR_CONTENT     1
 HAVE_COLOR_SET 1
 HAVE_CONSISTENT_GETENV
+HAVE_CONSISTENT_MB_LEN_MAX
 HAVE_COPYWIN   1
 HAVE_CURSCR    1
 HAVE_CURSES_DATA_TABSIZE       1
@@ -70,6 +72,7 @@ HAVE_FCNTL_H
 HAVE_FILTER    1
 HAVE_FORM_H
 HAVE_FPATHCONF
+HAVE_GETAUXVAL
 HAVE_GETBEGX   1
 HAVE_GETCURX   1
 HAVE_GETCWD
@@ -81,6 +84,7 @@ HAVE_GETOPT_H
 HAVE_GETPARX   1
 HAVE_GETTIMEOFDAY
 HAVE_GETTTYNAM
+HAVE_GETUID
 HAVE_GETWIN    1
 HAVE_GPM_H
 HAVE_GPP_BUILTIN_H
@@ -122,6 +126,7 @@ HAVE_MVVLINE        1
 HAVE_MVWIN     1
 HAVE_MVWVLINE  1
 HAVE_NANOSLEEP
+HAVE_NAPMS     1
 HAVE_NC_ALLOC_H
 HAVE_NEWPAD    1
 HAVE_PANEL_H
@@ -147,8 +152,8 @@ HAVE_SCR_DUMP 1
 HAVE_SELECT
 HAVE_SETBUF
 HAVE_SETBUFFER
-HAVE_SETFSUID
 HAVE_SETENV
+HAVE_SETFSUID
 HAVE_SETUPTERM 1
 HAVE_SETVBUF
 HAVE_SGTTY_H
@@ -166,6 +171,7 @@ HAVE_STRSTR
 HAVE_SYMLINK
 HAVE_SYSCONF
 HAVE_SYS_BSDTYPES_H
+HAVE_SYS_AUXV_H
 HAVE_SYS_IOCTL_H
 HAVE_SYS_PARAM_H
 HAVE_SYS_POLL_H
@@ -187,6 +193,9 @@ HAVE_TERM_H 1
 HAVE_TGETENT   1
 HAVE_TIGETNUM  1
 HAVE_TIGETSTR  1
+HAVE_TIPARM    1
+HAVE_TIPARM_S  1
+HAVE_TISCAN_S  1
 HAVE_TIMES
 HAVE_TPUTS_SP
 HAVE_TSEARCH
@@ -200,7 +209,7 @@ HAVE_UNISTD_H
 HAVE_UNLINK
 HAVE_USE_DEFAULT_COLORS
 HAVE_USE_ENV   1
-HAVE_USE_EXTENDED_NAMES
+HAVE_USE_EXTENDED_NAMES        NCURSES_XNAMES
 HAVE_USE_SCREEN
 HAVE_USE_WINDOW
 HAVE_VFSCANF
@@ -215,14 +224,15 @@ HAVE_WCSTOMBS
 HAVE_WCTOB
 HAVE_WCTOMB
 HAVE_WCTYPE_H
-HAVE_WMEMCHR
 HAVE_WINSDELLN 1
 HAVE_WINSSTR   1
+HAVE_WMEMCHR
 HAVE_WORKING_POLL
 HAVE_WRESIZE
 HAVE_WSYNCDOWN 1
 HAVE__DOSCAN
 HAVE__TRACEF
+HAVE__NC_TPARM_ANALYZE 1
 MIXEDCASE_FILENAMES
 NCURSES_CHAR_EQ
 NCURSES_EXPANDED
index 437c54de0271560d58c112a65f096e7dd67016dc..401d47a816676439a62f52174374e49df9723496 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018,2020 Thomas E. Dickey                                     *
+ * Copyright 2018-2020,2023 Thomas E. Dickey                                *
  * Copyright 2009,2014 Free Software Foundation, Inc.                       *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -26,7 +26,7 @@
  * sale, use or other dealings in this Software without prior written       *
  * authorization.                                                           *
  ****************************************************************************/
-/* $Id: ncurses_dll.h.in,v 1.17 2020/09/05 17:58:47 juergen Exp $ */
+/* $Id: ncurses_dll.h.in,v 1.18 2023/05/06 20:12:43 tom Exp $ */
 
 #ifndef NCURSES_DLL_H_incl
 #define NCURSES_DLL_H_incl 1
 # define NCURSES_API __cdecl
 #else
 # define NCURSES_EXPORT_GENERAL_IMPORT
-# define NCURSES_EXPORT_GENERAL_EXPORT
+# if (__GNUC__ >= 4) && !defined(__cplusplus)
+#   define NCURSES_EXPORT_GENERAL_EXPORT __attribute__((visibility ("default")))
+# else
+#   define NCURSES_EXPORT_GENERAL_EXPORT
+# endif
 # define NCURSES_API /* FIXME: __attribute__ ((cdecl)) is only available on x86 */
 #endif
 
index 7425a76b8d4c6036b8822fa96db463c23e85c166..24389ad3837e2cd78fa549ec9412c64e2d62670e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -33,7 +33,7 @@
  *     and: Thomas E. Dickey                        1998-on                 *
  ****************************************************************************/
 
-/* $Id: term_entry.h,v 1.63 2022/09/24 15:04:59 tom Exp $ */
+/* $Id: term_entry.h,v 1.64 2023/04/22 13:37:14 tom Exp $ */
 
 /*
  *     term_entry.h -- interface to entry-manipulation code
@@ -177,6 +177,7 @@ extern NCURSES_EXPORT(void) _nc_wrap_entry (ENTRY *const, bool);
 extern NCURSES_EXPORT(void) _nc_align_termtype (TERMTYPE2 *, TERMTYPE2 *);
 
 /* free_ttype.c: elementary allocation code */
+extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *);
 extern NCURSES_EXPORT(void) _nc_free_termtype1 (TERMTYPE *);
 extern NCURSES_EXPORT(void) _nc_free_termtype2 (TERMTYPE2 *);
 
@@ -210,26 +211,6 @@ extern NCURSES_EXPORT(void) _nc_trace_xnames (TERMTYPE *);
 
 #endif /* NCURSES_INTERNALS */
 
-/*
- * These entrypoints were used by tack before 1.08.
- */
-
-#undef  NCURSES_TACK_1_08
-#ifdef  NCURSES_INTERNALS
-#define NCURSES_TACK_1_08 /* nothing */
-#else
-#define NCURSES_TACK_1_08 GCC_DEPRECATED("upgrade to tack 1.08")
-#endif
-
-/* alloc_ttype.c: elementary allocation code */
-extern NCURSES_EXPORT(void) _nc_copy_termtype (TERMTYPE *, const TERMTYPE *) NCURSES_TACK_1_08;
-
-/* lib_acs.c */
-extern NCURSES_EXPORT(void) _nc_init_acs (void) NCURSES_TACK_1_08;     /* corresponds to traditional 'init_acs()' */
-
-/* free_ttype.c: elementary allocation code */
-extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *) NCURSES_TACK_1_08;
-
 #ifdef __cplusplus
 }
 #endif
index 302c06d8a8b274e9b3511b57010c64af1d66c7dd..7569aae9fb5f7ed871afae784c109b2b56612a26 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2012,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -34,7 +34,7 @@
  ****************************************************************************/
 
 /*
- * $Id: tic.h,v 1.86 2022/09/17 16:01:45 tom Exp $
+ * $Id: tic.h,v 1.87 2023/04/22 13:37:21 tom Exp $
  *     tic.h - Global variables and structures for the terminfo compiler.
  */
 
@@ -347,6 +347,14 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
 /* lib_tputs.c */
 extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent */
 
+/* comp_expand.c: expand string into readable form */
+extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int);
+
+/* comp_hash.c: name lookup */
+extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry
+       (const char *, const HashValue *);
+extern NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool);
+
 /* comp_main.c: compiler main */
 extern const char * _nc_progname;
 
@@ -361,31 +369,6 @@ extern NCURSES_EXPORT(int) _nc_tic_written (void);
 
 #endif /* NCURSES_INTERNALS */
 
-/*
- * These entrypoints were used by tack before 1.08.
- */
-
-#undef  NCURSES_TACK_1_08
-#ifdef  NCURSES_INTERNALS
-#define NCURSES_TACK_1_08 /* nothing */
-#else
-#define NCURSES_TACK_1_08 GCC_DEPRECATED("upgrade to tack 1.08")
-#endif
-
-/* comp_hash.c: name lookup */
-extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry
-       (const char *, const HashValue *) NCURSES_TACK_1_08;
-extern NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool) NCURSES_TACK_1_08;
-
-/* comp_scan.c: lexical analysis */
-extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *) NCURSES_TACK_1_08;
-
-/* comp_expand.c: expand string into readable form */
-extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int) NCURSES_TACK_1_08;
-
-/* comp_scan.c: decode string from readable form */
-extern NCURSES_EXPORT(int) _nc_trans_string (char *, char *) NCURSES_TACK_1_08;
-
 #endif /* NCURSES_TERM_ENTRY_H_incl */
 
 #ifdef __cplusplus
diff --git a/m/0001-ncurses-6.4.patch b/m/0001-ncurses-6.4.patch
deleted file mode 100644 (file)
index b58656e..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-From d95c6f1429c30562ca4604482b1379776d594490 Mon Sep 17 00:00:00 2001
-From: "Thomas E. Dickey" <dickey@invisible-island.net>
-Date: Sat, 31 Dec 2022 23:49:40 +0000
-Subject: [PATCH] ncurses 6.4
-
----
- ncurses/tinfo/MKkeys_list.sh | 0
- progs/MKtermsort.sh          | 0
- test/savescreen.sh           | 0
- test/tput-colorcube          | 0
- test/tput-initc              | 0
- 5 files changed, 0 insertions(+), 0 deletions(-)
- mode change 100644 => 100755 ncurses/tinfo/MKkeys_list.sh
- mode change 100644 => 100755 progs/MKtermsort.sh
- mode change 100644 => 100755 test/savescreen.sh
- mode change 100644 => 100755 test/tput-colorcube
- mode change 100644 => 100755 test/tput-initc
-
-diff --git a/ncurses/tinfo/MKkeys_list.sh b/ncurses/tinfo/MKkeys_list.sh
-old mode 100644
-new mode 100755
-diff --git a/progs/MKtermsort.sh b/progs/MKtermsort.sh
-old mode 100644
-new mode 100755
-diff --git a/test/savescreen.sh b/test/savescreen.sh
-old mode 100644
-new mode 100755
-diff --git a/test/tput-colorcube b/test/tput-colorcube
-old mode 100644
-new mode 100755
-diff --git a/test/tput-initc b/test/tput-initc
-old mode 100644
-new mode 100755
--- 
-2.30.2
-
index 4552c5ddaf3e28547f1d41a07e924cd72e0bf721..ee037ff4fdc09a81853ab02d56a91042729fb525 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2010-2014,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: MKada_config.in,v 1.14 2021/12/25 17:39:16 tom Exp $
+.\" $Id: MKada_config.in,v 1.35 2024/04/20 21:13:27 tom Exp $
+.TH adacurses@USE_CFG_SUFFIX@\-config 1 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
 .ds C adacurses@USE_CFG_SUFFIX@\-config
-.TH ADACURSES "1" "" "" "User Commands"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.ds '  \(aq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.ie t .ds '  \(aq
+.el   .ds '  '
+.\}
+.
+.\" Fix broken EX/EE macros on DWB troff.
+.\" Detect it: only DWB sets up a `)Y` register.
+.if !\n(.g .if \n()Y \{\
+.\" Revert the undesired changes to indentation.
+.am EX
+.in -5n
+..
+.am EE
+.in +5n
+..
+.\}
+.
 .SH NAME
-adacurses@USE_CFG_SUFFIX@\-config \- helper script for @ADA_LIBNAME@ libraries
+\fB\%adacurses@USE_CFG_SUFFIX@\-config\fP \-
+configuration helper for \fI@ADA_LIBNAME@\fP libraries
 .SH SYNOPSIS
 .B \*C
-[\fIoptions\fP]
+.RB [ \-\-cflags ]
+.RB [ \-\-libs ]
+.PP
+.B \*C \-\-version
+.PP
+.B \*C \-\-help
 .SH DESCRIPTION
-This is a shell script which simplifies configuring an application to use
-the @ADA_LIBNAME@ library binding to ncurses.
+This program development aid simplifies the process of configuring
+applications to use the \fI@ADA_LIBNAME@\fP library binding to
+\fI\%ncurses\fP.
 .SH OPTIONS
-.TP
+.TP 11 \" "--version" + 2n
 \fB\-\-cflags\fP
-echos the gnat (Ada compiler) flags needed to compile with @ADA_LIBNAME@.
+reports the GNAT (Ada compiler) flags needed to compile with
+\fI@ADA_LIBNAME@\fP.
 .TP
 \fB\-\-libs\fP
-echos the gnat libraries needed to link with @ADA_LIBNAME@.
+reports the GNAT libraries needed to link with \fI@ADA_LIBNAME@\fP.
 .TP
 \fB\-\-version\fP
-echos the release+patchdate version of the ncurses libraries used
-to configure and build @ADA_LIBNAME@.
+reports the release and patch date information of the \fI\%ncurses\fP
+libraries used to configure and build \fI@ADA_LIBNAME@\fP and exits
+successfully.
 .TP
 \fB\-\-help\fP
-prints a list of the \fB\*C\fP script's options.
+issues a usage message and exits successfully.
 .PP
-If no options are given, \fB\*C\fP prints the combination
-of
-\fB\-\-cflags\fP and
-\fB\-\-libs\fP
-that \fBgnatmake\fP expects (see example).
-.SH EXAMPLE
+Omitting options implies \*(``\fB\-\-cflags \-\-libs\fP\*(''.
+.SH EXAMPLES
+Consider a program using \fI@ADA_LIBNAME@\fP to write the message
+\*(``Hello, world!\*('' in the center of the screen and wait for the
+user to press the \*(``q\*('' key before exiting.
+Populate a file \fIhello.adb\fP with the following.
 .PP
-For example, supposing that you want to compile the "Hello World!"
-program for @ADA_LIBNAME@.
-Make a file named "hello.adb":
-.RS
-.nf
-.ft CW
+.if \n(LL>67n .RS 4
+.EX
 with Terminal_Interface.Curses; use Terminal_Interface.Curses;
 
 procedure Hello is
-
    Visibility : Cursor_Visibility := Invisible;
+   Message : constant String := "Hello, World!";
    done : Boolean := False;
    c : Key_Code;
-
 begin
-
    Init_Screen;
    Set_Echo_Mode (False);
-
    Set_Cursor_Visibility (Visibility);
    Set_Timeout_Mode (Standard_Window, Non_Blocking, 0);
 
-   Move_Cursor (Line => Lines / 2, Column => (Columns - 12) / 2);
-   Add (Str => "Hello World!");
+   Move_Cursor (Line => Lines / 2,
+                Column => (Columns \- Message\*'Length) / 2);
+   Add (Str => Message);
 
    while not done loop
-
       c := Get_Keystroke (Standard_Window);
+
       case c is
-      when Character'Pos ('q') => done := True;
-      when others => null;
+          when Character\*'Pos (\*'q\*') => done := True;
+          when others => null;
       end case;
 
       Nap_Milli_Seconds (50);
    end loop;
 
    End_Windows;
-
 end Hello;
-.fi
-.RE
+.EE
+.if \n(LL>67n .RE
+.ne 2
 .PP
 Then, using
-.RS
-.ft CW
-gnatmake `adacurses-config --cflags` hello -largs `adacurses-config --libs`
-.ft
+.RS 4
+.EX
+gnatmake \(gaadacurses@USE_CFG_SUFFIX@\-config \-\-cflags\(ga hello \e
+    \-largs \(gaadacurses@USE_CFG_SUFFIX@\-config \-\-libs\(ga
+.EE
 .RE
-.PP
-or (simpler):
-.RS
-.ft CW
-gnatmake hello `adacurses-config`
-.ft
+or, more simply,
+.RS 4
+.EX
+gnatmake hello \(gaadacurses@USE_CFG_SUFFIX@\-config\(ga
+.EE
 .RE
-.PP
-you will compile and link the program.
+you can compile and link the program.
 .SH "SEE ALSO"
-\fBcurses\fP(3X)
-.PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+\fB\%curses\fP(3X)
index 6abeb4b7deda02878461dc29ea875d553402850e..14690a544c5e3f31dc445c5185f9620634fcf386 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2020,2021 Thomas E. Dickey                                     *
+.\" Copyright 2020-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2010 Free Software Foundation, Inc.                            *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: MKncu_config.in,v 1.6 2021/12/25 17:39:16 tom Exp $
-.TH @LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config 1 ""
+.\" $Id: MKncu_config.in,v 1.24 2024/04/20 21:13:38 tom Exp $
+.TH @LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config 1 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
 .SH NAME
-@LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config \- helper script for ncurses libraries
+\fB\%@LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config\fP \-
+configuration helper for \fI\%ncurses\fP libraries
 .SH SYNOPSIS
 .B @LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config
-[\fIoptions\fP]
+.I option
+\&.\|.\|.
+.PP
+.B "@LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config \-\-version"
+.PP
+.B "@LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config \-\-help"
 .SH DESCRIPTION
-This is a shell script which simplifies configuring applications against
-a particular set of ncurses libraries.
+This program development aid simplifies the process of configuring
+applications against a particular set of \fI\%ncurses\fP libraries.
 .SH OPTIONS
-.TP
+.TP 18 \" "--mouse-version" + 2n + adjustment for PDF
 \fB\-\-prefix\fP
-echos the package\-prefix of ncurses
+reports the package prefix of \fI\%ncurses\fP.
 .TP
 \fB\-\-exec\-prefix\fP
-echos the executable\-prefix of ncurses
+reports the executable prefix of \fI\%ncurses\fP.
 .TP
 \fB\-\-cflags\fP
-echos the C compiler flags needed to compile with ncurses
+reports the C compiler flags needed to compile with \fI\%ncurses\fP.
 .TP
 \fB\-\-libs\fP
-echos the libraries needed to link with ncurses
-.TP
-\fB\-\-version\fP
-echos the release+patchdate version of ncurses
+reports the libraries needed to link with \fI\%ncurses\fP.
 .TP
 \fB\-\-abi\-version\fP
-echos the ABI version of ncurses
+reports the ABI version of \fI\%ncurses\fP.
 .TP
 \fB\-\-mouse\-version\fP
-echos the mouse\-interface version of ncurses
+reports the mouse\-interface version of \fI\%ncurses\fP.
 .TP
 \fB\-\-bindir\fP
-echos the directory containing ncurses programs
+reports the directory containing \fI\%ncurses\fP programs.
 .TP
 \fB\-\-datadir\fP
-echos the directory containing ncurses data
+reports the directory containing \fI\%ncurses\fP data.
 .TP
 \fB\-\-includedir\fP
-echos the directory containing ncurses header files
+reports the directory containing \fI\%ncurses\fP header files.
 .TP
 \fB\-\-libdir\fP
-echos the directory containing ncurses libraries
+reports the directory containing \fI\%ncurses\fP libraries.
 .TP
 \fB\-\-mandir\fP
-echos the directory containing ncurses manpages
+reports the directory containing \fI\%ncurses\fP man pages.
 .TP
 \fB\-\-terminfo\fP
-echos the $TERMINFO terminfo database path, e.g.,
-.RS
-@TERMINFO@
-.RE
+reports the \fI\%TERMINFO\fP \fIterminfo\fP database path,
+for example \fI\%@TERMINFO@\fP.
 .TP
 \fB\-\-terminfo\-dirs\fP
-echos the $TERMINFO_DIRS directory list, e.g.,
-.RS
-@TERMINFO_DIRS@
-.RE
+reports the \fI\%TERMINFO_DIRS\fP supplemental search path for the
+\fIterminfo\fP database,
+for example \fI\%@TERMINFO_DIRS@\fP.
 .TP
 \fB\-\-termpath\fP
-echos the $TERMPATH termcap list, if support for termcap is configured.
-.TP
+reports the \fI\%TERMPATH\fP supplemental search path for the
+\fItermcap\fP database,
+if support for \fItermcap\fP is configured.
+.PP
+The following options cause all others to be ignored.
+.TP 11 .\" "--version" + 2n
 \fB\-\-help\fP
-prints this message
+issues a usage message and exits successfully.
+.TP
+\fB\-\-version\fP
+issues the release and patch date information of \fI\%ncurses\fP and
+exits successfully.
 .SH "SEE ALSO"
-\fBcurses\fP(3X)
-.PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+\fB\%curses\fP(3X)
index 323c525f3e2c51d5150384ac03eb1d840739a055..882ef2ad093bbd72e7c0f145cb49e8b379ee9683 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $Id: MKterminfo.sh,v 1.19 2022/07/16 17:55:20 tom Exp $
+# $Id: MKterminfo.sh,v 1.20 2024/01/13 20:37:40 tom Exp $
 #
 # MKterminfo.sh -- generate terminfo.5 from Caps tabular data
 #
@@ -83,7 +83,9 @@ cat $caps | sed -n "\
 /^#/d
 s/[    ][      ]*/     /g
 s/$/\ 5T}/
-s/     [A-Z0-9_()\-][A-Z0-9_()\-]*     [0-9\-][0-9\-]* [Y\-][B\-][C\-][G\-][EK\-]\**   /       T{\ 5/
+s/     [A-Z0-9_()\-][A-Z0-9_()\-]*     [0-9\-][0-9\-]* [Y\-][B\-][C\-][G\-][EK\-]\**   /       T{\\
+.ad l\
+\ 5/
 s/     bool    /       /p
 s/     num     /       /p
 s/     str     /       /p
index ddf60346f557071c508ecad7abdd85c052160432..4693b06b36e851424ba1d3cc25bea188a8a15c19 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: captoinfo.1m,v 1.33 2022/02/12 20:07:29 tom Exp $
-.TH @CAPTOINFO@ 1M ""
-.ds n 5
-.ds d @TERMINFO@
+.\" $Id: captoinfo.1m,v 1.63 2024/03/23 20:37:25 tom Exp $
+.TH @CAPTOINFO@ 1M 2024-03-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fB@CAPTOINFO@\fP \- convert a \fItermcap\fP description into a \fIterminfo\fP description
+\fB\%@CAPTOINFO@\fP \-
+convert a \fItermcap\fP description into a \fI\%term\%info\fP description
 .SH SYNOPSIS
-\fB@CAPTOINFO@\fR [\fB\-v\fIn\fR \fIwidth\fR]  [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR ...
+.B @CAPTOINFO@
+.RI [ tic-option ]
+.RI [ file
+\&.\|.\|.]
+.P
+.B "@CAPTOINFO@ \-V"
 .SH DESCRIPTION
-\fB@CAPTOINFO@\fP looks in each given text
-\fIfile\fP for \fBtermcap\fP descriptions.
-For each
-one found, an equivalent \fBterminfo\fP description is written to standard
-output.
-Termcap \fBtc\fP capabilities are translated directly to terminfo
-\fBuse\fP capabilities.
+\fB\%@CAPTOINFO@\fP translates terminal descriptions.
+It looks in each given text \fIfile\fP for \fI\%termcap\fP entries and,
+for each one found,
+writes an equivalent \fI\%\%term\%info\fP description to the standard
+output stream.
+\fI\%termcap\fP \fBtc\fP capabilities translate to \fI\%\%term\%info\fP
+\*(``\fBuse\fP\*('' capabilities.
 .PP
-If no \fIfile\fP is given, then the environment variable \fBTERMCAP\fP is used
-for the filename or entry.
-If \fBTERMCAP\fP is a full pathname to a file, only
-the terminal whose name is specified in the environment variable \fBTERM\fP is
-extracted from that file.
-If the environment variable \fBTERMCAP\fP is not
-set, then the file \fB\*d\fP is read.
-.TP 5
-\fB\-v\fP
-print out tracing information on standard error as the program runs.
-.TP 5
-\fB\-V\fP
-print out the version of the program in use on standard error and exit.
-.TP 5
-\fB\-1\fP
-cause the fields to print out one to a line.
-Otherwise, the fields
-will be printed several to a line to a maximum width of 60
-characters.
-.TP 5
-\fB\-w\fP
-change the output to \fIwidth\fP characters.
-.SH FILES
-.TP 20
-\*d
-Compiled terminal description database.
-.SH TRANSLATIONS FROM NONSTANDARD CAPABILITIES
+If no \fIfile\fPs are specified,
+\fB\%@CAPTOINFO@\fP interprets the content of the environment variable
+\fI\%TERMCAP\fP as a file name,
+and extracts only the entry for the terminal named in the environment
+variable \fITERM\fP from it.
+If the environment variable \fI\%TERMCAP\fP is not set,
+\fB\%@CAPTOINFO@\fP reads
+.IR \%/etc/termcap .
 .PP
-Some obsolete nonstandard capabilities will automatically be translated
-into standard (SVr4/XSI Curses) terminfo capabilities by \fB@CAPTOINFO@\fP.
-Whenever one of these automatic translations is done, the program
-will issue an notification to stderr, inviting the user to check that
-it has not mistakenly translated a completely unknown and random
-capability and/or syntax error.
+This utility is implemented as a link to \fB\%@TIC@\fP(1M),
+with the latter's
+.B \-I
+option implied.
+You can use other \fB\%@TIC@\fP options such as
+.BR \-1 ,
+.BR \-f ,
+.BR \-v ,
+.BR \-w ,
+and
+.BR \-x .
+The \fB\-V\fP option reports the version of \fI\%ncurses\fP associated
+with this program and exits with a successful status.
+.SS "Translations from Nonstandard Capabilities"
+\fB\%@CAPTOINFO@\fP translates some obsolete,
+nonstandard capabilities into standard
+(SVr4/XSI Curses)
+\fI\%\%term\%info\fP capabilities.
+It issues a diagnostic to the standard error stream for each,
+inviting the user to check that it has not mistakenly translated an
+unknown or mistyped capability name.
 .PP
-.TS H
-c c c c
-c c c c
-l l l l.
-Nonstd Std     From    Terminfo
-name   name            capability
+.\" DWB 3.3 tbl requires the two junk "L" specifiers in the first row.
+.TS
+center;
+Cb S  L  L
+Cb Cb Cb Cb
+Cb Cb C  Lb.
+Name
+Obsolete       Standard        Origin  \f(BIterminfo\fP capability
 _
 BO     mr      AT&T    enter_reverse_mode
 CI     vi      AT&T    cursor_invisible
@@ -106,64 +118,72 @@ PS        pf      XENIX   prtr_on
 PU     kP      XENIX   key_ppage
 RT     @8      XENIX   kent
 UP     ku      XENIX   kcuu1
-KA     k;      Tek     key_f10
-KB     F1      Tek     key_f11
-KC     F2      Tek     key_f12
-KD     F3      Tek     key_f13
-KE     F4      Tek     key_f14
-KF     F5      Tek     key_f15
-BC     Sb      Tek     set_background
-FC     Sf      Tek     set_foreground
-HS     mh      Iris    enter_dim_mode
+KA     k;      Tektronix       key_f10
+KB     F1      Tektronix       key_f11
+KC     F2      Tektronix       key_f12
+KD     F3      Tektronix       key_f13
+KE     F4      Tektronix       key_f14
+KF     F5      Tektronix       key_f15
+BC     Sb      Tektronix       set_background
+FC     Sf      Tektronix       set_foreground
+HS     mh      IRIX    enter_dim_mode
 .TE
 .PP
-XENIX termcap also used to have a set of extension capabilities
-for forms drawing, designed to take advantage of the IBM PC
-high-half graphics.
-They were as follows:
+XENIX \fI\%termcap\fP had a set of extension capabilities,
+corresponding to box drawing characters of CCSID
+(\*(``code page\*('') 437,
+as follows.
 .PP
-.TS H
-c c
-l l.
-Cap    Graphic
+.TS
+center;
+cb cb
+cb l .
+\f(BItermcap\fP Name   Graphic
 _
-G2     upper left
-G3     lower left
-G1     upper right
-G4     lower right
-GR     pointing right
-GL     pointing left
-GU     pointing up
-GD     pointing down
+G2     upper left corner
+G3     lower left corner
+G1     upper right corner
+G4     lower right corner
+GR     tee pointing right
+GL     tee pointing left
+GU     tee pointing up
+GD     tee pointing down
 GH     horizontal line
 GV     vertical line
 GC     intersection
-G6     upper left
-G7     lower left
-G5     upper right
-G8     lower right
-Gr     tee pointing right
-Gr     tee pointing left
-Gu     tee pointing up
-Gd     tee pointing down
-Gh     horizontal line
-Gv     vertical line
-Gc     intersection
-GG     acs magic cookie count
+G6     double upper left corner
+G7     double lower left corner
+G5     double upper right corner
+G8     double lower right corner
+Gr     double tee pointing right
+Gr     double tee pointing left
+Gu     double tee pointing up
+Gd     double tee pointing down
+Gh     double horizontal line
+Gv     double vertical line
+Gc     double intersection
+.\" TODO: There are about 40 box drawing code points in CCSID 437;
+.\" were there no XENIX capabilities for the mixed single- and double-
+.\" line intersections?
+.\"
+.\" TODO: GG doesn't seem to fit with the others; explain it.
+GG     ACS magic cookie count
 .TE
 .PP
-If the single-line capabilities occur in an entry, they will automatically
-be composed into an \fBacsc\fP string.
-The double-line capabilities and
-\fBGG\fP are discarded with a warning message.
+\fB\%@CAPTOINFO@\fP composes single-line capabilities into an \fBacsc\fP
+string,
+and discards \fBGG\fP and double-line capabilities with a warning
+diagnostic.
+.PP
+IBM's AIX has a \fI\%\%term\%info\fP facility descended from SVr1
+\fI\%\%term\%info\fP,
+but which is incompatible with the SVr4 format.
+\fB\%@CAPTOINFO@\fP translates the following AIX extensions.
 .PP
-IBM's AIX has a terminfo facility descended from SVr1 terminfo but incompatible
-with the SVr4 format.
-The following AIX extensions are automatically
-translated:
 .TS
-c c
-l l.
+center;
+cb cb
+l  l .
 IBM    XSI
 _
 ksel   kslt
@@ -174,34 +194,42 @@ font2     s2ds
 font3  s3ds
 .TE
 .PP
-Additionally, the AIX \fIbox1\fP capability will be automatically translated to
-an \fBacsc\fP string.
+Additionally,
+this program translates the AIX \fBbox1\fP capability to an \fBacsc\fP
+string.
 .PP
-Hewlett-Packard's terminfo library supports two nonstandard terminfo
-capabilities \fBmeml\fP (memory lock) and \fBmemu\fP (memory unlock).
-These will be discarded with a warning message.
-.SH NOTES
-This utility is actually a link to \fB@TIC@\fP(1M), running in \fI\-I\fP mode.
-You can use other \fB@TIC@\fP options such as \fB\-f\fP and  \fB\-x\fP.
-.PP
-The verbose option is not identical to SVr4's.
-Under SVr4, instead of following
-the \fB\-v\fP with a trace level n, you repeat it n times.
+The HP-UX \fI\%\%term\%info\fP library supports two nonstandard
+\fI\%\%term\%info\fP capabilities,
+\fBmeml\fP (memory lock) and \fBmemu\fP (memory unlock).
+\fB\%@CAPTOINFO@\fP discards these with a warning message.
+.SH FILES
+.TP
+.I /etc/termcap
+default \fI\%termcap\fP terminal capability database
 .SH PORTABILITY
-X/Open Curses, Issue 7 (2009) describes \fBtic\fP briefly,
+X/Open Curses,
+Issue 7 (2009) describes \fBtic\fP briefly,
 but omits this program.
-SVr4 systems provide \fBcaptoinfo\fP as a separate application from \fBtic\fP.
 .PP
-NetBSD does not provide this application.
-.SH SEE ALSO
-\fB@INFOCMP@\fP(1M),
-\fBcurses\fP(3X),
-\fBterminfo\fP(\*n)
+SVr4 systems provide \fB\%captoinfo\fP as a separate application from
+\fBtic\fP.
+Its
+.B \-v
+option does not accept a trace level argument
+.IR n ;
+repeat
+.B \-v
+.I n
+times instead.
 .PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
-.SH AUTHOR
+NetBSD does not provide this application.
+.SH AUTHORS
 Eric S. Raymond <esr@snark.thyrsus.com>
 and
 .br
-Thomas E. Dickey <dickey@invisible-island.net>
+Thomas E. Dickey <dickey@invisible\-island.net>
+.SH SEE ALSO
+\fB\%@INFOCMP@\fP(1M),
+\fB\%@TIC@\fP(1M),
+\fB\%curses\fP(3X),
+\fB\%terminfo\fP(5)
index 3ee012a3f51c8b45e10f21a2a167dcb2e6a9c838..a1034db7cb1a98ce34fc8a13063fc1e81d4b3e2a 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: clear.1,v 1.27 2022/02/12 20:07:29 tom Exp $
-.TH @CLEAR@ 1 ""
-.\" these would be fallbacks for DS/DE,
-.\" but groff changed the meaning of the macros.
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: clear.1,v 1.48 2024/03/16 15:35:01 tom Exp $
+.TH @CLEAR@ 1 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.ds '  \(aq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.ie t .ds '  \(aq
+.el   .ds '  '
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.ds n 5
+.
 .SH NAME
-\fB@CLEAR@\fP \- clear the terminal screen
+\fB\%@CLEAR@\fP \-
+clear the terminal screen
 .SH SYNOPSIS
-\fB@CLEAR@\fR [\fB\-T\fItype\fR] [\fB\-V\fR] [\fB\-x\fR]
-.br
+.B @CLEAR@
+.RB [ \-x ]
+.RB [ \-T\ \c
+.IR terminal-type ]
+.PP
+.B "@CLEAR@ \-V"
 .SH DESCRIPTION
-\fB@CLEAR@\fP clears your terminal's screen if this is possible,
-including the terminal's scrollback buffer
-(if the extended \*(``E3\*('' capability is defined).
-\fB@CLEAR@\fP looks in the environment for the terminal type
-given by the environment variable \fBTERM\fP,
-and then in the
-\fBterminfo\fP database to determine how to clear the screen.
+\fB\%@CLEAR@\fP clears your terminal's screen and its scrollback buffer,
+if any.
+\fB\%@CLEAR@\fP retrieves the terminal type from the environment
+variable \fITERM\fP,
+then consults the \fIterminfo\fP terminal capability database entry for
+that type to determine how to perform these actions.
 .PP
-\fB@CLEAR@\fP writes to the standard output.
-You can redirect the standard output to a file (which prevents
-\fB@CLEAR@\fP from actually clearing the screen),
-and later \fBcat\fP the file to the screen, clearing it at that point.
+The capabilities to clear the screen and scrollback buffer are named
+\*(``clear\*('' and \*(``E3\*('', respectively.
+The latter is a \fIuser-defined capability\fP,
+applying an extension mechanism introduced in \fI\%ncurses\fP 5.0
+(1999).
 .SH OPTIONS
-.PP
-.TP 5
+\fB\%@CLEAR@\fP recognizes the following options.
+.TP 9 \" "-T type" + 2n
 .B \-T \fItype\fP
-indicates the \fItype\fP of terminal.
-Normally this option is
-unnecessary, because the default is taken from the environment
-variable \fBTERM\fP.
-If \fB\-T\fP is specified, then the shell
-variables \fBLINES\fP and \fBCOLUMNS\fP will also be ignored.
+produces instructions suitable for the terminal \fItype\fP.
+Normally,
+this option is unnecessary,
+because the terminal type is inferred from the environment variable
+\fITERM\fP.
+If this option is specified,
+\fB\%@CLEAR@\fP ignores the environment variables \fILINES\fP and
+\fI\%COLUMNS\fP as well.
 .TP
 .B \-V
-reports the version of ncurses which was used in this program, and exits.
-The options are as follows:
+reports the version of \fI\%ncurses\fP associated with this program and
+exits with a successful status.
 .TP
 .B \-x
-do not attempt to clear the terminal's scrollback buffer
-using the extended \*(``E3\*('' capability.
+prevents \fB\%@CLEAR@\fP from attempting to clear the scrollback buffer.
+.SH PORTABILITY
+Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7
+(POSIX.1-2008) nor X/Open Curses Issue 7 documents \fB\%@CLEAR@\fP.
+.PP
+The latter documents \fBtput\fP,
+which could be used to replace this utility either via a shell script or
+by an alias
+(such as a symbolic link)
+to run \fB\%@TPUT@\fP as \fB\%@CLEAR@\fP.
 .SH HISTORY
-A \fBclear\fP command appeared in 2.79BSD dated February 24, 1979.
-Later that was provided in Unix 8th edition (1985).
+A \fBclear\fP command using the \fItermcap\fP database and library
+appeared in 2BSD (1979).
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=2BSD/src/clear.c
+Eighth Edition Unix (1985) later included it.
+.PP
+The commercial Unix arm of AT&T adapted a different BSD program
+(\fBtset\fP) to make a new command,
+\fBtput\fP,
+and replaced the \fBclear\fP program with a shell script that called
+\*(``\fBtput clear\fP\*(''.
 .PP
-AT&T adapted a different BSD program (\fBtset\fP) to make
-a new command (\fBtput\fP),
-and used this to replace the \fBclear\fP command with a shell script
-which calls \fBtput clear\fP, e.g.,
-.NS
-/usr/bin/tput ${1:+-T$1} clear 2> /dev/null
+.RS 4
+.EX
+/usr/bin/tput ${1:+\-T$1} clear 2> /dev/null
 exit
-.NE
+.EE
+.RE
 .PP
 In 1989, when Keith Bostic revised the BSD \fBtput\fP command
-to make it similar to the AT&T \fBtput\fP,
-he added a shell script for the \fBclear\fP command:
-.NS
+to make it similar to AT&T's \fBtput\fP,
+he added a \fBclear\fP shell script as well.
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=Net2/usr/src/usr.bin/\
+.\"   tput/clear.sh
+.PP
+.RS 4
+.EX
 exec tput clear
-.NE
+.EE
+.RE
 .PP
 The remainder of the script in each case is a copyright notice.
 .PP
-The ncurses \fBclear\fP command began in 1995 by adapting the original
-BSD \fBclear\fP command (with terminfo, of course).
-.PP
-The \fBE3\fP extension came later:
+In 1995,
+\fI\%ncurses\fP's \fBclear\fP began by adapting BSD's original
+\fBclear\fP command to use \fIterminfo\fP.
+The \fBE3\fP extension came later.
 .bP
-In June 1999, \fBxterm\fP provided an extension to the standard control
+In June 1999, \fIxterm\fP provided an extension to the standard control
 sequence for clearing the screen.
 Rather than clearing just the visible part of the screen using
-.NS
-printf '\\033[2J'
-.NE
+.RS 8
+.PP
+.EX
+printf \*'\e033[2J\*'
+.EE
+.RE
 .IP
-one could clear the \fIscrollback\fP using
-.NS
-printf '\\033[\fB3\fPJ'
-.NE
+one could clear the scrollback buffer as well by using
+.RS 8
+.PP
+.EX
+printf \*'\e033[\fB3\fPJ\*'
+.EE
+.RE
 .IP
-This is documented in \fIXTerm Control Sequences\fP as a feature originating
-with \fBxterm\fP.
+instead.
+\*(``XTerm Control Sequences\fP\*('' documents this feature as
+originating with \fIxterm\fP.
 .bP
-A few other terminal developers adopted the feature, e.g., PuTTY in 2006.
+A few other terminal emulators adopted it,
+such as PuTTY in 2006.
 .bP
 In April 2011, a Red Hat developer submitted a patch to the Linux
 kernel, modifying its console driver to do the same thing.
-The Linux change, part of the 3.0 release, did not mention \fBxterm\fP,
-although it was cited in the Red Hat bug report (#683733)
-which led to the change.
+Documentation of this change,
+appearing in Linux 3.0,
+did not mention \fIxterm\fP,
+although that program was cited in the Red Hat bug report (#683733)
+motivating the feature.
 .bP
-Again, a few other terminal developers adopted the feature.
-But the
-next relevant step was a change to the \fBclear\fP program in 2013
-to incorporate this extension.
+Subsequently,
+more terminal developers adopted the feature.
+The next relevant step was to change the \fI\%ncurses\fP \fBclear\fP
+program in 2013 to incorporate this extension.
 .bP
-In 2013, the \fBE3\fP extension was overlooked in \fB@TPUT@\fP with
-the \*(``clear\*('' parameter.
-That was addressed in 2016 by reorganizing \fB@TPUT@\fP to share
-its logic with \fB@CLEAR@\fP and \fB@TSET@\fP.
-.SH PORTABILITY
-Neither IEEE Std 1003.1/The Open  Group  Base  Specifications  Issue  7
-(POSIX.1-2008) nor X/Open Curses Issue 7 documents @TSET@ or @RESET@.
-.PP
-The latter documents \fBtput\fP, which could be used to replace this utility
-either via a shell script or by an alias (such as a symbolic link) to
-run \fB@TPUT@\fP as \fB@CLEAR@\fP.
+In 2013,
+the \fBE3\fP capability was not exercised by
+\*(``\fB\%@TPUT@ clear\fP\*(''.
+That oversight was addressed in 2016 by reorganizing \fB\%@TPUT@\fP to
+share its logic with \fB\%@CLEAR@\fP and \fB\%@TSET@\fP.
 .SH SEE ALSO
-\fB@TPUT@\fP(1), \fBterminfo\fP(\*n), \fBxterm\fP(1).
-.PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+\fB\%@TPUT@\fP(1),
+\fB\%xterm\fP(1),
+\fB\%terminfo\fP(5)
index ed84ece20e13882d4bf96e972874825861066f74..d1eb9a311fc81ae718d564648c615a80b053b957 100644 (file)
@@ -1,5 +1,6 @@
+'\" t
 .\"***************************************************************************
-.\" Copyright 2019-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2001-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_add_wch.3x,v 1.31 2021/12/25 21:37:49 tom Exp $
-.TH curs_add_wch 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_add_wch.3x,v 1.62 2024/04/20 21:20:07 tom Exp $
+.TH curs_add_wch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBadd_wch\fP,
-\fBwadd_wch\fP,
-\fBmvadd_wch\fP,
-\fBmvwadd_wch\fP,
-\fBecho_wchar\fP,
-\fBwecho_wchar\fP \- add a complex character and rendition to a \fBcurses\fP window, then advance the cursor
+\fB\%add_wch\fP,
+\fB\%wadd_wch\fP,
+\fB\%mvadd_wch\fP,
+\fB\%mvwadd_wch\fP,
+\fB\%echo_wchar\fP,
+\fB\%wecho_wchar\fP \-
+add a \fIcurses\fR complex character to a window and advance the cursor
 .SH SYNOPSIS
+.nf
+\fB#include <curses.h>
 .PP
-\fB#include <curses.h>\fP
-.sp
-.B "int add_wch( const cchar_t *\fIwch\fB );"
-.br
-.B "int wadd_wch( WINDOW *\fIwin\fP, const cchar_t *\fIwch\fB );"
-.br
-.B "int mvadd_wch( int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fB );"
-.br
-.B "int mvwadd_wch( WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fB );"
-.sp
-.B "int echo_wchar( const cchar_t *\fIwch\fB );"
-.br
-.B "int wecho_wchar( WINDOW *\fIwin\fP, const cchar_t *\fIwch\fB );"
-.br
+\fBint add_wch(const cchar_t *\fIwch\fP);
+\fBint wadd_wch(WINDOW *\fIwin\fP, const cchar_t *\fIwch\fP);
+\fBint mvadd_wch(int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fP);
+\fBint mvwadd_wch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fP);
+.PP
+\fBint echo_wchar(const cchar_t *\fIwch\fP);
+\fBint wecho_wchar(WINDOW *\fIwin\fP, const cchar_t *\fIwch\fP);
+.fi
 .SH DESCRIPTION
 .SS add_wch
-.PP
 The
 \fBadd_wch\fP,
 \fBwadd_wch\fP,
@@ -78,25 +82,31 @@ If \fIwch\fP refers to a spacing character,
 then any previous character at that location is removed.
 A new character specified by \fIwch\fP is
 placed at that location with rendition specified by \fIwch\fP.
-The cursor then advances to
-the next spacing character on the screen.
+The cursor then advances after this spacing character,
+to prepare for writing the next character on the screen.
+.IP
+The newly added spacing character is the base of the active complex character.
+Subsequent non-spacing characters can be combined with this base
+until another spacing character is written to the screen,
+or the cursor is moved, e.g., using \fBwmove\fP.
 .bP
 If \fIwch\fP refers to a non-spacing character,
-all previous characters at that location are preserved.
-The non-spacing characters of \fIwch\fP
-are added to the spacing complex character,
-and the rendition specified by \fIwch\fP is ignored.
+it is appended to the active complex character,
+retaining the previous characters at that location.
+The rendition specified by \fIwch\fP is ignored.
+.IP
+The cursor is not advanced after adding a non-spacing character.
+Subsequent calls to add non-spacing characters will update the same position.
 .bP
 If the character part of \fIwch\fP is
 a tab, newline, backspace or other control character,
 the window is updated and the cursor moves as if \fBaddch\fP were called.
 .SS echo_wchar
-.PP
 The \fBecho_wchar\fP
 function is functionally equivalent to a call to
 \fBadd_wch\fP
 followed by a call to
-\fBrefresh\fP(3X).
+\fB\%refresh\fP(3X).
 Similarly, the
 \fBwecho_wchar\fP
 is functionally equivalent to a call to
@@ -107,99 +117,171 @@ The knowledge
 that only a single character is being output is taken into consideration and,
 for non-control characters, a considerable performance gain might be seen
 by using the *\fBecho\fP* functions instead of their equivalents.
-.SS Line Graphics
-Like \fBaddch\fP(3X),
+.SS "Line Graphics"
+Like \fB\%addch\fP(3X),
 \fBaddch_wch\fP accepts symbols which make it simple to draw lines and other
 frequently used special characters.
 These symbols correspond to the same VT100 line-drawing set as
-\fBaddch\fP(3X).
+\fB\%addch\fP(3X).
 .PP
 .TS
-l l l l l
-l l l l l
-_ _ _ _ _
-lw(1.5i) lw5 lw5 lw5 lw20.
-\fBACS\fP      \fBUnicode\fP   \fBASCII\fP     \fBacsc\fP      \fBGlyph\fP
-\fBName\fP     \fBDefault\fP   \fBDefault\fP   \fBchar\fP      \fBName\fP
-WACS_BLOCK     0x25ae  #       0       solid square block
-WACS_BOARD     0x2592  #       h       board of squares
-WACS_BTEE      0x2534  +       v       bottom tee
-WACS_BULLET    0x00b7  o       ~       bullet
-WACS_CKBOARD   0x2592  :       a       checker board (stipple)
-WACS_DARROW    0x2193  v       .       arrow pointing down
-WACS_DEGREE    0x00b0  '       f       degree symbol
-WACS_DIAMOND   0x25c6  +       `       diamond
-WACS_GEQUAL    0x2265  >       >       greater-than-or-equal-to
-WACS_HLINE     0x2500  \-      q       horizontal line
-WACS_LANTERN   0x2603  #       i       lantern symbol
-WACS_LARROW    0x2190  <       ,       arrow pointing left
-WACS_LEQUAL    0x2264  <       y       less-than-or-equal-to
-WACS_LLCORNER  0x2514  +       m       lower left-hand corner
-WACS_LRCORNER  0x2518  +       j       lower right-hand corner
-WACS_LTEE      0x2524  +       t       left tee
-WACS_NEQUAL    0x2260  !       |       not-equal
-WACS_PI        0x03c0  *       {       greek pi
-WACS_PLMINUS   0x00b1  #       g       plus/minus
-WACS_PLUS      0x253c  +       n       plus
-WACS_RARROW    0x2192  >       +       arrow pointing right
-WACS_RTEE      0x251c  +       u       right tee
-WACS_S1        0x23ba  \-      o       scan line 1
-WACS_S3        0x23bb  \-      p       scan line 3
-WACS_S7        0x23bc  \-      r       scan line 7
-WACS_S9        0x23bd  \&_     s       scan line 9
-WACS_STERLING  0x00a3  f       }       pound-sterling symbol
-WACS_TTEE      0x252c  +       w       top tee
-WACS_UARROW    0x2191          ^       \-      arrow pointing up
-WACS_ULCORNER  0x250c  +       l       upper left-hand corner
-WACS_URCORNER  0x2510  +       k       upper right-hand corner
-WACS_VLINE     0x2502  |       x       vertical line
+Lb Lb Lb Lb Lb
+Lb Lb Lb Lb Lb
+Lb L  L  L  Lx.
+\&     Unicode ASCII   acsc    \&
+ACS Name       Default Default Char    Glyph Name
+_
+WACS_BLOCK     0x25ae  #       0       T{
+solid square block
+T}
+WACS_BOARD     0x2592  #       h       board of squares
+WACS_BTEE      0x2534  +       v       bottom tee
+WACS_BULLET    0x00b7  o       ~       bullet
+WACS_CKBOARD   0x2592  :       a       T{
+checker board (stipple)
+T}
+WACS_DARROW    0x2193  v       .       T{
+arrow pointing down
+T}
+WACS_DEGREE    0x00b0  '       f       degree symbol
+WACS_DIAMOND   0x25c6  +       \(ga    diamond
+WACS_GEQUAL    0x2265  >       >       T{
+greater-than-or-equal-to
+T}
+WACS_HLINE     0x2500  \-      q       horizontal line
+WACS_LANTERN   0x2603  #       i       lantern symbol
+WACS_LARROW    0x2190  <       ,       T{
+arrow pointing left
+T}
+WACS_LEQUAL    0x2264  <       y       T{
+less-than-or-equal-to
+T}
+WACS_LLCORNER  0x2514  +       m       T{
+lower left-hand corner
+T}
+WACS_LRCORNER  0x2518  +       j       T{
+lower right-hand corner
+T}
+WACS_LTEE      0x2524  +       t       left tee
+WACS_NEQUAL    0x2260  !       |       not-equal
+WACS_PI        0x03c0  *       {       greek pi
+WACS_PLMINUS   0x00b1  #       g       plus/minus
+WACS_PLUS      0x253c  +       n       plus
+WACS_RARROW    0x2192  >       +       T{
+arrow pointing right
+T}
+WACS_RTEE      0x251c  +       u       right tee
+WACS_S1        0x23ba  \-      o       scan line 1
+WACS_S3        0x23bb  \-      p       scan line 3
+WACS_S7        0x23bc  \-      r       scan line 7
+WACS_S9        0x23bd  \&_     s       scan line 9
+WACS_STERLING  0x00a3  f       }       T{
+pound-sterling symbol
+T}
+WACS_TTEE      0x252c  +       w       top tee
+WACS_UARROW    0x2191  ^       \-      T{
+arrow pointing up
+T}
+WACS_ULCORNER  0x250c  +       l       T{
+upper left-hand corner
+T}
+WACS_URCORNER  0x2510  +       k       T{
+upper right-hand corner
+T}
+WACS_VLINE     0x2502  |       x       vertical line
 .TE
 .PP
-The wide-character configuration of ncurses also defines symbols
+The wide-character configuration of \fI\%ncurses\fP also defines symbols
 for thick lines (\fBacsc\fP \*(``J\*('' to \*(``V\*(''):
+.PP
 .TS
-l l l l l
-l l l l l
-_ _ _ _ _
-lw(1.5i) lw5 lw5 lw5 lw20.
-\fBACS\fP      \fBUnicode\fP   \fBASCII\fP     \fBacsc\fP      \fBGlyph\fP
-\fBName\fP     \fBDefault\fP   \fBDefault\fP   \fBchar\fP      \fBName\fP
-WACS_T_BTEE    0x253b  +       V       thick tee pointing up
-WACS_T_HLINE   0x2501  -       Q       thick horizontal line
-WACS_T_LLCORNER        0x2517  +       M       thick lower left corner
-WACS_T_LRCORNER        0x251b  +       J       thick lower right corner
-WACS_T_LTEE    0x252b  +       T       thick tee pointing right
-WACS_T_PLUS    0x254b  +       N       thick large plus
-WACS_T_RTEE    0x2523  +       U       thick tee pointing left
-WACS_T_TTEE    0x2533  +       W       thick tee pointing down
-WACS_T_ULCORNER        0x250f  +       L       thick upper left corner
-WACS_T_URCORNER        0x2513  +       K       thick upper right corner
-WACS_T_VLINE   0x2503  |       X       thick vertical line
+Lb Lb Lb Lb Lb
+Lb Lb Lb Lb Lb
+Lb L  L  L  Lx.
+\&     Unicode ASCII   acsc    \&
+ACS Name       Default Default Char    Glyph Name
+_
+WACS_T_BTEE    0x253b  +       V       T{
+thick tee pointing up
+T}
+WACS_T_HLINE   0x2501  -       Q       T{
+thick horizontal line
+T}
+WACS_T_LLCORNER        0x2517  +       M       T{
+thick lower left corner
+T}
+WACS_T_LRCORNER        0x251b  +       J       T{
+thick lower right corner
+T}
+WACS_T_LTEE    0x252b  +       T       T{
+thick tee pointing right
+T}
+WACS_T_PLUS    0x254b  +       N       T{
+thick large plus
+T}
+WACS_T_RTEE    0x2523  +       U       T{
+thick tee pointing left
+T}
+WACS_T_TTEE    0x2533  +       W       T{
+thick tee pointing down
+T}
+WACS_T_ULCORNER        0x250f  +       L       T{
+thick upper left corner
+T}
+WACS_T_URCORNER        0x2513  +       K       T{
+thick upper right corner
+T}
+WACS_T_VLINE   0x2503  |       X       T{
+thick vertical line
+T}
 .TE
 .PP
 and for double-lines (\fBacsc\fP \*(``A\*('' to \*(``I\*(''):
 .PP
 .TS
-l l l l l
-l l l l l
-_ _ _ _ _
-lw(1.5i) lw5 lw5 lw5 lw20.
-\fBACS\fP      \fBUnicode\fP   \fBASCII\fP     \fBacsc\fP      \fBGlyph\fP
-\fBName\fP     \fBDefault\fP   \fBDefault\fP   \fBchar\fP      \fBName\fP
-WACS_D_BTEE    0x2569  +       H       double tee pointing up
-WACS_D_HLINE   0x2550  -       R       double horizontal line
-WACS_D_LLCORNER        0x255a  +       D       double lower left corner
-WACS_D_LRCORNER        0x255d  +       A       double lower right corner
-WACS_D_LTEE    0x2560  +       F       double tee pointing right
-WACS_D_PLUS    0x256c  +       E       double large plus
-WACS_D_RTEE    0x2563  +       G       double tee pointing left
-WACS_D_TTEE    0x2566  +       I       double tee pointing down
-WACS_D_ULCORNER        0x2554  +       C       double upper left corner
-WACS_D_URCORNER        0x2557  +       B       double upper right corner
-WACS_D_VLINE   0x2551  |       Y       double vertical line
+Lb Lb Lb Lb Lb
+Lb Lb Lb Lb Lb
+Lb L  L  L  Lx.
+\&     Unicode ASCII   acsc    \&
+ACS Name       Default Default Char    Glyph Name
+_
+WACS_D_BTEE    0x2569  +       H       T{
+double tee pointing up
+T}
+WACS_D_HLINE   0x2550  -       R       T{
+double horizontal line
+T}
+WACS_D_LLCORNER        0x255a  +       D       T{
+double lower left corner
+T}
+WACS_D_LRCORNER        0x255d  +       A       T{
+double lower right corner
+T}
+WACS_D_LTEE    0x2560  +       F       T{
+double tee pointing right
+T}
+WACS_D_PLUS    0x256c  +       E       T{
+double large plus
+T}
+WACS_D_RTEE    0x2563  +       G       T{
+double tee pointing left
+T}
+WACS_D_TTEE    0x2566  +       I       T{
+double tee pointing down
+T}
+WACS_D_ULCORNER        0x2554  +       C       T{
+double upper left corner
+T}
+WACS_D_URCORNER        0x2557  +       B       T{
+double upper right corner
+T}
+WACS_D_VLINE   0x2551  |       Y       T{
+double vertical line
+T}
 .TE
 .PP
-Unicode's descriptions for these characters differs slightly from ncurses,
+Unicode's descriptions for these characters differs slightly from
+\fI\%ncurses\fP,
 by introducing the term \*(``light\*('' (along with less important details).
 Here are its descriptions for the normal, thick, and double horizontal lines:
 .bP
@@ -209,10 +291,9 @@ U+2501 BOX DRAWINGS HEAVY HORIZONTAL
 .bP
 U+2550 BOX DRAWINGS DOUBLE HORIZONTAL
 .SH RETURN VALUE
-.PP
 All routines return the integer \fBERR\fP upon failure and \fBOK\fP on success.
 .PP
-X/Open does not define any error conditions.
+X/Open Curses does not specify any error conditions.
 This implementation returns an error
 .bP
 if the window pointer is null or
@@ -221,21 +302,22 @@ if it is not possible to add a complete character in the window.
 .PP
 The latter may be due to different causes:
 .bP
-If \fBscrollok\fP is not enabled,
+If \fB\%scrollok\fP(3X) is not enabled,
 writing a character at the lower right margin succeeds.
-However, an error is returned because
-it is not possible to wrap to a new line
+However,
+an error is returned because it is not possible to wrap to a new line.
 .bP
 If an error is detected when converting a multibyte character to a sequence
 of bytes,
 or if it is not possible to add all of the resulting bytes in the window,
 an error is returned.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-.PP
 Note that
 \fBadd_wch\fP,
 \fBmvadd_wch\fP,
@@ -243,23 +325,22 @@ Note that
 \fBecho_wchar\fP
 may be macros.
 .SH PORTABILITY
-.PP
-All of these functions are described in the XSI Curses standard, Issue 4.
+These functions are described in X/Open Curses, Issue 4.
 The defaults specified for line-drawing characters apply in the POSIX locale.
-.PP
+.SS "WACS Symbols"
 X/Open Curses makes it clear that the WACS_ symbols should be defined as
 a pointer to \fBcchar_t\fP data, e.g., in the discussion of \fBborder_set\fP.
 A few implementations are problematic:
 .bP
 NetBSD curses defines the symbols as a \fBwchar_t\fP within a \fBcchar_t\fP.
 .bP
-HPUX curses equates some of the \fBACS_\fP symbols
+HP-UX curses equates some of the \fBACS_\fP symbols
 to the analogous \fBWACS_\fP symbols as if the \fBACS_\fP symbols were
 wide characters.
 The misdefined symbols are the arrows
 and other symbols which are not used for line-drawing.
 .PP
-X/Open Curses does not define symbols for thick- or double-lines.
+X/Open Curses does not specify symbols for thick- or double-lines.
 SVr4 curses implementations defined their line-drawing symbols in
 terms of intermediate symbols.
 This implementation extends those symbols, providing new definitions
@@ -270,18 +351,20 @@ alternate character sets (i.e., the \fBacsc\fP capability),
 with their corresponding line-drawing characters.
 X/Open Curses did not address the aspect of integrating Unicode with
 line-drawing characters.
-Existing implementations of Unix curses (AIX, HPUX, Solaris)
+Existing implementations of Unix curses (AIX, HP-UX, Solaris)
 use only the \fBacsc\fP character-mapping to provide this feature.
 As a result, those implementations can only use single-byte line-drawing
 characters.
-Ncurses 5.3 (2002) provided a table of Unicode values to solve these problems.
+\fI\%ncurses\fP 5.3 (2002) provided a table of Unicode values to solve
+these problems.
 NetBSD curses incorporated that table in 2010.
 .PP
 In this implementation, the Unicode values are used instead of the
-terminal description's \fBacsc\fP mapping as discussed in ncurses(3X)
-for the environment variable \fBNCURSES_NO_UTF8_ACS\fP.
+terminal description's \fBacsc\fP mapping as discussed in
+\fB\%ncurses\fP(3X) for the environment variable
+\fINCURSES_NO_UTF8_ACS\fP.
 In contrast, for the same cases, the line-drawing characters
-described in \fBcurs_addch\fP(3X) will use only the ASCII default values.
+described in \fB\%addch\fP(3X) will use only the ASCII default values.
 .PP
 Having Unicode available does not solve all of the problems with
 line-drawing for curses:
@@ -322,13 +405,45 @@ Others have suggested these alternatives:
 \[u2327] U+2327 (x in a rectangle),
 \[u256C] U+256C (forms double vertical and horizontal), and
 \[u2612] U+2612 (ballot box with x).
+.SS "Complex Characters"
+The complex character type \fBcchar_t\fR
+can store more than one wide character (\fBwchar_t\fR).
+The X/Open Curses description does not mention this possibility,
+describing only the cases where \fIwch\fP is a spacing character
+or a non-spacing character.
+.PP
+This implementation assumes that \fIwch\fP is constructed using
+\fB\%setcchar\fP(3X), and in turn that the result
+.bP
+contains at most one spacing character in the beginning of its list of wide
+characters,
+and zero or more non-spacing characters
+or
+.bP
+may hold one non-spacing character.
+.PP
+In the latter case,
+\fI\%ncurses\fP adds the non-spacing character to the active
+(base) spacing character.
+.SS TABSIZE
+The
+.B TABSIZE
+variable is implemented in SVr4 and other versions of
+.IR curses ,
+but is not specified by X/Open Curses
+(see \fBcurs_variables\fP(3X)).
 .SH SEE ALSO
-.na
+\fB\%curs_addch\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its non-wide-character configuration.
 .PP
-\fBcurses\fP(3X),
-\fBcurs_addch\fP(3X),
-\fBcurs_attr\fP(3X),
-\fBcurs_clear\fP(3X),
-\fBcurs_outopts\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBputwc\fP(3)
+\fB\%curses\fP(3X),
+\fB\%curs_addwstr\fP(3X),
+\fB\%curs_add_wchstr\fP(3X),
+\fB\%curs_attr\fP(3X),
+\fB\%curs_clear\fP(3X),
+\fB\%curs_getcchar\fP(3X),
+\fB\%curs_outopts\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%putwc\fP(3)
index 1a1625476a670ee173ed39e4730864d4bd39993e..5dd3e8f4e1312ab3c5e3863cb0d6ac791046c564 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_add_wchstr.3x,v 1.19 2022/02/12 20:07:29 tom Exp $
-.TH curs_add_wchstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_add_wchstr.3x,v 1.39 2024/04/20 21:20:07 tom Exp $
+.TH curs_add_wchstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBadd_wchstr\fP,
-\fBadd_wchnstr\fP,
-\fBwadd_wchstr\fP,
-\fBwadd_wchnstr\fP,
-\fBmvadd_wchstr\fP,
-\fBmvadd_wchnstr\fP,
-\fBmvwadd_wchstr\fP,
-\fBmvwadd_wchnstr\fP \- add an array of complex characters (and attributes) to a curses window
-.ad
-.hy
+\fB\%add_wchstr\fP,
+\fB\%add_wchnstr\fP,
+\fB\%wadd_wchstr\fP,
+\fB\%wadd_wchnstr\fP,
+\fB\%mvadd_wchstr\fP,
+\fB\%mvadd_wchnstr\fP,
+\fB\%mvwadd_wchstr\fP,
+\fB\%mvwadd_wchnstr\fP \-
+add a \fIcurses\fR complex character string to a window
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h>\fP
+\fB#include <curses.h>
 .PP
-\fBint add_wchstr(const cchar_t *\fIwchstr\fB);\fR
-.br
-\fBint add_wchnstr(const cchar_t *\fIwchstr\fB, int \fIn\fB);\fR
-.br
-\fBint wadd_wchstr(WINDOW *\fR \fIwin\fB, const cchar_t *\fIwchstr\fB);\fR
-.br
-\fBint wadd_wchnstr(WINDOW *\fR \fIwin\fB, const cchar_t *\fIwchstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvadd_wchstr(int \fIy\fB, int \fIx\fB, const cchar_t *\fIwchstr\fB);\fR
-.br
-\fBint mvadd_wchnstr(int \fIy\fB, int \fIx\fB, const cchar_t *\fIwchstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwadd_wchstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const cchar_t *\fIwchstr\fB);\fR
-.br
-\fBint mvwadd_wchnstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const cchar_t *\fIwchstr\fB, int \fIn\fB);\fR
+\fBint add_wchstr(const cchar_t *\fIwchstr\fP);
+\fBint wadd_wchstr(WINDOW * \fIwin\fP, const cchar_t *\fIwchstr\fP);
+\fBint mvadd_wchstr(int \fIy\fP, int \fIx\fP, const cchar_t *\fIwchstr\fP);
+\fBint mvwadd_wchstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwchstr\fP);
+.PP
+\fBint add_wchnstr(const cchar_t *\fIwchstr\fP, int \fIn\fP);
+\fBint wadd_wchnstr(WINDOW * \fIwin\fP, const cchar_t *\fIwchstr\fP, int \fIn\fP);
+\fBint mvadd_wchnstr(int \fIy\fP, int \fIx\fP, const cchar_t *\fIwchstr\fP, int \fIn\fP);
+\fBint mvwadd_wchnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwchstr\fP, int \fIn\fP);
 .fi
 .SH DESCRIPTION
 These functions copy the (null-terminated)
 array of complex characters \fIwchstr\fP
 into the window image structure
 starting at the current cursor position.
+.PP
 The four functions with \fIn\fP as the last
 argument copy at most \fIn\fP elements,
 but no more than will fit on the line.
@@ -82,7 +81,7 @@ If \fBn\fP=\fB\-1\fP then the whole array is copied,
 to the maximum number of characters that will fit on the line.
 .PP
 The window cursor is \fInot\fP advanced.
-These functions work faster than \fBwaddnstr\fP.
+These functions are faster than \fBwaddnstr\fP.
 On the other hand:
 .bP
 they do not perform checking
@@ -103,21 +102,27 @@ the remaining columns are filled with the background character and rendition.
 .SH RETURN VALUE
 All functions return the integer \fBERR\fP upon failure and \fBOK\fP on success.
 .PP
-X/Open does not define any error conditions.
+X/Open Curses does not specify any error conditions.
 This implementation returns an error
-if the window pointer is null.
+.bP
+if the \fIwin\fP parameter is null or
+.bP
+if the \fIwchstr\fP parameter is null.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
 All functions except \fBwadd_wchnstr\fP may be macros.
 .SH PORTABILITY
-These entry points are described in the XSI Curses standard, Issue 4.
+These functions are described in X/Open Curses, Issue 4.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_addwstr\fP(3X).
+\fB\%curs_addchstr\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its non-wide-character configuration.
 .PP
-Comparable functions in the narrow-character (ncurses) library are
-described in
-\fBcurs_addchstr\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_addwstr\fP(3X),
+\fB\%curs_add_wch\fP(3X)
index fe591f9bae1263ee119406c82d7976a1a5d6c2da..ad548520ce84c792df349b76f9ab294533b88e6a 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_addch.3x,v 1.59 2022/02/12 20:07:29 tom Exp $
-.TH curs_addch 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_addch.3x,v 1.85 2024/04/20 19:03:47 tom Exp $
+.TH curs_addch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.ds '  \(aq
+.ds ^  \(ha
+.ds ~  \(ti
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.ds       '  '
+.ds       ^  ^
+.ds       ~  ~
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBaddch\fP,
-\fBwaddch\fP,
-\fBmvaddch\fP,
-\fBmvwaddch\fP,
-\fBechochar\fP,
-\fBwechochar\fP \- add a character (with attributes) to a \fBcurses\fP window, then advance the cursor
+\fB\%addch\fP,
+\fB\%waddch\fP,
+\fB\%mvaddch\fP,
+\fB\%mvwaddch\fP,
+\fB\%echochar\fP,
+\fB\%wechochar\fP \-
+add a \fIcurses\fP character to a window and advance the cursor
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
+.nf
+\fB#include <curses.h>
 .PP
-\fBint addch(const chtype \fIch\fB);\fR
-.br
-\fBint waddch(WINDOW *\fIwin\fB, const chtype \fIch\fB);\fR
-.br
-\fBint mvaddch(int \fIy\fB, int \fIx\fB, const chtype \fIch\fB);\fR
-.br
-\fBint mvwaddch(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const chtype \fIch\fB);\fR
-.sp
-\fBint echochar(const chtype \fIch\fB);\fR
-.br
-\fBint wechochar(WINDOW *\fIwin\fB, const chtype \fIch\fB);\fR
-.br
+\fBint addch(const chtype \fIch\fP);
+\fBint waddch(WINDOW *\fIwin\fP, const chtype \fIch\fP);
+\fBint mvaddch(int \fIy\fP, int \fIx\fP, const chtype \fIch\fP);
+\fBint mvwaddch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const chtype \fIch\fP);
+.PP
+\fBint echochar(const chtype \fIch\fP);
+\fBint wechochar(WINDOW *\fIwin\fP, const chtype \fIch\fP);
+.fi
 .SH DESCRIPTION
-.SS Adding characters
-The \fBaddch\fP, \fBwaddch\fP, \fBmvaddch\fP and \fBmvwaddch\fP routines put
-the character \fIch\fP into the given window at its current window position,
-which is then advanced.
-They are analogous to \fBputchar\fP(3) in \fBstdio\fP(3).
-If the advance is at the right margin:
-.bP
-The cursor automatically wraps to the beginning of the next line.
+.SS "Adding Characters"
+.B \%waddch
+puts the character
+.I ch
+at the cursor position of window
+.IR win ,
+then advances the cursor position,
+analogously to the standard C library's \fI\%putchar\fP(3).
+\fB\%ncurses\fP(3X) describes the variants of this function.
+.PP
+If advancement occurs at the right margin,
 .bP
-At the bottom of the current scrolling region,
-and if \fBscrollok\fP is enabled,
-the scrolling region is scrolled up one line.
+the cursor automatically wraps to the beginning of the next line;
+and
 .bP
-If \fBscrollok\fP is not enabled,
-writing a character at the lower right margin succeeds.
-However, an error is returned because
-it is not possible to wrap to a new line
+at the bottom of the current scrolling region,
+and if \fB\%scrollok\fP(3X) is enabled for
+.IR win ,
+the scrolling region scrolls up one line.
 .PP
-If \fIch\fP is a tab, newline, carriage return or backspace,
-the cursor is moved appropriately within the window:
+If
+.I ch
+is a
+backspace,
+carriage return,
+line feed,
+or
+tab,
+the cursor moves appropriately within the window.
 .bP
-Backspace moves the cursor one character left; at the left
-edge of a window it does nothing.
+Backspace moves the cursor one character left;
+at the left margin of a window,
+it does nothing.
 .bP
-Carriage return moves the cursor to the window left margin on the current line.
+Carriage return moves the cursor to the left margin on the current line
+of the window.
 .bP
-Newline does a \fBclrtoeol\fP,
-then moves the cursor to the window left margin on the next line,
-scrolling the window if on the last line.
+Line feed does a \fB\%clrtoeol\fP(3X),
+then moves the cursor to the left margin on the next line of the window,
+and if \fB\%scrollok\fP(3X) is enabled for
+.IR win ,
+scrolls the window if the cursor was already on the last line.
 .bP
-Tabs are considered to be at every eighth column.
-The tab interval may be altered by setting the \fBTABSIZE\fP variable.
+Tab advances the cursor to the next tab stop
+(possibly on the next line);
+these are placed at every eighth column by default.
+Alter the tab interval with the
+.B \%TABSIZE
+extension;
+see \fB\%curs_variables\fP(3X).
 .PP
-If \fIch\fP is any other nonprintable character,
+If
+.I ch
+is any other nonprintable character,
 it is drawn in printable form,
-i.e., the \fB^\fIX\fR notation used by \fBunctrl\fR(3X).
-Calling \fBwinch\fP after adding a
-nonprintable character does not return the character itself,
-but instead returns the printable representation of the character.
-.PP
-Video attributes can be combined with a character argument passed to
-\fBaddch\fP or related functions by logical-ORing them into the character.
-(Thus, text, including attributes, can be copied from one place to another
-using \fBinch\fP(3X) and \fBaddch\fP.)  See the \fBcurs_attr\fP(3X) page for
-values of predefined video attribute constants that can be usefully OR'ed
-into characters.
-.SS Echoing characters
+using the same convention as \fB\%unctrl\fP(3X).
 .PP
-The \fBechochar\fP and \fBwechochar\fP routines are equivalent to a call to
-\fBaddch\fP followed by a call to \fBrefresh\fP(3X), or a call to \fBwaddch\fP
-followed by a call to \fBwrefresh\fP.
-The knowledge that only a single
-character is being output is used and, for non-control characters, a
-considerable performance gain may be seen by using these routines instead of
-their equivalents.
-.SS Line Graphics
-The following variables may be used to add line drawing characters to the
-screen with routines of the \fBaddch\fP family.
-The default character listed
-below is used if the \fBacsc\fP capability does not define a terminal-specific
-replacement for it,
-or if the terminal and locale configuration requires Unicode but the
-library is unable to use Unicode.
+Calling \fB\%winch\fP(3X) on the location of a nonprintable character
+does not return the character itself,
+but its \fB\%unctrl\fP(3X) representation.
 .PP
-The names are taken from VT100 nomenclature.
+.I ch
+may contain rendering and/or color attributes,
+and others can be combined with the parameter
+by logically \*(``or\*(''ing with it.
+(A character with its attributes can be copied from place to place
+using \fB\%winch\fP(3X) and
+.BR \%waddch .)
+See \fB\%curs_attr\fP(3X) for values of predefined video attribute
+constants that can be usefully \*(``or\*(''ed with characters.
+.SS "Echoing Characters"
+.B \%echochar
+and
+.B \%wechochar
+are equivalent to calling
+.RB \%( w ) addch
+followed by
+.RB \%( w ) refresh .
+.I curses
+interprets these functions as a hint that only a single character is
+being output;
+for non-control characters,
+a considerable performance gain may be enjoyed by employing them.
+.\" TODO: Combine the following with the "Line Drawing" subsection of
+.\" terminfo(5) and replace this with a cross reference there.
+.SS "Forms-Drawing Characters"
+.I curses
+defines macros starting with
+.B \%ACS_
+that can be used with
+.B \%waddch
+to write line-drawing and other special characters to the screen.
+.I \%ncurses
+terms these
+.I "forms-drawing characters."
+The ACS default listed below is used if the
+.B \%acs_chars
+.RB ( \%acsc )
+.I \%term\%info
+capability does not define a terminal-specific replacement for it,
+or if the terminal and locale configuration requires Unicode to access
+these characters but the library is unable to use Unicode.
+The \*(``acsc char\*('' column corresponds to how the characters are
+specified in the
+.B \%acs_chars
+string capability,
+and the characters in it may appear on the screen if the terminal's
+database entry incorrectly advertises ACS support.
+The name \*(``ACS\*('' originates in the Alternate Character Set feature
+of the DEC VT100 terminal.
 .PP
 .TS
-l l l l
-l l l l
-_ _ _ _
-l l l l.
-\fBACS\fP      \fBACS\fP       \fBacsc\fP      \fBGlyph\fP
-\fBName\fP     \fBDefault\fP   \fBchar\fP      \fBName\fP
+Lb Lb Lb Lb
+Lb Lb Lb Lb
+Lb L  L  Lx.
+\&     ACS     acsc    \&
+Symbol Default char    Glyph Name
+_
 ACS_BLOCK      #       0       solid square block
 ACS_BOARD      #       h       board of squares
 ACS_BTEE       +       v       bottom tee
-ACS_BULLET     o       ~       bullet
+ACS_BULLET     o       \*~     bullet
 ACS_CKBOARD    :       a       checker board (stipple)
 ACS_DARROW     v       .       arrow pointing down
-ACS_DEGREE     '       f       degree symbol
-ACS_DIAMOND    +       `       diamond
+ACS_DEGREE     \*'     f       degree symbol
+ACS_DIAMOND    +       \(ga    diamond
 ACS_GEQUAL     >       >       greater-than-or-equal-to
 ACS_HLINE      \-      q       horizontal line
 ACS_LANTERN    #       i       lantern symbol
@@ -162,153 +218,260 @@ ACS_S7  \-      r       scan line 7
 ACS_S9 \&_     s       scan line 9
 ACS_STERLING   f       }       pound-sterling symbol
 ACS_TTEE       +       w       top tee
-ACS_UARROW     ^       \-      arrow pointing up
+ACS_UARROW     \*^     \-      arrow pointing up
 ACS_ULCORNER   +       l       upper left-hand corner
 ACS_URCORNER   +       k       upper right-hand corner
 ACS_VLINE      |       x       vertical line
 .TE
 .SH RETURN VALUE
-All routines return the integer \fBERR\fP upon failure and \fBOK\fP on success
-(the SVr4 manuals specify only
-\*(``an integer value other than \fBERR\fP\*('') upon successful completion,
-unless otherwise noted in the preceding routine descriptions.
+These functions return
+.B OK
+on success and
+.B ERR
+on failure.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+In
+.IR \%ncurses ,
+.B \%waddch
+returns
+.B ERR
+if it is not possible to add a complete character at the cursor
+position,
+as when conversion of a multibyte character to a byte sequence fails,
+or at least one of the resulting bytes cannot be added to the window.
+See section \*(``PORTABILITY\*('' below regarding the use of
+.B \%waddch
+with multibyte characters.
 .PP
-If it is not possible to add a complete character,
-an error is returned:
-.bP
-If \fBscrollok\fP is not enabled,
-writing a character at the lower right margin succeeds.
-However, an error is returned because
-it is not possible to wrap to a new line
-.bP
-If an error is detected when converting a multibyte character to a sequence
-of bytes,
-or if it is not possible to add all of the resulting bytes in the window,
-an error is returned.
+.B \%waddch
+can successfully write a character at the bottom right location of the
+window.
+However,
+.I \%ncurses
+returns
+.B ERR
+if \fB\%scrollok\fP(3X) is not enabled in that event,
+because it is not possible to wrap to a new line.
+.PP
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-Note that \fBaddch\fP, \fBmvaddch\fP, \fBmvwaddch\fP, and
-\fBechochar\fP may be macros.
+.BR \%addch ,
+.BR \%mvaddch ,
+.BR \%mvwaddch ,
+and
+.B \%echochar
+may be implemented as macros.
 .SH PORTABILITY
-All these functions are described in the XSI Curses standard, Issue 4.
-The defaults specified for forms-drawing characters apply in the POSIX locale.
-.SS ACS Symbols
-.LP
-X/Open Curses states that the \fBACS_\fP definitions are \fBchar\fP constants.
-For the wide-character implementation (see \fBcurs_add_wch\fP),
-there are analogous \fBWACS_\fP definitions which are \fBcchar_t\fP constants.
-Some implementations are problematic:
+X/Open Curses,
+Issue 4 describes these functions.
+It specifies no error conditions for them.
+.PP
+SVr4
+.I curses
+describes a successful return value only as
+\*(``an integer value other than
+.BR ERR \*(''.
+.PP
+The defaults specified for forms-drawing characters apply in the POSIX
+locale.
+.SS "ACS Symbols"
+X/Open Curses states that the
+.B \%ACS_
+definitions are
+.I char
+constants.
+.PP
+Some implementations are problematic.
 .bP
-Some implementations define the ACS symbols to a constant
-(such as Solaris), while others define those to entries in an array.
+Solaris
+.IR curses ,
+for example,
+define the ACS symbols as constants;
+others define them as elements of an array.
 .IP
-This implementation uses an array \fBacs_map\fP, as done in SVr4 curses.
-NetBSD also uses an array, actually named \fB_acs_char\fP, with a \fB#define\fP
+This implementation uses an array,
+.BR \%acs_map ,
+as did SVr4
+.IR curses .
+NetBSD also uses an array,
+actually named
+.BR \%_acs_char ,
+with a
+.B \%#define
 for compatibility.
 .bP
-HPUX curses equates some of the \fBACS_\fP symbols
-to the analogous \fBWACS_\fP symbols as if the \fBACS_\fP symbols were
-wide characters.
-The misdefined symbols are the arrows
-and other symbols which are not used for line-drawing.
+HP-UX
+.I curses
+equates some of the
+.B \%ACS_
+symbols to the analogous
+.B \%WACS_
+symbols as if the
+.B \%ACS_
+symbols were wide characters
+(see \fB\%curs_add_wch\fP(3X)).
+The misdefined symbols are the arrows and others that are not used for
+line drawing.
 .bP
-X/Open Curses (issues 2 through 7) has a typographical error
-for the ACS_LANTERN symbol, equating its \*(``VT100+ Character\*(''
-to \fBI\fP (capital I), while the header files for SVr4 curses
-and the various implementations use \fBi\fP (lowercase).
+X/Open Curses
+(Issues 2 through 7)
+has a typographical error
+for the
+.B \%ACS_LANTERN
+symbol, equating its \*(``VT100+ Character\*('' to \*(``I\*(''
+(capital I),
+while the header files for SVr4
+.I curses
+and other implementations use \*(``i\*(''
+(small i).
 .IP
-None of the terminal descriptions on Unix platforms use uppercase-I,
-except for Solaris (i.e., \fBscreen\fP's terminal description,
+None of the terminal descriptions on Unix platforms use uppercase I,
+except for Solaris
+(in its
+.I \%term\%info
+entry for \fI\%screen\fP(1),
 apparently based on the X/Open documentation around 1995).
-On the other hand, the terminal description \fIgs6300\fP
-(AT&T PC6300 with EMOTS Terminal Emulator) uses lowercase-i.
-.LP
+On the other hand,
+its
+.B \%gs6300
+(AT&T PC6300 with EMOTS Terminal Emulator)
+description uses lowercase i.
+.PP
 Some ACS symbols
-(ACS_S3,
-ACS_S7,
-ACS_LEQUAL,
-ACS_GEQUAL,
-ACS_PI,
-ACS_NEQUAL,
-ACS_STERLING)
-were not documented in
-any publicly released System V.
-However, many publicly available terminfos
-include \fBacsc\fP strings in which their key characters (pryz{|}) are
-embedded, and a second-hand list of their character descriptions has come
-to light.
-The ACS-prefixed names for them were invented for \fBncurses\fP(3X).
-.LP
-The \fIdisplayed\fP values for the \fBACS_\fP and \fBWACS_\fP constants
-depend on
+.RB ( \%ACS_S3 ,
+.BR \%ACS_S7 ,
+.BR \%ACS_LEQUAL ,
+.BR \%ACS_GEQUAL ,
+.BR \%ACS_PI ,
+.BR \%ACS_NEQUAL ,
+and
+.BR \%ACS_STERLING )
+were not documented in any publicly released System\ V.
+However,
+many publicly available
+.I \%term\%info
+entries include
+.B \%acsc
+strings in which their key characters
+.BR ( pryz{|} )
+are embedded,
+and a second-hand list of their character descriptions has come to
+light.
+The
+.I \%ncurses
+developers invented ACS-prefixed names for them.
+.PP
+The
+.I displayed
+values of
+.B \%ACS_
+constants depend on
 .bP
-the library configuration, i.e., \fBncurses\fP versus \fBncursesw\fP,
-where the latter is capable of displaying Unicode while the former is not, and
+the
+.I \%ncurses
+ABI\(emfor example,
+wide-character versus non-wide-character configurations
+(the former is capable of displaying Unicode while the latter is not),
+and
 .bP
-whether the \fIlocale\fP uses UTF-8 encoding.
-.LP
-In certain cases, the terminal is unable to display line-drawing characters
-except by using UTF-8 (see the discussion of \fBNCURSES_NO_UTF8_ACS\fP in
-ncurses(3X)).
-.SS Character Set
-X/Open Curses assumes that the parameter passed to \fBwaddch\fP contains
-a single character.
-As discussed in \fBcurs_attr\fP(3X), that character may have been
-more than eight bits in an SVr3 or SVr4 implementation,
-but in the X/Open Curses model, the details are not given.
-The important distinction between SVr4 curses and X/Open Curses is
-that the non-character information (attributes and color) was
-separated from the character information which is packed in a \fBchtype\fP
-to pass to \fBwaddch\fP.
+whether the locale uses UTF-8 encoding.
+.PP
+In certain cases,
+the terminal is unable to display forms-drawing characters
+.I except
+by using UTF-8;
+see the discussion of the
+.I \%NCURSES_NO_UTF8_ACS
+environment variable in \fB\%ncurses\fP(3X)).
+.SS "Character Set"
+X/Open Curses assumes that the parameter passed to
+.B \%waddch
+contains a single character.
+As discussed in \fB\%curs_attr\fP(3X),
+that character may have been more than eight bits wide in an SVr3 or
+SVr4 implementation,
+but in the X/Open Curses model,
+the details are not given.
+The important distinction between SVr4
+.I curses
+and X/Open Curses is that the latter separates non-character information
+(attributes and color)
+from the character code,
+which SVr4 packs into a
+.I \%chtype
+for passage to
+.BR \%waddch .
 .PP
-In this implementation, \fBchtype\fP holds an eight-bit character.
-But ncurses allows multibyte characters to be passed in a succession
-of calls to \fBwaddch\fP.
-The other implementations do not do this;
-a call to \fBwaddch\fP passes exactly one character
-which may be rendered as one or more cells on the screen
-depending on whether it is printable.
+In
+.IR \%ncurses ,
+.I \%chtype
+holds an eight-bit character.
+But the library allows a multibyte character to be passed in a
+succession of calls to
+.BR \%waddch .
+Other implementations do not;
+a
+.B \%waddch
+call transmits exactly one character,
+which may be rendered in one or more screen locations depending on
+whether it is printable.
 .PP
 Depending on the locale settings,
-ncurses will inspect the byte passed in each call to \fBwaddch\fP,
-and check if the latest call will continue a multibyte sequence.
-When a character is \fIcomplete\fP,
-ncurses displays the character and moves to the next position in the screen.
+.I \%ncurses
+inspects the byte passed in each
+.B \%waddch
+call,
+and checks whether the latest call continues a multibyte sequence.
+When a character is
+.IR complete ,
+.I \%ncurses
+displays the character and advances the cursor.
 .PP
 If the calling application interrupts the succession of bytes in
-a multibyte character by moving the current location (e.g., using \fBwmove\fP),
-ncurses discards the partially built character,
-starting over again.
+a multibyte character sequence by changing the current location\(emfor
+example,
+with \fB\%wmove\fP(3X)\(em\c
+.I \%ncurses
+discards the incomplete character.
 .PP
 For portability to other implementations,
-do not rely upon this behavior:
+do not rely upon this behavior.
+Check whether a character can be represented as a single byte in the
+current locale.
 .bP
-check if a character can be represented as a single byte in the current locale
-before attempting call \fBwaddch\fP, and
+If it can,
+call either
+.B \%waddch
+or \fB\%wadd_wch\fP(3X).
 .bP
-call \fBwadd_wch\fP for characters which cannot be handled by \fBwaddch\fP.
+If it cannot,
+use only
+\fB\%wadd_wch\fP(3X).
 .SS TABSIZE
-.LP
-The \fBTABSIZE\fP variable is implemented in SVr4 and other versions of curses,
-but is not part of X/Open curses
-(see \fBcurs_variables\fP(3X) for more details).
-.LP
-If \fIch\fP is a carriage return,
-the cursor is moved to the beginning of the current row of the window.
-This is true of other implementations, but is not documented.
+SVr4 and other versions of
+.I curses
+implement the
+.B \%TABSIZE
+variable,
+but X/Open Curses does not specify it
+(see \fB\%curs_variables\fP(3X)).
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_attr\fP(3X),
-\fBcurs_clear\fP(3X),
-\fBcurs_inch\fP(3X),
-\fBcurs_outopts\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_variables\fP(3X),
-\fBputc\fP(3).
+\fB\%curs_add_wch\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its wide-character configuration
+.RI ( \%ncursesw ).
 .PP
-Comparable functions in the wide-character (ncursesw) library are
-described in
-\fBcurs_add_wch\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_addchstr\fP(3X),
+\fB\%curs_addstr\fP(3X),
+\fB\%curs_attr\fP(3X),
+\fB\%curs_clear\fP(3X),
+\fB\%curs_inch\fP(3X),
+\fB\%curs_outopts\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%putchar\fP(3)
index aba4c1317efbc01ef4f95ee4c0a52584232bbcc8..25d322aff0be48eed09699dca2a7b56bc3e6125c 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2012,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_addchstr.3x,v 1.25 2022/02/12 20:07:29 tom Exp $
-.TH curs_addchstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_addchstr.3x,v 1.45 2024/04/20 21:20:07 tom Exp $
+.TH curs_addchstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBaddchstr\fP,
-\fBaddchnstr\fP,
-\fBwaddchstr\fP,
-\fBwaddchnstr\fP,
-\fBmvaddchstr\fP,
-\fBmvaddchnstr\fP,
-\fBmvwaddchstr\fP,
-\fBmvwaddchnstr\fP \- add a string of characters (and attributes) to a \fBcurses\fP window
-.ad
-.hy
+\fB\%addchstr\fP,
+\fB\%addchnstr\fP,
+\fB\%waddchstr\fP,
+\fB\%waddchnstr\fP,
+\fB\%mvaddchstr\fP,
+\fB\%mvaddchnstr\fP,
+\fB\%mvwaddchstr\fP,
+\fB\%mvwaddchnstr\fP \-
+add a \fIcurses\fR character string to a window
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h>\fP
+\fB#include <curses.h>
 .PP
-\fBint addchstr(const chtype *\fIchstr\fB);\fR
-.br
-\fBint addchnstr(const chtype *\fIchstr\fB, int \fIn\fB);\fR
-.br
-\fBint waddchstr(WINDOW *\fIwin\fB, const chtype *\fIchstr\fB);\fR
-.br
-\fBint waddchnstr(WINDOW *\fIwin\fB, const chtype *\fIchstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvaddchstr(int \fIy\fB, int \fIx\fB, const chtype *\fIchstr\fB);\fR
-.br
-\fBint mvaddchnstr(int \fIy\fB, int \fIx\fB, const chtype *\fIchstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwaddchstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const chtype *\fIchstr\fB);\fR
-.br
-\fBint mvwaddchnstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const chtype *\fIchstr\fB, int \fIn\fB);\fR
+\fBint addchstr(const chtype *\fIchstr\fP);
+\fBint waddchstr(WINDOW *\fIwin\fP, const chtype *\fIchstr\fP);
+\fBint mvaddchstr(int \fIy\fP, int \fIx\fP, const chtype *\fIchstr\fP);
+\fBint mvwaddchstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const chtype *\fIchstr\fP);
+.PP
+\fBint addchnstr(const chtype *\fIchstr\fP, int \fIn\fP);
+\fBint waddchnstr(WINDOW *\fIwin\fP, const chtype *\fIchstr\fP, int \fIn\fP);
+\fBint mvaddchnstr(int \fIy\fP, int \fIx\fP, const chtype *\fIchstr\fP, int \fIn\fP);
+\fBint mvwaddchnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const chtype *\fIchstr\fP, int \fIn\fP);
 .fi
 .SH DESCRIPTION
 These functions copy the (null-terminated)
 \fIchstr\fP array
 into the window image structure
 starting at the current cursor position.
+.PP
 The four functions with \fIn\fP as the last
 argument copy at most \fIn\fP elements,
 but no more than will fit on the line.
@@ -82,7 +81,7 @@ If \fBn\fP=\fB\-1\fP then the whole array is copied,
 to the maximum number of characters that will fit on the line.
 .PP
 The window cursor is \fInot\fP advanced.
-These functions work faster than \fBwaddnstr\fP.
+These functions are faster than \fBwaddnstr\fP.
 On the other hand:
 .bP
 they do not perform checking
@@ -97,21 +96,28 @@ rather than wrapping it around to the new line.
 .SH RETURN VALUE
 All functions return the integer \fBERR\fP upon failure and \fBOK\fP on success.
 .PP
-X/Open does not define any error conditions.
+X/Open Curses does not specify any error conditions.
 This implementation returns an error
-if the window pointer is null.
+.bP
+if the \fIwin\fP parameter is null or
+.bP
+if the \fIwchstr\fP parameter is null.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
 All functions except \fBwaddchnstr\fP may be macros.
 .SH PORTABILITY
-These entry points are described in the XSI Curses standard, Issue 4.
+These functions are described in X/Open Curses, Issue 4.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_addstr\fP(3X).
+\fB\%curs_add_wchstr\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its wide-character configuration
+.RI ( \%ncursesw ).
 .PP
-Comparable functions in the wide-character (ncursesw) library are
-described in
-\fBcurs_add_wchstr\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_addch\fP(3X),
+\fB\%curs_addstr\fP(3X)
index 6820ce0c1357caca5fe22196e4c05677ce981fc4..1244001dbd958a248c3694bc8c8866df1568ee98 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2012,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_addstr.3x,v 1.26 2022/02/12 20:07:29 tom Exp $
-.TH curs_addstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_addstr.3x,v 1.45 2024/04/20 19:18:18 tom Exp $
+.TH curs_addstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBaddstr\fP,
-\fBaddnstr\fP,
-\fBwaddstr\fP,
-\fBwaddnstr\fP,
-\fBmvaddstr\fP,
-\fBmvaddnstr\fP,
-\fBmvwaddstr\fP,
-\fBmvwaddnstr\fP \- add a string of characters to a \fBcurses\fP window and advance cursor
-.ad
-.hy
+\fB\%addstr\fP,
+\fB\%addnstr\fP,
+\fB\%waddstr\fP,
+\fB\%waddnstr\fP,
+\fB\%mvaddstr\fP,
+\fB\%mvaddnstr\fP,
+\fB\%mvwaddstr\fP,
+\fB\%mvwaddnstr\fP \-
+add a string to a \fIcurses\fR window and advance the cursor
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h>\fP
+\fB#include <curses.h>
 .PP
-\fBint addstr(const char *\fIstr\fB);\fR
-.br
-\fBint addnstr(const char *\fIstr\fB, int \fIn\fB);\fR
-.br
-\fBint waddstr(WINDOW *\fIwin\fB, const char *\fIstr\fB);\fR
-.br
-\fBint waddnstr(WINDOW *\fIwin\fB, const char *\fIstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvaddstr(int \fIy\fB, int \fIx\fB, const char *\fIstr\fB);\fR
-.br
-\fBint mvaddnstr(int \fIy\fB, int \fIx\fB, const char *\fIstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwaddstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const char *\fIstr\fB);\fR
-.br
-\fBint mvwaddnstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const char *\fIstr, int \fIn\fB);\fR
+\fBint addstr(const char *\fIstr\fP);
+\fBint mvaddstr(int \fIy\fP, int \fIx\fP, const char *\fIstr\fP);
+\fBint mvwaddstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const char *\fIstr\fP);
+\fBint waddstr(WINDOW *\fIwin\fP, const char *\fIstr\fP);
+.PP
+\fBint addnstr(const char *\fIstr\fP, int \fIn\fP);
+\fBint mvaddnstr(int \fIy\fP, int \fIx\fP, const char *\fIstr\fP, int \fIn\fP);
+\fBint mvwaddnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const char *\fIstr\fP, int \fIn\fP);
+\fBint waddnstr(WINDOW *\fIwin\fP, const char *\fIstr\fP, int \fIn\fP);
 .fi
 .SH DESCRIPTION
-These functions write the (null-terminated) character string
-\fIstr\fP on the given window.
-It is similar to calling \fBwaddch\fP once for each byte in the string.
+.B waddstr
+writes the characters of the (null-terminated) string
+.I str
+to the window
+.IR win .
+Its process is similar to calling \fB\%waddch\fP(3X) for each
+.I char
+in
+.IR str .
+Control characters are processed as in \fB\%waddch\fP(3X).
 .PP
-The \fImv\fP functions perform cursor movement once, before writing any
-characters.
-Thereafter, the cursor is advanced as a side-effect of writing to the window.
+.B waddnstr
+writes at most
+.I n
+characters,
+or until a terminating null character occurs in
+.IR str .
+If
+.I n
+is \-1,
+.B
+.B waddnstr
+writes the entire string.
 .PP
-The four functions with \fIn\fP as the last argument
-write at most \fIn\fP bytes,
-or until a terminating null is reached.
-If \fIn\fP is \-1, then the entire string will be added.
+\fB\%ncurses\fP(3X) describes the variants of these functions.
 .SH RETURN VALUE
-All functions return the integer \fBERR\fP upon failure and \fBOK\fP on success.
+These functions return
+.B OK
+on success and
+.B ERR
+on failure.
 .PP
-X/Open does not define any error conditions.
-This implementation returns an error
+X/Open Curses does not specify any error conditions.
+.I \%ncurses
+returns an error
 .bP
-if the window pointer is null or
+if the window pointer is
+.BR NULL ,
 .bP
-if the string pointer is null or
+if the string pointer is
+.BR NULL ,
+or
 .bP
-if the corresponding calls to \fBwaddch\fP return an error.
-.PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
-If an error is returned by the \fBwmove\fP,
-no characters are added to the window.
+if an internal \fB\%waddch\fP(3X) call returns an error.
 .PP
-If an error is returned by \fBwaddch\fP
-(e.g.,
-because the window is not large enough,
-or an illegal byte sequence was detected)
-only part of the string may be added.
-Aside from that,
-there is a special case in \fBwaddch\fP where an error may be
-returned after successfully writing a character to the lower-right corner
-of a window when \fBscrollok\fP is disabled.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
 All of these functions except \fBwaddnstr\fP may be macros.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
+X/Open Curses,
+Issue 4 describes these functions.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_addch\fP(3X).
+\fB\%curs_addwstr\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its wide-character configuration
+.RI ( \%ncursesw ).
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_addch\fP(3X),
+\fB\%curs_addchstr\fP(3X)
index 7c3e041cd3bd12e3995ec953fbc00590ce902091..78d5788ebc22f9bb6d7546eef8a23197ebc2f099 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_addwstr.3x,v 1.18 2022/02/12 20:07:29 tom Exp $
-.TH curs_addwstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_addwstr.3x,v 1.37 2024/04/20 19:18:18 tom Exp $
+.TH curs_addwstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBaddwstr\fP,
-\fBaddnwstr\fP,
-\fBwaddwstr\fP,
-\fBwaddnwstr\fP,
-\fBmvaddwstr\fP,
-\fBmvaddnwstr\fP,
-\fBmvwaddwstr\fP,
-\fBmvwaddnwstr\fP \- add a string of wide characters to a \fBcurses\fP window and advance cursor
-.ad
-.hy
+\fB\%addwstr\fP,
+\fB\%addnwstr\fP,
+\fB\%waddwstr\fP,
+\fB\%waddnwstr\fP,
+\fB\%mvaddwstr\fP,
+\fB\%mvaddnwstr\fP,
+\fB\%mvwaddwstr\fP,
+\fB\%mvwaddnwstr\fP \-
+add a wide-character string to a \fIcurses\fR window and advance the cursor
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h>\fP
+\fB#include <curses.h>
 .PP
-\fBint addwstr(const wchar_t *\fIwstr\fB);\fR
-.br
-\fBint addnwstr(const wchar_t *\fIwstr\fB, int \fIn\fB);\fR
-.br
-\fBint waddwstr(WINDOW *\fIwin\fB, const wchar_t *\fIwstr\fB);\fR
-.br
-\fBint waddnwstr(WINDOW *\fIwin\fB, const wchar_t *\fIwstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvaddwstr(int \fIy\fB, int \fIx\fB, const wchar_t *\fIwstr\fB);\fR
-.br
-\fBint mvaddnwstr(int \fIy\fB, int \fIx\fB, const wchar_t *\fIwstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwaddwstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const wchar_t *\fIwstr\fB);\fR
-.br
-\fBint mvwaddnwstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const wchar_t *\fIwstr\fB, int \fIn\fB);\fR
+\fBint addwstr(const wchar_t *\fIwstr\fP);
+\fBint mvaddwstr(int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP);
+\fBint mvwaddwstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP);
+\fBint waddwstr(WINDOW *\fIwin\fP, const wchar_t *\fIwstr\fP);
+.PP
+\fBint addnwstr(const wchar_t *\fIwstr\fP, int \fIn\fP);
+\fBint mvaddnwstr(int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP, int \fIn\fP);
+\fBint mvwaddnwstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP, int \fIn\fP);
+\fBint waddnwstr(WINDOW *\fIwin\fP, const wchar_t *\fIwstr\fP, int \fIn\fP);
 .fi
 .SH DESCRIPTION
-These functions write the characters of the
-(null-terminated) \fBwchar_t\fP character string
-\fIwstr\fP on the given window.
-It is similar to constructing a \fBcchar_t\fP for each wchar_t in the string,
-then calling \fBwadd_wch\fP for the resulting \fBcchar_t\fP.
+.B waddwstr
+writes the characters of the (wide-null-terminated) wide-character
+string
+.I wstr
+to the window
+.IR win .
+Its process is similar to constructing a
+.I cchar_t
+for each
+.I wchar_t
+in
+.IR wstr ,
+then calling \fB\%wadd_wch\fP(3X) with the resulting
+.IR cchar_t .
+.bP
+Spacing and non-spacing characters in the string
+are processed one at a time,
+and
+.bP
+control characters are processed as in \fB\%wadd_wch\fP(3X).
 .PP
-The \fImv\fP functions perform cursor movement once, before writing any
-characters.
-Thereafter, the cursor is advanced as a side-effect of writing to the window.
+.B waddnwstr
+writes at most
+.I n
+wide characters,
+or until a terminating wide null character occurs in
+.IR wstr .
+If
+.I n
+is \-1,
+.B
+.B waddnwstr
+writes the entire wide string.
 .PP
-The four functions with \fIn\fP as the last argument
-write at most \fIn\fP \fBwchar_t\fP characters,
-or until a terminating null is reached.
-If \fIn\fP is \-1, then the entire string will be added.
+\fB\%ncurses\fP(3X) describes the variants of these functions.
 .SH RETURN VALUE
-All functions return the integer \fBERR\fP upon failure and \fBOK\fP on success.
+These functions return
+.B OK
+on success and
+.B ERR
+on failure.
 .PP
-X/Open does not define any error conditions.
-This implementation returns an error
+X/Open Curses does not specify any error conditions.
+.I \%ncurses
+returns an error
 .bP
-if the window pointer is null or
+if the window pointer is
+.BR NULL ,
 .bP
-if the string pointer is null or
+if the string pointer is
+.BR NULL ,
+or
 .bP
-if the corresponding calls to \fBwadd_wch\fP return an error.
+if an internal \fB\%wadd_wch\fP(3X) call returns an error.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-All of these functions except \fBwaddnwstr\fP may be macros.
+All of these functions except
+.B waddnwstr
+may be implemented as macros.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
+X/Open Curses,
+Issue 4 describes these functions.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_add_wch\fP(3X)
+\fB\%curs_addstr\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its non-wide-character configuration.
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_add_wch\fP(3X),
+\fB\%curs_add_wchstr\fP(3X)
index ac448b4ecc7dfddfbf684b0e1e86caabebdc4cda..37774602be8ca8e5f759d237e71140da7c999ca6 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_attr.3x,v 1.72 2022/04/16 19:18:32 tom Exp $
-.TH curs_attr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
+.\" $Id: curs_attr.3x,v 1.105 2024/04/27 17:54:42 tom Exp $
+.TH curs_attr 3X 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .\" ---------------------------------------------------------------------------
 .SH NAME
-.\" attr_get
-\fBattr_get\fP,
-\fBwattr_get\fP,
-\fBattr_set\fP,
-\fBwattr_set\fP,
-.\" .br
-\fBattr_off\fP,
-\fBwattr_off\fP,
-\fBattr_on\fP,
-\fBwattr_on\fP,
-.\" .br
-\fBattroff\fP,
-\fBwattroff\fP,
-\fBattron\fP,
-\fBwattron\fP,
-\fBattrset\fP,
-\fBwattrset\fP,
-.\" .br
-\fBchgat\fP,
-\fBwchgat\fP,
-\fBmvchgat\fP,
-\fBmvwchgat\fP,
-.\" .br
-\fBcolor_set\fP,
-\fBwcolor_set\fP,
-.\" .br
-\fBstandend\fP,
-\fBwstandend\fP,
-\fBstandout\fP,
-\fBwstandout\fP \- \fBcurses\fP character and window attribute control routines
-.ad
-.hy
+\fB\%attr_get\fP,
+\fB\%wattr_get\fP,
+\fB\%attr_set\fP,
+\fB\%wattr_set\fP,
+\fB\%attr_off\fP,
+\fB\%wattr_off\fP,
+\fB\%attr_on\fP,
+\fB\%wattr_on\fP,
+\fB\%attroff\fP,
+\fB\%wattroff\fP,
+\fB\%attron\fP,
+\fB\%wattron\fP,
+\fB\%attrset\fP,
+\fB\%wattrset\fP,
+\fB\%chgat\fP,
+\fB\%wchgat\fP,
+\fB\%mvchgat\fP,
+\fB\%mvwchgat\fP,
+\fB\%color_set\fP,
+\fB\%wcolor_set\fP,
+\fB\%standend\fP,
+\fB\%wstandend\fP,
+\fB\%standout\fP,
+\fB\%wstandout\fP \-
+manipulate attributes of character cells in \fIcurses\fR windows
 .\" ---------------------------------------------------------------------------
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint attr_get(attr_t *\fIattrs\fB, short *\fIpair\fB, void *\fIopts\fB);\fR
-.br
-\fBint wattr_get(WINDOW *\fIwin\fB, attr_t *\fIattrs\fB, short *\fIpair\fB,\fR \fBvoid *\fIopts\fB);\fR
-.br
-\fBint attr_set(attr_t \fIattrs\fB, short \fIpair\fB, void *\fIopts\fB);\fR
-.br
-\fBint wattr_set(WINDOW *\fIwin\fB, attr_t \fIattrs\fB, short \fIpair\fB, void *\fIopts\fB);\fR
-.sp
-\fBint attr_off(attr_t \fIattrs\fB, void *\fIopts\fB);\fR
-.br
-\fBint wattr_off(WINDOW *\fIwin\fB, attr_t \fIattrs\fB, void *\fIopts\fB);\fR
-.br
-\fBint attr_on(attr_t \fIattrs\fB, void *\fIopts\fB);\fR
-.br
-\fBint wattr_on(WINDOW *\fIwin\fB, attr_t \fIattrs\fB, void *\fIopts\fB);\fR
-.sp
-\fBint attroff(int \fIattrs);\fR
-.br
-\fBint wattroff(WINDOW *\fIwin\fB, int \fIattrs\fB);\fR
-.br
-\fBint attron(int \fIattrs\fB);\fR
-.br
-\fBint wattron(WINDOW *\fIwin\fB, int \fIattrs\fB);\fR
-.br
-\fBint attrset(int \fIattrs\fB);\fR
-.br
-\fBint wattrset(WINDOW *\fIwin\fB, int \fIattrs\fB);\fR
-.sp
-\fBint chgat(int \fIn\fB, attr_t \fIattr\fB, short \fIpair\fB,\fR \fBconst void *\fIopts\fB);\fR
-.br
-\fBint wchgat(WINDOW *\fIwin\fB,\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint attr_get(attr_t *\fIattrs\fP, short *\fIpair\fP, void *\fIopts\fP);
+\fBint wattr_get(WINDOW *\fIwin\fP, attr_t *\fIattrs\fP, short *\fIpair\fP,\fR \fPvoid *\fIopts\fP);
+\fBint attr_set(attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP);
+\fBint wattr_set(WINDOW *\fIwin\fP, attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP);
+.PP
+\fBint attr_off(attr_t \fIattrs\fP, void *\fIopts\fP);
+\fBint wattr_off(WINDOW *\fIwin\fP, attr_t \fIattrs\fP, void *\fIopts\fP);
+\fBint attr_on(attr_t \fIattrs\fP, void *\fIopts\fP);
+\fBint wattr_on(WINDOW *\fIwin\fP, attr_t \fIattrs\fP, void *\fIopts\fP);
+.PP
+\fBint attroff(int \fIattrs\fP);
+\fBint wattroff(WINDOW *\fIwin\fP, int \fIattrs\fP);
+\fBint attron(int \fIattrs\fP);
+\fBint wattron(WINDOW *\fIwin\fP, int \fIattrs\fP);
+\fBint attrset(int \fIattrs\fP);
+\fBint wattrset(WINDOW *\fIwin\fP, int \fIattrs\fP);
+.PP
+\fBint chgat(int \fIn\fP, attr_t \fIattr\fP, short \fIpair\fP,\fR \fPconst void *\fIopts\fP);
+\fBint wchgat(WINDOW *\fIwin\fP,
       \fBint \fIn\fB, attr_t \fIattr\fB,\fR \fBshort \fIpair\fB, const void *\fIopts\fB);\fR
-.br
 \fBint mvchgat(int \fIy\fB, int \fIx\fB,\fR
-      \fBint \fIn\fB, attr_t \fIattr\fB,\fR \fBshort \fIpair\fB, const void *\fIopts\fB);\fR
-.br
-\fBint mvwchgat(WINDOW *\fIwin, int \fIy, int \fIx\fB,\fR
-      \fBint \fIn,\fR \fBattr_t \fIattr\fB, short \fIpair\fB, const void *\fIopts\fB);\fR
-.sp
+      \fBint \fIn\fB, attr_t \fIattr\fB, short \fIpair\fB, const void *\fIopts\fB);\fR
+\fBint mvwchgat(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB,\fR
+      \fBint \fIn\fB, attr_t \fIattr\fB, short \fIpair\fB, const void *\fIopts\fB);\fR
+.PP
 \fBint color_set(short \fIpair\fB, void* \fIopts\fB);\fR
-.br
-\fBint wcolor_set(WINDOW *\fIwin\fB, short \fIpair\fB,\fR \fBvoid* \fIopts);\fR
-.sp
+\fBint wcolor_set(WINDOW *\fIwin\fB, short \fIpair\fB,\fR \fBvoid* \fIopts\fP);\fR
+.PP
 \fBint standend(void);\fP
-.br
 \fBint wstandend(WINDOW *\fIwin\fB);\fR
-.br
 \fBint standout(void);\fP
-.br
 \fBint wstandout(WINDOW *\fIwin\fB);\fR
+.fi
 .\" ---------------------------------------------------------------------------
 .SH DESCRIPTION
-.PP
 These routines manipulate the current attributes of the named window,
 which then apply to all characters that are written into
 the window with \fBwaddch\fP, \fBwaddstr\fP and \fBwprintw\fP.
@@ -159,13 +126,8 @@ These routines do not affect the attributes used
 when erasing portions of the window.
 See \fBcurs_bkgd\fP(3X) for functions which modify the attributes used for
 erasing and clearing.
-.PP
-Routines which do not have a \fBWINDOW*\fP parameter apply to \fBstdscr\fP.
-For example,
-\fBattr_set\fP is the \fBstdscr\fP variant of \fBwattr_set\fP.
 .\" ---------------------------------------------------------------------------
-.SS Window attributes
-.PP
+.SS "Window Attributes"
 There are two sets of functions:
 .bP
 functions for manipulating the window attributes and color:
@@ -186,7 +148,7 @@ Use \fBattr_off\fP and \fBwattr_off\fP to turn off window attributes,
 again values OR'd together in \fIattr\fP,
 without affecting other attributes.
 .\" ---------------------------------------------------------------------------
-.SS Legacy window attributes
+.SS "Legacy Window Attributes"
 The X/Open window attribute routines which \fIset\fP or \fIget\fP,
 turn \fIon\fP or \fIoff\fP
 are extensions of older routines
@@ -204,14 +166,18 @@ the attribute parameter.
 For example,
 as long as that value fits into the \fBA_COLOR\fP mask,
 then these calls produce similar results:
-.NS
+.PP
+.RS 4
+.EX
 attrset(A_BOLD | COLOR_PAIR(\fIpair\fP));
 attr_set(A_BOLD, \fIpair\fP, NULL);
-.NE
+.EE
+.RE
 .PP
 However, if the value does not fit, then the \fBCOLOR_PAIR\fP macro
 uses only the bits that fit.
-For example, because in ncurses \fBA_COLOR\fP has eight (8) bits,
+For example,
+because in \fI\%ncurses\fP \fBA_COLOR\fP has eight (8) bits,
 then \fBCOLOR_PAIR(\fI259\fB)\fR is 4
 (i.e., 259 is 4 more than the limit 255).
 .PP
@@ -219,10 +185,13 @@ The \fBPAIR_NUMBER\fP macro extracts a pair number from an \fBint\fP
 (or \fBchtype\fP).
 For example, the \fIinput\fP and \fIoutput\fP values in these statements
 would be the same:
-.NS
+.PP
+.RS 4
+.EX
 int value = A_BOLD | COLOR_PAIR(\fIinput\fP);
 int \fIoutput\fP = PAIR_NUMBER(value);
-.NE
+.EE
+.RE
 .PP
 The \fBattrset\fP routine is a legacy feature predating SVr4 curses
 but kept in X/Open Curses for the same reason that SVr4 curses kept it:
@@ -232,11 +201,12 @@ The remaining \fBattr\fP* functions operate exactly like the corresponding
 \fBattr_\fP* functions, except that they take arguments of type \fBint\fP
 rather than \fBattr_t\fP.
 .PP
-There is no corresponding \fBattrget\fP function as such in X/Open Curses,
-although ncurses provides \fBgetattrs\fP (see curs_legacy(3X)).
+There is no corresponding \fB\%attrget\fP function as such
+in X/Open Curses,
+although \fI\%ncurses\fP provides \fB\%getattrs\fP
+(see \fB\%curs_legacy\fP(3X)).
 .\" ---------------------------------------------------------------------------
-.SS Change character rendition
-.PP
+.SS "Change Character Rendition"
 The routine \fBchgat\fP changes the attributes of a given number of characters
 starting at the current cursor location of \fBstdscr\fP.
 It does not update
@@ -248,69 +218,74 @@ The \fBwchgat\fP function generalizes this to any window;
 the \fBmvwchgat\fP function does a cursor move before acting.
 .PP
 In these functions,
-the color \fIpair\fP argument is a color-pair index
+the color \fIpair\fP argument is a color pair index
 (as in the first argument of \fBinit_pair\fP, see \fBcurs_color\fP(3X)).
 .\" ---------------------------------------------------------------------------
-.SS Change window color
+.SS "Change Window Color"
 The routine \fBcolor_set\fP sets the current color of the given window to the
 foreground/background combination described by the color \fIpair\fP parameter.
 .\" ---------------------------------------------------------------------------
 .SS Standout
-.PP
 The routine \fBstandout\fP is
 the same as \fBattron(A_STANDOUT)\fP.
 The routine \fBstandend\fP is the same
 as \fBattrset(A_NORMAL)\fP or \fBattrset(0)\fP, that is, it turns off all
 attributes.
 .PP
-X/Open does not mark these \*(``restricted\*('', because
+X/Open Curses does not mark these \*(``restricted\*('', because
 .bP
 they have well established legacy use, and
 .bP
 there is no ambiguity about the way the attributes
 might be combined with a color pair.
 .\" ---------------------------------------------------------------------------
-.SH VIDEO ATTRIBUTES
+.SS "Video Attributes"
 The following video attributes, defined in \fB<curses.h>\fP, can be passed to
 the routines \fBattron\fP, \fBattroff\fP, and \fBattrset\fP, or OR'd with the
 characters passed to \fBaddch\fP (see \fBcurs_addch\fP(3X)).
 .PP
+.ne 15
 .RS
 .TS
-l l
-_ _ _
-l l .
-\fBName\fP     \fBDescription\fP
-\fBA_NORMAL\fP Normal display (no highlight)
-\fBA_STANDOUT\fP       Best highlighting mode of the terminal.
-\fBA_UNDERLINE\fP      Underlining
-\fBA_REVERSE\fP        Reverse video
-\fBA_BLINK\fP  Blinking
-\fBA_DIM\fP    Half bright
-\fBA_BOLD\fP   Extra bright or bold
-\fBA_PROTECT\fP        Protected mode
-\fBA_INVIS\fP  Invisible or blank mode
-\fBA_ALTCHARSET\fP     Alternate character set
-\fBA_ITALIC\fP Italics (non-X/Open extension)
-\fBA_CHARTEXT\fP       Bit-mask to extract a character
-\fBA_COLOR\fP  Bit-mask to extract a color (legacy routines)
+Lb Lb
+Lb Lx.
+Name   Description
+_
+A_NORMAL       Normal display (no highlight)
+A_STANDOUT     T{
+Best highlighting mode of the terminal
+T}
+A_UNDERLINE    Underlining
+A_REVERSE      Reverse video
+A_BLINK        Blinking
+A_DIM  Half bright
+A_BOLD Extra bright or bold
+A_PROTECT      Protected mode
+A_INVIS        Invisible or blank mode
+A_ALTCHARSET   Alternate character set
+A_ITALIC       Italics (non-X/Open extension)
+A_CHARTEXT     Bit-mask to extract a character
+A_COLOR        T{
+Bit-mask to extract a color (legacy routines)
+T}
 .TE
 .RE
 .PP
 These video attributes are supported by \fBattr_on\fP and related functions
 (which also support the attributes recognized by \fBattron\fP, etc.):
+.PP
 .RS
 .TS
-l l
-_ _ _
-l l .
-\fBName\fP     \fBDescription\fP
-\fBWA_HORIZONTAL\fP    Horizontal highlight
-\fBWA_LEFT\fP  Left highlight
-\fBWA_LOW\fP   Low highlight
-\fBWA_RIGHT\fP Right highlight
-\fBWA_TOP\fP   Top highlight
-\fBWA_VERTICAL\fP      Vertical highlight
+Lb Lb
+Lb Lx.
+Name   Description
+_
+WA_HORIZONTAL  Horizontal highlight
+WA_LEFT        Left highlight
+WA_LOW Low highlight
+WA_RIGHT       Right highlight
+WA_TOP Top highlight
+WA_VERTICAL    Vertical highlight
 .TE
 .RE
 .PP
@@ -318,6 +293,27 @@ The return values of many of these routines are not meaningful (they are
 implemented as macro-expanded assignments and simply return their argument).
 The SVr4 manual page claims (falsely) that these routines always return \fB1\fP.
 .\" ---------------------------------------------------------------------------
+.SH RETURN VALUE
+All routines return the integer \fBOK\fP on success, or \fBERR\fP on failure.
+.PP
+X/Open Curses does not specify any error conditions.
+.PP
+This implementation
+.bP
+returns an error if the window pointer is null.
+.bP
+returns an error if the color pair parameter
+for \fBwcolor_set\fP is outside the range 0..COLOR_PAIRS\-1.
+.bP
+does not return an error if either of the parameters of \fBwattr_get\fP
+used for retrieving attribute or color pair values is \fBNULL\fP.
+.PP
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
+.\" ---------------------------------------------------------------------------
 .SH NOTES
 These functions may be macros:
 .sp
@@ -330,9 +326,133 @@ Color pair values can only be OR'd with attributes if the pair
 number is less than 256.
 The alternate functions such as \fBcolor_set\fP can pass a color pair
 value directly.
-However, ncurses ABI 4 and 5 simply OR this value
+However, \fI\%ncurses\fP ABI 4 and 5 simply OR this value
 within the alternate functions.
-You must use ncurses ABI 6 to support more than 256 color pairs.
+You must use \fI\%ncurses\fP ABI 6 to support more than 256 color pairs.
+.\" ---------------------------------------------------------------------------
+.SH EXTENSIONS
+This implementation provides the \fBA_ITALIC\fP attribute for terminals
+which have the \fBenter_italics_mode\fP (\fBsitm\fP)
+and \fBexit_italics_mode\fP (\fBritm\fP) capabilities.
+Italics are not mentioned in X/Open Curses.
+Unlike the other video attributes, \fBA_ITALIC\fP is unrelated
+to the \fBset_attributes\fP capabilities.
+This implementation makes the assumption that
+\fBexit_attribute_mode\fP may also reset italics.
+.PP
+Each of the functions added by XSI Curses has a parameter \fIopts\fP,
+which X/Open Curses still (after more than twenty years) documents
+as reserved for future use, saying that it should be \fBNULL\fP.
+This implementation uses that parameter in ABI 6 for the functions which
+have a color pair parameter to support \fIextended color pairs\fP:
+.bP
+For functions which modify the color, e.g.,
+\fBwattr_set\fP and \fBwattr_on\fP,
+if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
+and used to set the color pair instead of the \fBshort\fP \fIpair\fP parameter.
+.bP
+For functions which retrieve the color, e.g.,
+\fBwattr_get\fP,
+if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
+and used to retrieve the color pair as an \fBint\fP value,
+in addition to
+retrieving it via the standard pointer to \fBshort\fP parameter.
+.bP
+For functions which turn attributes off, e.g.,
+\fBwattr_off\fP,
+the \fIopts\fP parameter is ignored except
+except to check that it is \fBNULL\fP.
+.\" ---------------------------------------------------------------------------
+.SH PORTABILITY
+These functions are described in X/Open Curses, Issue 4.
+The standard defined the dedicated type for highlights,
+\fBattr_t\fP, which was not defined in SVr4 curses.
+The functions taking \fBattr_t\fP arguments were not supported under SVr4.
+.PP
+Very old versions of this library did not force an update of the screen
+when changing the attributes.
+Use \fBtouchwin\fP to force the screen to match the updated attributes.
+.PP
+X/Open Curses states that whether the traditional functions
+\fBattron\fP/\fBattroff\fP/\fBattrset\fP can manipulate attributes other than
+\fBA_BLINK\fP, \fBA_BOLD\fP, \fBA_DIM\fP, \fBA_REVERSE\fP, \fBA_STANDOUT\fP, or
+\fBA_UNDERLINE\fP is \*(``unspecified\*(''.
+Under this implementation as well as
+SVr4 curses, these functions correctly manipulate all other highlights
+(specifically, \fBA_ALTCHARSET\fP, \fBA_PROTECT\fP, and \fBA_INVIS\fP).
+.PP
+X/Open Curses added these entry points:
+.sp
+.RS
+\fBattr_get\fP, \fBattr_on\fP,
+\fBattr_off\fP, \fBattr_set\fP, \fBwattr_on\fP, \fBwattr_off\fP,
+\fBwattr_get\fP, \fBwattr_set\fP
+.RE
+.PP
+The new functions are intended to work with
+a new series of highlight macros prefixed with \fBWA_\fP.
+The older macros have direct counterparts in the newer set of names:
+.PP
+.RS
+.ne 9
+.TS
+Lb Lb
+Lb Lx.
+Name   Description
+_
+WA_NORMAL      Normal display (no highlight)
+WA_STANDOUT    T{
+Best highlighting mode of the terminal
+T}
+WA_UNDERLINE   Underlining
+WA_REVERSE     Reverse video
+WA_BLINK       Blinking
+WA_DIM Half bright
+WA_BOLD        Extra bright or bold
+WA_ALTCHARSET  Alternate character set
+.TE
+.RE
+.PP
+X/Open Curses does not assign values to these symbols,
+nor does it state whether or not they are related to the
+similarly-named A_NORMAL, etc.:
+.bP
+X/Open Curses specifies that each pair of corresponding \fBA_\fP
+and \fBWA_\fP-using functions operates on the same current-highlight
+information.
+.bP
+However, in some implementations, those symbols have unrelated values.
+.IP
+For example, the Solaris \fIxpg4\fP (X/Open) curses declares
+\fBattr_t\fP to be an unsigned short integer (16-bits),
+while \fBchtype\fP is a unsigned integer (32-bits).
+The \fBWA_\fP symbols in this case are different from the \fBA_\fP symbols
+because they are used for a smaller datatype which does not
+represent \fBA_CHARTEXT\fP or \fBA_COLOR\fP.
+.IP
+In this implementation (as in many others), the values happen to be
+the same because it simplifies copying information between
+\fBchtype\fP and \fBcchar_t\fP variables.
+.bP
+Because \fI\%ncurses\fP's \fBattr_t\fP can hold a color pair
+(in the \fBA_COLOR\fP field),
+a call to
+\fBwattr_on\fP,
+\fBwattr_off\fP, or
+\fBwattr_set\fP
+may alter the window's color.
+If the color pair information in the attribute parameter is zero,
+no change is made to the window's color.
+.IP
+This is consistent with SVr4 curses;
+X/Open Curses does not specify this.
+.PP
+The X/Open Curses extended conformance level adds new highlights
+\fBA_HORIZONTAL\fP, \fBA_LEFT\fP, \fBA_LOW\fP, \fBA_RIGHT\fP, \fBA_TOP\fP,
+\fBA_VERTICAL\fP (and corresponding \fBWA_\fP macros for each).
+As of August 2013,
+no known terminal provides these highlights
+(i.e., via the \fBsgr1\fP capability).
 .\" ---------------------------------------------------------------------------
 .SH HISTORY
 X/Open Curses is largely based on SVr4 curses,
@@ -391,25 +511,26 @@ the format and size of the defined constants
 as well as clues such as the alternate character set implementation.
 A 32-bit library can be used on a 64-bit system,
 but not necessarily the reverse.
-.RS
+.PP
 .TS
-l l l l l l
-_ _ _ _ _ _
-l l l l l l .
-\fBYear\fP     \fBSystem\fP    \fBArch\fP      \fBColor\fP     \fBChar\fP      \fBNotes\fP
-1992   Solaris 5.2     32      6       17      SVr4 curses
-1992   HPUX 9  32      no      8       SVr2 curses
-1992   AIX 3.2 32      no      23      SVr2 curses
-1994   OSF/1 r3        32      no      23      SVr2 curses
-1995   HP-UX 10.00     32      6       16      SVr3 \*(``curses_colr\*(''
-1995   HP-UX 10.00     32      6       8       SVr4, X/Open curses
-1995   Solaris 5.4     32/64   7       16      X/Open curses
-1996   AIX 4.2 32      7       16      X/Open curses
-1996   OSF/1 r4        32      6       16      X/Open curses
-1997   HP-UX 11.00     32      6       8       X/Open curses
-2000   U/Win   32/64   7/31    16      uses \fBchtype\fP
+Lb  Lb Lb  Cb  S   Lb
+Lb2 Lb Lb2 Lb2 Lb2 Lb
+L   L  L   L   L   Lx.
+\&     \&      \&      Bits    \&
+Year   System  Arch    Color   Char    Notes
+_
+1992   Solaris 5.2     32      6       17      SVr4 \fIcurses\fP
+1992   HP-UX 9 32      no      8       SVr2 \fIcurses\fP
+1992   AIX 3.2 32      no      23      SVr2 \fIcurses\fP
+1994   OSF/1 r3        32      no      23      SVr2 \fIcurses\fP
+1995   HP-UX 10.00     32      6       16      SVr3 \fIcurses_colr\fP
+1995   HP-UX 10.00     32      6       8       SVr4, X/Open \fIcurses\fP
+1995   Solaris 5.4     32/64   7       16      X/Open \fIcurses\fP
+1996   AIX 4.2 32      7       16      X/Open \fIcurses\fP
+1996   OSF/1 r4        32      6       16      X/Open \fIcurses\fP
+1997   HP-UX 11.00     32      6       8       X/Open \fIcurses\fP
+2000   U/Win   32/64   7/31    16      uses \fIchtype\fP
 .TE
-.RE
 .PP
 Notes:
 .RS 3
@@ -424,8 +545,9 @@ That version of curses was dropped with HP-UX 11.30 in 2006.
 Regarding OSF/1 (and Tru64),
 .bP
 These used 64-bit hardware.
-Like ncurses, the OSF/1 curses interface is not customized for 32-bit
-and 64-bit versions.
+Like \fI\%ncurses\fP,
+the OSF/1 curses interface is not customized for 32-bit and 64-bit
+versions.
 .bP
 Unlike other systems which evolved from AT&T code,
 OSF/1 provided a new implementation for X/Open curses.
@@ -462,157 +584,15 @@ BSD curses was improved slightly in 1993/1994 using Keith Bostic's
 modification to make the library 8-bit clean for \fBnvi\fP(1).
 He moved \fIstandout\fP attribute to a structure member.
 .IP
-The resulting 4.4BSD curses was replaced by ncurses over the next ten years.
+The resulting 4.4BSD curses was replaced by \fI\%ncurses\fP over the
+next ten years.
 .bP
 U/Win is rarely used now.
 .\" ---------------------------------------------------------------------------
-.SH EXTENSIONS
-.PP
-This implementation provides the \fBA_ITALIC\fP attribute for terminals
-which have the \fBenter_italics_mode\fP (\fBsitm\fP)
-and \fBexit_italics_mode\fP (\fBritm\fP) capabilities.
-Italics are not mentioned in X/Open Curses.
-Unlike the other video attributes, \fBA_ITALIC\fP is unrelated
-to the \fBset_attributes\fP capabilities.
-This implementation makes the assumption that
-\fBexit_attribute_mode\fP may also reset italics.
-.PP
-Each of the functions added by XSI Curses has a parameter \fIopts\fP,
-which X/Open Curses still (after more than twenty years) documents
-as reserved for future use, saying that it should be \fBNULL\fP.
-This implementation uses that parameter in ABI 6 for the functions which
-have a color-pair parameter to support \fIextended color pairs\fP:
-.bP
-For functions which modify the color, e.g.,
-\fBwattr_set\fP and \fBwattr_on\fP,
-if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
-and used to set the color pair instead of the \fBshort\fP \fIpair\fP parameter.
-.bP
-For functions which retrieve the color, e.g.,
-\fBwattr_get\fP,
-if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
-and used to retrieve the color pair as an \fBint\fP value,
-in addition to
-retrieving it via the standard pointer to \fBshort\fP parameter.
-.bP
-For functions which turn attributes off, e.g.,
-\fBwattr_off\fP,
-the \fIopts\fP parameter is ignored except
-except to check that it is \fBNULL\fP.
-.\" ---------------------------------------------------------------------------
-.SH PORTABILITY
-These functions are supported in the XSI Curses standard, Issue 4.
-The standard defined the dedicated type for highlights,
-\fBattr_t\fP, which was not defined in SVr4 curses.
-The functions taking \fBattr_t\fP arguments were not supported under SVr4.
-.PP
-Very old versions of this library did not force an update of the screen
-when changing the attributes.
-Use \fBtouchwin\fP to force the screen to match the updated attributes.
-.PP
-The XSI Curses standard states that whether the traditional functions
-\fBattron\fP/\fBattroff\fP/\fBattrset\fP can manipulate attributes other than
-\fBA_BLINK\fP, \fBA_BOLD\fP, \fBA_DIM\fP, \fBA_REVERSE\fP, \fBA_STANDOUT\fP, or
-\fBA_UNDERLINE\fP is \*(``unspecified\*(''.
-Under this implementation as well as
-SVr4 curses, these functions correctly manipulate all other highlights
-(specifically, \fBA_ALTCHARSET\fP, \fBA_PROTECT\fP, and \fBA_INVIS\fP).
-.PP
-XSI Curses added these entry points:
-.sp
-.RS
-\fBattr_get\fP, \fBattr_on\fP,
-\fBattr_off\fP, \fBattr_set\fP, \fBwattr_on\fP, \fBwattr_off\fP,
-\fBwattr_get\fP, \fBwattr_set\fP
-.RE
-.PP
-The new functions are intended to work with
-a new series of highlight macros prefixed with \fBWA_\fP.
-The older macros have direct counterparts in the newer set of names:
-.PP
-.RS
-.ne 9
-.TS
-l l
-_ _ _
-l l .
-\fBName\fP     \fBDescription\fP
-\fBWA_NORMAL\fP        Normal display (no highlight)
-\fBWA_STANDOUT\fP      Best highlighting mode of the terminal.
-\fBWA_UNDERLINE\fP     Underlining
-\fBWA_REVERSE\fP       Reverse video
-\fBWA_BLINK\fP Blinking
-\fBWA_DIM\fP   Half bright
-\fBWA_BOLD\fP  Extra bright or bold
-\fBWA_ALTCHARSET\fP    Alternate character set
-.TE
-.RE
-.PP
-XSI curses does not assign values to these symbols,
-nor does it state whether or not they are related to the
-similarly-named A_NORMAL, etc.:
-.bP
-The XSI curses standard specifies that each pair of corresponding \fBA_\fP
-and \fBWA_\fP-using functions operates on the same current-highlight
-information.
-.bP
-However, in some implementations, those symbols have unrelated values.
-.IP
-For example, the Solaris \fIxpg4\fP (X/Open) curses declares
-\fBattr_t\fP to be an unsigned short integer (16-bits),
-while \fBchtype\fP is a unsigned integer (32-bits).
-The \fBWA_\fP symbols in this case are different from the \fBA_\fP symbols
-because they are used for a smaller datatype which does not
-represent \fBA_CHARTEXT\fP or \fBA_COLOR\fP.
-.IP
-In this implementation (as in many others), the values happen to be
-the same because it simplifies copying information between
-\fBchtype\fP and \fBcchar_t\fP variables.
-.bP
-Because ncurses's \fBattr_t\fP can hold a color pair
-(in the \fBA_COLOR\fP field),
-a call to
-\fBwattr_on\fP,
-\fBwattr_off\fP, or
-\fBwattr_set\fP
-may alter the window's color.
-If the color pair information in the attribute parameter is zero,
-no change is made to the window's color.
-.IP
-This is consistent with SVr4 curses;
-X/Open Curses does not specify this.
-.PP
-The XSI standard extended conformance level adds new highlights
-\fBA_HORIZONTAL\fP, \fBA_LEFT\fP, \fBA_LOW\fP, \fBA_RIGHT\fP, \fBA_TOP\fP,
-\fBA_VERTICAL\fP (and corresponding \fBWA_\fP macros for each).
-As of August 2013,
-no known terminal provides these highlights
-(i.e., via the \fBsgr1\fP capability).
-.\" ---------------------------------------------------------------------------
-.SH RETURN VALUE
-All routines return the integer \fBOK\fP on success, or \fBERR\fP on failure.
-.PP
-X/Open does not define any error conditions.
-.PP
-This implementation
-.bP
-returns an error if the window pointer is null.
-.bP
-returns an error if the color pair parameter
-for \fBwcolor_set\fP is outside the range 0..COLOR_PAIRS\-1.
-.bP
-does not return an error if either of the parameters of \fBwattr_get\fP
-used for retrieving attribute or color-pair values is \fBNULL\fP.
-.PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
-.\" ---------------------------------------------------------------------------
 .SH SEE ALSO
-.na
-\fBcurses\fP(3X),
-\fBcurs_addch\fP(3X),
-\fBcurs_addstr\fP(3X),
-\fBcurs_bkgd\fP(3X),
-\fBcurs_printw\fP(3X),
-\fBcurs_variables\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_addch\fP(3X),
+\fB\%curs_addstr\fP(3X),
+\fB\%curs_bkgd\fP(3X),
+\fB\%curs_printw\fP(3X),
+\fB\%curs_variables\fP(3X)
index 4368045cae77a941d92f5c9f3c4366e3a3115f40..9806f42b3ad8d598aa5cd42d9f6bb3d14e0bcd94 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2005,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_beep.3x,v 1.16 2021/12/25 21:41:58 tom Exp $
-.TH curs_beep 3X ""
+.\" $Id: curs_beep.3x,v 1.29 2024/04/20 21:20:07 tom Exp $
+.TH curs_beep 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBbeep\fP, \fBflash\fP \- \fBcurses\fP bell and screen flash routines
+\fB\%beep\fP,
+\fB\%flash\fP \-
+ring the (visual) bell of the terminal with \fIcurses\fR
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
+.nf
+\fB#include <curses.h>
 .PP
-\fBint beep(void);\fP
-.br
-\fBint flash(void);\fP
-.br
+\fBint beep(void);
+\fBint flash(void);
+.fi
 .SH DESCRIPTION
 The \fBbeep\fP and \fBflash\fP routines are used to alert the terminal user.
 The routine \fBbeep\fP sounds an audible alarm on the terminal, if possible;
@@ -55,7 +57,7 @@ These routines return \fBOK\fP if they succeed in beeping or flashing,
 SVr4's beep and flash routines always returned \fBOK\fP, so it was not
 possible to tell when the beep or flash failed.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
+These functions are described in X/Open Curses, Issue 4.
 Like SVr4, it specifies that they always return \fBOK\fP.
 .SH SEE ALSO
-\fBcurses\fP(3X)
+\fB\%curses\fP(3X)
index f9199ce077bb6741303246b3c80482ee37b255bd..25ba1f9f72c8b2e5c99257a5090be8341af6f7f6 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_bkgd.3x,v 1.35 2022/06/25 21:55:45 tom Exp $
+.\" $Id: curs_bkgd.3x,v 1.61 2024/04/20 18:54:36 tom Exp $
+.TH curs_bkgd 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.TH curs_bkgd 3X ""
 .SH NAME
-\fBbkgdset\fP, \fBwbkgdset\fP,
-\fBbkgd\fP, \fBwbkgd\fP,
-\fBgetbkgd\fP \- \fBcurses\fP window background manipulation routines
+\fB\%bkgdset\fP,
+\fB\%wbkgdset\fP,
+\fB\%bkgd\fP,
+\fB\%wbkgd\fP,
+\fB\%getbkgd\fP \-
+manipulate background of a \fIcurses\fR window of characters
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.PP
-\fBvoid bkgdset(chtype \fIch\fB);\fR
-.br
-\fBvoid wbkgdset(WINDOW *\fIwin, chtype \fIch\fB);\fR
-.sp
-\fBint bkgd(chtype \fIch\fB);\fR
-.br
-\fBint wbkgd(WINDOW *\fIwin\fB, chtype \fIch\fB);\fR
-.sp
-\fBchtype getbkgd(WINDOW *\fIwin\fB);\fR
-.br
-.SH DESCRIPTION
-.SS bkgdset
-The \fBbkgdset\fP and \fBwbkgdset\fP routines
-set the \fIbackground\fP for a window.
-A window's background is a \fBchtype\fP consisting of
-any combination of attributes (i.e., rendition) and a character:
-.bP
-The attribute part of the background is combined (OR'ed) with all non-blank
-characters that are written into the window with \fBwaddch\fP.
-.bP
-Both the character and attribute parts of the background are combined with
-blank characters that are written into the window.
+.nf
+\fB#include <curses.h>
 .PP
-The background becomes a property of each
-character and moves with the character through any scrolling and
-insert/delete line/character operations.
+\fBint bkgd(chtype \fIch\fP);
+\fBint wbkgd(WINDOW *\fIwin\fP, chtype \fIch\fP);
 .PP
-To the extent possible on a particular terminal,
-the attribute part of the background is displayed
-as the graphic rendition of the character put on the screen.
-.SS bkgd
-.PP
-The \fBbkgd\fP and \fBwbkgd\fP functions
-set the background property of the current or specified window
-and then apply this setting to every character position in that window.
-According to X/Open Curses, it should do this:
+\fBvoid bkgdset(chtype \fIch\fP);
+\fBvoid wbkgdset(WINDOW *\fIwin\fP, chtype \fIch\fP);
 .PP
+\fBchtype getbkgd(WINDOW *\fIwin\fP);
+.fi
+.SH DESCRIPTION
+The
+.I background
+of a
+.I curses
+window
+(in the library's non-\*(``wide\*('' configuration)
+is a
+.I \%chtype
+combining a set of attributes
+(see \fB\%curs_attr\fP(3X))
+with a character called the
+.I "blank character."
+.PP
+The blank character is a spacing character that populates a window's
+character cells when their contents are erased without replacement.
+The background's attributes are combined with all non-blank characters
+written to the window,
+as with the \fB\%waddch\fP(3X) and \fB\%winsch\fP(3X) families of
+functions.
+.PP
+The blank character and attributes of the background combine with
+characters written to the window as described below.
+The background becomes a property of the character and moves with it
+through any scrolling and insert/delete line/character operations.
+.PP
+To the extent possible on a given terminal,
+the attribute part of the background is displayed as the graphic
+rendition of the character put on the screen.
+.SS "bkgd, wbkgd"
+\fB\%bkgd\fP and \fB\%wbkgd\fP set the background property of
+\fB\%stdscr\fP or the specified window and then apply this setting to
+every character cell in that window.
 .bP
-The rendition of every character on the screen is changed to
-the new background rendition.
+The rendition of every character in the window changes to the new
+background rendition.
 .bP
-Wherever the former background character
-appears, it is changed to the new background character.
-.PP
-Neither X/Open Curses nor the SVr4 manual pages give details about
-the way the rendition of characters on the screen is updated when
-\fBbkgd\fP or \fBwbkgd\fP is used to change the background character.
-.PP
-This implementation, like SVr4 curses, does not store the background
-and window attribute contributions to each cell separately.
-It updates the rendition by comparing the character, non-color attributes and
-colors contained in the background.
-For each cell in the window, whether or not it is blank:
+Wherever the former background character appears,
+it changes to the new background character.
+.PP
+.I \%ncurses
+updates the rendition of each character cell by comparing the character,
+non-color attributes,
+and colors.
+The library applies to following procedure to each cell in the window,
+whether or not it is blank.
 .bP
-The library first compares the \fIcharacter\fP,
-and if it matches the current character part of the background,
-it replaces that with the new background character.
-.IP
-When \fBbkgdset\fP is used to set the background character,
-that does not update each cell in the window.
-A subsequent call to \fBbkgd\fP will only modify the \fIcharacter\fP in
-cells which match the current background character.
+.I \%ncurses
+first compares the cell's character to the previously specified blank
+character;
+if they match,
+.I \%ncurses
+writes the new blank character to the cell.
 .bP
-The library then checks if the cell uses color,
-i.e., its color pair value is nonzero.
-If not, it simply replaces the attributes and color pair in the
-cell with those from the new background character.
+.I \%ncurses
+then checks if the cell uses color,
+that is,
+its color pair value is nonzero.
+If not,
+it simply replaces the attributes and color pair in the cell with those
+from the new background character.
 .bP
 If the cell uses color,
-and that matches the color in the current background,
-the library removes attributes
-which may have come from the current background
-and adds attributes from the new background.
-It finishes by setting the cell
-to use the color from the new background.
+and its background color matches that of the current window background,
+.I \%ncurses
+removes attributes that may have come from the current background and
+adds those from the new background.
+It finishes by setting the cell's background to use the new window
+background color.
 .bP
 If the cell uses color,
-and that does not match the color in the current background,
-the library updates only the non-color attributes,
-first removing those which may have come from the current background,
+and its background color does not match that of the current window
+background,
+.I \%ncurses
+updates only the non-color attributes,
+first removing those that may have come from the current background,
 and then adding attributes from the new background.
 .PP
-If the background's character value is zero (0), a space is assumed.
+.I \%ncurses
+treats a background character value of zero (0) as a blank character.
 .PP
 If the terminal does not support color,
-or if color has not been started with \fBstart_color\fP,
-the new background character's color attribute will be ignored.
+or if color has not been initialized with \fB\%start_color\fP(3X),
+.I \%ncurses
+ignores the new background character's color attribute.
+.SS "bkgdset, wbkgdset"
+\fB\%bkgdset\fP and \fB\%wbkgdset\fP manipulate the background of
+the applicable window,
+without updating the character cells as \fB\%bkgd\fP and
+\fB\%wbkgd\fP do;
+only future writes reflect the updated background.
 .SS getbkgd
-.PP
-The \fBgetbkgd\fP function returns the given window's current background
-character/attribute pair.
+\fB\%getbkgd\fP obtains the given window's background character and
+attribute combination.
 .SH RETURN VALUE
+Functions returning an \fIint\fP return \fBOK\fP on success.
+\fB\%bkgd\fP returns \fBERR\fP if the library has not been initialized.
+\fB\%wbkgd\fP and \fB\%getbkgd\fP return \fBERR\fP if a \fI\%WINDOW\fP
+pointer argument is null.
 .PP
-These functions are described in the XSI Curses standard, Issue 4.
-It specifies that \fBbkgd\fP and \fBwbkgd\fP return \fBERR\fP on failure,
-but gives no failure conditions.
-.PP
-The routines \fBbkgd\fP and \fBwbkgd\fP return the integer \fBOK\fP,
-unless the library has not been initialized.
+\fB\%bkgdset\fP and \fBwbkgdset\fP do not return a value.
 .PP
-In contrast,
-the SVr4.0 manual says \fBbkgd\fP and \fBwbkgd\fP may return \fBOK\fP
-"or a non-negative integer if \fBimmedok\fP is set",
-which refers to the return value from \fBwrefresh\fP
-(used to implement the immediate repainting).
-The SVr4 curses \fBwrefresh\fP returns the number of characters
-written to the screen during the refresh.
-This implementation does not do that.
+\fB\%getbkgd\fP returns a window's background character and attribute
+combination.
 .SH NOTES
+Unusually,
+there is no \fB\%wgetbkgd\fP function;
+\fB\%getbkgd\fP behaves as one would expect \fB\%wgetbkgd\fP to,
+accepting a \fI\%WINDOW\fP pointer argument.
 .PP
-Note that \fBbkgdset\fP and \fBbkgd\fP may be macros.
+\fB\%bkgd\fP and
+\fB\%bkgdset\fP
+may be implemented as macros.
 .PP
 X/Open Curses mentions that the character part of the background must
 be a single-byte value.
-This implementation, like SVr4, checks to ensure that,
+\fI\%ncurses\fP,
+like SVr4 \fIcurses\fP,
+checks to ensure that,
 and will reuse the old background character if the check fails.
 .SH PORTABILITY
-.PP
-These functions are described in the XSI Curses standard, Issue 4
-(X/Open Curses).
+X/Open Curses,
+Issue 4 describes these functions.
+It specifies that
+\fB\%bkgd\fP,
+\fB\%wbkgd\fP,
+and
+\fB\%getbkgd\fP
+return \fBERR\fP on failure
+(in the case of the last,
+this value is cast to
+.IR \%chtype ),
+but describes no failure conditions.
+.PP
+The SVr4.0 manual says that \fB\%bkgd\fP and \fB\%wbkgd\fP may return
+\fBOK\fP
+\*(``or a non-negative integer if \fB\%immedok\fP is set\*('',
+which refers to the return value from \fB\%wrefresh\fP(3X),
+used to implement the immediate repainting.
+SVr4 \fIcurses\fP's \fB\%wrefresh\fP returns the number of characters
+written to the screen during the refresh.
+\fI\%ncurses\fP does not do that.
+.PP
+Neither X/Open Curses nor the SVr4 manual pages detail how the rendition
+of characters on the screen updates when \fB\%bkgd\fP or \fB\%wbkgd\fP
+changes the background character.
+.IR \%ncurses ,
+like SVr4
+.IR curses ,
+does not
+(in its non-\*(``wide\*('' configuration)
+store the background and window attribute contributions to each
+character cell separately.
 .SH SEE ALSO
-.na
+\fB\%curs_bkgrnd\fP(3X) describes the corresponding functions in the
+\*(``wide\*('' configuration of
+.IR \%ncurses .
 .PP
-\fBcurses\fP(3X),
-\fBcurs_addch\fP(3X),
-\fBcurs_attr\fP(3X),
-\fBcurs_outopts\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_addch\fP(3X),
+\fB\%curs_attr\fP(3X)
index e64f9941894a365dd24dec685ff0e7f06477312f..2551924c11a31eafe598d6d60cf93231e6934d82 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_bkgrnd.3x,v 1.16 2022/06/25 21:57:59 tom Exp $
+.\" $Id: curs_bkgrnd.3x,v 1.42 2024/04/20 18:54:36 tom Exp $
+.TH curs_bkgrnd 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.TH curs_bkgrnd 3X ""
 .SH NAME
-\fBbkgrnd\fP,
-\fBwbkgrnd\fP,
-\fBbkgrndset\fP,
-\fBwbkgrndset\fP,
-\fBgetbkgrnd\fP,
-\fBwgetbkgrnd\fP \- \fBcurses\fP window complex background manipulation routines
+\fB\%bkgrnd\fP,
+\fB\%wbkgrnd\fP,
+\fB\%bkgrndset\fP,
+\fB\%wbkgrndset\fP,
+\fB\%getbkgrnd\fP,
+\fB\%wgetbkgrnd\fP \-
+manipulate background of a \fIcurses\fP window of wide characters
 .SH SYNOPSIS
+.nf
+\fB#include <curses.h>
 .PP
-.B #include <curses.h>
-.sp
-\fBint bkgrnd(\fB const cchar_t *\fIwch\fB);\fR
-.br
-\fBint wbkgrnd(\fB WINDOW *\fIwin\fB, const cchar_t *\fIwch\fB);\fR
-.sp
-\fBvoid bkgrndset(const cchar_t *\fIwch\fR \fB);\fR
-.br
-\fBvoid wbkgrndset(WINDOW *\fIwin\fB, const cchar_t *\fIwch\fB);\fR
-.sp
-\fBint getbkgrnd(cchar_t *\fIwch\fB);\fR
-.br
-\fBint wgetbkgrnd(WINDOW *\fIwin\fB, cchar_t *\fIwch\fB);\fR
-.br
+\fBint bkgrnd(const cchar_t *\fIwch\fP);
+\fBint wbkgrnd(WINDOW *\fIwin\fP, const cchar_t *\fIwch\fP);
+.PP
+\fBvoid bkgrndset(const cchar_t *\fIwch\fP);
+\fBvoid wbkgrndset(WINDOW *\fIwin\fP, const cchar_t *\fIwch\fP);
+.PP
+\fBint getbkgrnd(cchar_t *\fIwch\fP);
+\fBint wgetbkgrnd(WINDOW *\fIwin\fP, cchar_t *\fIwch\fP);
+.fi
 .SH DESCRIPTION
-.SS bkgrndset
+The
+.I background
+of a
+.I curses
+window
+(in the library's \*(``wide\*('' configuration)
+is a
+.I \%cchar_t
+combining a set of attributes
+(see \fB\%curs_attr\fP(3X))
+with a complex character called the
+.I "blank character."
 .PP
-The \fBbkgrndset\fP and \fBwbkgrndset\fP routines manipulate the
-background of the named window.
-The window background is a \fBcchar_t\fP consisting of
-any combination of attributes (i.e., rendition) and a complex character.
-.bP
-The attribute part of the background is combined (OR'ed) with all non-blank
-characters that are written into the window with \fBwaddch\fP.
-.bP
-Both
-the character and attribute parts of the background are combined with
-the blank characters.
+The blank character is a spacing character that populates a window's
+character cells when their contents are erased without replacement.
+The background's attributes are combined with all non-blank characters
+written to the window,
+as with the \fB\%wadd_wch\fP(3X) and \fB\%wins_wch\fP(3X) families of
+functions.
 .PP
-The background becomes a property of the
-character and moves with the character through any scrolling and
-insert/delete line/character operations.
+The blank character and attributes of the background combine with
+characters written to the window as described below.
+The background becomes a property of the character and moves with it
+through any scrolling and insert/delete line/character operations.
 .PP
-To the extent possible on a
-particular terminal, the attribute part of the background is displayed
-as the graphic rendition of the character put on the screen.
-.SS bkgrnd
+To the extent possible on a given terminal,
+the attribute part of the background is displayed as the graphic
+rendition of the character put on the screen.
+.SS "bkgrnd, wbkgrnd"
+\fB\%bkgrnd\fP and \fB\%wbkgrnd\fP set the background property of
+\fB\%stdscr\fP or the specified window and then apply this setting to
+every character cell in that window.
+.bP
+The rendition of every character in the window changes to the new
+background rendition.
+.bP
+Wherever the former background character appears,
+it changes to the new background character.
 .PP
-The \fBbkgrnd\fP and \fBwbkgrnd\fP functions
-set the background property of the current or specified window
-and then apply this setting to every character position in that window:
+.I \%ncurses
+updates the rendition of each character cell by comparing the character,
+non-color attributes,
+and colors.
+The library applies to following procedure to each cell in the window,
+whether or not it is blank.
+.bP
+.I \%ncurses
+first compares the cell's character to the previously specified blank
+character;
+if they match,
+.I \%ncurses
+writes the new blank character to the cell.
 .bP
-The rendition of every character on the screen is changed to
-the new background rendition.
+.I \%ncurses
+then checks if the cell uses color,
+that is,
+its color pair value is nonzero.
+If not,
+it simply replaces the attributes and color pair in the cell with those
+from the new background character.
 .bP
-Wherever the former background character
-appears, it is changed to the new background character.
-.SS getbkgrnd
+If the cell uses color,
+and its background color matches that of the current window background,
+.I \%ncurses
+removes attributes that may have come from the current background and
+adds those from the new background.
+It finishes by setting the cell's background to use the new window
+background color.
+.bP
+If the cell uses color,
+and its background color does not match that of the current window
+background,
+.I \%ncurses
+updates only the non-color attributes,
+first removing those that may have come from the current background,
+and then adding attributes from the new background.
 .PP
-The \fBgetbkgrnd\fP function returns the given window's current background
-character/attribute pair via the \fBwch\fP pointer.
-If the given window pointer is null,
-the character is not updated (but no error returned).
-.SH NOTES
-Note that
-\fBbkgrnd\fP,
-\fBbkgrndset\fP, and
-\fBgetbkgrnd\fP
-may be macros.
+.I \%ncurses
+treats a background character value of zero (0) as a blank character.
 .PP
-X/Open Curses does not provide details on how the rendition is changed.
-This implementation follows the approach used in SVr4 curses,
-which is explained in the manual page for \fBwbkgd\fP.
+If the terminal does not support color,
+or if color has not been initialized with \fB\%start_color\fP(3X),
+.I \%ncurses
+ignores the new background character's color attribute.
+.SS "bkgrndset, wbkgrndset"
+\fB\%bkgrndset\fP and \fB\%wbkgrndset\fP manipulate the background of
+the applicable window,
+without updating the character cells as \fB\%bkgrnd\fP and
+\fB\%wbkgrnd\fP do;
+only future writes reflect the updated background.
+.SS "getbkgrnd, wgetbkgrnd"
+The \fB\%getbkgrnd\fP and \fB\%wgetbkgrnd\fP functions obtain the
+background character and attribute pair of \fB\%stdscr\fP or the
+specified window and store it via the
+.I wch
+pointer.
 .SH RETURN VALUE
+\fBbkgrndset\fP and \fBwbkgrndset\fP do not return a value.
 .PP
-The \fBbkgrndset\fP and \fBwbkgrndset\fP routines do not return a value.
-.PP
-Upon successful completion, the other functions return \fBOK\fP.
-Otherwise, they return \fBERR\fP:
+The other functions return
+.B ERR
+upon failure and
+.B OK
+upon success.
+In
+.IR \%ncurses ,
+failure occurs if
 .bP
-A null window pointer is treated as an error.
+a
+.I \%WINDOW
+pointer
+.I win
+is null, or
 .bP
-A null character pointer is treated as an error.
+a
+.I \%cchar_t
+pointer
+.I wch
+is null.
+.SH NOTES
+\fB\%bkgrnd\fP,
+\fB\%bkgrndset\fP, and
+\fB\%getbkgrnd\fP
+may be implemented as macros.
+.PP
+Unlike their counterparts in the non-\*(``wide\*('' configuration of
+.IR \%ncurses ,
+\fB\%getbkgrnd\fP and \fB\%wgetbkgrnd\fP supply the background character
+and attribute in a modifiable
+.I \%cchar_t
+parameter,
+not as the return value.
 .SH PORTABILITY
+X/Open Curses,
+Issue 4 describes these functions.
+It specifies no error conditions for them.
 .PP
-These functions are described in the XSI Curses standard, Issue 4
-(X/Open Curses).
+X/Open Curses does not provide details of how the rendition is updated.
+This implementation follows the approach used in SVr4
+.IR curses .
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_bkgd\fP(3X)
+\fB\%curs_bkgd\fP(3X) describes the corresponding functions in the
+non-\*(``wide\*('' configuration of
+.IR \%ncurses .
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_add_wch\fP(3X),
+\fB\%curs_attr\fP(3X)
index 72683b02deae374e72dfb0e1c470c6a7acbf9090..2a5e72c141e25d21c25601ad9a3c49b6f4b69f9c 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2007,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_border.3x,v 1.30 2022/02/12 20:06:41 tom Exp $
-.TH curs_border 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.na
-.hy 0
+.\" $Id: curs_border.3x,v 1.49 2024/04/20 21:20:07 tom Exp $
+.TH curs_border 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBborder\fP,
-\fBwborder\fP,
-\fBbox\fP,
-\fBhline\fP,
-\fBwhline\fP,
-\fBvline\fP,
-\fBwvline\fP,
-\fBmvhline\fP,
-\fBmvwhline\fP,
-\fBmvvline\fP,
-\fBmvwvline\fP \- create \fBcurses\fP borders, horizontal and vertical lines
-.ad
-.hy
+\fB\%border\fP,
+\fB\%wborder\fP,
+\fB\%box\fP,
+\fB\%hline\fP,
+\fB\%whline\fP,
+\fB\%vline\fP,
+\fB\%wvline\fP,
+\fB\%mvhline\fP,
+\fB\%mvwhline\fP,
+\fB\%mvvline\fP,
+\fB\%mvwvline\fP \-
+draw borders and lines in a \fIcurses\fR window of characters
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint border(chtype \fIls\fB, chtype \fIrs\fB, chtype \fIts\fB, chtype \fIbs\fB,\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint border(chtype \fIls\fP, chtype \fIrs\fP, chtype \fIts\fP, chtype \fIbs\fP,
            \fBchtype \fItl\fB, chtype \fItr\fB, chtype \fIbl\fB, chtype \fIbr\fB);\fR
-.br
 \fBint wborder(WINDOW *\fIwin\fB, chtype \fIls\fB, chtype \fIrs\fB,\fR
             \fBchtype \fIts\fB, chtype \fIbs\fB, chtype \fItl\fB, chtype \fItr\fB,\fR
             \fBchtype \fIbl\fB, chtype \fIbr\fB);\fR
-.sp
+.PP
 \fBint box(WINDOW *\fIwin\fB, chtype \fIverch\fB, chtype \fIhorch\fB);\fR
-.sp
+.PP
 \fBint hline(chtype \fIch\fB, int \fIn\fB);\fR
-.br
 \fBint whline(WINDOW *\fIwin\fB, chtype \fIch\fB, int \fIn\fB);\fR
-.br
 \fBint vline(chtype \fIch\fB, int \fIn\fB);\fR
-.br
 \fBint wvline(WINDOW *\fIwin\fB, chtype \fIch\fB, int \fIn\fB);\fR
-.sp
+.PP
 \fBint mvhline(int \fIy\fB, int \fIx\fB, chtype \fIch\fB, int \fIn\fB);\fR
-.br
 \fBint mvwhline(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, chtype \fIch\fB, int \fIn\fB);\fR
-.br
 \fBint mvvline(int \fIy\fB, int \fIx\fB, chtype \fIch\fB, int \fIn\fB);\fR
-.br
 \fBint mvwvline(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, chtype \fIch\fB, int \fIn\fB);\fR
-.br
+.fi
 .SH DESCRIPTION
 The \fBborder\fP, \fBwborder\fP and \fBbox\fP routines
 draw a box around the edges of a window.
@@ -140,24 +137,26 @@ The line is at most \fIn\fP characters
 long, or as many as fit into the window.
 .SH RETURN VALUE
 All routines return the integer \fBOK\fP.
-The SVr4.0 manual says "or a
-non-negative integer if \fBimmedok\fP is set", but this appears to be an error.
+The SVr4.0 manual says
+\*(``or a non-negative integer if \fB\%immedok\fP is set\*('',
+but this appears to be an error.
 .PP
-X/Open does not define any error conditions.
+X/Open Curses does not specify any error conditions.
 This implementation returns an error
 if the window pointer is null.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
 The borders generated by these functions are \fIinside\fP borders (this
 is also true of SVr4 curses, though the fact is not documented).
 .PP
 Note that \fBborder\fP and \fBbox\fP may be macros.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
-The standard specifies that they return \fBERR\fP on failure,
-but specifies no error conditions.
+These functions are described in X/Open Curses, Issue 4.
 .SH SEE ALSO
-\fBcurses\fP(3X), \fBcurs_outopts\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_outopts\fP(3X)
index 9d79b25cd47bda7ee0cdb3bc29c592307f5c3130..3077da6b49f7d7885a255bcef7c471f86ffaafdb 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2011,2012 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_border_set.3x,v 1.16 2022/02/12 20:06:41 tom Exp $
-.TH curs_border_set 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.na
-.hy 0
+.\" $Id: curs_border_set.3x,v 1.36 2024/04/20 21:20:07 tom Exp $
+.TH curs_border_set 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBborder_set\fP,
-\fBwborder_set\fP,
-\fBbox_set\fP,
-\fBhline_set\fP,
-\fBwhline_set\fP,
-\fBmvhline_set\fP,
-\fBmvwhline_set\fP,
-\fBvline_set\fP,
-\fBwvline_set\fP,
-\fBmvvline_set\fP,
-\fBmvwvline_set\fP \- create \fBcurses\fP borders or lines using complex characters and renditions
-.ad
-.hy
+\fB\%border_set\fP,
+\fB\%wborder_set\fP,
+\fB\%box_set\fP,
+\fB\%hline_set\fP,
+\fB\%whline_set\fP,
+\fB\%mvhline_set\fP,
+\fB\%mvwhline_set\fP,
+\fB\%vline_set\fP,
+\fB\%wvline_set\fP,
+\fB\%mvvline_set\fP,
+\fB\%mvwvline_set\fP \-
+draw borders and lines in a \fIcurses\fR window of wide characters
 .SH SYNOPSIS
+.nf
+\fB#include <curses.h>
 .PP
-\fB#include <curses.h>\fP
-.sp
-\fBint border_set(\fP
-   \fBconst cchar_t *\fIls\fR, \fBconst cchar_t *\fIrs\fR,
-   \fBconst cchar_t *\fIts\fR, \fBconst cchar_t *\fIbs\fR,
-   \fBconst cchar_t *\fItl\fR, \fBconst cchar_t *\fItr\fR,
-   \fBconst cchar_t *\fIbl\fR, \fBconst cchar_t *\fIbr\fR
-\fB);\fP
+\fBint border_set(
+   \fBconst cchar_t *\fIls\fB, const cchar_t *\fIrs\fP,
+   \fBconst cchar_t *\fIts\fB, const cchar_t *\fIbs\fP,
+   \fBconst cchar_t *\fItl\fB, const cchar_t *\fItr\fP,
+   \fBconst cchar_t *\fIbl\fB, const cchar_t *\fIbr\fB);\fR
 .br
 \fBint wborder_set(\fP
-   \fBWINDOW *win\fP,
-   \fBconst cchar_t *\fIls\fR, \fBconst cchar_t *\fIrs\fR,
-   \fBconst cchar_t *\fIts\fR, \fBconst cchar_t *\fIbs\fR,
-   \fBconst cchar_t *\fItl\fR, \fBconst cchar_t *\fItr\fR,
-   \fBconst cchar_t *\fIbl\fR, \fBconst cchar_t *\fIbr\fB);\fR
-.br
+   \fBWINDOW *\fIwin\fP,
+   \fBconst cchar_t *\fIls\fB, const cchar_t *\fIrs\fP,
+   \fBconst cchar_t *\fIts\fB, const cchar_t *\fIbs\fP,
+   \fBconst cchar_t *\fItl\fB, const cchar_t *\fItr\fP,
+   \fBconst cchar_t *\fIbl\fB, const cchar_t *\fIbr\fB);\fR
 \fBint box_set(\fP
-   \fBWINDOW *win\fP,
-   \fBconst cchar_t *\fIverch\fR,
+   \fBWINDOW *\fIwin\fP,
+   \fBconst cchar_t *\fIverch\fP,
    \fBconst cchar_t *\fIhorch\fB);\fR
-.br
 \fBint hline_set(\fP
-   \fBconst cchar_t *\fIwch\fR, \fBint \fIn\fB);\fR
-.br
+   \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR
 \fBint whline_set(\fP
-   \fBWINDOW *\fIwin\fR,
-   \fBconst cchar_t *\fIwch\fR, \fBint \fIn\fB);\fR
-.br
+   \fBWINDOW *\fIwin\fP,
+   \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR
 \fBint mvhline_set(\fP
-   \fBint \fIy\fR, \fBint \fIx\fR,
-   \fBconst cchar_t *\fIwch\fR, \fBint \fIn\fB);\fR
-.br
+   \fBint \fIy\fB, int \fIx\fP,
+   \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR
 \fBint mvwhline_set(\fP
-   \fBWINDOW *\fIwin\fR,
-   \fBint \fIy\fR, \fBint \fIx\fR,
-   \fBconst cchar_t *\fIwch\fR, \fBint \fIn\fB);\fR
-.br
+   \fBWINDOW *\fIwin\fP,
+   \fBint \fIy\fB, int \fIx\fP,
+   \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR
 \fBint vline_set(\fP
-   \fBconst cchar_t *\fIwch\fR, \fBint \fIn\fB);\fR
-.br
+   \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR
 \fBint wvline_set(\fP
-   \fBWINDOW *\fIwin\fR,
-   \fBconst cchar_t *\fIwch\fR, \fBint \fIn\fB);\fR
-.br
+   \fBWINDOW *\fIwin\fP,
+   \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR
 \fBint mvvline_set(\fP
-   \fBint \fIy\fR, \fBint \fIx\fR,
-   \fBconst cchar_t *\fIwch\fR, \fBint \fIn\fB);\fR
-.br
+   \fBint \fIy\fB, int \fIx\fP,
+   \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR
 \fBint mvwvline_set(\fP
-   \fBWINDOW *\fIwin\fR,
-   \fBint \fIy\fR, \fBint \fIx\fR,
-   \fBconst cchar_t *\fIwch\fR, \fBint \fIn\fB);\fR
-.br
+   \fBWINDOW *\fIwin\fP,
+   \fBint \fIy\fB, int \fIx\fP,
+   \fBconst cchar_t *\fIwch\fB, int \fIn\fB);\fR
+.fi
 .SH DESCRIPTION
-.PP
 The
 \fBborder_set\fP
 and
@@ -179,9 +171,20 @@ The
 \fBmvwvline_set\fP, and
 \fBwvline_set\fP
 functions draw a line proceeding toward the last line of the window.
-.br
-.SH NOTES
+.SH RETURN VALUE
+Upon successful completion, these functions return
+\fBOK\fP.
+Otherwise, they return
+\fBERR\fP.
 .PP
+Functions using a window parameter return an error if it is null.
+.PP
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
+.SH NOTES
 Note that
 \fBborder_set\fP,
 \fBhline_set\fP,
@@ -191,21 +194,10 @@ Note that
 \fBmvwvline_set\fP, and
 \fBvline_set\fP
 may be macros.
-.br
-.SH RETURN VALUE
-.PP
-Upon successful completion, these functions return
-\fBOK\fP.
-Otherwise, they return
-\fBERR\fP.
-.PP
-Functions using a window parameter return an error if it is null.
-.PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+.SH PORTABILITY
+These functions are described in X/Open Curses, Issue 4.
 .SH SEE ALSO
-\fBncurses\fP(3X),
-\fBcurs_add_wch\fP(3X),
-\fBcurs_border\fP(3X),
-\fBcurs_outopts\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_add_wch\fP(3X),
+\fB\%curs_border\fP(3X),
+\fB\%curs_outopts\fP(3X)
index 36ff2781e77043650cc35a3c6b02312b49765229..0ab00645197a8b65d0a48399cfd3fa2475fae38a 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_clear.3x,v 1.27 2022/11/26 16:23:47 tom Exp $
-.TH curs_clear 3X ""
-.na
-.hy 0
+.\" $Id: curs_clear.3x,v 1.48 2024/04/20 21:20:07 tom Exp $
+.TH curs_clear 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBerase\fP,
-\fBwerase\fP,
-\fBclear\fP,
-\fBwclear\fP,
-\fBclrtobot\fP,
-\fBwclrtobot\fP,
-\fBclrtoeol\fP,
-\fBwclrtoeol\fP \- clear all or part of a \fBcurses\fP window
-.ad
-.hy
+\fB\%erase\fP,
+\fB\%werase\fP,
+\fB\%clear\fP,
+\fB\%wclear\fP,
+\fB\%clrtobot\fP,
+\fB\%wclrtobot\fP,
+\fB\%clrtoeol\fP,
+\fB\%wclrtoeol\fP \-
+clear all or part of a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint erase(void);\fP
-.br
-\fBint werase(WINDOW *\fIwin\fB);\fR
-.sp
-\fBint clear(void);\fP
-.br
-\fBint wclear(WINDOW *\fIwin\fB);\fR
-.sp
-\fBint clrtobot(void);\fP
-.br
-\fBint wclrtobot(WINDOW *\fIwin\fB);\fR
-.sp
-\fBint clrtoeol(void);\fP
-.br
-\fBint wclrtoeol(WINDOW *\fIwin\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint erase(void);
+\fBint werase(WINDOW *\fIwin\fP);
+.PP
+\fBint clear(void);
+\fBint wclear(WINDOW *\fIwin\fP);
+.PP
+\fBint clrtobot(void);
+\fBint wclrtobot(WINDOW *\fIwin\fP);
+.PP
+\fBint clrtoeol(void);
+\fBint wclrtoeol(WINDOW *\fIwin\fP);
+.fi
 .SH DESCRIPTION
-.SS erase/werase
+.SS "erase, werase"
 The \fBerase\fP and \fBwerase\fP routines copy blanks to every
 position in the window, clearing the screen.
 .PP
 Blanks created by erasure have the current background rendition (as set
 by \fBwbkgdset\fP(3X)) merged into them.
-.SS clear/wclear
-.PP
+.SS "clear, wclear"
 The \fBclear\fP and \fBwclear\fP routines are like \fBerase\fP and
 \fBwerase\fP, but they also call \fBclearok\fP(3X), so that the screen is
 cleared completely on the next call to \fBwrefresh\fP for that window
 and repainted from scratch.
-.SS clrtobot/wclrtobot
-.PP
+.SS "clrtobot, wclrtobot"
 The \fBclrtobot\fP and \fBwclrtobot\fP routines erase from the cursor to the
 end of screen.
 That is, they erase all lines below the cursor in the window.
 Also, the current line to the right of the cursor, inclusive, is erased.
-.SS clrtoeol/wclrtoeol
-.PP
+.SS "clrtoeol, wclrtoeol"
 The \fBclrtoeol\fP and \fBwclrtoeol\fP routines erase the current line
 to the right of the cursor, inclusive, to the end of the current line.
 .SH RETURN VALUE
@@ -102,13 +104,10 @@ if the cursor position is about to wrap.
 Note that \fBerase\fP, \fBwerase\fP, \fBclear\fP, \fBwclear\fP,
 \fBclrtobot\fP, and \fBclrtoeol\fP may be macros.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
-The
-standard specifies that they return \fBERR\fP on failure, but specifies no
-error conditions.
+These functions are described in X/Open Curses, Issue 4.
 .PP
-The SVr4.0 manual says that these functions could
-return "a non-negative integer if \fBimmedok\fP(3X) is set",
+The SVr4.0 manual says that these functions could return
+\*(``or a non-negative integer if \fB\%immedok\fP is set\*('',
 referring to the return-value of \fBwrefresh\fP.
 In that implementation, \fBwrefresh\fP would return a count of
 the number of characters written to the terminal.
@@ -117,7 +116,7 @@ Some historic curses implementations had, as an undocumented feature, the
 ability to do the equivalent of \fBclearok(..., 1)\fP by saying
 \fBtouchwin(stdscr)\fP or \fBclear(stdscr)\fP.
 This will not work under
-ncurses.
+\fI\%ncurses\fP.
 .PP
 This implementation, and others such as Solaris,
 sets the current position to 0,0 after erasing
@@ -132,7 +131,7 @@ even for a subwindow or derived window.
 If you do not want to clear the screen during the next \fBwrefresh\fP,
 use \fBwerase\fP instead.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_outopts\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_variables\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_outopts\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_variables\fP(3X)
index 46d50cc92f998500e10fea9079256ec8a131571d..7a5a02f27de39a69cc34d015fe3e7cbbe1d33273 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_color.3x,v 1.68 2022/02/12 20:06:41 tom Exp $
-.TH curs_color 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_color.3x,v 1.100 2024/04/20 21:24:19 tom Exp $
+.TH curs_color 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.ds n 5
-.na
-.hy 0
+.
 .SH NAME
-\fBstart_color\fP,
-\fBhas_colors\fP,
-\fBcan_change_color\fP,
-\fBinit_pair\fP,
-\fBinit_color\fP,
-\fBinit_extended_pair\fP,
-\fBinit_extended_color\fP,
-\fBcolor_content\fP,
-\fBpair_content\fP,
-\fBextended_color_content\fP,
-\fBextended_pair_content\fP,
-\fBreset_color_pairs\fP,
-\fBCOLOR_PAIR\fP,
-\fBPAIR_NUMBER\fP \- \fBcurses\fP color manipulation routines
-.ad
-.hy
+\fB\%start_color\fP,
+\fB\%has_colors\fP,
+\fB\%can_change_color\fP,
+\fB\%init_pair\fP,
+\fB\%init_color\fP,
+\fB\%init_extended_pair\fP,
+\fB\%init_extended_color\fP,
+\fB\%color_content\fP,
+\fB\%pair_content\fP,
+\fB\%extended_color_content\fP,
+\fB\%extended_pair_content\fP,
+\fB\%reset_color_pairs\fP,
+\fB\%COLOR_PAIR\fP,
+\fB\%PAIR_NUMBER\fP,
+\fB\%COLORS\fP,
+\fB\%COLOR_PAIRS\fP,
+\fB\%COLOR_BLACK\fP,
+\fB\%COLOR_RED\fP,
+\fB\%COLOR_GREEN\fP,
+\fB\%COLOR_YELLOW\fP,
+\fB\%COLOR_BLUE\fP,
+\fB\%COLOR_MAGENTA\fP,
+\fB\%COLOR_CYAN\fP,
+\fB\%COLOR_WHITE\fP \-
+manipulate terminal colors with \fIcurses\fR
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint start_color(void);\fP
-.sp
-\fBbool has_colors(void);\fP
-.br
-\fBbool can_change_color(void);\fP
-.sp
-\fBint init_pair(short \fIpair\fB, short \fIf\fB, short \fIb\fB);\fR
-.br
-\fBint init_color(short \fIcolor\fB, short \fIr\fB, short \fIg\fB, short \fIb\fB);\fR
-.br
-/* extensions */
-.br
-\fBint init_extended_pair(int \fIpair\fB, int \fIf\fB, int \fIb\fB);\fR
-.br
-\fBint init_extended_color(int \fIcolor\fB, int \fIr\fB, int \fIg\fB, int \fIb\fB);\fR
-.sp
-\fBint color_content(short \fIcolor\fB, short *\fIr\fB, short *\fIg\fB, short *\fIb\fB);\fR
-.br
-\fBint pair_content(short \fIpair\fB, short *\fIf\fB, short *\fIb\fB);\fR
-.br
-/* extensions */
-.br
-\fBint extended_color_content(int \fIcolor\fB, int *\fIr\fB, int *\fIg\fB, int *\fIb\fB);\fR
-.br
-\fBint extended_pair_content(int \fIpair\fB, int *\fIf\fB, int *\fIb\fB);\fR
-.sp
-/* extensions */
-.br
-\fBvoid reset_color_pairs(void);\fP
-.sp
-\fBint COLOR_PAIR(int \fIn\fB);\fR
-.br
-\fBPAIR_NUMBER(\fIattrs\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fI/* variables */
+\fBint COLOR_PAIRS;
+\fBint COLORS;
+.PP
+\fBint start_color(void);
+.PP
+\fBbool has_colors(void);
+\fBbool can_change_color(void);
+.PP
+\fBint init_pair(short \fIpair\fP, short \fIf\fP, short \fIb\fP);
+\fBint init_color(short \fIcolor\fP, short \fIr\fP, short \fIg\fP, short \fIb\fP);
+\fI/* extensions */
+\fBint init_extended_pair(int \fIpair\fP, int \fIf\fP, int \fIb\fP);
+\fBint init_extended_color(int \fIcolor\fP, int \fIr\fP, int \fIg\fP, int \fIb\fP);
+.PP
+\fBint color_content(short \fIcolor\fP, short *\fIr\fP, short *\fIg\fP, short *\fIb\fP);
+\fBint pair_content(short \fIpair\fP, short *\fIf\fP, short *\fIb\fP);
+\fI/* extensions */
+\fBint extended_color_content(int \fIcolor\fP, int *\fIr\fP, int *\fIg\fP, int *\fIb\fP);
+\fBint extended_pair_content(int \fIpair\fP, int *\fIf\fP, int *\fIb\fP);
+.PP
+\fI/* extension */
+\fBvoid reset_color_pairs(void);
+.PP
+\fBint COLOR_PAIR(int \fIn\fP);
+\fBPAIR_NUMBER(int \fIattr\fP);
+.fi
 .SH DESCRIPTION
 .SS Overview
-\fBcurses\fP supports color attributes on terminals with that capability.
-To use these routines \fBstart_color\fP must be called, usually right after
-\fBinitscr\fP.
-Colors are always used in pairs (referred to as color-pairs).
-A color-pair consists of a foreground color (for characters) and a background
-color (for the blank field on which the characters are displayed).
-A programmer initializes a color-pair with the routine \fBinit_pair\fP.
-After it has been initialized, \fBCOLOR_PAIR\fP(\fIn\fP)
-can be used to convert the pair to a video attribute.
-.PP
-If a terminal is capable of redefining colors, the programmer can use the
-routine \fBinit_color\fP to change the definition of a color.
-The routines \fBhas_colors\fP and \fBcan_change_color\fP
+\fIcurses\fP supports color attributes on terminals with that
+capability.
+Call \fB\%start_color\fP
+(typically right after \fB\%initscr\fP(3X))
+to enable this feature.
+Colors are always used in pairs.
+A
+.I "color pair"
+couples a foreground color for characters with a background color for
+the blank field on which characters are rendered.
+\fB\%init_pair\fP initializes a color pair.
+The macro \fB\%COLOR_PAIR\fP(\fIn\fP) can then convert the pair to a
+video attribute.
+.PP
+If a terminal has the relevant capability,
+\fB\%init_color\fP permits (re)definition of a color.
+\fB\%has_colors\fP and \fB\%can_change_color\fP
 return \fBTRUE\fP or \fBFALSE\fP,
-depending on whether the terminal has color capabilities and whether the
+depending on whether the terminal has color capability and whether the
 programmer can change the colors.
-The routine \fBcolor_content\fP allows a
-programmer to extract the amounts of red, green, and blue components in an
-initialized color.
-The routine \fBpair_content\fP allows a programmer to find
-out how a given color-pair is currently defined.
-.SS Color Rendering
-The \fBcurses\fP library combines these inputs to produce the
-actual foreground and background colors shown on the screen:
+\fB\%color_content\fP permits extraction of the
+red,
+green,
+and blue components of an initialized color.
+\fB\%pair_content\fP permits discovery of a color pair's current
+definition.
+.SS Rendering
+.I curses
+combines the following data to render a character cell.
+Any of them can include color information.
 .bP
-per-character video attributes (e.g., via \fBwaddch\fP),
+.I curses
+character attributes,
+as from \fB\%waddch\fP(3X) or \fB\%wadd_wch\fP(3X)
 .bP
-the window attribute (e.g., by \fBwattrset\fP), and
+window attributes,
+as from \fB\%wattrset\fP(3X) or \fB\%wattr_set\fP(3X)
 .bP
-the background character (e.g., \fBwbkgdset\fP).
+window background character attributes,
+as from \fB\%wbkgdset\fP(3X) or \fB\%wbkgrndset\fP(3X)
 .PP
-Per-character and window attributes are usually set by a parameter containing
-video attributes including a color pair value.
-Some functions such as \fBwattr_set\fP use a separate parameter which
-is the color pair number.
+Per-character and window attributes are usually set through a function
+parameter containing attributes including a color pair value.
+Some functions,
+such as \fB\%wattr_set\fP,
+use a separate color pair number parameter.
 .PP
-The background character is a special case: it includes a character value,
-just as if it were passed to \fBwaddch\fP.
+The background character is a special case:
+it includes a character code,
+just as if it were passed to \fB\%waddch\fP.
 .PP
-The \fBcurses\fP library does the actual work of combining these color
-pairs in an internal function called from \fBwaddch\fP:
+The \fIcurses\fP library does the actual work of combining these color
+pairs in an internal function called from \fB\%waddch\fP:
 .bP
-If the parameter passed to \fBwaddch\fP is \fIblank\fP,
+If the parameter passed to \fB\%waddch\fP is \fIblank\fP,
 and it uses the special color pair 0,
 .RS
 .bP
-\fBcurses\fP next checks the window attribute.
+\fIcurses\fP next checks the window attribute.
 .bP
 If the window attribute does not use color pair 0,
-\fBcurses\fP uses the color pair from the window attribute.
+\fIcurses\fP uses the color pair from the window attribute.
 .bP
-Otherwise, \fBcurses\fP uses the background character.
+Otherwise, \fIcurses\fP uses the background character.
 .RE
 .bP
-If the parameter passed to \fBwaddch\fP is \fInot blank\fP,
+If the parameter passed to \fB\%waddch\fP is \fInot blank\fP,
 or it does not use the special color pair 0,
-\fBcurses\fP prefers the color pair from the parameter,
+\fIcurses\fP prefers the color pair from the parameter,
 if it is nonzero.
 Otherwise, it tries the window attribute next, and finally the
 background character.
 .PP
-Some \fBcurses\fP functions such as \fBwprintw\fP call \fBwaddch\fP.
+Some \fIcurses\fP functions such as \fB\%wprintw\fP call \fB\%waddch\fP.
 Those do not combine its parameter with a color pair.
 Consequently those calls use only the window attribute or
 the background character.
 .SH CONSTANTS
-.PP
-In \fB<curses.h>\fP the following macros are defined.
+In \fB\%<curses.h>\fP the following macros are defined.
 These are the standard colors (ISO-6429).
-\fBcurses\fP also assumes that \fBCOLOR_BLACK\fP is the default
+\fIcurses\fP also assumes that \fB\%COLOR_BLACK\fP is the default
 background color for all terminals.
 .PP
 .nf
@@ -183,38 +202,51 @@ Some terminals support more than the eight (8) \*(``ANSI\*('' colors.
 There are no standard names for those additional colors.
 .SH VARIABLES
 .SS COLORS
-is initialized by \fBstart_color\fP to the maximum number of colors
+is initialized by \fB\%start_color\fP to the maximum number of colors
 the terminal can support.
 .SS COLOR_PAIRS
-is initialized by \fBstart_color\fP to the maximum number of color pairs
-the terminal can support.
+is initialized by \fB\%start_color\fP to the maximum number of color
+pairs the terminal can support.
+Often,
+its value is the product \fB\%COLORS\fP \(mu \fB\%COLORS\fP,
+but this is not always true.
+.bP
+A few terminals use the HLS color space
+(see \fB\%start_color\fP below),
+ignoring this rule;
+and
+.bP
+terminals supporting a large number of colors are limited to the number
+of color pairs that a
+.I "signed short"
+value can represent.
 .SH FUNCTIONS
 .SS start_color
-The \fBstart_color\fP routine requires no arguments.
+The \fB\%start_color\fP routine requires no arguments.
 It must be called if the programmer wants to use colors, and before any other
 color manipulation routine is called.
-It is good practice to call this routine right after \fBinitscr\fP.
-\fBstart_color\fP does this:
+It is good practice to call this routine right after \fB\%initscr\fP.
+\fB\%start_color\fP does this:
 .bP
-It initializes two global variables, \fBCOLORS\fP and
-\fBCOLOR_PAIRS\fP (respectively defining the maximum number of colors
-and color-pairs the terminal can support).
+It initializes two global variables, \fB\%COLORS\fP and
+\fB\%COLOR_PAIRS\fP (respectively defining the maximum number of colors
+and color pairs the terminal can support).
 .bP
-It initializes the special color pair \fB0\fP to the default foreground
+It initializes the special color pair \fB\%0\fP to the default foreground
 and background colors.
 No other color pairs are initialized.
 .bP
 It restores the colors on the terminal to the values
 they had when the terminal was just turned on.
 .bP
-If the terminal supports the \fBinitc\fP (\fBinitialize_color\fP) capability,
-\fBstart_color\fP
+If the terminal supports the \fBinitc\fP \%(\fBinitialize_color\fP) capability,
+\fB\%start_color\fP
 initializes its internal table representing the
 red, green, and blue components of the color palette.
 .IP
 The components depend on whether the terminal uses
 CGA (aka \*(``ANSI\*('') or
-HLS (i.e., the \fBhls\fP (\fBhue_lightness_saturation\fP) capability is set).
+HLS (i.e., the \fBhls\fP \%(\fBhue_lightness_saturation\fP) capability is set).
 The table is initialized first for eight basic colors
 (black, red, green, yellow, blue, magenta, cyan, and white),
 using weights that depend upon the CGA/HLS choice.
@@ -229,28 +261,28 @@ but with weights of \fB1000\fP.
 SVr4 uses a similar scheme, but uses \fB1000\fP
 for the components of the initial eight colors.
 .IP
-\fBstart_color\fP does not attempt to set the terminal's color palette
+\fB\%start_color\fP does not attempt to set the terminal's color palette
 to match its built-in table.
-An application may use \fBinit_color\fP to alter the internal table
+An application may use \fB\%init_color\fP to alter the internal table
 along with the terminal's color.
 .PP
 These limits apply to color values and color pairs.
-Values outside these limits are not legal, and may result in a runtime error:
+Values outside these limits are not valid, and may result in a runtime error:
 .bP
-\fBCOLORS\fP corresponds to the terminal database's \fBmax_colors\fP capability,
-(see \fBterminfo\fP(\*n)).
+\fBCOLORS\fP corresponds to the terminal database's \fB\%max_colors\fP capability,
+(see \fB\%terminfo\fP(5)).
 .bP
-color values are expected to be in the range \fB0\fP to \fBCOLORS\-1\fP,
-inclusive (including \fB0\fP and \fBCOLORS\-1\fP).
+color values are expected to be in the range \fB0\fP to \fB\%COLORS\-1\fP,
+inclusive (including \fB0\fP and \fB\%COLORS\-1\fP).
 .bP
 a special color value \fB\-1\fP is used in certain extended functions
-to denote the \fIdefault color\fP (see \fBuse_default_colors\fP(3X)).
+to denote the \fIdefault color\fP (see \fB\%use_default_colors\fP(3X)).
 .bP
-\fBCOLOR_PAIRS\fP corresponds to
-the terminal database's \fBmax_pairs\fP capability,
-(see \fBterminfo\fP(\*n)).
+\fB\%COLOR_PAIRS\fP corresponds to
+the terminal database's \fB\%max_pairs\fP capability,
+(see \fB\%terminfo\fP(5)).
 .bP
-legal color pair values are in the range \fB1\fP to \fBCOLOR_PAIRS\-1\fP,
+valid color pair values are in the range \fB1\fP to \fB\%COLOR_PAIRS\-1\fP,
 inclusive.
 .bP
 color pair \fB0\fP is special; it denotes \*(``no color\*(''.
@@ -259,143 +291,134 @@ Color pair \fB0\fP is assumed to be white on black,
 but is actually whatever the terminal implements before color is initialized.
 It cannot be modified by the application.
 .SS has_colors
-.PP
-The \fBhas_colors\fP routine requires no arguments.
+The \fB\%has_colors\fP routine requires no arguments.
 It returns \fBTRUE\fP if
 the terminal can manipulate colors; otherwise, it returns \fBFALSE\fP.
 This routine facilitates writing terminal-independent programs.
 For example, a programmer can use it to decide
 whether to use color or some other video attribute.
 .SS can_change_color
-.PP
-The \fBcan_change_color\fP routine requires no arguments.
+The \fB\%can_change_color\fP routine requires no arguments.
 It returns \fBTRUE\fP if the terminal supports colors
 and can change their definitions;
 other, it returns \fBFALSE\fP.
 This routine facilitates writing terminal-independent programs.
 .SS init_pair
-.PP
-The \fBinit_pair\fP routine changes the definition of a color-pair.
+The \fB\%init_pair\fP routine changes the definition of a color pair.
 It takes three arguments:
-the number of the color-pair to be changed, the foreground
+the number of the color pair to be changed, the foreground
 color number, and the background color number.
 For portable applications:
 .bP
-The first argument must be a legal color pair value.
-If default colors are used (see \fBuse_default_colors\fP(3X))
+The first argument must be a valid color pair value.
+If default colors are used (see \fB\%use_default_colors\fP(3X))
 the upper limit is adjusted to allow for extra pairs which use
 a default color in foreground and/or background.
 .bP
-The second and third arguments must be legal color values.
+The second and third arguments must be valid color values.
 .PP
-If the color-pair was previously initialized,
-the screen is refreshed and all occurrences of that color-pair
+If the color pair was previously initialized,
+the screen is refreshed and all occurrences of that color pair
 are changed to the new definition.
 .PP
-As an extension, ncurses allows you to set color pair \fB0\fP via
-the \fBassume_default_colors\fP(3X) routine, or to specify the use of
+As an extension,
+\fI\%ncurses\fP allows you to set color pair \fB0\fP via the
+\fB\%assume_default_colors\fP(3X) routine, or to specify the use of
 default colors (color number \fB\-1\fP) if you first invoke the
-\fBuse_default_colors\fP(3X) routine.
+\fB\%use_default_colors\fP(3X) routine.
 .SS init_extended_pair
-.PP
-Because \fBinit_pair\fP uses signed \fBshort\fPs for its parameters,
-that limits color-pairs and color-values
+Because \fB\%init_pair\fP uses signed \fBshort\fPs for its parameters,
+that limits color pairs and color-values
 to 32767 on modern hardware.
-The extension \fBinit_extended_pair\fP uses \fBint\fPs
-for the color-pair and color-value,
+The extension \fB\%init_extended_pair\fP uses \fBint\fPs
+for the color pair and color-value,
 allowing a larger number of colors to be supported.
 .SS init_color
-.PP
-The \fBinit_color\fP routine changes the definition of a color.
+The \fB\%init_color\fP routine changes the definition of a color.
 It takes four arguments:
 the number of the color to be changed followed by three RGB values
 (for the amounts of red, green, and blue components).
 .bP
-The first argument must be a legal color value;
+The first argument must be a valid color value;
 default colors are not allowed here.
-(See the section \fBColors\fP for the default color index.)
+(See the section \fB\%Colors\fP for the default color index.)
 .bP
 Each of the last three arguments
 must be a value in the range \fB0\fP through \fB1000\fP.
 .PP
-When \fBinit_color\fP is used, all
+When \fB\%init_color\fP is used, all
 occurrences of that color on the screen immediately change to the new
 definition.
 .SS init_extended_color
-.PP
-Because \fBinit_color\fP uses signed \fBshort\fPs for its parameters,
+Because \fB\%init_color\fP uses signed \fBshort\fPs for its parameters,
 that limits color-values and their red, green, and blue components
 to 32767 on modern hardware.
-The extension \fBinit_extended_color\fP uses \fBint\fPs
+The extension \fB\%init_extended_color\fP uses \fBint\fPs
 for the color value and
 for setting the red, green, and blue components,
 allowing a larger number of colors to be supported.
 .SS color_content
-.PP
-The \fBcolor_content\fP routine gives programmers a way to find the intensity
+The \fB\%color_content\fP routine gives programmers a way to find the intensity
 of the red, green, and blue (RGB) components in a color.
 It requires four arguments: the color number, and three addresses
 of \fBshort\fRs for storing
 the information about the amounts of red, green, and blue components in the
 given color.
 .bP
-The first argument must be a legal color value, i.e.,
-\fB0\fP through \fBCOLORS\-1\fP, inclusive.
+The first argument must be a valid color value, i.e.,
+\fB0\fP through \fB\%COLORS\-1\fP, inclusive.
 .bP
 The values that are stored at the addresses pointed to by the
 last three arguments are in the range
 \fB0\fP (no component) through \fB1000\fP
 (maximum amount of component), inclusive.
 .SS extended_color_content
-.PP
-Because \fBcolor_content\fP uses signed \fBshort\fPs for its parameters,
+Because \fB\%color_content\fP uses signed \fBshort\fPs for its parameters,
 that limits color-values and their red, green, and blue components
 to 32767 on modern hardware.
-The extension \fBextended_color_content\fP uses \fBint\fPs
+The extension \fB\%extended_color_content\fP uses \fBint\fPs
 for the color value and
 for returning the red, green, and blue components,
 allowing a larger number of colors to be supported.
 .SS pair_content
-.PP
-The \fBpair_content\fP routine allows programmers to find out what colors a
-given color-pair consists of.
-It requires three arguments: the color-pair
+The \fB\%pair_content\fP routine allows programmers to find out what colors a
+given color pair consists of.
+It requires three arguments: the color pair
 number, and two addresses of \fBshort\fRs for storing the foreground and the
 background color numbers.
 .bP
-The first argument must be a legal color value,
-i.e., in the range \fB1\fP through \fBCOLOR_PAIRS\-1\fP, inclusive.
+The first argument must be a valid color value,
+i.e., in the range \fB1\fP through \fB\%COLOR_PAIRS\-1\fP, inclusive.
 .bP
 The values that are stored at the addresses pointed
 to by the second and third arguments are in the
-range \fB0\fP through \fBCOLORS\fP, inclusive.
+range \fB0\fP through \fB\%COLORS\fP, inclusive.
 .SS extended_pair_content
-.PP
-Because \fBpair_content\fP uses signed \fBshort\fPs for its parameters,
-that limits color-pair and color-values to 32767 on modern hardware.
-The extension \fBextended_pair_content\fP uses \fBint\fPs
+Because \fB\%pair_content\fP uses signed \fBshort\fPs for its parameters,
+that limits color pair and color-values to 32767 on modern hardware.
+The extension \fB\%extended_pair_content\fP uses \fBint\fPs
 for the color pair and
 for returning the foreground and background colors,
 allowing a larger number of colors to be supported.
 .SS reset_color_pairs
-.PP
-The extension \fBreset_color_pairs\fP tells ncurses to discard all
-of the color-pair information which was set with \fBinit_pair\fP.
+The extension \fB\%reset_color_pairs\fP tells \fI\%ncurses\fP to discard
+all of the color pair information which was set with \fB\%init_pair\fP.
 It also touches the current- and standard-screens, allowing an application to
 switch color palettes rapidly.
-.SS PAIR_NUMBER
-.PP
-\fBPAIR_NUMBER(\fIattrs\fR) extracts the color
-value from its \fIattrs\fP parameter and returns it as a color pair number.
 .SS COLOR_PAIR
-Its inverse \fBCOLOR_PAIR(\fIn\fB)\fR converts a color pair number
-to an attribute.
+\fB\%COLOR_PAIR(\fIn\fB)\fR converts a color pair number to an
+attribute.
 Attributes can hold color pairs in the range 0 to 255.
-If you need a color pair larger than that, you must use functions
-such as \fBattr_set\fP (which pass the color pair as a separate parameter)
-rather than the legacy functions such as \fBattrset\fP.
+If you need a color pair larger than that,
+you must use functions such as \fB\%attr_set\fP
+(which pass the color pair as a separate parameter)
+rather than the legacy functions such as \fB\%attrset\fP.
+.SS PAIR_NUMBER
+\fB\%PAIR_NUMBER(\fIattr\fR) extracts the color information from its
+\fIattr\fP parameter and returns it as a color pair number;
+it is the inverse operation of \fB\%COLOR_PAIR\fP.
 .SH RETURN VALUE
-The routines \fBcan_change_color\fP and \fBhas_colors\fP return \fBTRUE\fP
+The routines \fB\%can_change_color\fP and \fB\%has_colors\fP return \fBTRUE\fP
 or \fBFALSE\fP.
 .PP
 All other routines return the integer \fBERR\fP upon failure and an \fBOK\fP
@@ -406,24 +429,24 @@ X/Open defines no error conditions.
 SVr4 does document some error conditions which apply in general:
 .bP
 This implementation will return \fBERR\fP on attempts to
-use color values outside the range \fB0\fP to \fBCOLORS\fP\-1
+use color values outside the range \fB0\fP to \fB\%COLORS\fP\-1
 (except for the default colors extension),
-or use color pairs outside the range \fB0\fP to \fBCOLOR_PAIRS\-1\fP.
+or use color pairs outside the range \fB0\fP to \fB\%COLOR_PAIRS\-1\fP.
 .IP
-Color values used in \fBinit_color\fP must be
+Color values used in \fB\%init_color\fP must be
 in the range \fB0\fP to \fB1000\fP.
 .IP
 An error is returned from all functions
 if the terminal has not been initialized.
 .IP
-An error is returned from secondary functions such as \fBinit_pair\fP
-if \fBstart_color\fP was not called.
+An error is returned from secondary functions such as \fB\%init_pair\fP
+if \fB\%start_color\fP was not called.
 .bP
 SVr4 does much the same, except that
-it returns \fBERR\fP from \fBpair_content\fP if the pair was not initialized
-using \fBinit_pairs\fP
+it returns \fBERR\fP from \fB\%pair_content\fP if the pair was not initialized
+using \fB\%init_pairs\fP
 and
-it returns \fBERR\fP from \fBcolor_content\fP
+it returns \fBERR\fP from \fB\%color_content\fP
 if the terminal does not support changing colors.
 .IP
 This implementation does not return \fBERR\fP for either case.
@@ -431,19 +454,20 @@ This implementation does not return \fBERR\fP for either case.
 Specific functions make additional checks:
 .RS 3
 .TP 5
-\fBinit_color\fP
+\fB\%init_color\fP
 returns an error if the terminal does not support
-this feature, e.g., if the \fBinitialize_color\fP capability is absent
+this feature, e.g., if the \fB\%initialize_color\fP capability is absent
 from the terminal description.
 .TP 5
-\fBstart_color\fP
+\fB\%start_color\fP
 returns an error if the color table cannot be allocated.
 .RE
 .SH NOTES
-In the \fBncurses\fP implementation, there is a separate color activation flag,
+In the \fI\%ncurses\fP implementation,
+there is a separate color activation flag,
 color palette, color pairs table,
-and associated \fBCOLORS\fP and \fBCOLOR_PAIRS\fP counts
-for each screen; the \fBstart_color\fP function only affects the current
+and associated \fB\%COLORS\fP and \fB\%COLOR_PAIRS\fP counts
+for each screen; the \fB\%start_color\fP function only affects the current
 screen.
 The SVr4/XSI interface is not really designed with this in mind, and
 historical implementations may use a single shared color palette.
@@ -452,7 +476,7 @@ Setting an implicit background color via a color pair affects only
 character cells that a character write operation explicitly touches.
 To change
 the background color used when parts of a window are blanked by erasing or
-scrolling operations, see \fBcurs_bkgd\fP(3X).
+scrolling operations, see \fB\%curs_bkgd\fP(3X).
 .PP
 Several caveats apply on older x86 machines
 (e.g., i386, i486) with VGA-compatible graphics:
@@ -467,20 +491,61 @@ Paradise and compatibles) do the wrong thing when you try to set a bright
 \*(``yellow\*('' background (you get a blinking yellow foreground instead).
 .bP
 Color RGB values are not settable.
-.SH HISTORY
+.SH EXTENSIONS
+The functions marked as extensions were designed for
+\fB\%ncurses\fP(3X),
+and are not found in SVr4
+.IR curses ,
+4.4BSD
+.IR curses ,
+or any other previous curses implementation.
+.SH PORTABILITY
+Applications employing
+.I \%ncurses
+extensions should condition their use on the visibility of the
+.B \%NCURSES_VERSION
+preprocessor macro.
+.PP
+This implementation satisfies X/Open Curses's minimum maximums
+for \fB\%COLORS\fP and \fB\%COLOR_PAIRS\fP.
+.PP
+The \fB\%init_pair\fP routine accepts negative values of foreground
+and background color to support the \fB\%use_default_colors\fP(3X) extension,
+but only if that routine has been first invoked.
+.PP
+The assumption that \fB\%COLOR_BLACK\fP is the default
+background color for all terminals can be modified using the
+\fB\%assume_default_colors\fP(3X) extension.
+.PP
+This implementation checks the pointers,
+e.g., for the values returned by
+\fB\%color_content\fP and \fB\%pair_content\fP,
+and will treat those as optional parameters when null.
 .PP
+X/Open Curses does not specify a limit for the number of colors and
+color pairs which a terminal can support.
+However, in its use of \fBshort\fP for the parameters,
+it carries over SVr4's implementation detail for the compiled
+terminfo database, which uses signed 16-bit numbers.
+This implementation provides extended versions of those functions
+which use \fBshort\fP parameters,
+allowing applications to use larger color- and pair-numbers.
+.PP
+The \fB\%reset_color_pairs\fP function is an extension of
+\fI\%ncurses\fP.
+.SH HISTORY
 SVr3.2 introduced color support to curses in 1987.
 .PP
 SVr4 made internal changes,
 e.g., moving the storage for the color state
-from \fBSP\fP (the \fBSCREEN\fP structure)
-to \fBcur_term\fP (the \fBTERMINAL\fP structure),
+from \fBSP\fP (the \fISCREEN\fP structure)
+to \fB\%cur_term\fP (the \fI\%TERMINAL\fP structure),
 but provided the same set of library functions.
 .PP
 SVr4 curses limits the number of color pairs to 64,
 reserving color pair zero (0) as the terminal's initial uncolored state.
 This limit arises because the color pair information is a bitfield
-in the \fBchtype\fP data type (denoted by \fBA_COLOR\fP).
+in the \fB\%chtype\fP data type (denoted by \fB\%A_COLOR\fP).
 .PP
 Other implementations of curses had different limits:
 .bP
@@ -488,63 +553,37 @@ PCCurses (1987-1990) provided for only eight (8) colors.
 .bP
 PDCurses (1992-present) inherited the 8-color limitation from PCCurses,
 but changed this to 256 in version 2.5 (2001),
-along with changing \fBchtype\fP from 16-bits to 32-bits.
+along with changing \fB\%chtype\fP from 16-bits to 32-bits.
 .bP
 X/Open Curses (1992-present)
-added a new structure \fBcchar_t\fP to store the character,
-attributes and color-pair values, allowing increased range of color-pairs.
-Both color-pairs and color-values used a signed \fBshort\fP,
+added a new structure \fB\%cchar_t\fP to store the character,
+attributes and color pair values, allowing increased range of color pairs.
+Both color pairs and color-values used a signed \fBshort\fP,
 limiting values to 15 bits.
 .bP
-ncurses (1992-present) uses eight bits for \fBA_COLOR\fP in \fBchtype\fP values.
+\fI\%ncurses\fP (1992-present) uses eight bits
+for \fB\%A_COLOR\fP in \fB\%chtype\fP values.
 .IP
 Version 5.3 provided a wide-character interface (2002),
-but left color-pairs as part of the attributes-field.
+but left color pairs as part of the attributes-field.
 .IP
 Since version 6 (2015),
-ncurses uses a separate \fBint\fP for color-pairs in the \fBcchar_t\fP values.
-When those color-pair values fit in 8 bits,
-ncurses allows color-pairs to be manipulated
-via the functions using \fBchtype\fP values.
+ncurses uses a separate \fBint\fP for color pairs in the \fB\%cchar_t\fP values.
+When those color pair values fit in 8 bits,
+ncurses allows color pairs to be manipulated
+via the functions using \fB\%chtype\fP values.
 .bP
 NetBSD curses used 6 bits from
 2000 (when colors were first supported) until 2004.
 At that point, NetBSD changed to use 10 bits.
 As of 2021, that size is unchanged.
-Like ncurses before version 6,
-the NetBSD color-pair information is stored in
-the attributes field of \fBcchar_t\fP, limiting the number of color-pairs
+Like \fI\%ncurses\fP before version 6,
+the NetBSD color pair information is stored in
+the attributes field of \fB\%cchar_t\fP, limiting the number of color pairs
 by the size of the bitfield.
-.SH PORTABILITY
-This implementation satisfies XSI Curses's minimum maximums
-for \fBCOLORS\fP and \fBCOLOR_PAIRS\fP.
-.PP
-The \fBinit_pair\fP routine accepts negative values of foreground
-and background color to support the \fBuse_default_colors\fP(3X) extension,
-but only if that routine has been first invoked.
-.PP
-The assumption that \fBCOLOR_BLACK\fP is the default
-background color for all terminals can be modified using the
-\fBassume_default_colors\fP(3X) extension.
-.PP
-This implementation checks the pointers,
-e.g., for the values returned by
-\fBcolor_content\fP and \fBpair_content\fP,
-and will treat those as optional parameters when null.
-.PP
-X/Open Curses does not specify a limit for the number of colors and
-color pairs which a terminal can support.
-However, in its use of \fBshort\fP for the parameters,
-it carries over SVr4's implementation detail for the compiled
-terminfo database, which uses signed 16-bit numbers.
-This implementation provides extended versions of those functions
-which use \fBshort\fP parameters,
-allowing applications to use larger color- and pair-numbers.
-.PP
-The \fBreset_color_pairs\fP function is an extension of ncurses.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_initscr\fP(3X),
-\fBcurs_attr\fP(3X),
-\fBcurs_variables\fP(3X),
-\fBdefault_colors\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_attr\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%default_colors\fP(3X)
index 4062f9ed9d0b1dfac2076f32d841df5c22e52d7b..e62ecc130de1c0b1ffe1dec7e8c5e2dcfe919196 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_delch.3x,v 1.18 2022/02/12 20:06:41 tom Exp $
-.TH curs_delch 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_delch.3x,v 1.34 2024/04/20 19:24:14 tom Exp $
+.TH curs_delch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBdelch\fP,
-\fBwdelch\fP,
-\fBmvdelch\fP,
-\fBmvwdelch\fP \- delete character under the cursor in a \fBcurses\fP window
+\fB\%delch\fP,
+\fB\%wdelch\fP,
+\fB\%mvdelch\fP,
+\fB\%mvwdelch\fP \-
+delete a character from a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint delch(void);\fP
-.br
-\fBint wdelch(WINDOW *\fIwin\fB);\fR
-.br
-\fBint mvdelch(int \fIy\fB, int \fIx\fB);\fR
-.br
-\fBint mvwdelch(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint delch(void);
+\fBint wdelch(WINDOW *\fIwin\fP);
+\fBint mvdelch(int \fIy\fP, int \fIx\fP);
+\fBint mvwdelch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP);
+.fi
 .SH DESCRIPTION
-These routines delete the character under the cursor; all characters to the
-right of the cursor on the same line are moved to the left one position and the
-last character on the line is filled with a blank.
-The cursor position does
-not change (after moving to \fIy\fP, \fIx\fP, if specified).
-(This does not
-imply use of the hardware delete character feature.)
+.B \%wdelch
+deletes the character at the cursor position in
+.IR win .
+\fB\%ncurses\fP(3X) describes the variants of this function.
+.PP
+.B \%wdelch
+moves all characters to the right of the cursor on the same line to the
+left one position and replaces the contents of the rightmost position on
+the line with the window's blank character;
+see \fB\%bkgd\fP(3X)
+(wide-character API users may consult \fB\%bkgrnd\fP(3X) instead).
+The cursor position does not change
+(after moving to
+.RI ( y ,
+.IR x ),
+if specified).
 .SH RETURN VALUE
-All routines return the integer \fBERR\fP upon failure and an \fBOK\fP (SVr4
-specifies only "an integer value other than \fBERR\fP") upon successful
-completion.
+These functions return
+.B OK
+on success and
+.B ERR
+on failure.
+.PP
+Functions taking a
+.I \%WINDOW
+pointer argument fail if the pointer is
+.BR NULL .
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-Note that \fBdelch\fP, \fBmvdelch\fP, and \fBmvwdelch\fP may be macros.
+.BR \%delch ,
+.BR \%mvdelch ,
+and
+.B \%mvwdelch
+may be implemented as macros.
+.PP
+A terminal's
+.B \%delete_character
+.RB ( dch1 )
+capability
+is not necessarily employed.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
-The
-standard specifies that they return \fBERR\fP on failure, but specifies no
-error conditions.
+X/Open Curses,
+Issue 4 describes these functions.
+.PP
+SVr4
+.I curses
+describes a successful return value only as
+\*(``an integer value other than
+.BR ERR \*(''.
 .SH SEE ALSO
-\fBcurses\fP(3X)
+\fB\%curses\fP(3X)
index c720e05c4ae9e4f9822599e2bd711996937543d3..6d70a4358c4fa34e79d4c542415d74b78012cd41 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2007,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_deleteln.3x,v 1.20 2022/02/12 20:06:41 tom Exp $
-.TH curs_deleteln 3X ""
+.\" $Id: curs_deleteln.3x,v 1.38 2024/04/20 21:20:07 tom Exp $
+.TH curs_deleteln 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .SH NAME
-\fBdeleteln\fP,
-\fBwdeleteln\fP,
-\fBinsdelln\fP,
-\fBwinsdelln\fP,
-\fBinsertln\fP,
-\fBwinsertln\fP \- delete and insert lines in a \fBcurses\fP window
+\fB\%deleteln\fP,
+\fB\%wdeleteln\fP,
+\fB\%insdelln\fP,
+\fB\%winsdelln\fP,
+\fB\%insertln\fP,
+\fB\%winsertln\fP \-
+delete or insert lines in a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint deleteln(void);\fP
-.br
-\fBint wdeleteln(WINDOW *\fIwin\fB);\fR
-.sp
-\fBint insdelln(int \fIn\fB);\fR
-.br
-\fBint winsdelln(WINDOW *\fIwin\fB, int \fIn\fB);\fR
-.sp
-\fBint insertln(void);\fP
-.br
-\fBint winsertln(WINDOW *\fIwin\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint deleteln(void);
+\fBint wdeleteln(WINDOW *\fIwin\fP);
+.PP
+\fBint insdelln(int \fIn\fP);
+\fBint winsdelln(WINDOW *\fIwin\fP, int \fIn\fP);
+.PP
+\fBint insertln(void);
+\fBint winsertln(WINDOW *\fIwin\fP);
+.fi
 .SH DESCRIPTION
 The \fBdeleteln\fP and \fBwdeleteln\fP routines delete the line under the
 cursor in the window; all lines below the current line are moved up one line.
@@ -70,18 +80,14 @@ The current cursor position remains the same.
 The \fBinsertln\fP and \fBwinsertln\fP routines insert a blank line above the
 current line and the bottom line is lost.
 .SH RETURN VALUE
-All routines return the integer \fBERR\fP upon failure and an \fBOK\fP (SVr4
-specifies only "an integer value other than \fBERR\fP") upon successful
-completion.
+These routines return the integer \fBERR\fP upon failure and an \fBOK\fP
+(SVr4 specifies only
+\*(``an integer value other than \fBERR\fP\*('')
+upon successful completion.
 .PP
 X/Open defines no error conditions.
 In this implementation,
 if the window parameter is null, an error is returned.
-.SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
-The
-standard specifies that they return \fBERR\fP on failure, but specifies no
-error conditions.
 .SH NOTES
 Note that all but \fBwinsdelln\fP may be macros.
 .PP
@@ -89,5 +95,10 @@ These routines do not require a hardware line delete or insert feature in the
 terminal.
 In fact, they will not use hardware line delete/insert unless
 \fBidlok(..., TRUE)\fP has been set on the current window.
+.SH PORTABILITY
+These functions are described in X/Open Curses, Issue 4.
+The
+standard specifies that they return \fBERR\fP on failure, but specifies no
+error conditions.
 .SH SEE ALSO
-\fBcurses\fP(3X)
+\fB\%curses\fP(3X)
index 53b89638416e8c785063b71691630c1f0429de97..01cf9d2ece7124c63c2992a1d82532cd4086f8ff 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1999-2010,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\"
 .\" Author: Thomas E. Dickey 1999-on
 .\"
-.\" $Id: curs_extend.3x,v 1.28 2022/02/12 20:07:29 tom Exp $
-.TH curs_extend 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_extend.3x,v 1.46 2024/03/16 15:35:01 tom Exp $
+.TH curs_extend 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBcurses_version\fP,
-\fBuse_extended_names\fP \- miscellaneous curses extensions
-.
+\fB\%curses_version\fP,
+\fB\%use_extended_names\fP \-
+miscellaneous \fIcurses\fR extensions
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBconst char * curses_version(void);\fP
-.br
-\fBint use_extended_names(bool \fIenable\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBconst char * curses_version(void);
+\fBint use_extended_names(bool \fIenable\fP);
+.fi
 .SH DESCRIPTION
 These functions are extensions to the curses library
 which do not fit easily into other categories.
 .SS curses_version
-.PP
 Use \fBcurses_version\fP
 to get the version number, including patch level of the library,
 prefixed by \*(``ncurses\*('', e.g.,
@@ -58,7 +64,6 @@ prefixed by \*(``ncurses\*('', e.g.,
 .B ncurses 5.0.19991023
 .RE
 .SS use_extended_names
-.PP
 The \fBuse_extended_names\fP
 function controls whether the calling application
 is able to use user-defined or nonstandard names
@@ -70,28 +75,34 @@ extended terminal definitions.
 However you can disable this feature
 to ensure compatibility with other implementations of curses.
 .SH RETURN VALUE
-.PP
 \fBcurses_version\fP returns a pointer to static memory; you should not free
 this in your application.
 .PP
 \fBuse_extended_names\fP returns the previous state, allowing you to
 save this and restore it.
+.SH EXTENSIONS
+These functions are \fB\%ncurses\fP(3X) extensions,
+and are not found in SVr4
+.IR curses ,
+4.4BSD
+.IR curses ,
+or any other previous curses implementation.
 .SH PORTABILITY
-These routines are specific to ncurses.
-They were not supported on
-Version 7, BSD or System V implementations.
-It is recommended that
-any code depending on them be conditioned using NCURSES_VERSION.
-.SH SEE ALSO
-\fBcurs_getch\fP(3X),
-\fBcurs_mouse\fP(3X),
-\fBcurs_print\fP(3X),
-\fBcurs_util\fP(3X),
-\fBdefault_colors\fP(3X),
-\fBdefine_key\fP(3X),
-\fBkeybound\fP(3X),
-\fBkeyok\fP(3X),
-\fBresizeterm\fP(3X),
-\fBwresize\fP(3X).
-.SH AUTHOR
+Applications employing
+.I \%ncurses
+extensions should condition their use on the visibility of the
+.B \%NCURSES_VERSION
+preprocessor macro.
+.SH AUTHORS
 Thomas Dickey.
+.SH SEE ALSO
+\fB\%curs_getch\fP(3X),
+\fB\%curs_mouse\fP(3X),
+\fB\%curs_print\fP(3X),
+\fB\%curs_util\fP(3X),
+\fB\%default_colors\fP(3X),
+\fB\%define_key\fP(3X),
+\fB\%keybound\fP(3X),
+\fB\%keyok\fP(3X),
+\fB\%resizeterm\fP(3X),
+\fB\%wresize\fP(3X)
index 8a31a90aa264a7b02ccfd1ac2061c4dbbe59fb30..02932b91a6e4ebd0f97a8e6bdf06ff67e8f3c40d 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_get_wch.3x,v 1.17 2022/02/12 20:07:29 tom Exp $
-.TH curs_get_wch 3X ""
-.na
-.hy 0
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_get_wch.3x,v 1.40 2024/04/20 19:23:03 tom Exp $
+.TH curs_get_wch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBget_wch\fP,
-\fBwget_wch\fP,
-\fBmvget_wch\fP,
-\fBmvwget_wch\fP,
-\fBunget_wch\fP \- get (or push back) a wide character from curses terminal keyboard
-.ad
-.hy
+\fB\%get_wch\fP,
+\fB\%wget_wch\fP,
+\fB\%mvget_wch\fP,
+\fB\%mvwget_wch\fP,
+\fB\%unget_wch\fP \-
+get (or push back) a wide character from \fIcurses\fR terminal keyboard
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint get_wch(wint_t *\fIwch\fB);\fR
-.br
-\fBint wget_wch(WINDOW *\fIwin\fB, wint_t *\fIwch\fB);\fR
-.br
-\fBint mvget_wch(int \fIy\fB, int \fIx\fB, wint_t *\fIwch\fB);\fR
-.br
-\fBint mvwget_wch(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, wint_t *\fIwch\fB);\fR
-.sp
-\fBint unget_wch(const wchar_t \fIwch\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint get_wch(wint_t *\fIwch\fP);
+\fBint wget_wch(WINDOW *\fIwin\fP, wint_t *\fIwch\fP);
+\fBint mvget_wch(int \fIy\fP, int \fIx\fP, wint_t *\fIwch\fP);
+\fBint mvwget_wch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, wint_t *\fIwch\fP);
+.PP
+\fBint unget_wch(const wchar_t \fIwc\fP);
+.fi
 .SH DESCRIPTION
-.SS wget_wch
-The
-\fBget_wch\fP,
-\fBwget_wch\fP,
-\fBmvget_wch\fP, and
-\fBmvwget_wch\fP
-functions read a character
-from the terminal associated with the current or specified window.
-In no-delay mode,
-if no input is waiting, the value \fBERR\fP is returned.
-In delay mode,
-the program waits until the system passes text through to the program.
-Depending on the setting of \fBcbreak\fP,
-this is after one character (cbreak mode),
-or after the first newline (nocbreak mode).
-In half-delay mode,
-the program waits until the user types a character or the specified
-timeout interval has elapsed.
+.SS "Reading Characters"
+.B \%wget_wch
+gathers a key stroke
+.I wch
+from the terminal keyboard associated with a
+.I curses
+window
+.IR win ,
+returning
+.B OK
+if a wide character is read,
+.B \%KEY_CODE_YES
+if a function key is read,
+and
+.B ERR
+if no key event is available.
+\fB\%ncurses\fP(3X) describes the variants of this function.
 .PP
-Unless \fBnoecho\fP has been set,
-these routines echo the character into the designated window.
+When input is pending,
+.B \%wget_wch
+stores an integer
+identifying the key stroke in
+.IR wch ;
+for alphanumeric and punctuation keys,
+this value corresponds to the character encoding used by the terminal.
+Use of the control key as a modifier often results in a distinct code.
+The behavior of other keys depends on whether
+.I win
+is in keypad mode;
+see subsections \*(``Keypad Mode\*('' and \*(``Predefined Key Codes\*(''
+in \fB\%getch\fP(3X).
 .PP
-If the window is not a pad and has been moved or modified since the
-last call to \fBwrefresh\fP,
-\fBwrefresh\fP will be called before another character is read.
+If no input is pending,
+then if the no-delay flag is set in the window
+(see \fB\%nodelay\fP(3X)),
+the function returns
+.BR ERR ;
+otherwise,
+.I curses
+waits until the terminal has input.
+If \fB\%cbreak\fP(3X)
+has been called,
+this happens after one character is read.
+If \fB\%nocbreak\fP(3X)
+has been called,
+it occurs when the next newline is read.
+If \fB\%halfdelay\fP(3X)
+has been called,
+.I curses
+waits until a character is typed or the specified delay elapses.
 .PP
-If \fBkeypad\fP is enabled,
-these functions respond to
-the pressing of a function key by setting the object pointed to by
-\fIwch\fP
-to the keycode assigned to the function key,
-and returning \fBKEY_CODE_YES\fP.
-If a character (such as escape) that could be the
-beginning of a function key is received, curses sets a timer.
-If the remainder
-of the sequence does arrive within the designated time, curses passes through
-the character; otherwise, curses returns the function key value.
-For this
-reason, many terminals experience a delay between the time a user presses
-the escape key and the time the escape is returned to the program.
+If \fB\%echo\fP(3X) has been called,
+and the window is not a pad,
+.I curses
+writes
+.I wch
+to the window
+(at the cursor position)
+per the following rules.
+.bP
+If
+.I wch
+matches the terminal's erase character,
+the cursor moves leftward one position
+and the new position is erased
+as if \fB\%wmove\fP(3X) and then \fB\%wdelch\fP(3X) were called.
+When the window's keypad mode is enabled
+(see below),
+.B \%KEY_LEFT
+and
+.B \%KEY_BACKSPACE
+are handled the same way.
+.bP
+.I curses
+writes any other
+.I wch
+to the window,
+as with \fB\%wecho_wchar\fP(3X).
+.bP
+If the window has been moved or modified since the last call to
+\fB\%wrefresh\fP(3X),
+.I curses
+calls
+.BR \%wrefresh .
 .PP
-The keycodes returned by these functions are the same as those
-returned by \fBwgetch\fP:
+If
+.I wch
+is a carriage return and \fBnl\fP(3X) has been called,
+.B \%wgetch
+stores the the character code for newline
+(line feed)
+in
+.I wch
+instead.
+.SS "Ungetting Characters"
+.B \%unget_wch
+places
+.I wch
+into the input queue to be returned by the next call to
+.BR \%wget_wch .
+A single input queue serves all windows.
+.SH RETURN VALUE
+.B \%wget_wch
+returns
+.B OK
+when it reads a wide character and
+.B \%KEY_CODE_YES
+when it reads a function key code.
+It returns
+.B ERR
+if
 .bP
-The predefined function
-keys are listed in \fB<curses.h>\fP as macros with values outside the range
-of 8-bit characters.
-Their names begin with \fBKEY_\fP.
+the
+.I \%WINDOW
+pointer is
+.BR NULL ,
+or
 .bP
-Other (user-defined) function keys
-which may be defined using \fBdefine_key\fP(3X) have no names,
-but also are expected to have values outside the range of 8-bit characters.
-.SS unget_wch
-The
-\fBunget_wch\fP
-function pushes the wide character
-\fIwch\fP
-back onto the head of the input queue, so the wide character
-is returned by the next call to
-\fBget_wch\fP.
-The pushback of
-one character is guaranteed.
-If the program calls
-\fBunget_wch\fP
-too many times without an intervening call to
-\fBget_wch\fP,
-the operation may fail.
+its timeout expires without any data arriving,
+or
+.bP
+execution was interrupted by a signal,
+in which case
+.B \%errno
+is set to
+.BR \%EINTR .
+.PP
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .PP
-Unlike \fBungetch\fP and \fBwgetch\fP,
-\fBunget_wch\fP cannot distinguish special characters
-returned by \fBwget_wch\fP from ordinary characters.
-An application can push special keys
-which it may read via \fBwget_wch\fP
-by checking for the \fBKEY_CODE_YES\fP result,
-and using \fBungetch\fP for those special keys.
+.B \%unget_wch
+returns
+.B OK
+on success and
+.B ERR
+if there is no more room in the input queue.
 .SH NOTES
-The header file
-\fB<curses.h>\fP
-automatically
-includes the header file
-\fB<stdio.h>\fP.
+See the \*(``NOTES\*('' section of \fB\%wgetch\fP(3X).
 .PP
-Applications should not define the escape key by itself as a single-character
-function.
+All of these functions except
+.B \%wget_wch
+and
+.B \%unget_wch
+may be implemented as macros.
 .PP
-When using
-\fBget_wch\fP,
-\fBwget_wch\fP,
-\fBmvget_wch\fP, or
-\fBmvwget_wch\fP, applications should
-not use
-\fBnocbreak\fP
-mode and
-\fBecho\fP
-mode
-at the same time.
-Depending on the state of the tty driver when each character
-is typed, the program may produce undesirable results.
+Unlike \fB\%wgetch\fP(3X),
+.B \%wget_wch
+and its variants store the value of the input character in an additional
+.I wch
+parameter instead of the return value.
 .PP
-All functions except \fBwget_wch\fP and \fBunget_wch\fP
-may be macros.
-.SH RETURN VALUE
-When
-\fBget_wch\fP,
-\fBwget_wch\fP,
-\fBmvget_wch\fP, and
-\fBmvwget_wch\fP
-functions successfully
-report the pressing of a function key, they return
-\fBKEY_CODE_YES\fP.
-When they successfully report a wide character, they return
-\fBOK\fP.
-Otherwise, they return
-\fBERR\fP.
+Unlike
+.BR \%ungetch ,
+.B \%unget_wch
+cannot distinguish function key codes
+.B \%wget_wch
+from conventional character codes.
+An application can overcome this limitation by pushing function key
+codes with
+.B \%ungetch
+and subsequently checking the return value of
+.B \%wget_wch
+for a match with
+.BR \%KEY_CODE_YES .
+.SH EXTENSIONS
+See the \*(``EXTENSIONS\*('' section of \fB\%wgetch\fP(3X).
+.SH PORTABILITY
+Applications employing
+.I \%ncurses
+extensions should condition their use on the visibility of the
+.B \%NCURSES_VERSION
+preprocessor macro.
 .PP
-Upon successful completion,
-\fBunget_wch\fP
-returns
-\fBOK\fP.
-Otherwise, the function returns
-\fBERR\fP.
+X/Open Curses,
+Issue 4 describes these functions.
+It specifies no error conditions for them.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+See the \*(``PORTABILITY\*('' section of \fB\%wgetch\fP(3X) regarding
+the interaction of
+.B \%wget_wch
+with signal handlers.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_getch\fP(3X),
-\fBcurs_ins_wch\fP(3X),
-\fBcurs_inopts\fP(3X),
-\fBcurs_move\fP(3X),
-\fBcurs_refresh\fP(3X)
+\fB\%curs_getch\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its non-wide-character configuration.
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_add_wch\fP(3X),
+\fB\%curs_inopts\fP(3X),
+\fB\%curs_move\fP(3X),
+\fB\%curs_refresh\fP(3X)
index 2c49920fb48a0802053629e650c4ae40ddc61801..32ae541abaf91264b9c493a891c4b410e9b6e15a 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_get_wstr.3x,v 1.26 2022/02/12 20:07:29 tom Exp $
-.TH curs_get_wstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_get_wstr.3x,v 1.48 2024/04/20 19:18:18 tom Exp $
+.TH curs_get_wstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBget_wstr\fP,
-\fBgetn_wstr\fP,
-\fBwget_wstr\fP,
-\fBwgetn_wstr\fP,
-\fBmvget_wstr\fP,
-\fBmvgetn_wstr\fP,
-\fBmvwget_wstr\fP,
-\fBmvwgetn_wstr\fP \- get an array of wide characters from a curses terminal keyboard
-.ad
-.hy
+\fB\%get_wstr\fP,
+\fB\%getn_wstr\fP,
+\fB\%wget_wstr\fP,
+\fB\%wgetn_wstr\fP,
+\fB\%mvget_wstr\fP,
+\fB\%mvgetn_wstr\fP,
+\fB\%mvwget_wstr\fP,
+\fB\%mvwgetn_wstr\fP \-
+get a wide-character string from a \fIcurses\fR terminal keyboard
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h>\fP
-.sp
-\fBint get_wstr(wint_t *\fIwstr\fB);\fR
-.br
-\fBint getn_wstr(wint_t *\fIwstr\fB, int \fIn\fB);\fR
-.br
-\fBint wget_wstr(WINDOW *\fIwin\fB, wint_t *\fIwstr\fB);\fR
-.br
-\fBint wgetn_wstr(WINDOW *\fIwin\fB, wint_t *\fIwstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvget_wstr(int \fIy\fB, int \fIx\fB, wint_t *\fIwstr\fB);\fR
-.br
-\fBint mvgetn_wstr(int \fIy\fB, int \fIx\fB, wint_t *\fIwstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwget_wstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, wint_t *\fIwstr\fB);\fR
-.br
-\fBint mvwgetn_wstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, wint_t *\fIwstr\fB, int \fIn\fB);\fR
+\fB#include <curses.h>
+.PP
+\fBint get_wstr(wint_t *\fIwstr\fP);
+\fBint getn_wstr(wint_t *\fIwstr\fP, int \fIn\fP);
+\fBint wget_wstr(WINDOW *\fIwin\fP, wint_t *\fIwstr\fP);
+\fBint wgetn_wstr(WINDOW *\fIwin\fP, wint_t *\fIwstr\fP, int \fIn\fP);
+.PP
+\fBint mvget_wstr(int \fIy\fP, int \fIx\fP, wint_t *\fIwstr\fP);
+\fBint mvgetn_wstr(int \fIy\fP, int \fIx\fP, wint_t *\fIwstr\fP, int \fIn\fP);
+\fBint mvwget_wstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, wint_t *\fIwstr\fP);
+\fBint mvwgetn_wstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, wint_t *\fIwstr\fP, int \fIn\fP);
 .fi
 .SH DESCRIPTION
-The effect of
-\fBget_wstr\fP
-is as though a series of calls
-to
-\fBget_wch\fP(3X)
-were made, until a newline, other end-of-line,
-or end-of-file condition is processed.
+The function
+\fBwgetn_wstr\fP
+is equivalent to a series of calls to
+\fBwget_wch\fP(3X)
+until a newline or carriage return terminates the series:
+.bP
+The terminating character is not included in the returned string.
+.bP
 An end-of-file condition is represented by \fBWEOF\fP,
 as defined in \fB<wchar.h>\fP.
-The newline and end-of-line conditions are represented
-by the \fB\\n\fP \fBwchar_t\fP value.
-In all instances, the end of the string is terminated by a null \fBwchar_t\fP.
-The routine places resulting values in the area pointed to by \fIwstr\fP.
+.bP
+In all instances, the end of the string is terminated
+by a null \fBwchar_t\fP.
+.bP
+The function stores the result in the area pointed to
+by the \fIwstr\fP parameter.
+.bP
+The function reads at most \fIn\fP characters,
+thus preventing a possible overflow of the input buffer.
+.IP
+Any attempt to enter more characters
+(other than the terminating newline or carriage return)
+causes a beep.
+.IP
+Function keys also cause a beep and are ignored.
 .PP
-The user's erase and kill characters are interpreted.
-If keypad
-mode is on for the window, \fBKEY_LEFT\fP and \fBKEY_BACKSPACE\fP
-are both considered equivalent to the user's kill character.
+The user's \fIerase\fP and \fIkill\fP characters are interpreted:
+.bP
+The \fIerase\fP character (e.g., \fB^H\fP) erases the character
+at the end of the buffer, moving the cursor to the left.
+.IP
+If \fIkeypad\fP mode is on for the window,
+\fBKEY_LEFT\fP and \fBKEY_BACKSPACE\fP
+are both considered equivalent to the user's \fIerase\fP character.
+.bP
+The \fIkill\fP character (e.g., \fB^U\fP) erases the entire buffer,
+leaving the cursor at the beginning of the buffer.
 .PP
 Characters input are echoed only if \fBecho\fP is currently on.
 In that case,
-backspace is echoed as deletion of the previous character (typically a left
-motion).
-.PP
-The effect of
-\fBwget_wstr\fP
-is as though a series of
-calls to
-\fBwget_wch\fP
-were made.
-.PP
-The effect of
-\fBmvget_wstr\fP
-is as though a call to
-\fBmove\fP
-and then a series of calls to
-\fBget_wch\fP
-were
-made.
-.PP
-The effect of
-\fBmvwget_wstr\fP
-is as though a call to
-\fBwmove\fP
-and then a series of calls to
-\fBwget_wch\fP
-were made.
+backspace is echoed as deletion of the previous character
+(typically a left motion).
 .PP
 The
 \fBgetn_wstr\fP,
@@ -137,7 +130,33 @@ versions read at most
 \fIn\fP
 characters, letting the application prevent overflow of the
 input buffer.
+.SH RETURN VALUE
+All of these functions return the integer \fBOK\fP upon successful completion.
+If unsuccessful, they return \fBERR\fP.
+.PP
+X/Open defines no error conditions.
+.PP
+In this implementation,
+these functions return an error
+.bP
+if the window pointer is null,
+.bP
+if its timeout expires without having any data, or
+.bP
+if the associated call to
+\fBwget_wch\fP
+failed.
+.PP
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
+Any of these functions other than
+\fBwgetn_wstr\fP
+may be macros.
+.PP
 Using
 \fBget_wstr\fP,
 \fBmvget_wstr\fP,
@@ -152,29 +171,15 @@ The use of
 \fBgetn_wstr\fP,
 \fBmvgetn_wstr\fP,
 \fBmvwgetn_wstr\fP, or
-\fBwgetn_wstr\fP, respectively, is recommended.
+\fBwgetn_wstr\fP,
+respectively, is recommended.
 .PP
 These functions cannot return \fBKEY_\fP values because there
 is no way to distinguish a \fBKEY_\fP value from a valid \fBwchar_t\fP value.
-.PP
-All of these routines except \fBwgetn_wstr\fP may be macros.
-.SH RETURN VALUE
-All of these functions return \fBOK\fP upon successful completion.
-Otherwise, they return \fBERR\fP.
-.PP
-Functions using a window parameter return an error if it is null.
-.RS
-.TP 5
-\fBwgetn_wstr\fP
-returns an error if the associated call to \fBwget_wch\fP failed.
-.RE
-.PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
 .SH PORTABILITY
 These functions are described in The Single Unix Specification, Version 2.
 No error conditions are defined.
+.PP
 This implementation returns \fBERR\fP if the window pointer is null,
 or if the lower-level \fBwget_wch\fP call returns an \fBERR\fP.
 In the latter case,
@@ -205,15 +210,17 @@ This implementation counts the terminator in the length.
 X/Open Curses does not specify what happens if the length \fIn\fP is negative.
 .bP
 For analogy with \fBwgetnstr\fP,
-ncurses 6.2 uses a limit (based on \fBLINE_MAX\fP).
+\fI\%ncurses\fP 6.2 uses a limit (based on \fBLINE_MAX\fP).
 .bP
 Some other implementations (such as Solaris xcurses) do the same,
 while others (PDCurses) do not allow this.
 .bP
-NetBSD 7 curses imitates ncurses 6.1 in this regard,
+NetBSD 7 curses imitates \fI\%ncurses\fP 6.1 in this regard,
 treating a \fB\-1\fP as an indefinite number of characters.
 .SH SEE ALSO
-Functions:
-\fBcurses\fP(3X),
-\fBcurs_get_wch\fP(3X),
-\fBcurs_getstr\fP(3X).
+\fB\%curs_getstr\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its non-wide-character configuration.
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_get_wch\fP(3X)
index 46d361106d68536a7c7b492af9bc97cde94298f2..523cc99df92c9c73b7192c1cfe7243fd8fa51a10 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2001-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_getcchar.3x,v 1.27 2021/12/25 20:35:03 tom Exp $
-.TH curs_getcchar 3X ""
+.\" $Id: curs_getcchar.3x,v 1.49 2024/04/20 18:55:09 tom Exp $
+.TH curs_getcchar 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBgetcchar\fP,
-\fBsetcchar\fP \- Get a wide character string and rendition from a \fBcchar_t\fP or set a \fBcchar_t\fP from a wide-character string
+\fB\%getcchar\fP,
+\fB\%setcchar\fP \-
+convert between a wide-character string and a \fIcurses\fR complex character
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint getcchar(\fP
-.br
-.B "        const cchar_t *\fIwcval\fP,"
-.br
-.B "        wchar_t *\fIwch\fP,"
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint getcchar(
+.B "        const cchar_t *\fIwch\fP,"
+.B "        wchar_t *\fIwc\fP,"
 .B "        attr_t *\fIattrs\fP,"
-.br
 .B "        short *\fIcolor_pair\fP,"
-.br
 .B "        void *\fIopts\fP );"
-.sp
+.PP
 .B "int setcchar("
-.br
-.B "        cchar_t *\fIwcval\fP,"
-.br
-.B "        const wchar_t *\fIwch\fP,"
-.br
+.B "        cchar_t *\fIwch\fP,"
+.B "        const wchar_t *\fIwc\fP,"
 .B "        const attr_t \fIattrs\fP,"
-.br
 .B "        short \fIcolor_pair\fP,"
-.br
 .B "        const void *\fIopts\fP );"
+.fi
 .SH DESCRIPTION
 .SS getcchar
-.PP
 The \fBgetcchar\fP function gets a wide-character string
 and rendition from a \fBcchar_t\fP argument.
-When \fIwch\fP is not a null pointer,
+When \fIwc\fP is not a null pointer,
 the \fBgetcchar\fP function does the following:
 .bP
-Extracts information from a \fBcchar_t\fP value \fIwcval\fP
+Extracts information from a \fBcchar_t\fP value \fIwch\fP
 .bP
 Stores the character attributes in the location pointed to by \fIattrs\fP
 .bP
-Stores the color-pair in the location pointed to by \fIcolor_pair\fP
+Stores the color pair in the location pointed to by \fIcolor_pair\fP
 .bP
 Stores the wide-character string,
-characters referenced by \fIwcval\fP, into the array pointed to by \fIwch\fP.
+characters referenced by \fIwch\fP, into the array pointed to by \fIwc\fP.
 .PP
 When
-\fIwch\fP
+\fIwc\fP
 is a null pointer, the
 \fBgetcchar\fP
 function does the following:
 .bP
-Obtains the number of wide characters pointed to by \fIwcval\fP
+Obtains the number of wide characters pointed to by \fIwch\fP
 .bP
 Does not change the data referenced by
 \fIattrs\fP
 or
 \fIcolor_pair\fP
 .SS setcchar
-.PP
-The \fBsetcchar\fP function initializes the location pointed to by \fIwcval\fP
+The \fBsetcchar\fP function initializes the location pointed to by \fIwch\fP
 by using:
 .bP
 The character attributes in
@@ -102,22 +93,37 @@ The character attributes in
 The color pair in
 \fIcolor_pair\fP
 .bP
-The wide-character string pointed to by \fIwch\fP.
-The string must be L'\\0' terminated,
+The wide-character string pointed to by \fIwc\fP.
+The string must be L'\e0' terminated,
 contain at most one spacing character,
 which must be the first.
 .IP
-Up to \fBCCHARW_MAX\fP\-1 nonspacing characters may follow.
-Additional nonspacing characters are ignored.
+Up to \fBCCHARW_MAX\fP\-1 non-spacing characters may follow.
+Additional non-spacing characters are ignored.
 .IP
 The string may contain a single control character instead.
-In that case, no nonspacing characters are allowed.
-.SH EXTENSIONS
+In that case, no non-spacing characters are allowed.
+.SH RETURN VALUE
+When \fIwc\fP is a null pointer,
+\fBgetcchar\fP returns the number of wide characters referenced by
+\fIwch\fP,
+including one for a trailing null.
 .PP
+When \fIwc\fP is not a null pointer,
+\fBgetcchar\fP returns \fBOK\fP upon successful completion,
+and \fBERR\fP otherwise.
+.PP
+Upon successful completion, \fBsetcchar\fP returns \fBOK\fP.
+Otherwise, it returns \fBERR\fP.
+.SH NOTES
+The \fIwch\fP argument may be a value generated by a call to
+\fBsetcchar\fP or by a function that has a \fBcchar_t\fP output argument.
+If \fIwch\fP is constructed by any other means, the effect is unspecified.
+.SH EXTENSIONS
 X/Open Curses documents the \fIopts\fP argument as reserved for future use,
 saying that it must be null.
 This implementation
-uses that parameter in ABI 6 for the functions which have a color-pair
+uses that parameter in ABI 6 for the functions which have a color pair
 parameter to support extended color pairs:
 .bP
 For  functions  which modify the color, e.g., \fBsetcchar\fP,
@@ -128,26 +134,8 @@ For functions which retrieve the color, e.g., \fBgetcchar\fP,
 if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
 and  used  to  retrieve  the color pair as an \fBint\fP value,
 in addition retrieving it via the standard pointer to \fBshort\fP parameter.
-.SH NOTES
-.PP
-The \fIwcval\fP argument may be a value generated by a call to
-\fBsetcchar\fP or by a function that has a \fBcchar_t\fP output argument.
-If \fIwcval\fP is constructed by any other means, the effect is unspecified.
-.SH RETURN VALUE
-.PP
-When \fIwch\fP is a null pointer,
-\fBgetcchar\fP returns the number of wide characters referenced by
-\fIwcval\fP,
-including one for a trailing null.
-.PP
-When \fIwch\fP is not a null pointer,
-\fBgetcchar\fP returns \fBOK\fP upon successful completion,
-and \fBERR\fP otherwise.
-.PP
-Upon successful completion, \fBsetcchar\fP returns \fBOK\fP.
-Otherwise, it returns \fBERR\fP.
 .SH PORTABILITY
-The \fBCCHARW_MAX\fP symbol is specific to ncurses.
+The \fBCCHARW_MAX\fP symbol is specific to \fI\%ncurses\fP.
 X/Open Curses does not provide details for the layout of the \fBcchar_t\fP
 structure.
 It tells what data are stored in it:
@@ -194,9 +182,7 @@ including using them for ligatures between characters
 Unicode does not limit the (analogous) number of combining characters,
 so some applications may be affected.
 .SH SEE ALSO
-.PP
-Functions:
-\fBcurs_attr\fP(3X),
-\fBcurs_color\fP(3X),
-\fBcurses\fP(3X),
-\fBwcwidth\fP(3).
+\fB\%curses\fP(3X),
+\fB\%curs_attr\fP(3X),
+\fB\%curs_color\fP(3X),
+\fB\%wcwidth\fP(3)
index 7894f87562f5271b39992d0f40e1505f7e428dd7..9433c6148583bcc421f253134e28cd27e2ea7e54 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_getch.3x,v 1.63 2022/02/12 20:07:45 tom Exp $
-.TH curs_getch 3X ""
-.na
-.hy 0
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_getch.3x,v 1.87 2024/04/20 19:18:18 tom Exp $
+.TH curs_getch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.ds ^  \(ha
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.ds       ^  ^
+.\}
+.
+.ie \n(.g .ds : \:
+.el       .ds : \" empty
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBgetch\fP,
-\fBwgetch\fP,
-\fBmvgetch\fP,
-\fBmvwgetch\fP,
-\fBungetch\fP,
-\fBhas_key\fP \- get (or push back) characters from \fBcurses\fP terminal keyboard
-.ad
-.hy
+\fB\%getch\fP,
+\fB\%wgetch\fP,
+\fB\%mvgetch\fP,
+\fB\%mvwgetch\fP,
+\fB\%ungetch\fP,
+\fB\%has_key\fP \-
+get (or push back) characters from \fIcurses\fR terminal keyboard
 .SH SYNOPSIS
+.nf
 .B #include <curses.h>
 .PP
 .B int getch(void);
-.br
-.B int wgetch(WINDOW *\fIwin\fB);
-.sp
-.B int mvgetch(int \fIy\fB, int \fIx\fB);
-.br
-.B int mvwgetch(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);
-.sp
-.B int ungetch(int \fIch\fB);
-.sp
-/* extension */
-.br
-.B int has_key(int \fIch\fB);
-.br
+.B int wgetch(WINDOW *\fIwin\fP);
+.B int mvgetch(int \fIy\fP, int \fIx\fP);
+.B int mvwgetch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP);
+.PP
+.B int ungetch(int \fIc\fP);
+.PP
+.\" XXX: Move has_key into its own page like define_key and key_defined?
+\fI/* extension */\fP
+.B int has_key(int \fIc\fP);
+.fi
 .SH DESCRIPTION
-.SS Reading characters
-The \fBgetch\fP, \fBwgetch\fP, \fBmvgetch\fP and \fBmvwgetch\fP, routines read
-a character from the window.
-In no-delay mode, if no input is waiting, the value \fBERR\fP is returned.
-In delay mode, the program waits until the system
-passes text through to the program.
-Depending on the setting of \fBcbreak\fP,
-this is after one character (cbreak mode),
-or after the first newline (nocbreak mode).
-In half-delay mode,
-the program waits until a character is typed or the
-specified timeout has been reached.
-.PP
-If \fBecho\fP is enabled, and the window is not a pad,
-then the character will also be echoed into the
-designated window according to the following rules:
-.bP
-If the character is the current erase character, left arrow, or backspace,
-the cursor is moved one space to the left and that screen position is erased
-as if \fBdelch\fP had been called.
+.SS "Reading Characters"
+.B \%wgetch
+gathers a key stroke from the terminal keyboard associated with a
+.I curses
+window
+.IR win .
+\fB\%ncurses\fP(3X) describes the variants of this function.
+.PP
+When input is pending,
+.B \%wgetch
+returns an integer identifying the key stroke;
+for alphanumeric and punctuation keys,
+this value corresponds to the character encoding used by the terminal.
+Use of the control key as a modifier often results in a distinct code.
+The behavior of other keys depends on whether
+.I win
+is in keypad mode;
+see subsection \*(``Keypad Mode\*('' below.
+.PP
+If no input is pending,
+then if the no-delay flag is set in the window
+(see \fB\%nodelay\fP(3X)),
+the function returns
+.BR ERR ;
+otherwise,
+.I curses
+waits until the terminal has input.
+If \fB\%cbreak\fP(3X)
+has been called,
+this happens after one character is read.
+If \fB\%nocbreak\fP(3X)
+has been called,
+it occurs when the next newline is read.
+If \fB\%halfdelay\fP(3X)
+has been called,
+.I curses
+waits until a character is typed or the specified delay elapses.
+.PP
+If \fB\%echo\fP(3X) has been called,
+and the window is not a pad,
+.I curses
+writes the returned character
+.I c
+to the window
+(at the cursor position)
+per the following rules.
 .bP
-If the character value is any other \fBKEY_\fP define, the user is alerted
-with a \fBbeep\fP call.
+If
+.I c
+matches the terminal's erase character,
+the cursor moves leftward one position
+and the new position is erased
+as if \fB\%wmove\fP(3X) and then \fB\%wdelch\fP(3X) were called.
+When the window's keypad mode is enabled
+(see below),
+.B \%KEY_LEFT
+and
+.B \%KEY_BACKSPACE
+are handled the same way.
 .bP
-If the character is a carriage-return,
-and if \fBnl\fP is enabled,
-it is translated to a line-feed after echoing.
+.I curses
+writes any other
+.I c
+to the window,
+as with \fB\%wechochar\fP(3X).
 .bP
-Otherwise the character is simply output to the screen.
+If the window has been moved or modified since the last call to
+\fB\%wrefresh\fP(3X),
+.I curses
+calls
+.BR \%wrefresh .
 .PP
-If the window is not a pad, and it has been moved or modified since the last
-call to \fBwrefresh\fP, \fBwrefresh\fP will be called before another character
-is read.
-.SS Keypad mode
-.PP
-If \fBkeypad\fP is \fBTRUE\fP, and a function key is pressed, the token for
-that function key is returned instead of the raw characters:
+If
+.I c
+is a carriage return and \fBnl\fP(3X) has been called,
+.B \%wgetch
+returns the character code for line feed instead.
+.SS "Keypad Mode"
+To
+.IR curses ,
+key strokes not from the alphabetic section of the keyboard
+(those corresponding to the ECMA-6 character set\(emsee
+\fIascii\fP(7)\(emoptionally modified by either the control or shift
+keys)
+are treated as
+.I function
+keys.
+(In
+.IR curses ,
+the term \*(``function key\*('' includes but is not limited to keycaps
+engraved with \*(``F1\*('',
+\*(``PF1\*('',
+and so on.)
+If the window is in keypad mode,
+these produce a numeric code corresponding to the
+.B KEY_
+symbols listed in subsection \*(``Predefined Key Codes\*('' below;
+otherwise,
+they transmit a sequence of codes typically starting with the escape
+character,
+and which must be collected with multiple
+.B \%wgetch
+calls.
 .bP
-The predefined function
-keys are listed in \fB<curses.h>\fP as macros with values outside the range
-of 8-bit characters.
-Their names begin with \fBKEY_\fP.
+The
+.I \%curses.h
+header file declares many
+.I "predefined function keys"
+whose names begin with
+.BR KEY_ ;
+these object-like macros have values outside the range of eight-bit
+character codes.
 .bP
-Other (user-defined) function keys which may be defined
-using \fBdefine_key\fP(3X)
-have no names, but also are expected to have values outside the range of
-8-bit characters.
-.PP
-Thus, a variable
-intended to hold the return value of a function key must be of short size or
-larger.
-.PP
-When a character that could be the beginning of a function key is received
-(which, on modern terminals, means an escape character),
-\fBcurses\fP sets a timer.
-If the remainder of the sequence does not come in within the designated
-time, the character is passed through;
-otherwise, the function key value is returned.
-For this reason, many terminals experience a delay between the time
-a user presses the escape key and the escape is returned to the program.
-.PP
-In \fBncurses\fP, the timer normally expires after
-the value in \fBESCDELAY\fP (see \fBcurs_variables\fP(3X)).
-If \fBnotimeout\fP is \fBTRUE\fP, the timer does not expire;
-it is an infinite (or very large) value.
-Because function keys usually begin with an escape character,
-the terminal may appear to hang in notimeout mode after pressing the escape key
-until another key is pressed.
-.SS Ungetting characters
-.PP
-The \fBungetch\fP routine places \fIch\fP back onto the input queue to be
-returned by the next call to \fBwgetch\fP.
-There is just one input queue for all windows.
-.PP
-.SS Predefined key-codes
-The following special keys are defined in \fB<curses.h>\fP.
+In
+.IR \%ncurses ,
+.I "user-defined function keys"
+are configured with \fB\%define_key\fP(3X);
+they have no names,
+but are also expected to have values outside the range of eight-bit
+codes.
+.PP
+A variable intended to hold a function key code must thus be of type
+.I short
+or larger.
+.PP
+Most terminals one encounters follow the ECMA-48 standard insofar as
+their function keys produce character sequences prefixed with the
+escape character ESC.
+This fact implies that
+.I curses
+cannot know whether the terminal has sent an ESC key stroke or the
+beginning of a function key's character sequence without waiting to see
+if,
+and how soon,
+further input arrives.
+When
+.I curses
+reads such an ambiguous character,
+it sets a timer.
+If the remainder of the sequence does not arrive within the designated
+time,
+.B \%wgetch
+returns the prefix character;
+otherwise,
+it returns the function key code corresponding to the unique sequence
+defined by the terminal.
+Consequently,
+a user of a
+.I curses
+application may experience a delay after pressing ESC while
+.I curses
+disambiguates the input;
+see section \*(``EXTENSIONS\*('' below.
+If the window is in \*(``no time-out\*('' mode,
+the timer does not expire;
+it is an infinite
+(or very large)
+value.
+See \fB\%notimeout\fP(3X).
+Because function key sequences usually begin with an escape character,
+the terminal may appear to hang in no time-out mode after the user has
+pressed ESC.
+Generally,
+further typing \*(``awakens\*(''
+.IR curses .
+.SS "Ungetting Characters"
+.B \%ungetch
+places
+.I c
+into the input queue to be returned by the next call to
+.BR \%wgetch .
+A single input queue serves all windows.
+.SS "Predefined Key Codes"
+The header file
+.I \%curses.h
+defines the following function key codes.
 .bP
-Except for the special case \fBKEY_RESIZE\fP,
-it is necessary to enable \fBkeypad\fP for \fBgetch\fP to return these codes.
+Except for the special case of
+.BR \%KEY_RESIZE ,
+a window's keypad mode must be enabled for
+.B \%wgetch
+to read these codes from it.
 .bP
 Not all of these are necessarily supported on any particular terminal.
 .bP
-The naming convention may seem obscure, with some apparent
-misspellings (such as \*(``RSUME\*('' for \*(``resume\*('').
-The names correspond to the long terminfo capability names for the keys,
-and were defined long ago, in the 1980s.
+The naming convention may seem obscure,
+with some apparent misspellings
+(such as \*(``RSUME\*('' for \*(``resume\*('');
+the names correspond to the
+.I \%term\%info
+capability names for the keys,
+and were standardized before the IBM PC/AT keyboard layout achieved a
+dominant position in industry.
 .PP
+.RS
+.\" XXX: Move this list into ncurses(3X), rather than duplicating it in
+.\" get_wch(3X) or having that page cross reference this one?
 .TS
-center tab(/) ;
-l l .
-\fBName\fP/\fBKey\fP \fBname\fP
-_
-KEY_BREAK/Break key
-KEY_DOWN/The four arrow keys ...
-KEY_UP
-KEY_LEFT
-KEY_RIGHT
-KEY_HOME/Home key (upward+left arrow)
-KEY_BACKSPACE/Backspace
-KEY_F0/T{
-Function keys; space for 64 keys is reserved.
+Lb Lb
+Lb Lx.
+Symbol Key name
+=
+KEY_BREAK      Break key
+KEY_DOWN       Arrow keys
+KEY_UP \^
+KEY_LEFT       \^
+KEY_RIGHT      \^
+KEY_HOME       Home key (upward+left arrow)
+KEY_BACKSPACE  Backspace
+KEY_F0 T{
+Function keys; space for 64 keys is reserved
 T}
-KEY_F(\fIn\fP)/T{
-For 0 \(<= \fIn\fP \(<= 63
+KEY_F(\fIn\fP) T{
+Function key \fIn\fP where 0 \(<= \fIn\fP \(<= 63
 T}
-KEY_DL/Delete line
-KEY_IL/Insert line
-KEY_DC/Delete character
-KEY_IC/Insert char or enter insert mode
-KEY_EIC/Exit insert char mode
-KEY_CLEAR/Clear screen
-KEY_EOS/Clear to end of screen
-KEY_EOL/Clear to end of line
-KEY_SF/Scroll 1 line forward
-KEY_SR/Scroll 1 line backward (reverse)
-KEY_NPAGE/Next page
-KEY_PPAGE/Previous page
-KEY_STAB/Set tab
-KEY_CTAB/Clear tab
-KEY_CATAB/Clear all tabs
-KEY_ENTER/Enter or send
-KEY_SRESET/Soft (partial) reset
-KEY_RESET/Reset or hard reset
-KEY_PRINT/Print or copy
-KEY_LL/Home down or bottom (lower left)
-KEY_A1/Upper left of keypad
-KEY_A3/Upper right of keypad
-KEY_B2/Center of keypad
-KEY_C1/Lower left of keypad
-KEY_C3/Lower right of keypad
-KEY_BTAB/Back tab key
-KEY_BEG/Beg(inning) key
-KEY_CANCEL/Cancel key
-KEY_CLOSE/Close key
-KEY_COMMAND/Cmd (command) key
-KEY_COPY/Copy key
-KEY_CREATE/Create key
-KEY_END/End key
-KEY_EXIT/Exit key
-KEY_FIND/Find key
-KEY_HELP/Help key
-KEY_MARK/Mark key
-KEY_MESSAGE/Message key
-KEY_MOUSE/Mouse event occurred
-KEY_MOVE/Move key
-KEY_NEXT/Next object key
-KEY_OPEN/Open key
-KEY_OPTIONS/Options key
-KEY_PREVIOUS/Previous object key
-KEY_REDO/Redo key
-KEY_REFERENCE/Ref(erence) key
-KEY_REFRESH/Refresh key
-KEY_REPLACE/Replace key
-KEY_RESIZE/Screen resized
-KEY_RESTART/Restart key
-KEY_RESUME/Resume key
-KEY_SAVE/Save key
-KEY_SBEG/Shifted beginning key
-KEY_SCANCEL/Shifted cancel key
-KEY_SCOMMAND/Shifted command key
-KEY_SCOPY/Shifted copy key
-KEY_SCREATE/Shifted create key
-KEY_SDC/Shifted delete char key
-KEY_SDL/Shifted delete line key
-KEY_SELECT/Select key
-KEY_SEND/Shifted end key
-KEY_SEOL/Shifted clear line key
-KEY_SEXIT/Shifted exit key
-KEY_SFIND/Shifted find key
-KEY_SHELP/Shifted help key
-KEY_SHOME/Shifted home key
-KEY_SIC/Shifted insert key
-KEY_SLEFT/Shifted left arrow key
-KEY_SMESSAGE/Shifted message key
-KEY_SMOVE/Shifted move key
-KEY_SNEXT/Shifted next key
-KEY_SOPTIONS/Shifted options key
-KEY_SPREVIOUS/Shifted prev key
-KEY_SPRINT/Shifted print key
-KEY_SREDO/Shifted redo key
-KEY_SREPLACE/Shifted replace key
-KEY_SRIGHT/Shifted right arrow key
-KEY_SRSUME/Shifted resume key
-KEY_SSAVE/Shifted save key
-KEY_SSUSPEND/Shifted suspend key
-KEY_SUNDO/Shifted undo key
-KEY_SUSPEND/Suspend key
-KEY_UNDO/Undo key
+KEY_DL Delete line
+KEY_IL Insert line
+KEY_DC Delete character
+KEY_IC Insert character/Enter insert mode
+KEY_EIC        Exit insert character mode
+KEY_CLEAR      Clear screen
+KEY_EOS        Clear to end of screen
+KEY_EOL        Clear to end of line
+KEY_SF Scroll one line forward
+KEY_SR Scroll one line backward (reverse)
+KEY_NPAGE      Next page/Page up
+KEY_PPAGE      Previous page/Page down
+KEY_STAB       Set tab
+KEY_CTAB       Clear tab
+KEY_CATAB      Clear all tabs
+KEY_ENTER      Enter/Send
+KEY_SRESET     Soft (partial) reset
+KEY_RESET      (Hard) reset
+KEY_PRINT      Print/Copy
+KEY_LL Home down/Bottom (lower left)
+KEY_A1 Upper left of keypad
+KEY_A3 Upper right of keypad
+KEY_B2 Center of keypad
+KEY_C1 Lower left of keypad
+KEY_C3 Lower right of keypad
+KEY_BTAB       Back tab key
+KEY_BEG        Beg(inning) key
+KEY_CANCEL     Cancel key
+KEY_CLOSE      Close key
+KEY_COMMAND    Cmd (command) key
+KEY_COPY       Copy key
+KEY_CREATE     Create key
+KEY_END        End key
+KEY_EXIT       Exit key
+KEY_FIND       Find key
+KEY_HELP       Help key
+KEY_MARK       Mark key
+KEY_MESSAGE    Message key
+KEY_MOUSE      Mouse event occurred
+KEY_MOVE       Move key
+KEY_NEXT       Next object key
+KEY_OPEN       Open key
+KEY_OPTIONS    Options key
+KEY_PREVIOUS   Previous object key
+KEY_REDO       Redo key
+KEY_REFERENCE  Ref(erence) key
+KEY_REFRESH    Refresh key
+KEY_REPLACE    Replace key
+KEY_RESIZE     Screen resized
+KEY_RESTART    Restart key
+KEY_RESUME     Resume key
+KEY_SAVE       Save key
+KEY_SELECT     Select key
+KEY_SUSPEND    Suspend key
+KEY_UNDO       Undo key
+_
+KEY_SBEG       Shifted beginning key
+KEY_SCANCEL    Shifted cancel key
+KEY_SCOMMAND   Shifted command key
+KEY_SCOPY      Shifted copy key
+KEY_SCREATE    Shifted create key
+KEY_SDC        Shifted delete character key
+KEY_SDL        Shifted delete line key
+KEY_SEND       Shifted end key
+KEY_SEOL       Shifted clear line key
+KEY_SEXIT      Shifted exit key
+KEY_SFIND      Shifted find key
+KEY_SHELP      Shifted help key
+KEY_SHOME      Shifted home key
+KEY_SIC        Shifted insert key
+KEY_SLEFT      Shifted left arrow key
+KEY_SMESSAGE   Shifted message key
+KEY_SMOVE      Shifted move key
+KEY_SNEXT      Shifted next object key
+KEY_SOPTIONS   Shifted options key
+KEY_SPREVIOUS  Shifted previous object key
+KEY_SPRINT     Shifted print key
+KEY_SREDO      Shifted redo key
+KEY_SREPLACE   Shifted replace key
+KEY_SRIGHT     Shifted right arrow key
+KEY_SRSUME     Shifted resume key
+KEY_SSAVE      Shifted save key
+KEY_SSUSPEND   Shifted suspend key
+KEY_SUNDO      Shifted undo key
 .TE
+.RE
+.PP
+Many keyboards feature a nine-key directional pad.
 .PP
-Keypad is arranged like this:
-.br
+.RS
 .TS
-center allbox tab(/) ;
-c c c .
-\fBA1\fP/\fBup\fP/\fBA3\fP
-\fBleft\fP/\fBB2\fP/\fBright\fP
-\fBC1\fP/\fBdown\fP/\fBC3\fP
+allbox center;
+C C C.
+A1     up      A3
+left   B2      right
+C1     down    C3
 .TE
+.RE
 .sp
-A few of these predefined values do \fInot\fP correspond to a real key:
+Two of the symbols in the list above do
+.I not
+correspond to a physical key.
 .bP
-.B KEY_RESIZE
-is returned when the \fBSIGWINCH\fP signal has been detected
-(see \fBinitscr\fP(3X) and \fBresizeterm\fP(3X)).
-This code is returned whether or not \fBkeypad\fP has been enabled.
+.B \%wgetch
+returns
+.BR \%KEY_RESIZE ,
+even if the window's keypad mode is disabled,
+when
+.I \%ncurses
+handles a
+.B \%SIGWINCH
+signal;
+see \fB\%initscr\fP(3X) and \fB\%resizeterm\fP(3X).
 .bP
-.B KEY_MOUSE
-is returned for mouse-events (see \fBcurs_mouse\fP(3X)).
-This code relies upon whether or not \fBkeypad\fP(3X) has been enabled,
-because (e.g., with \fBxterm\fP(1) mouse prototocol) ncurses must
-read escape sequences,
-just like a function key.
-.SS Testing key-codes
-.PP
-The \fBhas_key\fP routine takes a key-code value from the above list, and
-returns \fBTRUE\fP or \fBFALSE\fP according to whether
-the current terminal type recognizes a key with that value.
-.PP
-The library also supports these extensions:
-.RS 3
-.TP 5
-.B define_key
-defines a key-code for a given string (see \fBdefine_key\fP(3X)).
-.TP 5
-.B key_defined
-checks if there is a key-code defined for a given
-string (see \fBkey_defined\fP(3X)).
-.RE
-.PP
+.B \%wgetch
+returns
+.B \%KEY_MOUSE
+to indicate that a mouse event is pending collection;
+see \fB\%curs_mouse\fP(3X).
+Receipt of this code requires a window's keypad mode to be enabled,
+because to interpret mouse input
+(as with with \fI\%xterm\fP(1)'s mouse prototocol),
+.I \%ncurses
+must read an escape sequence,
+as with a function key.
+.SS "Testing Key Codes"
+In
+.IR \%ncurses ,
+.B \%has_key
+returns a Boolean value indicating whether the terminal type recognizes
+its parameter as a key code value.
+See also
+\fB\%define_key\fP(3X) and \fB\%key_defined\fP(3X).
 .SH RETURN VALUE
-All routines return the integer \fBERR\fP upon failure and an integer value
-other than \fBERR\fP (\fBOK\fP in the case of \fBungetch\fP) upon successful
-completion.
-.RS 3
-.TP 5
-\fBungetch\fP
-returns \fBERR\fP
-if there is no more room in the FIFO.
-.TP
-\fBwgetch\fP
-returns \fBERR\fP
-if the window pointer is null, or
-if its timeout expires without having any data, or
-if the execution was interrupted by a signal (\fBerrno\fP will be set to
-\fBEINTR\fP).
-.RE
+Except for
+.BR \%has_key ,
+these functions return
+.B OK
+on success and
+.B ERR
+on failure.
+.PP
+Functions taking a
+.I \%WINDOW
+pointer argument fail if the pointer is
+.BR NULL .
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
+.PP
+.B \%wgetch
+also fails if
+.bP
+its timeout expires without any data arriving,
+or
+.bP
+execution was interrupted by a signal,
+in which case
+.B \%errno
+is set to
+.BR \%EINTR .
+.PP
+.B \%ungetch
+fails if there is no more room in the input queue.
+.PP
+.B \%has_key
+returns
+.B TRUE
+or
+.BR FALSE .
 .SH NOTES
-Use of the escape key by a programmer for a single character function is
-discouraged, as it will cause a delay of up to one second while the
-keypad code looks for a following function-key sequence.
-.PP
-Some keys may be the same as commonly used control
-keys, e.g.,
-\fBKEY_ENTER\fP versus control/M,
-\fBKEY_BACKSPACE\fP versus control/H.
-Some curses implementations may differ according to whether they
-treat these control keys specially (and ignore the terminfo), or
-use the terminfo definitions.
-\fBNcurses\fP uses the terminfo definition.
-If it says that \fBKEY_ENTER\fP is control/M,
-\fBgetch\fP will return \fBKEY_ENTER\fP
-when you press control/M.
-.PP
-Generally, \fBKEY_ENTER\fP denotes the character(s) sent by the \fIEnter\fP
-key on the numeric keypad:
+.I curses
+discourages assignment of the ESC key to a discrete function by the
+programmer because the library requires a delay while it awaits the
+potential remainder of a terminal escape sequence.
+.PP
+Some key strokes are indistinguishable from control characters;
+for example,
+.B \%KEY_ENTER
+may be the same as
+.BR \*^M ,
+.\" as with att630 or pccon+keys
+and
+.B \%KEY_BACKSPACE
+may be the same as
+.B \*^H
+.\" as with att505 or vt52-basic
+or
+.BR \*^? .
+.\" as with pccon+keys or vt320
+Consult the terminal's
+.I \%term\%info
+entry to determine whether this is the case;
+see \fB\%infocmp\fP(1).
+Some
+.I curses
+implementations,
+including
+.IR \%ncurses ,
+honor the
+.I \%term\%info
+key definitions;
+others treat such control characters specially.
+.PP
+.I curses
+distinguishes the Enter keys in the alphabetic and numeric keypad
+sections of a keyboard because (most) terminals do.
+.B \%KEY_ENTER
+refers to the key on the numeric keypad and,
+like other function keys,
+and is reliably recognized only if the window's keypad mode is enabled.
 .bP
-the terminal description lists the most useful keys,
+The
+.I \%term\%info
+.B \%key_enter
+.RB ( kent )
+capability describes the character (sequence) sent by the Enter key of
+a terminal's numeric
+(or similar)
+keypad.
 .bP
-the \fIEnter\fP key on the regular keyboard is already handled by
-the standard ASCII characters for carriage-return and line-feed,
+\*(``Enter or send\*('' is X/Open Curses's description of this key.
+.PP
+.I curses
+treats the Enter or Return key in the
+.I alphabetic
+section of the keyboard differently.
 .bP
-depending on whether \fBnl\fP or \fBnonl\fP was called,
-pressing \*(``Enter\*('' on the regular keyboard
-may return either a carriage-return or line-feed, and finally
+It usually produces a control code for carriage return
+.RB ( \*^M )
+or line feed
+.RB ( \*^J ).
 .bP
-\*(``Enter or send\*('' is the standard description for this key.
-.PP
-When using \fBgetch\fP, \fBwgetch\fP, \fBmvgetch\fP, or
-\fBmvwgetch\fP, nocbreak mode (\fBnocbreak\fP) and echo mode
-(\fBecho\fP) should not be used at the same time.
-Depending on the
-state of the tty driver when each character is typed, the program may
-produce undesirable results.
-.PP
-Note that \fBgetch\fP, \fBmvgetch\fP, and \fBmvwgetch\fP may be macros.
-.PP
-Historically, the set of keypad macros was largely defined by the extremely
-function-key-rich keyboard of the AT&T 7300, aka 3B1, aka Safari 4.
-Modern
-personal computers usually have only a small subset of these.
-IBM PC-style
-consoles typically support little more than \fBKEY_UP\fP, \fBKEY_DOWN\fP,
-\fBKEY_LEFT\fP, \fBKEY_RIGHT\fP, \fBKEY_HOME\fP, \fBKEY_END\fP,
-\fBKEY_NPAGE\fP, \fBKEY_PPAGE\fP, and function keys 1 through 12.
-The Ins key
-is usually mapped to \fBKEY_IC\fP.
+Depending on the terminal mode
+(raw,
+cbreak,
+or
+\*(``cooked\*(''),
+and whether \fB\%nl\fP(3X) or \fB\%nonl\fP(3X) has been called,
+.B \%wgetch
+may return either a carriage return or line feed upon an Enter or Return
+key stroke.
+.PP
+Use of
+.B \%wgetch
+with \fB\%echo\fP(3X) and neither \fB\%cbreak\fP(3X) nor \fB\%raw\fP(3X)
+is not well-defined.
+.PP
+Historically,
+the list of key code macros above was influenced by the
+function-key-rich keyboard of the AT&T 7300
+(also known variously as the \*(``3B1\*('', \*(``Safari 4\*('', and
+\*(``UNIX PC\*(''),
+a 1985 machine.
+Today's computer keyboards are based that of the IBM PC/AT and tend to
+have fewer.
+A
+.I curses
+application can expect such a keyboard to transmit key codes
+.BR \%KEY_UP ,
+.BR \%KEY_DOWN ,
+.BR \%KEY_LEFT ,
+.BR \%KEY_RIGHT ,
+.BR \%KEY_HOME ,
+.BR \%KEY_END ,
+.B \%KEY_PPAGE
+(Page Up),
+.B \%KEY_NPAGE
+(Page Down),
+.B \%KEY_IC
+(Insert),
+.B \%KEY_DC
+(Delete),
+and
+.BI \%KEY_F( n )
+for 1 \(<=
+.I n
+\(<= 12.
+.PP
+.BR \%getch ,
+.BR \%mvgetch ,
+and
+.B \%mvwgetch
+may be implemented as macros.
+.SH EXTENSIONS
+In
+.IR \%ncurses ,
+when a window's \*(``no time-out\*('' mode is
+.I not
+set,
+the
+.B \%ESCDELAY
+variable configures the duration of the timer used to disambiguate a
+function key character sequence from a series of key strokes beginning
+with ESC typed by the user;
+see
+\fB\%curs_variables\fP(3X).
+.PP
+\fB\%has_key\fP was designed for \fB\%ncurses\fP(3X),
+and is not found in SVr4
+.IR curses ,
+4.4BSD
+.IR curses ,
+or any other previous curses implementation.
 .SH PORTABILITY
-The *get* functions are described in the XSI Curses standard, Issue 4.
-They
-read single-byte characters only.
-The standard specifies that they return
-\fBERR\fP on failure, but specifies no error conditions.
-.PP
-The echo behavior of these functions on input of \fBKEY_\fP or backspace
-characters was not specified in the SVr4 documentation.
-This description is
-adopted from the XSI Curses standard.
-.PP
-The behavior of \fBgetch\fP and friends in the presence of handled signals is
-unspecified in the SVr4 and XSI Curses documentation.
-Under historical curses
-implementations, it varied depending on whether the operating system's
-implementation of handled signal receipt interrupts a \fBread\fP(2) call in
-progress or not, and also (in some implementations) depending on whether an
-input timeout or non-blocking mode has been set.
-.PP
-\fBKEY_MOUSE\fP is mentioned in XSI Curses, along with a few related
-terminfo capabilities, but no higher-level functions use the feature.
-The implementation in ncurses is an extension.
-.PP
-\fBKEY_RESIZE\fP is an extension first implemented for ncurses.
-NetBSD curses later added this extension.
-.PP
-Programmers concerned about portability should be prepared for either of two
-cases: (a) signal receipt does not interrupt \fBgetch\fP; (b) signal receipt
-interrupts \fBgetch\fP and causes it to return \fBERR\fP with \fBerrno\fP set to
-\fBEINTR\fP.
-.PP
-The \fBhas_key\fP function is unique to \fBncurses\fP.
-We recommend that
-any code using it be conditionalized on the \fBNCURSES_VERSION\fP feature macro.
+Applications employing
+.I \%ncurses
+extensions should condition their use on the visibility of the
+.B \%NCURSES_VERSION
+preprocessor macro.
+.PP
+X/Open Curses,
+Issue 4 describes
+\fB\%getch\fP,
+\fB\%wgetch\fP,
+\fB\%mvgetch\fP,
+\fB\%mvwgetch\fP,
+and
+\fB\%ungetch\fP.
+It specifies no error conditions for them.
+.PP
+.B \%wgetch
+reads only single-byte characters.
+.PP
+The echo behavior of these functions on input of
+.B KEY_
+or backspace characters was not specified in the SVr4 documentation.
+This description is adapted from X/Open Curses.
+.PP
+The behavior of
+.B \%wgetch
+in the presence of signal handlers is unspecified in the SVr4
+documentation and X/Open Curses.
+In historical
+.I curses
+implementations,
+it varied depending on whether the operating system's dispatch of a
+signal to a handler interrupting a \fIread\fP(2) call in progress,
+and also
+(in some implementations)
+whether an input timeout or non-blocking mode has been set.
+Programmers concerned about portability should be prepared for either of
+two cases:
+(a) signal receipt does not interrupt
+.BR \%wgetch ;
+or
+(b) signal receipt interrupts
+.B \%wgetch
+and causes it to return
+.B ERR
+with
+.B \%errno
+set to
+.BR \%EINTR .
+.PP
+.B \%KEY_MOUSE
+is mentioned in X/Open Curses,
+along with a few related
+.I \%term\%info
+capabilities,
+but no higher-level functions use the feature.
+The implementation in
+.I \%ncurses
+is an extension.
+.PP
+.B \%KEY_RESIZE
+and
+.B \%has_key
+are extensions first implemented for
+.IR \%ncurses .
+By 2022,
+.I \%PDCurses
+.\" https://web.archive.org/web/20220117232009/https://pdcurses.org/docs/MANUAL.html
+and
+NetBSD
+.I curses
+.\" https://web.archive.org/web/20200923185647/https://man.netbsd.org/curses_input.3
+had added them along with
+.BR \%KEY_MOUSE .
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_inopts\fP(3X),
-\fBcurs_mouse\fP(3X),
-\fBcurs_move\fP(3X),
-\fBcurs_outopts\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_variables\fP(3X),
-\fBresizeterm\fP(3X).
-.PP
-Comparable functions in the wide-character (ncursesw) library are
-described in
-\fBcurs_get_wch\fP(3X).
+\fB\%curs_get_wch\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its wide-character configuration
+.RI ( \%ncursesw ).
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_addch\fP(3X),
+\fB\%curs_inopts\fP(3X),
+\fB\%curs_mouse\fP(3X),
+\fB\%curs_move\fP(3X),
+\fB\%curs_outopts\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%resizeterm\fP(3X),
+\fB\%ascii\fP(7)
+.PP
+ECMA-6 \*(``7-bit coded Character Set\*(''
+\%<https://\*:ecma\-international\*:.org/\
+\*:publications\-and\-standards/\*:standards/\*:ecma\-6/>
+.PP
+ECMA-48 \*(``Control Functions for Coded Character Sets\*(''
+\%<https://\*:ecma\-international\*:.org/\
+\*:publications\-and\-standards/\*:standards/\*:ecma\-48/>
index 80a1c1ab80d20a6c3a6030d98b4986bd415d0959..4a49352a146cdf6de9b3b1ca4ce1bee33f1def33 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_getstr.3x,v 1.36 2022/02/12 20:07:29 tom Exp $
-.TH curs_getstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_getstr.3x,v 1.58 2024/04/20 19:18:18 tom Exp $
+.TH curs_getstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBgetstr\fP,
-\fBgetnstr\fP,
-\fBwgetstr\fP,
-\fBwgetnstr\fP,
-\fBmvgetstr\fP,
-\fBmvgetnstr\fP,
-\fBmvwgetstr\fP,
-\fBmvwgetnstr\fP \- accept character strings from \fBcurses\fP terminal keyboard
-.ad
-.hy
+\fB\%getstr\fP,
+\fB\%getnstr\fP,
+\fB\%wgetstr\fP,
+\fB\%wgetnstr\fP,
+\fB\%mvgetstr\fP,
+\fB\%mvgetnstr\fP,
+\fB\%mvwgetstr\fP,
+\fB\%mvwgetnstr\fP \-
+accept character strings from \fIcurses\fR terminal keyboard
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint getstr(char *\fIstr\fB);\fR
-.br
-\fBint getnstr(char *\fIstr\fB, int \fIn\fB);\fR
-.br
-\fBint wgetstr(WINDOW *\fIwin\fB, char *\fIstr\fB);\fR
-.br
-\fBint wgetnstr(WINDOW *\fIwin\fB, char *\fIstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvgetstr(int \fIy\fB, int \fIx\fB, char *\fIstr\fB);\fR
-.br
-\fBint mvwgetstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, char *\fIstr\fB);\fR
-.br
-\fBint mvgetnstr(int \fIy\fB, int \fIx\fB, char *\fIstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwgetnstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, char *\fIstr\fB, int \fIn\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint getstr(char *\fIstr\fP);
+\fBint getnstr(char *\fIstr\fP, int \fIn\fP);
+\fBint wgetstr(WINDOW *\fIwin\fP, char *\fIstr\fP);
+\fBint wgetnstr(WINDOW *\fIwin\fP, char *\fIstr\fP, int \fIn\fP);
+.PP
+\fBint mvgetstr(int \fIy\fP, int \fIx\fP, char *\fIstr\fP);
+\fBint mvwgetstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, char *\fIstr\fP);
+\fBint mvgetnstr(int \fIy\fP, int \fIx\fP, char *\fIstr\fP, int \fIn\fP);
+\fBint mvwgetnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, char *\fIstr\fP, int \fIn\fP);
+.fi
 .SH DESCRIPTION
-The function \fBgetstr\fP is equivalent to a series of calls to \fBgetch\fP,
-until a newline or carriage return is received (the terminating character is
-not included in the returned string).
-.\" X/Open says also until EOf
-.\" X/Open says then an EOS is added to the result
-.\" X/Open doesn't mention n<0
-The resulting value is placed in the
-area pointed to by the character pointer \fIstr\fP,
-followed by a NUL.
-.PP
-The \fBgetnstr\fP function reads
-from the \fIstdscr\fP default window.
-The other functions, such as \fBwgetnstr\fP,
-read from the window given as a parameter.
-.PP
-\fBgetnstr\fP reads at most \fIn\fP characters, thus preventing a possible
-overflow of the input buffer.
-Any attempt to enter more characters (other
-than the terminating newline or carriage return) causes a beep.
-Function
-keys also cause a beep and are ignored.
+The function
+\fBwgetnstr\fP
+is equivalent to a series of calls to
+\fBwgetch\fP(3X),
+until a newline or carriage return terminates the series:
+.bP
+The terminating character is not included in the returned string.
+.bP
+In all instances, the end of the string is terminated
+by a NUL.
+.bP
+The function stores the result in the area pointed to
+by the \fIstr\fP parameter.
+.bP
+The function reads at most \fIn\fP characters,
+thus preventing a possible overflow of the input buffer.
+.IP
+Any attempt to enter more characters
+(other than the terminating newline or carriage return)
+causes a beep.
+.IP
+Function keys also cause a beep and are ignored.
 .PP
 The user's \fIerase\fP and \fIkill\fP characters are interpreted:
 .bP
@@ -99,40 +99,86 @@ at the end of the buffer, moving the cursor to the left.
 .IP
 If \fIkeypad\fP mode is on for the window,
 \fBKEY_LEFT\fP and \fBKEY_BACKSPACE\fP
-are both considered equivalent to the user's erase character.
+are both considered equivalent to the user's \fIerase\fP character.
 .bP
 The \fIkill\fP character (e.g., \fB^U\fP) erases the entire buffer,
 leaving the cursor at the beginning of the buffer.
 .PP
 Characters input are echoed only if \fBecho\fP is currently on.
 In that case,
-backspace is echoed as deletion of the previous character (typically a left
-motion).
+backspace is echoed as deletion of the previous character
+(typically a left motion).
+.PP
+The
+\fBgetnstr\fP,
+\fBmvgetnstr\fP,
+\fBmvwgetnstr\fP, and
+\fBwgetnstr\fP
+functions are identical
+to the
+\fBgetstr\fP,
+\fBmvgetstr\fP,
+\fBmvwgetstr\fP, and
+\fBwgetstr\fP
+functions, respectively,
+except that the
+\fB*n*\fP
+versions read at most
+\fIn\fP
+characters, letting the application prevent overflow of the
+input buffer.
 .SH RETURN VALUE
-All routines return the integer \fBERR\fP upon failure and an \fBOK\fP (SVr4
-specifies only \*(``an integer value other than \fBERR\fP\*('') upon successful
-completion.
+All of these functions return the integer \fBOK\fP upon successful completion.
+(SVr4 specifies only \*(``an integer value other than \fBERR\fP\*('')
+If unsuccessful, they return \fBERR\fP.
 .PP
 X/Open defines no error conditions.
 .PP
 In this implementation,
 these functions return an error
-if the window pointer is null, or
-if its timeout expires without having any data.
+.bP
+if the window pointer is null,
+.bP
+if its timeout expires without having any data, or
+.bP
+if the associated call to
+\fBwgetch\fP
+failed.
 .PP
 This implementation provides an extension as well.
 If a \fBSIGWINCH\fP interrupts the function, it will return \fBKEY_RESIZE\fP
 rather than \fBOK\fP or \fBERR\fP.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-Note that \fBgetstr\fP, \fBmvgetstr\fP, and \fBmvwgetstr\fP may be macros.
+Any of these functions other than
+\fBwgetnstr\fP
+may be macros.
+.PP
+Using
+\fBgetstr\fP,
+\fBmvgetstr\fP,
+\fBmvwgetstr\fP, or
+\fBwgetstr\fP
+to read a line that
+overflows the array pointed to by
+\fBstr\fP
+causes undefined
+results.
+The use of
+\fBgetnstr\fP,
+\fBmvgetnstr\fP,
+\fBmvwgetnstr\fP, or
+\fBwgetnstr\fP,
+respectively, is recommended.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
-They read single-byte characters only.
-The standard does not define any error conditions.
+These functions are described in The Single Unix Specification, Version 2.
+No error conditions are defined.
+.PP
 This implementation returns \fBERR\fP if the window pointer is null,
 or if the lower-level \fBwgetch\fP(3X) call returns an \fBERR\fP.
 .PP
@@ -157,9 +203,9 @@ but did not state whether the terminating NUL is counted in that limit.
 X/Open Curses, Issue 7 (2009) changed that to say they
 \*(``read at most \fIn\fP\-1 bytes\*(''
 to allow for the terminating NUL.
-As of 2018, some implementations do, some do not count it:
+As of 2018, some implementations count it, some do not:
 .bP
-ncurses 6.1 and PDCurses do not count the NUL in the given limit, while
+\fI\%ncurses\fP 6.1 and PDCurses do not count the NUL in the given limit, while
 .bP
 Solaris SVr4 and NetBSD curses count the NUL as part of the limit.
 .bP
@@ -187,15 +233,15 @@ that it is greater than zero.
 .IP
 A comment in NetBSD's source code states that this is specified in SUSv2.
 .bP
-ncurses (before 6.2) assumes no particular limit for the result
+\fI\%ncurses\fP (before 6.2) assumes no particular limit for the result
 from \fBwgetstr\fP, and treats the \fIn\fP parameter of \fBwgetnstr\fP
 like SVr4 curses.
 .bP
-ncurses 6.2 uses \fBLINE_MAX\fP,
+\fI\%ncurses\fP 6.2 uses \fBLINE_MAX\fP,
 or a larger (system-dependent) value
 which the \fBsysconf\fP function may provide.
 If neither \fBLINE_MAX\fP or \fBsysconf\fP is available,
-ncurses uses the POSIX value for \fBLINE_MAX\fP (a 2048 byte limit).
+\fI\%ncurses\fP uses the POSIX value for \fBLINE_MAX\fP (a 2048 byte limit).
 In either case, it reserves a byte for the terminating NUL.
 .PP
 Although \fBgetnstr\fP is equivalent to a series of calls to \fBgetch\fP,
@@ -225,22 +271,31 @@ They may take the \fIcbreak\fP
 mode set by the caller into account when deciding whether to handle
 echoing within \fBgetnstr\fP or as a side-effect of the \fBgetch\fP calls.
 .bP
-The original ncurses (as \fIpcurses\fP in 1986) set \fBnoraw\fP and \fBcbreak\fP
-when accepting input for \fBgetnstr\fP.
+The original \fI\%ncurses\fP
+(as \fIpcurses\fP in 1986)
+set \fBnoraw\fP and \fBcbreak\fP when accepting input for \fBgetnstr\fP.
 That may have been done to make function- and cursor-keys work;
-it is not necessary with ncurses.
+it is not necessary with \fI\%ncurses\fP.
 .IP
-Since 1995, ncurses has provided signal handlers for INTR and QUIT
-(e.g., \fB^C\fP or \fB^\\\fP).
+Since 1995,
+\fI\%ncurses\fP has provided signal handlers for INTR and QUIT
+(e.g., \fB^C\fP or \fB^\e\fP).
 With the \fBnoraw\fP and \fBcbreak\fP settings,
 those may catch a signal and stop the program,
 where other implementations allow one to enter those characters in the buffer.
 .bP
-Starting in 2021 (ncurses 6.3), \fBgetnstr\fP sets \fBraw\fP,
+Starting in 2021
+(\fI\%ncurses\fP 6.3),
+\fBgetnstr\fP sets \fBraw\fP,
 rather than \fBnoraw\fP and \fBcbreak\fP for better compatibility with
 SVr4-curses, e.g., allowing one to enter a \fB^C\fP into the buffer.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_getch\fP(3X),
-\fBcurs_termattrs\fP(3X),
-\fBcurs_variables\fP(3X).
+\fB\%curs_get_wstr\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its wide-character configuration
+.RI ( \%ncursesw ).
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_getch\fP(3X),
+\fB\%curs_termattrs\fP(3X),
+\fB\%curs_variables\fP(3X)
index 94ceeb3a78088619594e437710b702d4932bcd80..eadcecef2cadfe6dca773ef6342b08c570471d5b 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2020-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2020-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2007,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_getyx.3x,v 1.23 2022/02/12 20:07:29 tom Exp $
-.TH curs_getyx 3X ""
+.\" $Id: curs_getyx.3x,v 1.44 2024/04/20 21:20:07 tom Exp $
+.TH curs_getyx 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .SH NAME
-\fBgetyx\fP,
-\fBgetparyx\fP,
-\fBgetbegyx\fP,
-\fBgetmaxyx\fP \- get \fBcurses\fP cursor and window coordinates
+\fB\%getyx\fP,
+\fB\%getparyx\fP,
+\fB\%getbegyx\fP,
+\fB\%getmaxyx\fP \-
+get \fIcurses\fR cursor and window coordinates
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBvoid getyx(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);\fR
-.br
-\fBvoid getparyx(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);\fR
-.br
-\fBvoid getbegyx(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);\fR
-.br
-\fBvoid getmaxyx(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBvoid getyx(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP);
+\fBvoid getparyx(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP);
+\fBvoid getbegyx(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP);
+\fBvoid getmaxyx(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP);
+.fi
 .SH DESCRIPTION
-The \fBgetyx\fP macro places the current cursor position of the given window in
-the two integer variables \fIy\fP and \fIx\fP.
+The \fB\%getyx\fP macro places the current cursor position
+of the given window in the two integer variables \fIy\fP and \fIx\fP.
 .PP
-If \fIwin\fP is a subwindow, the \fBgetparyx\fP macro places the beginning
+If \fIwin\fP is a subwindow, the \fB\%getparyx\fP macro places the beginning
 coordinates of the subwindow relative to the parent window into two integer
 variables \fIy\fP and \fIx\fP.
 Otherwise, \fB\-1\fP is placed into \fIy\fP and \fIx\fP.
 .PP
-Like \fBgetyx\fP, the \fBgetbegyx\fP and \fBgetmaxyx\fP macros store
+Like \fB\%getyx\fP, the \fB\%getbegyx\fP and \fB\%getmaxyx\fP macros store
 the current beginning coordinates and size of the specified window.
 .SH RETURN VALUE
 The return values of these macros are undefined (i.e.,
 they should not be used as the right-hand side of assignment statements).
 .SH NOTES
 All of these interfaces are macros.
-A "\fB&\fP" is not necessary before the variables \fIy\fP and \fIx\fP.
+A \*(``&\*('' is not necessary before the variables \fIy\fP and \fIx\fP.
 .SH PORTABILITY
 The
-\fBgetyx\fP,
-\fBgetparyx\fP,
-\fBgetbegyx\fP and
-\fBgetmaxyx\fP
-macros are described in the XSI Curses standard, Issue 4.
+\fB\%getyx\fP,
+\fB\%getparyx\fP,
+\fB\%getbegyx\fP and
+\fB\%getmaxyx\fP
+macros are described in X/Open Curses, Issue 4.
 .PP
 This implementation also provides functions
-\fBgetbegx\fP,
-\fBgetbegy\fP,
-\fBgetcurx\fP,
-\fBgetcury\fP,
-\fBgetmaxx\fP,
-\fBgetmaxy\fP,
-\fBgetparx\fP and
-\fBgetpary\fP
-for compatibility with older versions of curses.
+\fB\%getbegx\fP,
+\fB\%getbegy\fP,
+\fB\%getcurx\fP,
+\fB\%getcury\fP,
+\fB\%getmaxx\fP,
+\fB\%getmaxy\fP,
+\fB\%getparx\fP and
+\fB\%getpary\fP
+for compatibility with older versions of \fIcurses\fP;
+see \fB\%curs_legacy\fP(3X).
 .PP
 Although X/Open Curses does not address this,
-many implementations provide members of the WINDOW structure
+many implementations provide members of the \fB\%WINDOW\fP structure
 containing values corresponding to these macros.
-For best portability, do not rely on using the data in WINDOW,
-since some implementations make WINDOW opaque (do not allow
+For best portability, do not rely on using the data in \fB\%WINDOW\fP,
+since some implementations make \fB\%WINDOW\fP opaque (do not allow
 direct use of its members).
 .PP
 Besides the problem of opaque structures,
 the data stored in like-named members may not have like-values in
 different implementations.
-For example, the WINDOW._maxx and WINDOW._maxy values in ncurses
-have (at least since release 1.8.1) differed by one from some
-other implementations.
-The difference is hidden by means of the macro \fBgetmaxyx\fP.
+For example, the \fB\%WINDOW._maxx\fP and \fB\%WINDOW._maxy\fP values
+in \fI\%ncurses\fP have
+(at least since release 1.8.1)
+differed by one from some other implementations.
+The difference is hidden by means of the macro \fB\%getmaxyx\fP.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_legacy\fP(3X),
-\fBcurs_opaque\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_legacy\fP(3X),
+\fB\%curs_opaque\fP(3X)
index ba2498555ffeabf96f0bc84d60136f37b97303f0..8512e6d3b51e56ed943385e9f08109459aa97acd 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_in_wch.3x,v 1.13 2022/02/12 20:07:29 tom Exp $
-.TH curs_in_wch 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_in_wch.3x,v 1.31 2024/04/20 21:20:07 tom Exp $
+.TH curs_in_wch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBin_wch\fP,
-\fBmvin_wch\fP,
-\fBmvwin_wch\fP,
-\fBwin_wch\fP \- extract a complex character and rendition from a window
+\fB\%in_wch\fP,
+\fB\%mvin_wch\fP,
+\fB\%mvwin_wch\fP,
+\fB\%win_wch\fP \-
+get a \fIcurses\fR complex character from a window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint in_wch(cchar_t *\fIwcval\fB);\fR
-.br
-\fBint win_wch(WINDOW *\fIwin\fB, cchar_t *\fIwcval\fB);\fR
-.sp
-\fBint mvin_wch(int \fIy\fB, int \fIx\fB, cchar_t *\fIwcval\fB);\fR
-.br
-\fBint mvwin_wch(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, cchar_t *\fIwcval\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint in_wch(cchar_t *\fIwch\fP);
+\fBint win_wch(WINDOW *\fIwin\fP, cchar_t *\fIwch\fP);
+.PP
+\fBint mvin_wch(int \fIy\fP, int \fIx\fP, cchar_t *\fIwch\fP);
+\fBint mvwin_wch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, cchar_t *\fIwch\fP);
+.fi
 .SH DESCRIPTION
 These functions extract the complex character and rendition from
 the current position in the named window into the \fBcchar_t\fP object
-referenced by wcval.
+referenced by wch.
 .SH RETURN VALUE
-No errors are defined in the XSI Curses standard.
+No errors are defined in X/Open Curses.
 This implementation checks for null pointers, returns \fBERR\fP in that case.
 Also, the \fImv\fP routines check for error moving the cursor,
 returning \fBERR\fP in that case.
 Otherwise they return \fBOK\fP.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
 Note that all of these routines may be macros.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
+These functions are described in X/Open Curses, Issue 4.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_inch\fP(3X).
+\fB\%curs_inch\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its non-wide-character configuration.
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_inwstr\fP(3X)
index 4bcec94843641fb482d185b70060f8b0e6ef653b..53c984647507330970ef15e088768023238ec194 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_in_wchstr.3x,v 1.17 2022/02/12 20:07:29 tom Exp $
-.TH curs_in_wchstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.na
-.hy 0
+.\" $Id: curs_in_wchstr.3x,v 1.39 2024/04/20 21:24:19 tom Exp $
+.TH curs_in_wchstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
+.de bP
+.ie n  .IP \(bu 4
+.el    .IP \(bu 2
+..
 .SH NAME
-\fBin_wchstr\fP,
-\fBin_wchnstr\fP,
-\fBwin_wchstr\fP,
-\fBwin_wchnstr\fP,
-\fBmvin_wchstr\fP,
-\fBmvin_wchnstr\fP,
-\fBmvwin_wchstr\fP,
-\fBmvwin_wchnstr\fP \- get an array of complex characters and renditions from a curses window
-.ad
-.hy
+\fB\%in_wchstr\fP,
+\fB\%in_wchnstr\fP,
+\fB\%win_wchstr\fP,
+\fB\%win_wchnstr\fP,
+\fB\%mvin_wchstr\fP,
+\fB\%mvin_wchnstr\fP,
+\fB\%mvwin_wchstr\fP,
+\fB\%mvwin_wchnstr\fP \-
+get a \fIcurses\fR complex character string from a window
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h>\fP
-.sp
-\fBint in_wchstr(cchar_t *\fIwchstr\fB);\fR
-.br
-\fBint in_wchnstr(cchar_t *\fIwchstr\fB, int \fIn\fB);\fR
-.br
-\fBint win_wchstr(WINDOW *\fIwin\fB, cchar_t *\fIwchstr\fB);\fR
-.br
-\fBint win_wchnstr(WINDOW *\fIwin\fB, cchar_t *\fIwchstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvin_wchstr(int \fIy\fB, int \fIx\fB, cchar_t *\fIwchstr\fB);\fR
-.br
-\fBint mvin_wchnstr(int \fIy\fB, int \fIx\fB, cchar_t *\fIwchstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwin_wchstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, cchar_t *\fIwchstr\fB);\fR
-.br
-\fBint mvwin_wchnstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, cchar_t *\fIwchstr\fR, int \fIn\fB);\fR
+\fB#include <curses.h>
+.PP
+\fBint in_wchstr(cchar_t *\fIwchstr\fP);
+\fBint win_wchstr(WINDOW *\fIwin\fP, cchar_t *\fIwchstr\fP);
+\fBint mvin_wchstr(int \fIy\fP, int \fIx\fP, cchar_t *\fIwchstr\fP);
+\fBint mvwin_wchstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, cchar_t *\fIwchstr\fP);
+.PP
+\fBint in_wchnstr(cchar_t *\fIwchstr\fP, int \fIn\fP);
+\fBint win_wchnstr(WINDOW *\fIwin\fP, cchar_t *\fIwchstr\fP, int \fIn\fP);
+\fBint mvin_wchnstr(int \fIy\fP, int \fIx\fP, cchar_t *\fIwchstr\fP, int \fIn\fP);
+\fBint mvwin_wchnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, cchar_t *\fIwchstr\fP, int \fIn\fP);
 .fi
 .SH DESCRIPTION
 These functions return an array of complex characters in \fIwchstr\fP,
 starting at the current cursor position in the named window.
 Attributes (rendition) are stored with the characters.
 .PP
-The
-\fBin_wchnstr\fP,
-\fBmvin_wchnstr\fP,
-\fBmvwin_wchnstr\fP
-and
-\fBwin_wchnstr\fP
-fill the array
-with at most
-\fIn\fP
-\fBcchar_t\fP
-elements.
-.br
+The four functions with \fIn\fP as the last argument return
+a leading substring at most \fIn\fP characters long
+(exclusive of the trailing zeroed \fBcchar_t\fR.
+Transfer stops at the end of the current line, or when \fIn\fP characters have
+been stored at the location referenced by \fIwchstr\fP.
+.PP
+Constants defined in \fB<curses.h>\fP can be used with the \fB&\fP (logical
+AND) operator to extract the character or the attribute alone from any position
+in the \fIwchstr\fP [see \fBgetcchar\fP(3X)].
+.SH RETURN VALUE
+Upon successful completion, these functions return
+\fBOK\fP.
+Otherwise, they return
+\fBERR\fP.
+.PP
+X/Open Curses defines no error conditions.
+This implementation returns an error
+.bP
+if the \fIwin\fP parameter is null or
+.bP
+if the \fIwchstr\fP parameter is null.
+.PP
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-Note that all routines except
-\fBwin_wchnstr\fP
-may be
-macros.
+All routines except \fBwin_wchnstr\fP may be macros.
 .PP
 Reading a line that overflows the array pointed to by
 \fIwchstr\fP
@@ -104,23 +118,15 @@ Therefore, the use of
 \fBmvwin_wchnstr\fP, or
 \fBwin_wchnstr\fP
 is recommended.
-.SH RETURN VALUE
-Upon successful completion, these functions return
-\fBOK\fP.
-Otherwise, they return
-\fBERR\fP.
-.PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
 .SH PORTABILITY
-The XSI Curses defines no error conditions.
+X/Open Curses defines no error conditions.
 This implementation checks for null pointers,
 returning \fBERR\fP in that case.
 .SH SEE ALSO
-Functions:
-\fBcurses\fP(3X),
-\fBcurs_in_wch\fP(3X),
-\fBcurs_instr\fP(3X),
-\fBcurs_inwstr\fP(3X)
-\fBcurs_inchstr\fP(3X)
+\fB\%curs_inchstr\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its non-wide-character configuration.
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_inwstr\fP(3X),
+\fB\%curs_in_wch\fP(3X)
index 90992fe3edd74e89fe4af4ed93a2efe1eccd2f3c..962e9dc868d444f72ea0ceeffa1f24a9513655c9 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_inch.3x,v 1.28 2022/02/12 20:07:29 tom Exp $
-.TH curs_inch 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_inch.3x,v 1.51 2024/04/20 21:20:07 tom Exp $
+.TH curs_inch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBinch\fP,
-\fBwinch\fP,
-\fBmvinch\fP,
-\fBmvwinch\fP \- get a character and attributes from a \fBcurses\fP window
+\fB\%inch\fP,
+\fB\%winch\fP,
+\fB\%mvinch\fP,
+\fB\%mvwinch\fP \-
+get a \fIcurses\fR character from a window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBchtype inch(void);\fP
-.br
-\fBchtype winch(WINDOW *\fIwin\fB);\fR
-.sp
-\fBchtype mvinch(int \fIy\fB, int \fIx\fB);\fR
-.br
-\fBchtype mvwinch(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBchtype inch(void);
+\fBchtype winch(WINDOW *\fIwin\fP);
+.PP
+\fBchtype mvinch(int \fIy\fP, int \fIx\fP);
+\fBchtype mvwinch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP);
+.fi
 .SH DESCRIPTION
 These routines return the character, of type \fBchtype\fP, at the current
 position in the named window.
@@ -64,18 +71,23 @@ Constants defined in
 extract the character or attributes alone.
 .
 .SS Attributes
-The following bit-masks may be AND-ed with characters returned by \fBwinch\fP.
-.
+The following bit masks may be AND-ed with characters returned by \fBwinch\fP.
+.PP
 .TS
-l l .
-\fBA_CHARTEXT\fP       Bit-mask to extract character
-\fBA_ATTRIBUTES\fP     Bit-mask to extract attributes
-\fBA_COLOR\fP  Bit-mask to extract color-pair field information
+Lb Lb
+Lb Lx.
+Name   Description
+_
+A_CHARTEXT     Extract character
+A_ATTRIBUTES   Extract attributes
+A_COLOR        Extract color pair information
 .TE
 .SH RETURN VALUE
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .PP
 The \fBwinch\fP function does not return an error if the window contains
 characters larger than 8-bits (255).
@@ -83,7 +95,7 @@ Only the low-order 8 bits of the character are used by \fBwinch\fP.
 .SH NOTES
 Note that all of these routines may be macros.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
+These functions are described in X/Open Curses, Issue 4.
 .PP
 Very old systems (before standardization) provide a different function
 with the same name:
@@ -107,13 +119,10 @@ This implementation uses 8 bits for character values.
 An application using more bits, e.g., a Unicode value,
 should use the wide-character equivalents to these functions.
 .SH SEE ALSO
-.TP 5
-\fBcurses\fP(3X)
-gives an overview of the WINDOW and \fBchtype\fP data types.
-.TP 5
-\fBcurs_attr\fP(3X)
-goes into more detail, pointing out portability problems and
-constraints on the use of \fBchtype\fP for returning window information.
-.TP 5
-\fBcurs_in_wch\fP(3X)
-describes comparable functions for the wide-character (ncursesw) library.
+\fB\%curs_in_wch\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its wide-character configuration
+.RI ( \%ncursesw ).
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_instr\fP(3X)
index 2ffa4e32d5eab2c902cc2430ea76b0d7df15177a..bcd5d6855e1fe7aec34648f69e5f7b4bf44488f0 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_inchstr.3x,v 1.24 2022/02/12 20:07:29 tom Exp $
-.TH curs_inchstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_inchstr.3x,v 1.45 2024/04/20 21:20:07 tom Exp $
+.TH curs_inchstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBinchstr\fP,
-\fBinchnstr\fP,
-\fBwinchstr\fP,
-\fBwinchnstr\fP,
-\fBmvinchstr\fP,
-\fBmvinchnstr\fP,
-\fBmvwinchstr\fP,
-\fBmvwinchnstr\fP \- get a string of characters (and attributes) from a \fBcurses\fP window
-.ad
-.hy
+\fB\%inchstr\fP,
+\fB\%inchnstr\fP,
+\fB\%winchstr\fP,
+\fB\%winchnstr\fP,
+\fB\%mvinchstr\fP,
+\fB\%mvinchnstr\fP,
+\fB\%mvwinchstr\fP,
+\fB\%mvwinchnstr\fP \-
+get a \fIcurses\fR character string from a window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint inchstr(chtype *\fIchstr\fB);\fR
-.br
-\fBint inchnstr(chtype *\fIchstr\fB, int \fIn\fB);\fR
-.br
-\fBint winchstr(WINDOW *\fIwin\fB, chtype *\fIchstr\fB);\fR
-.br
-\fBint winchnstr(WINDOW *\fIwin\fB, chtype *\fIchstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvinchstr(int \fIy\fB, int \fIx\fB, chtype *\fIchstr\fB);\fR
-.br
-\fBint mvinchnstr(int \fIy\fB, int \fIx\fB, chtype *\fIchstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwinchstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, chtype *\fIchstr\fB);\fR
-.br
-\fBint mvwinchnstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, chtype *\fIchstr\fB, int \fIn\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint inchstr(chtype *\fIchstr\fP);
+\fBint inchnstr(chtype *\fIchstr\fP, int \fIn\fP);
+\fBint winchstr(WINDOW *\fIwin\fP, chtype *\fIchstr\fP);
+\fBint winchnstr(WINDOW *\fIwin\fP, chtype *\fIchstr\fP, int \fIn\fP);
+.PP
+\fBint mvinchstr(int \fIy\fP, int \fIx\fP, chtype *\fIchstr\fP);
+\fBint mvinchnstr(int \fIy\fP, int \fIx\fP, chtype *\fIchstr\fP, int \fIn\fP);
+\fBint mvwinchstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, chtype *\fIchstr\fP);
+\fBint mvwinchnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, chtype *\fIchstr\fP, int \fIn\fP);
+.fi
 .SH DESCRIPTION
 These routines return a NULL-terminated array of \fBchtype\fP quantities,
 starting at the current cursor position in the named window and ending at the
 right margin of the window.
-The four functions with \fIn\fP as
-the last argument, return a leading substring at most \fIn\fP characters long
+.PP
+The four functions with \fIn\fP as the last argument, return
+a leading substring at most \fIn\fP characters long
 (exclusive of the trailing (chtype)0).
+Transfer stops at the end of the current line, or when \fIn\fP characters have
+been stored at the location referenced by \fIchstr\fP.
+.PP
 Constants defined in \fB<curses.h>\fP can be used with the \fB&\fP (logical
 AND) operator to extract the character or the attribute alone from any position
 in the \fIchstr\fP [see \fBcurs_inch\fP(3X)].
@@ -85,30 +88,48 @@ other than \fBERR\fP upon successful completion (the number of characters
 retrieved, exclusive of the trailing 0).
 .PP
 X/Open Curses defines no error conditions.
-In this implementation:
+This implementation returns an error
 .bP
-If the \fIwin\fP parameter is null, an error is returned,
+if the \fIwin\fP parameter is null or
 .bP
-If the \fIchstr\fP parameter is null, an error is returned,
+if the \fIchstr\fP parameter is null.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-Note that all routines except \fBwinchnstr\fP may be macros.
+All routines except \fBwinchnstr\fP may be macros.
+.PP
 SVr4 does not
 document whether the result string is zero-terminated; it does not document
 whether a length limit argument includes any trailing 0; and it does not
 document the meaning of the return value.
+.PP
+Reading a line that overflows the array pointed to by
+\fIchstr\fP
+with
+\fBinchstr\fP,
+\fBmvinchstr\fP,
+\fBmvwinchstr\fP
+or
+\fBwinchstr\fP
+causes undefined results.
+Therefore, the use of
+\fBinchnstr\fP,
+\fBmvinchnstr\fP,
+\fBmvwinchnstr\fP, or
+\fBwinchnstr\fP
+is recommended.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
+These functions are described in X/Open Curses, Issue 4.
 It is no
 more specific than the SVr4 documentation on the trailing 0.
 It does specify
 that the successful return of the functions is \fBOK\fP.
 .SH SEE ALSO
-\fBcurses\fP(3X), \fBcurs_inch\fP(3X).
-.PP
-Comparable functions in the wide-character (ncursesw) library are
-described in
-\fBcurs_in_wchstr\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_inch\fP(3X),
+\fB\%curs_inwstr\fP(3X),
+\fB\%curs_in_wchstr\fP(3X)
index 5e17ead0a659bd23838095397ea0e3b03bb0a443..0f460af14eee2c2b7acea94491409a335d7d3a4b 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_initscr.3x,v 1.39 2022/07/24 15:46:49 tom Exp $
-.TH curs_initscr 3X ""
+.\" $Id: curs_initscr.3x,v 1.69 2024/04/20 21:24:19 tom Exp $
+.TH curs_initscr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.na
-.hy 0
 .SH NAME
-\fBinitscr\fP,
-\fBnewterm\fP,
-\fBendwin\fP,
-\fBisendwin\fP,
-\fBset_term\fP,
-\fBdelscreen\fP \- \fBcurses\fP screen initialization and manipulation routines
-.ad
-.hy
+\fB\%initscr\fP,
+\fB\%newterm\fP,
+\fB\%endwin\fP,
+\fB\%isendwin\fP,
+\fB\%set_term\fP,
+\fB\%delscreen\fP \-
+initialize, manipulate, or tear down \fIcurses\fR terminal interface
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBWINDOW *initscr(void);\fP
-.br
-\fBint endwin(void);\fP
-.sp
-\fBbool isendwin(void);\fP
-.sp
-\fBSCREEN *newterm(const char *\fItype\fB, FILE *\fIoutfd\fB, FILE *\fIinfd\fB);\fR
-.br
-\fBSCREEN *set_term(SCREEN *\fInew\fB);\fR
-.br
-\fBvoid delscreen(SCREEN* \fIsp\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBWINDOW *initscr(void);
+\fBint endwin(void);
+.PP
+\fBbool isendwin(void);
+.PP
+\fBSCREEN *newterm(const char *\fItype\fP, FILE *\fIoutf\fP, FILE *\fIinf\fP);
+\fBSCREEN *set_term(SCREEN *\fInew\fP);
+\fBvoid delscreen(SCREEN* \fIsp\fP);
+.fi
 .SH DESCRIPTION
 .SS initscr
 \fBinitscr\fP is normally the first \fBcurses\fP routine to call when
@@ -81,27 +83,30 @@ If errors occur, \fBinitscr\fP writes an appropriate error
 message to standard error and exits;
 otherwise, a pointer is returned to \fBstdscr\fP.
 .SS newterm
-.PP
 A program that outputs to more than one terminal should use the \fBnewterm\fP
 routine for each terminal instead of \fBinitscr\fP.
 A program that needs to inspect capabilities,
 so it can continue to run in a line-oriented mode if the
 terminal cannot support a screen-oriented program, would also use
 \fBnewterm\fP.
+.PP
 The routine \fBnewterm\fP should be called once for each terminal.
-It returns a variable of type \fBSCREEN *\fP which should be saved
+It returns a variable of type \fISCREEN *\fP which should be saved
 as a reference to that terminal.
 \fBnewterm\fP's arguments are
 .bP
 the \fItype\fP of the terminal to be used in place of \fB$TERM\fP,
 .bP
-a file pointer for output to the terminal, and
+an output stream connected to the terminal, and
 .bP
-another file pointer for input from the terminal
+an input stream connected to the terminal
 .PP
 If the \fItype\fP parameter is \fBNULL\fP, \fB$TERM\fP will be used.
-.SS endwin
 .PP
+The file descriptor of the output stream is passed to \fBsetupterm\fP(3X),
+which returns a pointer to a \fI\%TERMINAL\fP structure.
+\fBnewterm\fP's return value holds a pointer to the \fI\%TERMINAL\fP structure.
+.SS endwin
 The program must also call
 \fBendwin\fP for each terminal being used before exiting from \fBcurses\fP.
 If \fBnewterm\fP is called more than once for the same terminal, the first
@@ -126,24 +131,21 @@ restores tty modes (see \fBreset_shell_mode\fP(3X)).
 Calling \fBrefresh\fP(3X) or \fBdoupdate\fP(3X) after a
 temporary escape causes the program to resume visual mode.
 .SS isendwin
-.PP
 The \fBisendwin\fP routine returns \fBTRUE\fP if \fBendwin\fP has been
 called without any subsequent calls to \fBwrefresh\fP,
 and \fBFALSE\fP otherwise.
 .SS set_term
-.PP
 The \fBset_term\fP routine is used to switch between different terminals.
 The screen reference \fInew\fP becomes the new current terminal.
 The previous terminal is returned by the routine.
-This is the only routine which manipulates \fBSCREEN\fP pointers;
+This is the only routine which manipulates \fISCREEN\fP pointers;
 all other routines affect only the current terminal.
 .SS delscreen
-.PP
 The \fBdelscreen\fP routine frees storage associated with the
-\fBSCREEN\fP data structure.
+\fISCREEN\fP data structure.
 The \fBendwin\fP routine does not do
 this, so \fBdelscreen\fP should be called after \fBendwin\fP if a
-particular \fBSCREEN\fP is no longer needed.
+particular \fISCREEN\fP is no longer needed.
 .SH RETURN VALUE
 \fBendwin\fP returns the integer \fBERR\fP upon failure and \fBOK\fP
 upon successful completion.
@@ -153,7 +155,15 @@ Routines that return pointers always return \fBNULL\fP on error.
 X/Open defines no error conditions.
 In this implementation
 .bP
-\fBendwin\fP returns an error if the terminal was not initialized.
+\fBendwin\fP returns an error if
+.RS
+.bP
+the terminal was not initialized, or
+.bP
+\fBendwin\fP is called more than once without updating the screen, or
+.bP
+\fBreset_shell_mode\fP(3X) returns an error.
+.RE
 .bP
 \fBnewterm\fP
 returns an error if it cannot allocate the data structures for the screen,
@@ -164,14 +174,14 @@ i.e.,
 \fBset_term\fP
 returns no error.
 .SH PORTABILITY
-These functions were described in the XSI Curses standard, Issue 4.
+These functions were described in X/Open Curses, Issue 4.
 As of 2015, the current document is X/Open Curses, Issue 7.
 .SS Differences
-X/Open specifies that portable applications must not
+X/Open Curses specifies that portable applications must not
 call \fBinitscr\fP more than once:
 .bP
 The portable way to use \fBinitscr\fP is once only,
-using \fBrefresh\fP (see curs_refresh(3X))
+using \fB\%refresh\fP(3X)
 to restore the screen after \fBendwin\fP.
 .bP
 This implementation allows using \fBinitscr\fP after \fBendwin\fP.
@@ -179,62 +189,81 @@ This implementation allows using \fBinitscr\fP after \fBendwin\fP.
 Old versions of curses, e.g., BSD 4.4, would return a null pointer
 from \fBinitscr\fP when an error is detected, rather than exiting.
 It is safe but redundant to check the return value of \fBinitscr\fP
-in XSI Curses.
+in X/Open Curses.
 .PP
 Calling \fBendwin\fP does not dispose of the memory allocated in \fBinitscr\fP
 or \fBnewterm\fP.
-Deleting a \fBSCREEN\fP provides a way to do this:
+Deleting a \fISCREEN\fP provides a way to do this:
 .bP
-X/Open Curses does not say what happens to \fBWINDOW\fPs when \fBdelscreen\fP
-\*(``frees storage associated with the \fBSCREEN\fP\*(''
+X/Open Curses does not say what happens to \fI\%WINDOW\fPs when \fBdelscreen\fP
+\*(``frees storage associated with the \fISCREEN\fP\*(''
 nor does the SVr4 documentation help,
-adding that it should be called after \fBendwin\fP if a \fBSCREEN\fP
+adding that it should be called after \fBendwin\fP if a \fISCREEN\fP
 is no longer needed.
 .bP
-However, \fBWINDOW\fPs are implicitly associated with a \fBSCREEN\fP.
+However, \fI\%WINDOW\fPs are implicitly associated with a \fISCREEN\fP.
 so that it is reasonable to expect \fBdelscreen\fP to deal with these.
 .bP
-SVr4 curses deletes the standard \fBWINDOW\fP structures
+SVr4 curses deletes the standard \fI\%WINDOW\fP structures
 \fBstdscr\fP and \fBcurscr\fP as well as a work area \fBnewscr\fP.
 SVr4 curses ignores other windows.
 .bP
-Since version 4.0 (1996), ncurses has maintained a list of all windows
-for each screen,
+Since version 4.0 (1996),
+\fI\%ncurses\fP has maintained a list of all windows for each screen,
 using that information to delete those windows when \fBdelscreen\fP is called.
 .bP
-NetBSD copied this feature of ncurses in 2001.
+NetBSD copied this feature of \fI\%ncurses\fP in 2001.
 PDCurses follows the SVr4 model,
-deleting only the standard \fBWINDOW\fP structures.
-.SS Unset TERM Variable
+deleting only the standard \fI\%WINDOW\fP structures.
+.SS "High-level versus Low-level"
+Different implementations may disagree regarding the level of some functions.
+For example, \fISCREEN\fP (returned by \fBnewterm\fP) and
+\fI\%TERMINAL\fP (returned by \fBsetupterm\fP(3X)) hold file descriptors for
+the output stream.
+If an application switches screens using \fBset_term\fR,
+or switches terminals using \fBset_curterm\fP(3X),
+applications which use the output file descriptor can have different
+behavior depending on which structure holds the corresponding descriptor.
 .PP
-If the TERM variable is missing or empty, \fBinitscr\fP uses the
+For example
+.bP
+NetBSD's \fBbaudrate\fP(3X) function uses the descriptor in \fI\%TERMINAL\fP.
+\fI\%ncurses\fP and SVr4 use the descriptor in \fISCREEN\fP.
+.bP
+NetBSD and \fI\%ncurses\fP use the descriptor
+in \fI\%TERMINAL\fP
+for terminal I/O modes,
+e.g.,
+\fBdef_shell_mode\fP(3X),
+\fBdef_prog_mode\fP(3X).
+SVr4 curses uses the descriptor in \fISCREEN\fP.
+.SS "Unset \fITERM\fP Variable"
+If the \fITERM\fP variable is missing or empty, \fBinitscr\fP uses the
 value \*(``unknown\*('',
 which normally corresponds to a terminal entry with the \fIgeneric\fP
 (\fIgn\fP) capability.
-Generic entries are detected by \fBsetupterm\fP
-(see curs_terminfo(3X)) and cannot be used for full-screen operation.
-Other implementations may handle a missing/empty TERM variable differently.
-.SS Signal Handlers
-.PP
-Quoting from X/Open Curses, section 3.1.1:
+Generic entries are detected by \fBsetupterm\fP(3X)
+and cannot be used for full-screen operation.
+Other implementations may handle
+a missing/empty \fITERM\fP variable differently.
+.SS "Signal Handlers"
+Quoting from X/Open Curses Issue 7, section 3.1.1:
 .RS 5
-.hy 0
 .PP
-.I Curses implementations may provide for special handling of the
-.I \fBSIGINT\fP,
-.I \fBSIGQUIT\fP and
-.I \fBSIGTSTP\fP signals
-.I if their disposition is \fBSIG_DFL\fP at the time
-\fBinitscr\fI is called \fR...
+Curses implementations may provide for special handling of the
+\%SIGINT,
+\%SIGQUIT,
+and \%SIGTSTP signals if their disposition is \%SIG_DFL at the time
+.I \%initscr
+is called.\|.\|.
 .PP
-.I Any special handling for these signals may remain in effect for the
-.I life of the process or until the process changes the disposition of
-.I the signal.
+Any special handling for these signals may remain in effect for the
+life of the process or until the process changes the disposition of
+the signal.
 .PP
-.I None of the Curses functions are required to be safe
-.I with respect to signals \fP...
+None of the Curses functions are required to be safe
+with respect to signals.\|.\|.
 .RE
-.hy
 .PP
 This implementation establishes signal handlers during initialization,
 e.g., \fBinitscr\fP or \fBnewterm\fP.
@@ -242,18 +271,19 @@ Applications which must handle these signals should set up the corresponding
 handlers \fIafter\fP initializing the library:
 .TP 5
 .B SIGINT
-The handler \fIattempts\fP to cleanup the screen on exit.
+The handler \fIattempts\fP to clean up the screen on exit.
 Although it \fIusually\fP works as expected, there are limitations:
 .RS 5
 .bP
-Walking the \fBSCREEN\fP list is unsafe, since all list management
+Walking the \fISCREEN\fP list is unsafe, since all list management
 is done without any signal blocking.
 .bP
 On systems which have \fBREENTRANT\fP turned on, \fBset_term\fP uses
 functions which could deadlock or misbehave in other ways.
 .bP
-\fBendwin\fP calls other functions, many of which use stdio or
-other library functions which are clearly unsafe.
+\fBendwin\fP calls other functions,
+many of which use \fI\%stdio\fP(3) or other library functions which are
+clearly unsafe.
 .RE
 .TP 5
 .B SIGTERM
@@ -264,26 +294,26 @@ purpose than \fBSIGQUIT\fP (which is used in debugging).
 .B SIGTSTP
 This handles the \fIstop\fP signal, used in job control.
 When resuming the process, this implementation discards pending
-input with \fBflushinput\fP (see curs_util(3X)), and repaints the screen
+input with \fB\%flushinp\fP(3X), and repaints the screen
 assuming that it has been completely altered.
-It also updates the saved terminal modes with \fBdef_shell_mode\fP
-(see \fBcurs_kernel\fP(3X)).
+It also updates the saved terminal modes with
+\fB\%def_shell_mode\fP(3X).
 .TP 5
 .B SIGWINCH
 This handles the window-size changes which were ignored in
 the standardization efforts.
 The handler sets a (signal-safe) variable
-which is later tested in \fBwgetch\fP (see curs_getch(3X)).
+which is later tested in \fB\%wgetch\fP(3X).
 If \fBkeypad\fP has been enabled for the corresponding window,
 \fBwgetch\fP returns the key symbol \fBKEY_RESIZE\fP.
 At the same time, \fBwgetch\fP calls \fBresizeterm\fP to adjust the
 standard screen \fBstdscr\fP,
 and update other data such as \fBLINES\fP and \fBCOLS\fP.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_kernel\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_slk\fP(3X),
-\fBcurs_terminfo\fP(3X),
-\fBcurs_util\fP(3X),
-\fBcurs_variables\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_kernel\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_slk\fP(3X),
+\fB\%curs_terminfo\fP(3X),
+\fB\%curs_util\fP(3X),
+\fB\%curs_variables\fP(3X)
index e0ba270d65a0b2c46a6a75fdc668a68f11ba8f21..63db4967eebc68fd4dbaa04e39668af7ba38dd26 100644 (file)
@@ -1,5 +1,6 @@
+'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_inopts.3x,v 1.36 2022/02/12 20:07:29 tom Exp $
-.TH curs_inopts 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.na
-.hy 0
+.\" $Id: curs_inopts.3x,v 1.66 2024/04/13 22:20:29 tom Exp $
+.TH curs_inopts 3X 2024-04-13 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBcbreak\fP,
-\fBnocbreak\fP,
-\fBecho\fP,
-\fBnoecho\fP,
-\fBhalfdelay\fP,
-\fBintrflush\fP,
-\fBkeypad\fP,
-\fBmeta\fP,
-\fBnl\fP,
-\fBnonl\fP,
-\fBnodelay\fP,
-\fBnotimeout\fP,
-\fBraw\fP,
-\fBnoraw\fP,
-\fBqiflush\fP,
-\fBnoqiflush\fP,
-\fBtimeout\fP,
-\fBwtimeout\fP,
-\fBtypeahead\fP \- \fBcurses\fP input options
-.ad
-.hy
+\fB\%cbreak\fP,
+\fB\%echo\fP,
+\fB\%halfdelay\fP,
+\fB\%intrflush\fP,
+\fB\%is_cbreak\fP,
+\fB\%is_echo\fP,
+\fB\%is_nl\fP,
+\fB\%is_raw\fP,
+\fB\%keypad\fP,
+\fB\%meta\fP,
+\fB\%nl\fP,
+\fB\%nocbreak\fP,
+\fB\%nodelay\fP,
+\fB\%noecho\fP,
+\fB\%nonl\fP,
+\fB\%noqiflush\fP,
+\fB\%noraw\fP,
+\fB\%notimeout\fP,
+\fB\%qiflush\fP,
+\fB\%raw\fP,
+\fB\%timeout\fP,
+\fB\%wtimeout\fP,
+\fB\%typeahead\fP \-
+get and set \fIcurses\fR terminal input options
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
+.nf
+\fB#include <curses.h>
+.PP
+\fBint cbreak(void);
+\fBint nocbreak(void);
+.PP
+\fBint echo(void);
+\fBint noecho(void);
+.PP
+\fBint intrflush(WINDOW *\fIwin\fP, bool \fIbf\fP);
+\fBint keypad(WINDOW *\fIwin\fP, bool \fIbf\fP);
+\fBint meta(WINDOW *\fIwin\fP, bool \fIbf\fP);
+\fBint nodelay(WINDOW *\fIwin\fP, bool \fIbf\fP);
+\fBint notimeout(WINDOW *\fIwin\fP, bool \fIbf\fP);
 .PP
-\fBint cbreak(void);\fP
-.br
-\fBint nocbreak(void);\fP
-.sp
-\fBint echo(void);\fP
-.br
-\fBint noecho(void);\fP
-.sp
-\fBint intrflush(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.br
-\fBint keypad(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.br
-\fBint meta(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.br
-\fBint nodelay(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.br
-\fBint notimeout(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.sp
-\fBint nl(void);\fP
-.br
-\fBint nonl(void);\fP
-.sp
-\fBint raw(void);\fP
-.br
-\fBint noraw(void);\fP
-.sp
-\fBvoid qiflush(void);\fP
-.br
-\fBvoid noqiflush(void);\fP
-.sp
-\fBint halfdelay(int \fItenths\fB);\fR
-.br
-\fBvoid timeout(int \fIdelay\fB);\fR
-.br
-\fBvoid wtimeout(WINDOW *\fIwin\fB, int \fIdelay\fB);\fR
-.sp
-\fBint typeahead(int \fIfd\fB);\fR
-.br
+\fBint nl(void);
+\fBint nonl(void);
+.PP
+\fBint raw(void);
+\fBint noraw(void);
+.PP
+\fBvoid qiflush(void);
+\fBvoid noqiflush(void);
+.PP
+\fBint halfdelay(int \fItenths\fP);
+\fBvoid timeout(int \fIdelay\fP);
+\fBvoid wtimeout(WINDOW *\fIwin\fP, int \fIdelay\fP);
+.PP
+\fBint typeahead(int \fIfd\fP);
+.PP
+\fI/* extensions */
+\fBint is_cbreak(void);
+\fBint is_echo(void);
+\fBint is_nl(void);
+\fBint is_raw(void);
+.fi
 .SH DESCRIPTION
-The \fBncurses\fP library provides several functions which let an application
-change the way input from the terminal is handled.
-Some are global, applying to all windows.
+.I \%ncurses
+provides several functions that let an application change the way input
+from the terminal is handled.
+Some are global,
+applying to all windows.
 Others apply only to a specific window.
 Window-specific settings are not automatically applied to new or derived
 windows.
-An application must apply these to each window, if the same behavior
-is needed.
+An application must apply these to each window if the same behavior is
+desired.
 .\"
-.SS cbreak/nocbreak
-Normally, the tty driver buffers typed characters until a newline or carriage
+.SS "cbreak, nocbreak"
+Normally,
+the terminal driver buffers typed characters until a newline or carriage
 return is typed.
-The \fBcbreak\fP routine disables line buffering and
-erase/kill character-processing (interrupt and flow control characters are
-unaffected), making characters typed by the user immediately available to the
+The \fB\%cbreak\fP routine disables line buffering and
+erase/kill character-processing
+(interrupt and flow control characters are unaffected),
+making characters typed by the user immediately available to the
 program.
-The \fBnocbreak\fP routine returns the terminal to normal (cooked)
+The \fB\%nocbreak\fP routine returns the terminal to normal (cooked)
 mode.
 .PP
-Initially the terminal may or may not be in \fBcbreak\fP mode, as the mode is
-inherited; therefore, a program should call \fBcbreak\fP or \fBnocbreak\fP
-explicitly.
-Most interactive programs using \fBcurses\fP set the \fBcbreak\fP
-mode.
-Note that \fBcbreak\fP overrides \fBraw\fP.
-[See \fBcurs_getch\fP(3X) for a
-discussion of how these routines interact with \fBecho\fP and \fBnoecho\fP.]
+Initially the terminal may or may not be in \fB\%cbreak\fP mode,
+as the mode is inherited;
+therefore,
+a program should call \fB\%cbreak\fP or \fB\%nocbreak\fP explicitly.
+Most interactive programs using
+.I curses
+set the \fB\%cbreak\fP mode.
+Note that \fB\%cbreak\fP overrides \fBraw\fP.
+[See \fB\%curs_getch\fP(3X) for a discussion of how these routines
+interact with \fBecho\fP and \fB\%noecho\fP.]
 .\"
-.SS echo/noecho
-.PP
-The \fBecho\fP and \fBnoecho\fP routines control whether characters typed by
-the user are echoed by \fBgetch\fP(3X) as they are typed.
-Echoing by the tty
-driver is always disabled, but initially \fBgetch\fP is in echo mode, so
-characters typed are echoed.
+.SS "echo, noecho"
+The \fBecho\fP and \fB\%noecho\fP routines control whether characters
+typed by the user are echoed by \fB\%getch\fP(3X) as they are typed.
+Echoing by the terminal driver is always disabled,
+but initially \fB\%getch\fP is in echo mode,
+so characters typed are echoed.
 Authors of most interactive programs prefer to do
-their own echoing in a controlled area of the screen, or not to echo at all, so
-they disable echoing by calling \fBnoecho\fP.
-[See \fBcurs_getch\fP(3X) for a
-discussion of how these routines interact with \fBcbreak\fP and
-\fBnocbreak\fP.]
+their own echoing in a controlled area of the screen,
+or not to echo at all,
+so they disable echoing by calling \fB\%noecho\fP.
+[See \fB\%curs_getch\fP(3X) for a
+discussion of how these routines interact with \fB\%cbreak\fP and
+\fB\%nocbreak\fP.]
 .\"
 .SS halfdelay
-.PP
-The \fBhalfdelay\fP routine is used for half-delay mode, which is similar to
-\fBcbreak\fP mode in that characters typed by the user are immediately
-available to the program.
-However, after blocking for \fItenths\fP tenths of
-seconds, \fBERR\fP is returned if nothing has been typed.
-The value of \fItenths\fP
-must be a number between 1 and 255.
-Use \fBnocbreak\fP to leave half-delay
-mode.
+The \fB\%halfdelay\fP routine is used for half-delay mode,
+which is similar to \fB\%cbreak\fP mode in that characters typed by the
+user are immediately available to the program.
+However,
+after blocking for \fItenths\fP tenths of seconds,
+\fBERR\fP is returned if nothing has been typed.
+The value of \fItenths\fP must be a number between 1 and 255.
+Use \fB\%nocbreak\fP to leave half-delay mode.
 .\"
 .SS intrflush
-.PP
-If the \fBintrflush\fP option is enabled (\fIbf\fP is \fBTRUE\fP), and an
-interrupt key is pressed on the keyboard (interrupt, break, quit), all output in
-the tty driver queue will be flushed, giving the effect of faster response to
-the interrupt, but causing \fBcurses\fP to have the wrong idea of what is on
-the screen.
-Disabling the option (\fIbf\fP is \fBFALSE\fP) prevents the
-flush.
-The default for the option is inherited from the tty driver settings.
-The window argument is ignored.
+If the \fB\%intrflush\fP option is enabled
+.RI ( bf
+is
+.BR TRUE ),
+and an interrupt key is pressed on the keyboard
+(interrupt,
+break,
+quit),
+all output in the terminal driver queue is flushed,
+giving the effect of faster response to the interrupt,
+but causing
+.I curses
+to have the wrong idea of what is on the screen.
+Disabling the option
+.RI ( bf
+is
+.BR FALSE ),
+prevents the flush.
+The default for the option is inherited from the terminal driver
+settings.
+The
+.I win
+argument is ignored.
 .\"
 .SS keypad
-.PP
-The \fBkeypad\fP option enables the keypad of the user's terminal.
+The \fB\%keypad\fP option enables the keypad of the user's terminal.
 If
-enabled (\fIbf\fP is \fBTRUE\fP), the user can press a function key
-(such as an arrow key) and \fBwgetch\fP(3X) returns a single value
-representing the function key, as in \fBKEY_LEFT\fP.
+enabled
+.RI ( bf
+is
+.BR TRUE ),
+the user can press a function key
+(such as an arrow key)
+and \fB\%wgetch\fP(3X) returns a single value representing the function
+key,
+as in \fB\%KEY_LEFT\fP.
 If disabled
-(\fIbf\fP is \fBFALSE\fP), \fBcurses\fP does not treat function keys
-specially and the program has to interpret the escape sequences
-itself.
-If the keypad in the terminal can be turned on (made to
-transmit) and off (made to work locally), turning on this option
-causes the terminal keypad to be turned on when \fBwgetch\fP(3X) is
-called.
+(\fIbf\fP is \fBFALSE\fP),
+.I curses
+does not treat function keys specially and the program has to interpret
+the escape sequences itself.
+If the keypad in the terminal can be turned on
+(made to transmit)
+and off
+(made to work locally),
+turning on this option causes the terminal keypad to be turned on when
+\fB\%wgetch\fP(3X) is called.
 The default value for keypad is \fBFALSE\fP.
 .\"
 .SS meta
-.PP
-Initially, whether the terminal returns 7 or 8 significant bits on
-input depends on the control mode of the tty driver [see \fBtermios\fP(3)].
-To force 8 bits to be returned, invoke \fBmeta\fP(\fIwin\fP,
-\fBTRUE\fP); this is equivalent, under POSIX, to setting the CS8 flag
-on the terminal.
-To force 7 bits to be returned, invoke
-\fBmeta\fP(\fIwin\fP, \fBFALSE\fP); this is equivalent, under POSIX,
+Initially,
+whether the terminal returns 7 or 8 significant bits on input depends on
+the control mode of the terminal driver [see \fI\%termios\fP(3)].
+To force 8 bits to be returned,
+invoke
+\fBmeta\fP(\fIwin\fP, \fBTRUE\fP);
+this is equivalent,
+under POSIX,
+to setting the CS8 flag on the terminal.
+To force 7 bits to be returned,
+invoke
+\fBmeta\fP(\fIwin\fP, \fBFALSE\fP);
+this is equivalent,
+under POSIX,
 to setting the CS7 flag on the terminal.
 The window argument,
-\fIwin\fP, is always ignored.
-If the terminfo capabilities \fBsmm\fP
-(meta_on) and \fBrmm\fP (meta_off) are defined for the terminal,
-\fBsmm\fP is sent to the terminal when \fBmeta\fP(\fIwin\fP,
-\fBTRUE\fP) is called and \fBrmm\fP is sent when \fBmeta\fP(\fIwin\fP,
-\fBFALSE\fP) is called.
+.IR win ,
+is always ignored.
+If the terminfo capabilities
+\fBsmm\fP (meta_on) and
+\fBrmm\fP (meta_off) are defined for the terminal,
+\fBsmm\fP is sent to the terminal when
+\fBmeta\fP(\fIwin\fP, \fBTRUE\fP)
+is called and \fBrmm\fP is sent when
+\fBmeta\fP(\fIwin\fP, \fBFALSE\fP) is called.
 .\"
-.SS nl/nonl
-.PP
-The \fBnl\fP and \fBnonl\fP routines control whether the underlying display
-device translates the return key into newline on input.
+.SS "nl, nonl"
+The \fBnl\fP and \fBnonl\fP routines control whether the underlying
+display device translates the return key into newline on input.
 .\"
 .SS nodelay
-.PP
-The \fBnodelay\fP option causes \fBgetch\fP to be a non-blocking call.
-If no input is ready, \fBgetch\fP returns \fBERR\fP.
+The \fB\%nodelay\fP option causes \fB\%getch\fP to be a non-blocking
+call.
+If no input is ready,
+\fB\%getch\fP returns \fBERR\fP.
 If disabled
-(\fIbf\fP is \fBFALSE\fP), \fBgetch\fP waits until a key is pressed.
+.RI ( bf
+is
+.BR FALSE ),
+\fB\%getch\fP waits until a key is pressed.
 .SS notimeout
-.PP
-When interpreting an escape sequence, \fBwgetch\fP(3X) sets a timer
+When interpreting an escape sequence,
+\fB\%wgetch\fP(3X) sets a timer
 while waiting for the next character.
-If \fBnotimeout(\fIwin\fR,
-\fBTRUE\fP) is called, then \fBwgetch\fP does not set a timer.
-The
-purpose of the timeout is to differentiate between sequences received
-from a function key and those typed by a user.
+If
+\fB\%notimeout(\fIwin\fR, \fBTRUE\fP)
+is called,
+then \fB\%wgetch\fP does not set a timer.
+The purpose of the timeout is to distinguish sequences produced by a
+function key from those typed by a user.
 .\"
-.SS raw/noraw
-.PP
-The \fBraw\fP and \fBnoraw\fP routines place the terminal into or out of raw
-mode.
-Raw mode is similar to \fBcbreak\fP mode, in that characters typed are
-immediately passed through to the user program.
-The differences are that in
-raw mode, the interrupt, quit, suspend, and flow control characters are all
-passed through uninterpreted, instead of generating a signal.
-The behavior of
-the BREAK key depends on other bits in the tty driver that are not set by
-\fBcurses\fP.
+.SS "raw, noraw"
+The \fBraw\fP and \fB\%noraw\fP routines place the terminal into or out
+of raw mode.
+Raw mode is similar to \fB\%cbreak\fP mode,
+in that characters typed are immediately passed through to the user
+program.
+The differences are that in raw mode,
+the interrupt,
+quit,
+suspend,
+and flow control characters are all
+passed through uninterpreted,
+instead of generating a signal.
+The behavior of the BREAK key depends on other bits in the terminal
+driver that are not set by
+.IR curses .
 .\"
-.SS qiflush/noqiflush
-.PP
-When the \fBnoqiflush\fP routine is used, normal flush of input and
-output queues associated with the \fBINTR\fP, \fBQUIT\fP and
-\fBSUSP\fP characters will not be done [see \fBtermios\fP(3)].
+.SS "qiflush, nqiflush"
+When the \fB\%noqiflush\fP routine is used,
+normal flush of input and output queues associated with the \fBINTR\fP,
+\fBQUIT\fP and \fBSUSP\fP characters will not be done
+[see \fB\%termios\fP(3)].
 When
-\fBqiflush\fP is called, the queues will be flushed when these control
-characters are read.
-You may want to call \fBnoqiflush\fP in a signal
-handler if you want output to continue as though the interrupt
-had not occurred, after the handler exits.
+\fB\%qiflush\fP is called,
+the queues will be flushed when these control characters are read.
+You may want to call \fB\%noqiflush\fP in a signal handler if you want
+output to continue as though the interrupt had not occurred,
+after the handler exits.
 .\"
-.SS timeout/wtimeout
-.PP
-The \fBtimeout\fP and \fBwtimeout\fP routines set blocking or
+.SS "timeout, wtimeout"
+The \fB\%timeout\fP and \fB\%wtimeout\fP routines set blocking or
 non-blocking read for a given window.
 If \fIdelay\fP is negative,
-blocking read is used (i.e., waits indefinitely for
-input).
-If \fIdelay\fP is zero, then non-blocking read is used
-(i.e., read returns \fBERR\fP if no input is waiting).
+a blocking read is used
+(i.e.,
+waits indefinitely for input).
+If \fIdelay\fP is zero,
+then a non-blocking read is used
+(i.e.,
+.I read
+returns \fBERR\fP if no input is waiting).
 If
-\fIdelay\fP is positive, then read blocks for \fIdelay\fP
-milliseconds, and returns \fBERR\fP if there is still no input.
-Hence, these routines provide the same functionality as \fBnodelay\fP,
+\fIdelay\fP is positive,
+then
+.I read
+blocks for \fIdelay\fP milliseconds,
+and returns \fBERR\fP if there is still no input.
+Hence,
+these routines provide the same functionality as \fB\%nodelay\fP,
 plus the additional capability of being able to block for only
-\fIdelay\fP milliseconds (where \fIdelay\fP is positive).
+\fIdelay\fP milliseconds
+(where \fIdelay\fP is positive).
 .\"
 .SS typeahead
-.PP
-The \fBcurses\fP library does \*(``line-breakout optimization\*(''
-by looking for typeahead periodically while updating the screen.
-If input is found, and it is coming from a tty,
+.I curses
+does \*(``line-breakout optimization\*('' by looking for typeahead
+periodically while updating the screen.
+If input is found,
+and it is coming from a terminal,
 the current update is postponed until
-\fBrefresh\fP(3X) or \fBdoupdate\fP is called again.
+\fB\%refresh\fP(3X) or \fB\%doupdate\fP is called again.
 This allows faster response to commands typed in advance.
-Normally, the input FILE
-pointer passed to \fBnewterm\fP, or \fBstdin\fP in the case that
-\fBinitscr\fP was used, will be used to do this typeahead checking.
-The \fBtypeahead\fP routine specifies that the file descriptor
+Normally,
+the input
+.I FILE
+pointer passed to \fB\%newterm\fP,
+or \fBstdin\fP in the case that \fB\%initscr\fP was used,
+will be used to do this typeahead checking.
+The \fB\%typeahead\fP routine specifies that the file descriptor
 \fIfd\fP is to be used to check for typeahead instead.
 If \fIfd\fP is
-\-1, then no typeahead checking is done.
+\-1,
+then no typeahead checking is done.
 .\"
 .SH RETURN VALUE
-All routines that return an integer return \fBERR\fP upon failure and \fBOK\fP
+All routines that return an integer return \fBERR\fP upon failure and
+\fBOK\fP
 (SVr4 specifies only \*(``an integer value other than \fBERR\fP\*('')
 upon successful completion,
 unless otherwise noted in the preceding routine descriptions.
 .PP
-X/Open does not define any error conditions.
+X/Open Curses does not specify any error conditions.
 In this implementation,
 functions with a window parameter will return an error if it is null.
-Any function will also return an error if the terminal was not initialized.
+Any function will also return an error if the terminal was not
+initialized.
 Also,
-.RS
+.RS 3
 .TP 5
-\fBhalfdelay\fP
+\fB\%halfdelay\fP
 returns an error
 if its parameter is outside the range 1..255.
 .RE
+.SH NOTES
+\fBecho\fP,
+\fB\%noecho\fP,
+\fB\%halfdelay\fP,
+\fB\%intrflush\fP,
+\fBmeta\fP,
+\fBnl\fP,
+\fBnonl\fP,
+\fB\%nodelay\fP,
+\fB\%notimeout\fP,
+\fB\%noqiflush\fP,
+\fB\%qiflush\fP,
+\fB\%timeout\fP,
+and
+\fB\%wtimeout\fP
+may be implemented as macros.
+.PP
+\fB\%noraw\fP and \fB\%nocbreak\fP follow historical practice in that
+they attempt to restore normal (\*(``cooked\*('') mode
+from raw and cbreak modes respectively.
+Mixing \fBraw\fP/\fB\%noraw\fP and \fB\%cbreak\fP/\fB\%nocbreak\fP calls
+leads to terminal driver control states that are hard to predict or
+understand;
+doing so is not recommended.
+.SH EXTENSIONS
+.I \%ncurses
+provides four \*(``is_\*('' functions that may be used to detect if the
+corresponding flags were set or reset.
+.PP
+.TS
+center;
+Lb Lb Lb
+L  L  L .
+Query  Set     Reset
+_
+is_cbreak      cbreak  nocbreak
+is_echo        echo    noecho
+is_nl  nl      nonl
+is_raw raw     noraw
+.TE
+.PP
+In each case,
+the function returns
+.TP 4 \" "-1" + 2n
+1
+if the flag is set,
+.TP
+0
+if the flag is reset,
+or
+.TP
+\-1
+if the library is not initialized.
+.PP
+They were designed for
+\fB\%ncurses\fP(3X),
+and are not found in SVr4
+.IR curses ,
+4.4BSD
+.IR curses ,
+or any other previous
+.I curses
+implementation.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
+Applications employing
+.I \%ncurses
+extensions should condition their use on the visibility of the
+.B \%NCURSES_VERSION
+preprocessor macro.
+.PP
+Except as noted in section \*(``EXTENSIONS\*('' above,
+X/Open Curses, Issue 4, Version 2 describes these functions.
 .PP
-The ncurses library obeys the XPG4 standard and the historical practice of the
-AT&T curses implementations, in that the echo bit is cleared when curses
+.I \%ncurses
+follows X/Open Curses
+and the historical practice of AT&T
+.I curses
+implementations,
+in that the echo bit is cleared when
+.I curses
 initializes the terminal state.
-BSD curses differed from this slightly; it
-left the echo bit on at initialization, but the BSD \fBraw\fP call turned it
-off as a side-effect.
-For best portability, set \fBecho \fPor \fBnoecho\fP explicitly
-just after initialization, even if your program remains in cooked mode.
+BSD
+.I curses
+differed from this slightly;
+it left the echo bit on at initialization,
+but the BSD \fBraw\fP call turned it off as a side effect.
+For best portability,
+set \fBecho\fP or \fB\%noecho\fP explicitly just after initialization,
+even if your program remains in cooked mode.
 .PP
-The XSI Curses standard is ambiguous on the question of whether \fBraw\fP
-should disable the CRLF translations controlled by \fBnl\fP and \fBnonl\fP.
-BSD curses did turn off these translations; AT&T curses (at least as late as
-SVr1) did not.
-We chose to do so, on the theory that a programmer requesting
-raw input wants a clean (ideally 8-bit clean) connection that the operating
-system will not alter.
+X/Open Curses is ambiguous regarding whether \fBraw\fP should disable
+the CR/LF translations controlled by \fBnl\fP and \fBnonl\fP.
+BSD
+.I curses
+did turn off these translations;
+AT&T
+.I curses
+(at least as late as SVr1)
+did not.
+.I \%ncurses
+does so,
+on the assumption that a programmer requesting raw input wants a clean
+(ideally,
+8-bit clean)
+connection that the operating system will not alter.
 .PP
-When \fBkeypad\fP is first enabled,
-ncurses loads the key-definitions for the current terminal description.
+When \fB\%keypad\fP is first enabled,
+.I \%ncurses
+loads the key definitions for the current terminal description.
 If the terminal description includes extended string capabilities,
-e.g., from using the \fB\-x\fP option of \fB@TIC@\fP,
-then ncurses also defines keys for the capabilities whose names
-begin with \*(``k\*(''.
-The corresponding keycodes are generated and (depending on previous
-loads of terminal descriptions) may differ from one execution of a
-program to the next.
-The generated keycodes are recognized by the \fBkeyname\fP function
+e.g.,
+from using the
+.B \-x
+option of \fB\%@TIC@\fP,
+then
+.I \%ncurses
+also defines keys for the capabilities whose names begin with
+\*(``k\*(''.
+The corresponding keycodes are generated and
+(depending on previous loads of terminal descriptions)
+may differ from one execution of a program to the next.
+The generated keycodes are recognized by the \fB\%keyname\fP(3X)
+function
 (which will then return a name beginning with \*(``k\*('' denoting the
-terminfo capability name rather than \*(``K\*('', used for curses key-names).
-On the other hand, an application can use \fBdefine_key\fP to establish
+terminfo capability name rather than \*(``K\*('',
+used for
+.I curses
+key names).
+On the other hand,
+an application can use \fB\%define_key\fP(3X) to establish
 a specific keycode for a given string.
 This makes it possible for an application to check for an extended
-capability's presence with \fBtigetstr\fP,
+capability's presence with \fB\%tigetstr\fP,
 and reassign the keycode to match its own needs.
 .PP
-Low-level applications can use \fBtigetstr\fP to obtain the definition
+Low-level applications can use \fB\%tigetstr\fP to obtain the definition
 of any particular string capability.
-Higher-level applications which use the curses \fBwgetch\fP
-and similar functions to return keycodes rely upon the order in which
-the strings are loaded.
+Higher-level applications which use the
+.I curses
+\fB\%wgetch\fP and similar functions to return keycodes rely upon the
+order in which the strings are loaded.
 If more than one key definition has the same string value,
-then \fBwgetch\fP can return only one keycode.
-Most curses implementations (including ncurses)
+then \fB\%wgetch\fP can return only one keycode.
+Most
+.I curses
+implementations
+(including
+.IR \%ncurses )
 load key definitions in the order
 defined by the array of string capability names.
 The last key to be loaded determines the keycode which will be returned.
-In ncurses, you may also have extended capabilities interpreted as
-key definitions.
+In
+.IR \%ncurses ,
+you may also have extended capabilities interpreted as key definitions.
 These are loaded after the predefined keys,
 and if a capability's value is the same as a previously-loaded
 key definition,
 the later definition is the one used.
-.SH NOTES
-Note that
-\fBecho\fP,
-\fBnoecho\fP,
-\fBhalfdelay\fP,
-\fBintrflush\fP,
-\fBmeta\fP,
-\fBnl\fP,
-\fBnonl\fP,
-\fBnodelay\fP,
-\fBnotimeout\fP,
-\fBnoqiflush\fP,
-\fBqiflush\fP,
-\fBtimeout\fP, and
-\fBwtimeout\fP may be macros.
-.PP
-The \fBnoraw\fP and \fBnocbreak\fP calls follow historical practice in that
-they attempt to restore to normal (\*(``cooked\*('') mode
-from raw and cbreak modes respectively.
-Mixing raw/noraw and cbreak/nocbreak calls leads to tty driver
-control states that are hard to predict or understand; it is not recommended.
+.SH HISTORY
+Formerly,
+.I \%ncurses
+used
+.B \%nl
+and
+.B \%nonl
+to control the conversion of newlines to carriage return/line feed
+on output as well as input.
+X/Open Curses documents the use of these functions only for input.
+This difference arose from converting the
+.I \%pcurses
+source (1986),
+which used
+\fI\%ioctl\fP(2) calls and the
+.I \%sgttyb
+structure,
+to
+.I \%termios
+(the POSIX terminal API).
+In the former,
+both input and output were controlled via a single option
+.BR \%CRMOD ,
+while the latter separates these features.
+Because that conversion interferes with output optimization,
+.I \%ncurses
+6.2 (2020) amended
+.B \%nl
+and
+.B \%nonl
+to eliminate their effect on output.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_getch\fP(3X),
-\fBcurs_initscr\fP(3X),
-\fBcurs_util\fP(3X),
-\fBdefine_key\fP(3X),
-\fBtermios\fP(3)
+\fB\%curses\fP(3X),
+\fB\%curs_getch\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_util\fP(3X),
+\fB\%define_key\fP(3X),
+\fB\%termios\fP(3)
index 1acd4933162623722e9773f92b9dc26acfc78d6a..90b03f64f4d1555a36a2c17fcdd455673dccd90e 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_ins_wch.3x,v 1.13 2022/02/12 20:05:11 tom Exp $
-.TH curs_ins_wch 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_ins_wch.3x,v 1.30 2024/04/20 19:18:18 tom Exp $
+.TH curs_ins_wch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBins_wch\fP,
-\fBmvins_wch\fP,
-\fBmvwins_wch\fP,
-\fBwins_wch\fP \- insert a complex character and rendition into a window
+\fB\%ins_wch\fP,
+\fB\%mvins_wch\fP,
+\fB\%mvwins_wch\fP,
+\fB\%wins_wch\fP \-
+insert a \fIcurses\fR complex character in a window
 .SH SYNOPSIS
-#include <curses.h>
-.sp
-\fBint ins_wch(const cchar_t *\fIwch\fB);\fR
-.br
-\fBint wins_wch(WINDOW *\fIwin\fB, const cchar_t *\fIwch\fB);\fR
-.sp
-\fBint mvins_wch(int \fIy\fB, int \fIx\fB, const cchar_t *\fIwch\fB);\fR
-.br
-\fBint mvwins_wch(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const cchar_t *\fIwch\fB);\fR
+.nf
+\fB#include <curses.h>\fP
+.PP
+\fBint ins_wch(const cchar_t *\fIwch\fP);
+\fBint wins_wch(WINDOW *\fIwin\fP, const cchar_t *\fIwch\fP);
+\fBint mvins_wch(int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fP);
+\fBint mvwins_wch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fP);
+.fi
 .SH DESCRIPTION
-These routines, insert the complex character \fIwch\fP with rendition
-before the character under the cursor.
-All characters to the right of the cursor are moved one space to the right,
-with the possibility of the rightmost character on the line being lost.
-The insertion operation does not change the cursor position.
-.SH RETURN VALUE
-If successful, these functions return \fBOK\fP.
-If not, they return \fBERR\fP.
+These functions insert the
+.I curses
+complex character
+.I wch
+at the cursor in the specified window
+.I win
+(or
+.BR \%stdscr ).
+The character previously at the cursor and any to its right move one
+cell to the right;
+the rightmost character on the line is discarded.
+The cursor does not advance.
+.SH "RETURN VALUE"
+These functions return \fBOK\fP on success and \fBERR\fP on failure.
+.PP
+Functions taking a
+.I \%WINDOW
+pointer argument fail if the pointer is
+.BR NULL .
+.PP
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
+.SH NOTES
+A terminal's
+.B \%insert_character
+.RB ( ich1 )
+capability
+is not necessarily employed.
+.PP
+\fB\%ins_wch\fP,
+\fB\%mvins_wch\fP,
+and
+\fB\%mvwins_wch\fP
+may be implemented as macros.
+.SH PORTABILITY
+X/Open Curses,
+Issue 4 describes these functions.
+.PP
+SVr4 describes successful return values only as
+\*(``an integer value other than \fBERR\fP\*(''.
+.SH HISTORY
+SVr4 (1989) implemented these functions under the names
+.BR inswch ,
+.BR winswch ,
+.BR mvinswch ,
+and
+.BR mvwinswch .
+.SH "SEE ALSO"
+\fB\%curs_insch\fP(3X) describes comparable functions in the
+non-wide-character
+.I curses
+configuration.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
-.SH ERRORS
-No errors are defined.
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_insch\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%terminfo\fP(5)
index 571997104f47a3d7c1ddab2746dec5ec2ff281b7..4ebd3ace2c5af98f02bc60f542733376d9c5765b 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_ins_wstr.3x,v 1.14 2022/02/12 20:05:11 tom Exp $
-.TH curs_ins_wstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.na
-.hy 0
+.\" $Id: curs_ins_wstr.3x,v 1.38 2024/04/20 21:23:08 tom Exp $
+.TH curs_ins_wstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
+.de bP
+.ie n  .IP \(bu 4
+.el    .IP \(bu 2
+..
 .SH NAME
-\fBins_wstr\fP,
-\fBins_nwstr\fP,
-\fBwins_wstr\fP,
-\fBwins_nwstr\fP,
-\fBmvins_wstr\fP,
-\fBmvins_nwstr\fP,
-\fBmvwins_wstr\fP,
-\fBmvwins_nwstr\fP \- insert a wide-character string into a curses window
-.ad
-.hy
+\fB\%ins_wstr\fP,
+\fB\%ins_nwstr\fP,
+\fB\%wins_wstr\fP,
+\fB\%wins_nwstr\fP,
+\fB\%mvins_wstr\fP,
+\fB\%mvins_nwstr\fP,
+\fB\%mvwins_wstr\fP,
+\fB\%mvwins_nwstr\fP \-
+insert a wide-character string in a \fIcurses\fR window
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h>\fP
-.sp
-\fBint ins_wstr(const wchar_t *\fIwstr);\fR
-.br
-\fBint ins_nwstr(const wchar_t *\fIwstr\fB, int \fIn\fB);\fR
-.br
-\fBint wins_wstr(WINDOW *\fIwin\fB, const wchar_t *\fIwstr\fB);\fR
-.br
-\fBint wins_nwstr(WINDOW *\fIwin\fB, const wchar_t *\fIwstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvins_wstr(int \fIy\fB, int \fIx\fB, const wchar_t *\fIwstr\fB);\fR
-.br
-\fBint mvins_nwstr(int \fIy\fB, int \fIx\fB, const wchar_t *\fIwstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwins_wstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const wchar_t *\fIwstr\fB);\fR
-.br
-\fBint mvwins_nwstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const wchar_t *\fIwstr\fB, int \fIn\fB);\fR
+\fB#include <curses.h>
+.PP
+\fBint ins_wstr(const wchar_t *\fIwstr\fP);
+\fBint ins_nwstr(const wchar_t *\fIwstr\fP, int \fIn\fP);
+\fBint wins_wstr(WINDOW *\fIwin\fP, const wchar_t *\fIwstr\fP);
+\fBint wins_nwstr(WINDOW *\fIwin\fP, const wchar_t *\fIwstr\fP, int \fIn\fP);
+.PP
+\fBint mvins_wstr(int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP);
+\fBint mvins_nwstr(int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP, int \fIn\fP);
+\fBint mvwins_wstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP);
+\fBint mvwins_nwstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const wchar_t *\fIwstr\fP, int \fIn\fP);
 .fi
 .SH DESCRIPTION
 These routines insert a \fBwchar_t\fP character string
 (as many characters as will fit on the line)
-before the character under the cursor.
+before the character under the cursor,
+as if calling \fBwins_wch\fP(3X).
 All characters to the right of the cursor are shifted right,
 with the possibility of the rightmost characters on the line being lost.
 No wrapping is performed.
+.PP
 The cursor position does not change
 (after moving to \fIy\fP, \fIx\fP, if specified).
-The four routines with \fIn\fP as the last argument
+.PP
+The functions with \fIn\fP as the last argument
 insert a leading substring of at most \fIn\fP \fBwchar_t\fP characters.
-If \fIn\fP is less than 1, the entire string is inserted.
+If \fIn\fP is less than zero, the entire string is inserted
+(stopping on a L'\e0' character).
 .PP
-If a character in \fIwstr\fP is a tab, newline, carriage return or
-backspace, the cursor is moved appropriately within the window.
-A newline also does a \fBclrtoeol\fP before moving.
-Tabs are considered to be at every eighth column.
-If a character in \fIwstr\fP is another control character,
-it is drawn in the \fB^\fIX\fR notation.
-Calling \fBwin_wch\fP after adding a control character
-(and moving to it, if necessary)
-does not return the control character,
-but instead returns a character in the ^-representation
-of the control character.
+Special characters are handled as in \fBwadd_wch\fP(3X).
+.SH RETURN VALUE
+All functions return the integer \fBERR\fP upon failure and \fBOK\fP on success.
+.PP
+X/Open Curses does not specify any error conditions.
+This implementation returns an error
+.bP
+if the \fIwin\fP parameter is null or
+.bP
+if the \fIwstr\fP parameter is null or
+.bP
+if the \fBwins_wch\fP function returns an error.
+.PP
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-Note that all but wins_nwstr may be macros.
+All but \fBwins_nwstr\fP may be macros.
 .PP
-If the first character in the string is a nonspacing character, these
+If the first character in the string is a non-spacing character, these
 functions will fail.
-XSI does not define what will happen if a nonspacing character follows
-a control character.
-.SH RETURN VALUE
-Upon successful completion, these functions return \fBOK\fP.
-Otherwise, they return \fBERR\fP.
+X/Open Curses does not define what will happen
+if a non-spacing character follows a control character.
+.SH PORTABILITY
+These functions are described in X/Open Curses, Issue 4,
+which adds \fI\%const\fP qualifiers to the arguments.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+X/Open states that the entire string is inserted if \fIn\fP is less than 1.
+This is probably an error,
+because it is inconsistent with other functions,
+and differs from the X/Open implementation on Solaris.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_insstr\fP(3X),
-\fBcurs_in_wch\fP(3X),
-\fBcurs_ins_wch\fP(3X).
+\fB\%curs_insstr\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its non-wide-character configuration.
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_ins_wch\fP(3X),
+\fB\%curs_in_wch\fP(3X)
index 7534c93e46d349151c5cafba7d801e4c321fe452..baf2f6cc1bbbd5978aa1bdea0a53c46213a45247 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_insch.3x,v 1.22 2022/02/12 20:05:11 tom Exp $
-.TH curs_insch 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_insch.3x,v 1.40 2024/04/20 19:03:47 tom Exp $
+.TH curs_insch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBinsch\fP,
-\fBwinsch\fP,
-\fBmvinsch\fP,
-\fBmvwinsch\fP \- insert a character before cursor in a \fBcurses\fP window
+\fB\%insch\fP,
+\fB\%winsch\fP,
+\fB\%mvinsch\fP,
+\fB\%mvwinsch\fP \-
+insert a \fIcurses\fP character in a window
 .SH SYNOPSIS
+.nf
 \fB#include <curses.h>\fP
-.sp
-\fBint insch(chtype \fIch\fB);\fR
-.br
-\fBint winsch(WINDOW *\fIwin\fB, chtype \fIch\fB);\fR
-.sp
-\fBint mvinsch(int \fIy\fB, int \fIx\fB, chtype \fIch\fB);\fR
-.br
-\fBint mvwinsch(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, chtype \fIch\fB);\fR
-.br
+.PP
+\fBint insch(chtype \fIch\fP);
+\fBint winsch(WINDOW *\fIwin\fP, chtype \fIch\fP);
+\fBint mvinsch(int \fIy\fP, int \fIx\fP, chtype \fIch\fP);
+\fBint mvwinsch(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, chtype \fIch\fP);
+.fi
 .SH DESCRIPTION
-These routines insert the character \fIch\fP before the character under the
-cursor.
-All characters to the right of the cursor are moved one space to the
-right, with the possibility of the rightmost character on the line being lost.
-The insertion operation does not change the cursor position.
-.SH RETURN VALUE
-All routines that return an integer return \fBERR\fP upon failure and \fBOK\fP
-(SVr4 specifies only "an integer value other than \fBERR\fP")
-upon successful completion,
-unless otherwise noted in the preceding routine descriptions.
+These functions insert the
+.I curses
+character
+.I ch
+at the cursor in the specified window
+.I win
+(or
+.BR \%stdscr ).
+The character previously at the cursor and any to its right move one
+cell to the right;
+the rightmost character on the line is discarded.
+The cursor does not advance.
+.SH "RETURN VALUE"
+These functions return
+.B OK
+on success and
+.B ERR
+on failure.
+.PP
+Functions taking a
+.I \%WINDOW
+pointer argument fail if the pointer is
+.BR NULL .
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-These routines do not necessarily imply use of a hardware insert character
-feature.
+.BR \%insch ,
+.BR \%mvinsch ,
+and
+.B \%mvwinsch
+may be implemented as macros.
 .PP
-Note that \fBinsch\fP, \fBmvinsch\fP, and \fBmvwinsch\fP may be macros.
+A terminal's
+.B \%insert_character
+.RB ( ich1 )
+capability
+is not necessarily employed.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
-.SH SEE ALSO
-\fBcurses\fP(3X).
+X/Open Curses,
+Issue 4 describes these functions.
+.PP
+SVr4
+.I curses
+describes a successful return value only as
+\*(``an integer value other than
+.BR ERR \*(''.
+.SH "SEE ALSO"
+\fB\%curs_ins_wch\fP(3X) describes comparable functions in the
+wide-character
+.I curses
+configuration.
 .PP
-Comparable functions in the wide-character (ncursesw) library are
-described in
-\fBcurs_ins_wch\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%terminfo\fP(5)
index 44bc6fd283f3dfaf8a723ad4617f40c66431aa1e..888d4250091fd9c6b74ab48356fefd87c61c8a90 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_insstr.3x,v 1.29 2022/02/12 20:05:11 tom Exp $
-.TH curs_insstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_insstr.3x,v 1.51 2024/04/20 21:20:07 tom Exp $
+.TH curs_insstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
+.de bP
+.ie n  .IP \(bu 4
+.el    .IP \(bu 2
+..
 .SH NAME
-\fBinsstr\fP,
-\fBinsnstr\fP,
-\fBwinsstr\fP,
-\fBwinsnstr\fP,
-\fBmvinsstr\fP,
-\fBmvinsnstr\fP,
-\fBmvwinsstr\fP,
-\fBmvwinsnstr\fP \- insert string before cursor in a \fBcurses\fP window
+\fB\%insstr\fP,
+\fB\%insnstr\fP,
+\fB\%winsstr\fP,
+\fB\%winsnstr\fP,
+\fB\%mvinsstr\fP,
+\fB\%mvinsnstr\fP,
+\fB\%mvwinsstr\fP,
+\fB\%mvwinsnstr\fP \-
+insert a string in a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.br
-\fBint insstr(const char *\fIstr\fB);\fR
-.br
-\fBint insnstr(const char *\fIstr\fB, int \fIn\fB);\fR
-.br
-\fBint winsstr(WINDOW *\fIwin\fB, const char *\fIstr\fB);\fR
-.br
-\fBint winsnstr(WINDOW *\fIwin\fB, const char *\fIstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvinsstr(int \fIy\fB, int \fIx\fB, const char *\fIstr\fB);\fR
-.br
-\fBint mvinsnstr(int \fIy\fB, int \fIx\fB, const char *\fIstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwinsstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const char *\fIstr\fB);\fR
-.br
-\fBint mvwinsnstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const char *\fIstr\fB, int \fIn\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+\fBint insstr(const char *\fIstr\fP);
+\fBint insnstr(const char *\fIstr\fP, int \fIn\fP);
+\fBint winsstr(WINDOW *\fIwin\fP, const char *\fIstr\fP);
+\fBint winsnstr(WINDOW *\fIwin\fP, const char *\fIstr\fP, int \fIn\fP);
+.PP
+\fBint mvinsstr(int \fIy\fP, int \fIx\fP, const char *\fIstr\fP);
+\fBint mvinsnstr(int \fIy\fP, int \fIx\fP, const char *\fIstr\fP, int \fIn\fP);
+\fBint mvwinsstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const char *\fIstr\fP);
+\fBint mvwinsnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const char *\fIstr\fP, int \fIn\fP);
+.fi
 .SH DESCRIPTION
 These routines insert a character string
 (as many characters as will fit on the line)
-before the character under the cursor.
-All characters to the right of the cursor are shifted right
+before the character under the cursor,
+as if calling \fBwinsch\fP(3X).
+All characters to the right of the cursor are shifted right,
 with the possibility of the rightmost characters on the line being lost.
+No wrapping is performed.
+.PP
 The cursor position does not change
 (after moving to \fIy\fP, \fIx\fP, if specified).
+.PP
 The functions with \fIn\fP as the last argument
 insert a leading substring of at most \fIn\fP characters.
-If \fIn\fP<=0, then the entire string is inserted.
+If \fIn\fP is less than zero, the entire string is inserted
+(stopping on a NUL character).
 .PP
-Special characters are handled as in \fBaddch\fP.
+Special characters are handled as in \fBwaddch\fP(3X).
 .SH RETURN VALUE
-All routines that return an integer return \fBERR\fP upon failure and \fBOK\fP
-(SVr4 specifies only "an integer value other than \fBERR\fP")
-upon successful completion,
-unless otherwise noted in the preceding routine descriptions.
+All functions return the integer \fBERR\fP upon failure and \fBOK\fP on success.
 .PP
-X/Open defines no error conditions.
-In this implementation,
-if the window parameter is null or the str parameter is null,
-an error is returned.
+X/Open Curses does not specify any error conditions.
+This implementation returns an error
+.bP
+if the \fIwin\fP parameter is null or
+.bP
+if the \fIstr\fP parameter is null or
+.bP
+the \fBwinsch\fP(3X) function returns an error.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-Note that all but \fBwinsnstr\fP may be macros.
+All but \fBwinsnstr\fP may be macros.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4, which adds
-const qualifiers to the arguments.
-.LP
+These functions are described in X/Open Curses, Issue 4,
+which adds \fI\%const\fP qualifiers to the arguments.
+.PP
 The Single Unix Specification, Version 2 states that
 \fBinsnstr\fP and \fBwinsnstr\fP perform wrapping.
 This is probably an error, since it makes this group of functions inconsistent.
 Also, no implementation of curses documents this inconsistency.
+.PP
+X/Open states that the entire string is inserted if \fIn\fP is less than 1.
+This is probably an error,
+because it is inconsistent with other functions,
+and differs from the SVr4 and X/Open implementations on Solaris.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_util\fP(3X),
-\fBcurs_clear\fP(3X),
-\fBcurs_inch\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_inch\fP(3X),
+\fB\%curs_ins_wstr\fP(3X),
+\fB\%curs_util\fP(3X)
index 4ab3e540a40172b26777f5e9869b54340928f841..5b6e4b760301e5a9c54c557c91bc52410e115bc4 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_instr.3x,v 1.25 2022/02/12 20:05:11 tom Exp $
-.TH curs_instr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_instr.3x,v 1.51 2024/04/20 21:24:19 tom Exp $
+.TH curs_instr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBinstr\fP,
-\fBinnstr\fP,
-\fBwinstr\fP,
-\fBwinnstr\fP,
-\fBmvinstr\fP,
-\fBmvinnstr\fP,
-\fBmvwinstr\fP,
-\fBmvwinnstr\fP \- get a string of characters from a \fBcurses\fP window
+\fB\%instr\fP,
+\fB\%innstr\fP,
+\fB\%winstr\fP,
+\fB\%winnstr\fP,
+\fB\%mvinstr\fP,
+\fB\%mvinnstr\fP,
+\fB\%mvwinstr\fP,
+\fB\%mvwinnstr\fP \-
+get a string from a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint instr(char *\fIstr\fB);\fR
-.br
-\fBint innstr(char *\fIstr\fB, int \fIn\fB);\fR
-.br
-\fBint winstr(WINDOW *\fIwin\fB, char *\fIstr\fB);\fR
-.br
-\fBint winnstr(WINDOW *\fIwin\fB, char *\fIstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvinstr(int \fIy\fB, int \fIx\fB, char *\fIstr\fB);\fR
-.br
-\fBint mvinnstr(int \fIy\fB, int \fIx\fB, char *\fIstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwinstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, char *\fIstr\fB);\fR
-.br
-\fBint mvwinnstr(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, char *\fIstr\fB, int \fIn\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint instr(char *\fIstr\fP);
+\fBint innstr(char *\fIstr\fP, int \fIn\fP);
+\fBint winstr(WINDOW *\fIwin\fP, char *\fIstr\fP);
+\fBint winnstr(WINDOW *\fIwin\fP, char *\fIstr\fP, int \fIn\fP);
+.PP
+\fBint mvinstr(int \fIy\fP, int \fIx\fP, char *\fIstr\fP);
+\fBint mvinnstr(int \fIy\fP, int \fIx\fP, char *\fIstr\fP, int \fIn\fP);
+\fBint mvwinstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, char *\fIstr\fP);
+\fBint mvwinnstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, char *\fIstr\fP, int \fIn\fP);
+.fi
 .SH DESCRIPTION
-These routines return a string of characters in \fIstr\fP, extracted starting
-at the current cursor position in the named window.
+These routines return a string of characters in \fIstr\fP,
+starting at the current cursor position in the named window.
 Attributes are stripped from the characters.
-The four
-functions with \fIn\fP as the last argument return a leading substring at most
-\fIn\fP characters long (exclusive of the trailing NUL).
+.PP
+The four functions with \fIn\fP as the last argument return
+a leading substring at most \fIn\fP characters long
+(exclusive of the trailing NUL).
+Transfer stops at the end of the current line, or when \fIn\fP characters have
+been stored at the location referenced by \fIstr\fP.
 .SH RETURN VALUE
 All of the functions return \fBERR\fP upon failure,
 or the number of characters actually read into the string.
 .PP
 X/Open Curses defines no error conditions.
-In this implementation:
+This implementation returns an error
 .bP
-If the \fIwin\fP parameter is null, an error is returned,
+if the \fIwin\fP parameter is null or
 .bP
-If the \fIchstr\fP parameter is null, an error is returned,
+if the \fIchstr\fP parameter is null.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH NOTES
-Note that all routines except \fBwinnstr\fP may be macros.
+All routines except \fBwinnstr\fP may be macros.
+.PP
+Reading a line that overflows the array pointed to by
+\fIstr\fP
+with
+\fBinstr\fP,
+\fBmvinstr\fP,
+\fBmvwinstr\fP
+or
+\fBwinstr\fP
+causes undefined results.
+Therefore, the use of
+\fBinnstr\fP,
+\fBmvinnstr\fP,
+\fBmvwinnstr\fP, or
+\fBwinnstr\fP
+is recommended.
 .SH PORTABILITY
 SVr4 does not
 document whether a length limit includes or excludes the trailing NUL.
 .PP
-The ncurses library extends the XSI description by allowing a negative
-value for \fIn\fP.
+The \fI\%ncurses\fP library extends the X/Open Curses description by allowing a
+negative value for \fIn\fP.
 In this case, the functions return the string ending at the right margin.
 .SH SEE ALSO
-\fBcurses\fP(3X).
+\fB\%curs_ins_wstr\fP(3X) describes comparable functions of the
+.I \%ncurses
+library in its wide-character configuration
+.RI ( \%ncursesw ).
+.PP
+\fB\%curses\fP(3X),
+\fB\%curs_inch\fP(3X),
+\fB\%curs_inchstr\fP(3X)
index 3b02feea86811436f90dc1e98d3330bb9ace1683..eec361d77af95bbd0c2b6a8bd06433e3d4d9c9ec 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2002-2012,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_inwstr.3x,v 1.17 2022/02/12 20:05:11 tom Exp $
-.TH curs_inwstr 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_inwstr.3x,v 1.41 2024/04/20 21:20:07 tom Exp $
+.TH curs_inwstr 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.de bP
+.ie n  .IP \(bu 4
+.el    .IP \(bu 2
+..
 .SH NAME
-\fBinwstr\fP,
-\fBinnwstr\fP,
-\fBwinwstr\fP,
-\fBwinnwstr\fP,
-\fBmvinwstr\fP,
-\fBmvinnwstr\fP,
-\fBmvwinwstr\fP,
-\fBmvwinnwstr\fP \- get a string of \fBwchar_t\fP characters from a curses window
+\fB\%inwstr\fP,
+\fB\%innwstr\fP,
+\fB\%winwstr\fP,
+\fB\%winnwstr\fP,
+\fB\%mvinwstr\fP,
+\fB\%mvinnwstr\fP,
+\fB\%mvwinwstr\fP,
+\fB\%mvwinnwstr\fP \-
+get a wide-character string from a \fIcurses\fR window
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h> \fP
-.sp
-\fBint inwstr(\fBwchar_t *\fIwstr\fB);\fR
-.br
-\fBint innwstr(\fBwchar_t *\fIwstr\fB, int \fIn\fB);\fR
-.br
-\fBint winwstr(\fBWINDOW *\fIwin\fB, wchar_t *\fIwstr\fB);\fR
-.br
-\fBint winnwstr(\fBWINDOW *\fIwin\fB, wchar_t *\fIwstr\fB, int \fIn\fB);\fR
-.sp
-\fBint mvinwstr(\fBint \fIy\fB, int \fIx\fB, wchar_t *\fIwstr\fB);\fR
-.br
-\fBint mvinnwstr(\fBint \fIy\fB, int \fIx\fB, wchar_t *\fIwstr\fB, int \fIn\fB);\fR
-.br
-\fBint mvwinwstr(\fBWINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, wchar_t *\fIwstr\fB);\fR
-.br
-\fBint mvwinnwstr(\fBWINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, wchar_t *\fIwstr\fB, int \fIn\fB);\fR
+\fB#include <curses.h>
+.PP
+\fBint inwstr(wchar_t *\fIwstr\fP);
+\fBint innwstr(wchar_t *\fIwstr\fP, int \fIn\fP);
+\fBint winwstr(WINDOW *\fIwin\fP, wchar_t *\fIwstr\fP);
+\fBint winnwstr(WINDOW *\fIwin\fP, wchar_t *\fIwstr\fP, int \fIn\fP);
+.PP
+\fBint mvinwstr(int \fIy\fP, int \fIx\fP, wchar_t *\fIwstr\fP);
+\fBint mvinnwstr(int \fIy\fP, int \fIx\fP, wchar_t *\fIwstr\fP, int \fIn\fP);
+\fBint mvwinwstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, wchar_t *\fIwstr\fP);
+\fBint mvwinnwstr(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, wchar_t *\fIwstr\fP, int \fIn\fP);
 .fi
 .SH DESCRIPTION
-.PP
 These routines return a string of \fBwchar_t\fP wide characters in \fIwstr\fP,
-extracted starting at the current cursor position in the named window.
+starting at the current cursor position in the named window.
 .PP
 The four functions with \fIn\fP as the last argument return
 a leading substring at most \fIn\fP characters long
@@ -75,17 +79,6 @@ been stored at the location referenced by \fIwstr\fP.
 .PP
 If the size \fIn\fP is not large enough to store a complete complex character,
 an error is generated.
-.SH NOTES
-.PP
-All routines except
-\fBwinnwstr\fP
-may be macros.
-.PP
-Each cell in the window holds a complex character (i.e., base-
-and combining-characters) together with attributes and color.
-These functions store only the wide characters,
-ignoring attributes and color.
-Use \fBin_wchstr\fP to return the complex characters from a window.
 .SH RETURN VALUE
 All routines return
 \fBERR\fP
@@ -97,10 +90,52 @@ routines return
 routines return the
 number of characters read into the string.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+X/Open defines no error conditions.
+This implementation returns an error
+.bP
+if the \fIwin\fP parameter is null or
+.bP
+if the \fIwstr\fP parameter is null, or
+.bP
+if no characters could be read.
+.PP
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
+.SH NOTES
+All routines except
+\fBwinnwstr\fP
+may be macros.
+.PP
+Each cell in the window holds a complex character
+(a spacing character and zero or more non-spacing characters)
+together with attributes and color.
+These functions store only the wide characters,
+ignoring attributes and color.
+Use \fBin_wchstr\fP to return the complex characters from a window.
+.PP
+Reading a line that overflows the array pointed to by
+\fIwstr\fP
+with
+\fBinwstr\fP,
+\fBmvinwstr\fP,
+\fBmvwinwstr\fP
+or
+\fBwinwstr\fP
+causes undefined results.
+Therefore, the use of
+\fBinnwstr\fP,
+\fBmvinnwstr\fP,
+\fBmvwinnwstr\fP, or
+\fBwinnwstr\fP
+is recommended.
+.SH PORTABILITY
+These functions are described in X/Open Curses, Issue 4.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_instr\fP(3X),
-\fBcurs_in_wchstr\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_inch\fP(3X),
+\fB\%curs_inchstr\fP(3X),
+\fB\%curs_instr\fP(3X),
+\fB\%curs_in_wchstr\fP(3X)
index 73dec7b1734c515d00cc7850bf15614a08a831a1..e85c132768a3460e3d7fbac9a7c0bbc8ca11aa82 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_kernel.3x,v 1.32 2022/02/12 20:05:11 tom Exp $
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_kernel.3x,v 1.61 2024/04/20 21:24:19 tom Exp $
+.TH curs_kernel 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.TH curs_kernel 3X ""
-.na
-.hy 0
 .SH NAME
-\fBdef_prog_mode\fP,
-\fBdef_shell_mode\fP,
-\fBreset_prog_mode\fP,
-\fBreset_shell_mode\fP,
-\fBresetty\fP,
-\fBsavetty\fP,
-\fBgetsyx\fP,
-\fBsetsyx\fP,
-\fBripoffline\fP,
-\fBcurs_set\fP,
-\fBnapms\fP \- low-level \fBcurses\fP routines
-.ad
-.hy
+\fB\%def_prog_mode\fP,
+\fB\%def_shell_mode\fP,
+\fB\%reset_prog_mode\fP,
+\fB\%reset_shell_mode\fP,
+\fB\%resetty\fP,
+\fB\%savetty\fP,
+\fB\%getsyx\fP,
+\fB\%setsyx\fP,
+\fB\%ripoffline\fP,
+\fB\%curs_set\fP,
+\fB\%napms\fP \-
+low-level \fIcurses\fR routines
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint def_prog_mode(void);\fP
-.br
-\fBint def_shell_mode(void);\fP
-.sp
-\fBint reset_prog_mode(void);\fP
-.br
-\fBint reset_shell_mode(void);\fP
-.sp
-\fBint resetty(void);\fP
-.br
-\fBint savetty(void);\fP
-.sp
-\fBvoid getsyx(int \fIy\fB, int \fIx\fB);\fR
-.br
-\fBvoid setsyx(int \fIy\fB, int \fIx\fB);\fR
-.sp
-\fBint ripoffline(int \fIline\fB, int (*\fIinit\fB)(WINDOW *, int));\fR
-.br
-\fBint curs_set(int \fIvisibility\fB);\fR
-.br
-\fBint napms(int \fIms\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint def_prog_mode(void);
+\fBint def_shell_mode(void);
+.PP
+\fBint reset_prog_mode(void);
+\fBint reset_shell_mode(void);
+.PP
+\fBint resetty(void);
+\fBint savetty(void);
+.PP
+\fBvoid getsyx(int \fIy\fP, int \fIx\fP);
+\fBvoid setsyx(int \fIy\fP, int \fIx\fP);
+.PP
+\fBint ripoffline(int \fIline\fP, int (*\fIinit\fP)(WINDOW *, int));
+\fBint curs_set(int \fIvisibility\fP);
+\fBint napms(int \fIms\fP);
+.fi
 .SH DESCRIPTION
 The following routines give low-level access
 to various \fBcurses\fP capabilities.
 These routines typically are used inside library routines.
-.SS def_prog_mode, def_shell_mode
-.PP
+.SS "def_prog_mode, def_shell_mode"
 The \fBdef_prog_mode\fP and \fBdef_shell_mode\fP routines save the
-current terminal modes as the \*(``program\*('' (in \fBcurses\fP) or \*(``shell\*(''
+current terminal modes as the \*(``program\*(''
+(in \fBcurses\fP) or \*(``shell\*(''
 (not in \fBcurses\fP) state for use by the \fBreset_prog_mode\fP and
 \fBreset_shell_mode\fP routines.
 This is done automatically by \fBinitscr\fP.
 There is one such save area for each screen context
 allocated by \fBnewterm\fP.
-.SS reset_prog_mode, reset_shell_mode
-.PP
+.SS "reset_prog_mode, reset_shell_mode"
 The \fBreset_prog_mode\fP and \fBreset_shell_mode\fP routines restore
 the terminal to \*(``program\*('' (in \fBcurses\fP) or \*(``shell\*('' (out of
 \fBcurses\fP) state.
 These are done automatically by \fBendwin\fP(3X) and,
 after an \fBendwin\fP, by \fBdoupdate\fP,
 so they normally are not called.
-.SS resetty, savetty
-.PP
+.SS "resetty, savetty"
 The \fBresetty\fP and \fBsavetty\fP routines save and restore the
 state of the terminal modes.
 \fBsavetty\fP saves the current state in
 a buffer and \fBresetty\fP restores the state to what it was at the
 last call to \fBsavetty\fP.
 .SS getsyx
-.PP
 The \fBgetsyx\fP routine returns the current coordinates
 of the \fIvirtual screen\fP cursor in \fIy\fP and \fIx\fP.
 If \fBleaveok\fP is currently \fBTRUE\fP, then
@@ -120,7 +116,6 @@ therefore, \fIy\fP and \fIx\fP should be used only as arguments for
 Few applications will use this feature,
 most use \fBgetyx\fP instead.
 .SS setsyx
-.PP
 The \fBsetsyx\fP routine sets
 the \fIvirtual screen\fP cursor to \fIy\fP, \fIx\fP.
 If \fIy\fP and \fIx\fP are both \fB\-1\fP, then
@@ -137,11 +132,10 @@ at the beginning, do its manipulation of its own windows, do a
 Few applications will use this feature,
 most use \fBwmove\fP instead.
 .SS ripoffline
-.PP
-The \fBripoffline\fP routine provides access to the same facility that
-\fBslk_init\fP [see \fBcurs_slk\fP(3X)] uses to reduce the size of the
-screen.
-\fBripoffline\fP must be called before \fBinitscr\fP or
+.B \%ripoffline
+provides access to the same facility that \fB\%slk_init\fP(3X) uses to
+reduce the size of the screen.
+\fB\%ripoffline\fP must be called before \fBinitscr\fP or
 \fBnewterm\fP is called, to prepare these initial actions:
 .bP
 If \fIline\fP is positive, a line is removed from the top of \fBstdscr\fP.
@@ -165,7 +159,6 @@ It is allowable to call \fBwnoutrefresh\fP during the initialization routine.
 \fBripoffline\fP can be called up to five times before calling \fBinitscr\fP or
 \fBnewterm\fP.
 .SS curs_set
-.PP
 The \fBcurs_set\fP routine sets the cursor state to invisible,
 normal, or very visible for \fBvisibility\fP equal to \fB0\fP,
 \fB1\fP, or \fB2\fP respectively.
@@ -173,8 +166,15 @@ If the terminal supports the \fIvisibility\fP requested,
 the previous \fIcursor\fP state is returned;
 otherwise, \fBERR\fP is returned.
 .SS napms
-.PP
-The \fBnapms\fP routine is used to sleep for \fIms\fP milliseconds.
+.B \%napms
+sleeps for
+.I ms
+milliseconds.
+If
+.I ms
+exceeds 30,000
+(thirty seconds),
+it is capped at that value.
 .SH RETURN VALUE
 Except for \fBcurs_set\fP, these routines always return \fBOK\fP.
 .PP
@@ -185,18 +185,14 @@ requested \fIvisibility\fP is not supported.
 X/Open defines no error conditions.
 In this implementation
 .TP 5
-.na
-.hy 0
 \fBdef_prog_mode\fP, \fBdef_shell_mode\fP, \fBreset_prog_mode\fP, \fBreset_shell_mode\fP
-.hy
-.ad
 return an error
 if the terminal was not initialized, or
 if the I/O call to obtain the terminal settings fails.
 .TP 5
 \fBripoffline\fP
 returns an error if the maximum number of ripped-off lines
-exceeds the maximum (NRIPS = 5).
+exceeds the maximum (5).
 .SH NOTES
 Note that \fBgetsyx\fP is a macro, so \fB&\fP is not necessary before
 the variables \fIy\fP and \fIx\fP.
@@ -206,26 +202,30 @@ of \fBcurs_set\fP \*(``is currently incorrect\*(''.
 This implementation gets it right, but it may be unwise to count
 on the correctness of the return value anywhere else.
 .PP
-Both ncurses and SVr4 will call \fBcurs_set\fP in \fBendwin\fP
+Both \fI\%ncurses\fP and SVr4 will call \fBcurs_set\fP in \fBendwin\fP
 if \fBcurs_set\fP
 has been called to make the cursor other than normal, i.e., either
 invisible or very visible.
-There is no way for ncurses to determine the initial cursor state to
-restore that.
+There is no way for \fI\%ncurses\fP to determine the initial cursor
+state to restore that.
 .SH PORTABILITY
 The \fIvirtual screen\fP functions \fBsetsyx\fP and \fBgetsyx\fP
-are not described in the XSI Curses standard, Issue 4.
-All other functions are as described in XSI Curses.
+are not described in X/Open Curses, Issue 4.
+All other functions are as described in X/Open Curses.
 .PP
 The SVr4 documentation describes \fBsetsyx\fP and \fBgetsyx\fP
 as having return type int.
 This is misleading, as they are macros with no documented semantics
 for the return value.
+.PP
+If interrupted, \fI\%ncurses\fP restarts \fBnapms\fP.
+That, and the limitation to 30 seconds,
+are different from other implementations.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_initscr\fP(3X),
-\fBcurs_outopts\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_scr_dump\fP(3X),
-\fBcurs_slk\fP(3X),
-\fBcurs_variables\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_outopts\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_scr_dump\fP(3X),
+\fB\%curs_slk\fP(3X),
+\fB\%curs_variables\fP(3X)
index 02e2c8285db46d17730e0ebd26c10001f042bbd0..24be01b8526981481220db3d5bf121cf8ed5b5fd 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2020,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2007-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_legacy.3x,v 1.13 2022/02/12 20:05:11 tom Exp $
+.\" $Id: curs_legacy.3x,v 1.32 2024/03/16 15:35:01 tom Exp $
+.TH curs_legacy 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.TH curs_legacy 3X ""
 .SH NAME
-curs_legacy \- get \fBcurses\fP cursor and window coordinates, attributes
+\fB\%getattrs\fP,
+\fB\%getbegx\fP,
+\fB\%getbegy\fP,
+\fB\%getcurx\fP,
+\fB\%getcury\fP,
+\fB\%getmaxx\fP,
+\fB\%getmaxy\fP,
+\fB\%getparx\fP,
+\fB\%getpary\fP \-
+get \fIcurses\fR cursor and window coordinates or attributes (legacy)
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint getattrs(const WINDOW *\fIwin\fB);\fR
-.sp
-\fBint getbegx(const WINDOW *\fIwin\fB);\fR
-.br
-\fBint getbegy(const WINDOW *\fIwin\fB);\fR
-.sp
-\fBint getcurx(const WINDOW *\fIwin\fB);\fR
-.br
-\fBint getcury(const WINDOW *\fIwin\fB);\fR
-.sp
-\fBint getmaxx(const WINDOW *\fIwin\fB);\fR
-.br
-\fBint getmaxy(const WINDOW *\fIwin\fB);\fR
-.sp
-\fBint getparx(const WINDOW *\fIwin\fB);\fR
-.br
-\fBint getpary(const WINDOW *\fIwin\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint getattrs(const WINDOW *\fIwin\fP);
+.PP
+\fBint getbegx(const WINDOW *\fIwin\fP);
+\fBint getbegy(const WINDOW *\fIwin\fP);
+.PP
+\fBint getcurx(const WINDOW *\fIwin\fP);
+\fBint getcury(const WINDOW *\fIwin\fP);
+.PP
+\fBint getmaxx(const WINDOW *\fIwin\fP);
+\fBint getmaxy(const WINDOW *\fIwin\fP);
+.PP
+\fBint getparx(const WINDOW *\fIwin\fP);
+\fBint getpary(const WINDOW *\fIwin\fP);
+.fi
 .SH DESCRIPTION
-These legacy functions are simpler to use than the X/Open Curses functions:
+These legacy functions are simpler to use
+than the X/Open \fIcurses\fP functions:
 .bP
-The \fBgetattrs\fP function returns the same attribute data as \fBwattr_get\fP.
+The \fB\%getattrs\fP function returns the same attribute data
+as \fB\%wattr_get\fP.
 .IP
-However, \fBgetattrs\fP returns an integer (actually a \fBchtype\fP),
-while \fBwattr_get\fP returns the current color pair in a separate parameter.
+However, \fB\%getattrs\fP returns an integer (actually a \fB\%chtype\fP),
+while \fB\%wattr_get\fP returns the current color pair in a separate parameter.
 In the wide-character library configuration,
-color pairs may not fit into a \fBchtype\fP,
-so \fBwattr_get\fP is the only way to obtain the color information.
+color pairs may not fit into a \fB\%chtype\fP,
+so \fB\%wattr_get\fP is the only way to obtain the color information.
 .IP
-Because \fBgetattrs\fP returns the attributes in a single parameter,
+Because \fB\%getattrs\fP returns the attributes in a single parameter,
 it would not be possible for an application to distinguish that from
 \fBERR\fP (a \fI-1\fP).
-If the window parameter is null, \fBgetattrs\fP returns \fBA_NORMAL\fP (zero).
+If the window parameter is null, \fB\%getattrs\fP
+returns \fB\%A_NORMAL\fP (zero).
 .bP
-The \fBgetbegy\fP and \fBgetbegx\fP functions return the same
-data as \fBgetbegyx\fP.
+The \fB\%getbegy\fP and \fB\%getbegx\fP functions return the same
+data as \fB\%getbegyx\fP.
 .bP
-The \fBgetcury\fP and \fBgetcurx\fP functions return the same
-data as \fBgetyx\fP.
+The \fB\%getcury\fP and \fB\%getcurx\fP functions return the same
+data as \fB\%getyx\fP.
 .bP
-The \fBgetmaxy\fP and \fBgetmaxx\fP functions return the same
-data as \fBgetmaxyx\fP.
+The \fB\%getmaxy\fP and \fB\%getmaxx\fP functions return the same
+data as \fB\%getmaxyx\fP.
 .bP
-The \fBgetpary\fP and \fBgetparx\fP functions return the same
-data as \fBgetparyx\fP.
+The \fB\%getpary\fP and \fB\%getparx\fP functions return the same
+data as \fB\%getparyx\fP.
 .SH RETURN VALUE
 Except as noted,
 these functions return an integer,
 or \fBERR\fP if the window parameter is null.
 .SH NOTES
-All of these interfaces are provided as macros and functions.
-The macros are suppressed (and only the functions provided)
-when \fBNCURSES_OPAQUE\fP is defined.
-The standard forms such as \fBgetyx\fP must be implemented as macros,
-and (in this implementation) are defined in terms of the functions
-described here,
-to avoid reliance on internal details of the WINDOW structure.
+All of these interfaces are implemented as macros and functions.
+The macros are suppressed
+(and only the functions provided)
+in an \*(``opaque\*(''
+.I \%ncurses
+build,
+which defines the preprocessor symbol
+.BR \%NCURSES_OPAQUE .
+See section \*(``ALTERNATE CONFIGURATIONS\*('' in \fB\%ncurses\fP(3X).
+.PP
+The standard forms such as \fB\%getyx\fP
+.I must
+be implemented as macros,
+and
+(in this implementation)
+are defined in terms of the functions described here,
+to avoid reliance on internal details of the \fI\%WINDOW\fP structure.
 .SH PORTABILITY
 These functions were supported on Version 7, BSD or System V implementations.
 None of those implementations checked the window parameter.
 .PP
-The \fBgetattrs\fP function and macro are defined to return a (signed) integer
+The \fB\%getattrs\fP function and macro are defined to return a (signed) integer
 for compatibility with those implementations
 although an unsigned type would have been more appropriate.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_getyx\fP(3X),
-\fBcurs_opaque\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_getyx\fP(3X),
+\fB\%curs_opaque\fP(3X)
index cea4165fef02b25911d373306384afc982146e53..0626d774097b6196d6084becf3f4b25ee2b4ae5d 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2008-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_memleaks.3x,v 1.15 2022/06/04 23:33:48 tom Exp $
-.TH curs_memleaks 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_memleaks.3x,v 1.35 2024/03/16 15:35:01 tom Exp $
+.TH curs_memleaks 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBexit_curses\fP,
-\fBexit_terminfo\fP \- \fBcurses\fP memory-leak checking
-.ad
-.hy
+\fB\%exit_curses\fP,
+\fB\%exit_terminfo\fP \-
+check for memory leaks in \fIcurses\fR
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.br
-\fBvoid exit_curses(int \fIcode\fB);\fR
-.sp
-\fB#include <term.h>\fP
-.br
-\fBvoid exit_terminfo(int \fIcode\fB);\fR
-.sp
-/* deprecated (intentionally not declared in curses.h or term.h) */
-.br
-\fBvoid _nc_freeall(void);\fP
-.br
-\fBvoid _nc_free_and_exit(int \fIcode\fB);\fR
-.br
-\fBvoid _nc_free_tinfo(int \fIcode\fB);\fR
+.nf
+\fB#include <curses.h>
+\fBvoid exit_curses(int \fIcode\fP);
+.PP
+\fB#include <term.h>
+\fBvoid exit_terminfo(int \fIcode\fP);
+.PP
+\fI/* deprecated (intentionally not declared in curses.h or term.h) */
+\fBvoid _nc_freeall(void);
+\fBvoid _nc_free_and_exit(int \fIcode\fP);
+\fBvoid _nc_free_tinfo(int \fIcode\fP);
+.fi
 .SH DESCRIPTION
-These functions are used to simplify analysis of memory leaks in the ncurses
-library.
+These functions are used to simplify analysis of memory leaks in the
+\fI\%ncurses\fP library.
 .PP
 Any implementation of curses must not free the memory associated with
-a screen, since (even after calling \fBendwin\fP(3X)), it must be available
-for use in the next call to \fBrefresh\fP(3X).
+a screen, since (even after calling \fB\%endwin\fP(3X)), it must be available
+for use in the next call to \fB\%refresh\fP(3X).
 There are also chunks of memory held for performance reasons.
 That makes it hard to analyze curses applications for memory leaks.
-When using the specially configured debugging version of the ncurses library,
+When using the specially configured debugging version of the
+\fI\%ncurses\fP library,
 applications can call functions which free those chunks of memory,
 simplifying the process of memory-leak checking.
 .PP
 Some of the functions are named with a \*(``_nc_\*('' prefix
 because they are not intended for use in the non-debugging library:
 .TP 5
-\fB_nc_freeall\fP
-This frees (almost) all of the memory allocated by ncurses.
+\fB\%_nc_freeall\fP
+This frees (almost) all of the memory allocated by \fI\%ncurses\fP.
 .TP 5
-\fB_nc_free_and_exit\fP
-This frees the memory allocated by ncurses (like \fB_nc_freeall\fP),
+\fB\%_nc_free_and_exit\fP
+This frees the memory allocated by \fI\%ncurses\fP
+(like \fB\%_nc_freeall\fP),
 and exits the program.
-It is preferred over \fB_nc_freeall\fP since some of that memory
+It is preferred over \fB\%_nc_freeall\fP since some of that memory
 may be required to keep the application running.
 Simply exiting (with the given exit-code) is safer.
 .TP 5
-\fB_nc_free_tinfo\fP
+\fB\%_nc_free_tinfo\fP
 Use this function if only the low-level terminfo functions (and
 corresponding library) are used.
-Like \fB_nc_free_and_exit\fP, it exits the program after freeing memory.
+Like \fB\%_nc_free_and_exit\fP, it exits the program after freeing memory.
 .PP
 The functions prefixed \*(``_nc\*('' are normally not available;
 they must be configured into the library
-at build time using the \fB\-\-disable-leaks\fP option.
+at build time using the \fB\%\-\-disable-leaks\fP option.
 That compiles-in code that frees memory that normally would not be freed.
 .PP
-The \fBexit_curses\fP and \fBexit_terminfo\fP functions
-call \fB_nc_free_and_exit\fP and \fB_nc_free_tinfo\fP if
+The \fB\%exit_curses\fP and \fB\%exit_terminfo\fP functions
+call \fB\%_nc_free_and_exit\fP and \fB\%_nc_free_tinfo\fP if
 the library is configured to support memory-leak checking.
 If the library is not configured to support memory-leak checking,
 they simply call \fBexit\fP.
@@ -110,18 +113,19 @@ nor do other implementations of curses provide a similar feature.
 In any implementation of X/Open Curses, an application can free part
 of the memory allocated by curses:
 .bP
-The portable part of \fBexit_curses\fP can be freed using \fBdelscreen\fP,
-passing the \fBSCREEN*\fP pointer returned by \fBnewterm\fP.
+The portable part of \fB\%exit_curses\fP can be freed using \fB\%delscreen\fP,
+passing the \fISCREEN\fP pointer returned by \fB\%newterm\fP.
 .IP
 In some implementations, there is a global variable \fBsp\fP
 which could be used, e.g., if the screen were only initialized
-using \fBinitscr\fP.
+using \fB\%initscr\fP.
 .bP
-The portable part of \fBexit_terminfo\fP can be freed using \fBdel_curterm\fP.
+The portable part of \fB\%exit_terminfo\fP can be freed
+using \fB\%del_curterm\fP.
 .IP
-In this case, there is a global variable \fBcur_term\fP which can be
+In this case, there is a global variable \fB\%cur_term\fP which can be
 used as parameter.
 .SH SEE ALSO
-\fBcurs_initscr\fP(3X),
-\fBcurs_terminfo\fP(3X).
-\fBcurses\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_terminfo\fP(3X)
index 25d692011672a74805bed32eee985ccc132791e2..8e5c7018134525ea2d8401adc66fe8cae9883625 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2022,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_mouse.3x,v 1.59 2022/02/12 20:05:11 tom Exp $
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
+.\" $Id: curs_mouse.3x,v 1.98 2024/04/20 19:02:07 tom Exp $
+.TH curs_mouse 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.TH curs_mouse 3X ""
-.na
-.hy 0
 .SH NAME
-\fBhas_mouse\fP,
-\fBgetmouse\fP, \fBungetmouse\fP,
-\fBmousemask\fP, \fBwenclose\fP,
-\fBmouse_trafo\fP, \fBwmouse_trafo\fP,
-\fBmouseinterval\fP \- mouse interface through curses
-.ad
-.hy
+\fB\%has_mouse\fP,
+\fB\%getmouse\fP,
+\fB\%ungetmouse\fP,
+\fB\%mousemask\fP,
+\fB\%wenclose\fP,
+\fB\%mouse_trafo\fP,
+\fB\%wmouse_trafo\fP,
+\fB\%mouseinterval\fP \-
+get mouse events in \fIcurses\fR
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
+.nf
+\fB#include <curses.h>
 .PP
-\fBtypedef unsigned long mmask_t;\fP
+\fBtypedef unsigned long mmask_t;
 .PP
-.nf
-\fBtypedef struct {\fP
-\fB    short id;         \fI/* ID to distinguish multiple devices */\fR
-\fB    int x, y, z;      \fI/* event coordinates */\fR
-\fB    mmask_t bstate;   \fI/* button state bits */\fR
-\fB} MEVENT;\fP
-.fi
+\fBtypedef struct {
+\fB    short id;         \fI/* ID to distinguish multiple devices */
+\fB    int x, y, z;      \fI/* event coordinates */
+\fB    mmask_t bstate;   \fI/* button state bits */
+\fB} MEVENT;
+.PP
+\fBbool has_mouse(void);
+.PP
+\fBmmask_t mousemask(mmask_t \fInewmask\fP, mmask_t *\fIoldmask\fP);
+.PP
+\fBint getmouse(MEVENT *\fIevent\fP);
+\fBint ungetmouse(MEVENT *\fIevent\fP);
+.PP
+\fBbool wenclose(const WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP);
+.PP
+\fBbool mouse_trafo(int* \fIpY\fP, int* \fIpX\fP, bool \fIto_screen\fP);
+\fBbool wmouse_trafo(const WINDOW* \fIwin\fP,
+.ti +18n \" "bool wmouse_trafo("
+\fBint* \fIpY\fB, int* \fIpX\fB, bool \fIto_screen\fB);
 .PP
-\fBbool has_mouse(void);\fP
-.sp
-\fBint getmouse(MEVENT *\fIevent\fB);\fR
-.br
-\fBint ungetmouse(MEVENT *\fIevent\fB);\fR
-.sp
-\fBmmask_t mousemask(mmask_t \fInewmask\fB, mmask_t *\fIoldmask\fB);\fR
-.sp
-\fBbool wenclose(const WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);\fR
-.sp
-\fBbool mouse_trafo(int* \fIpY\fB, int* \fIpX\fB, bool \fIto_screen\fB);\fR
-.br
-\fBbool wmouse_trafo(const WINDOW* \fIwin\fB,\fR
-                  \fBint* \fIpY\fB, int* \fIpX\fB, bool \fIto_screen\fB);\fR
-.sp
 \fBint mouseinterval(int \fIerval\fB);\fR
-.br
+.fi
 .SH DESCRIPTION
 These functions provide an interface to mouse events from
-\fBncurses\fP(3X).
-Mouse events are represented by \fBKEY_MOUSE\fP
-pseudo-key values in the \fBwgetch\fP(3X) input stream.
-.SS mousemask
+\fB\%ncurses\fP(3X).
+Mouse events are represented by \fB\%KEY_MOUSE\fP
+pseudo-key values in the \fB\%wgetch\fP(3X) input stream.
+.SS has_mouse
+The \fB\%has_mouse\fP function returns \fBTRUE\fP if the mouse driver
+has been successfully initialized,
+and \fBFALSE\fP otherwise.
 .PP
-To make mouse events visible, use the \fBmousemask\fP function.
+Mouse events are ignored when input is in cooked mode, and
+cause an error beep when cooked mode is being simulated in a window by a
+function such as \fB\%getstr\fP that expects a linefeed for input-loop
+termination.
+.SS mousemask
+To make mouse events visible, use the \fB\%mousemask\fP function.
 This sets the mouse events to be reported.
 By default, no mouse events are reported.
 .bP
@@ -110,22 +109,21 @@ If the screen has not been initialized,
 or if the terminal does not support mouse-events,
 this function returns 0.
 .bP
-If \fIoldmask\fP is non-NULL,
+If \fIoldmask\fP is non-\fBNULL\fP,
 this function fills the indicated location with the previous value of the
 current screen's mouse event mask.
 .PP
-As a side effect, setting a zero mousemask may turn off the mouse pointer;
+As a side effect, setting a zero mouse mask may turn off the mouse pointer;
 setting a nonzero mask may turn it on.
 Whether this happens is device-dependent.
-.SS Mouse events
-.PP
+.SS "Mouse Events"
 Here are the mouse event type masks which may be defined:
 .PP
 .TS
-l l
-_ _
-l l.
-\fBName\fP     \fBDescription\fP
+Lb Lb
+Lb Lx.
+Name   Description
+=
 BUTTON1_PRESSED        mouse button 1 down
 BUTTON1_RELEASED       mouse button 1 up
 BUTTON1_CLICKED        mouse button 1 clicked
@@ -156,203 +154,156 @@ BUTTON5_CLICKED mouse button 5 clicked
 BUTTON5_DOUBLE_CLICKED mouse button 5 double clicked
 BUTTON5_TRIPLE_CLICKED mouse button 5 triple clicked
 _
-BUTTON_SHIFT   shift was down during button state change
-BUTTON_CTRL    control was down during button state change
-BUTTON_ALT     alt was down during button state change
+BUTTON_SHIFT   T{
+shift was down during button state change
+T}
+BUTTON_CTRL    T{
+control was down during button state change
+T}
+BUTTON_ALT     T{
+alt was down during button state change
+T}
 ALL_MOUSE_EVENTS       report all button state changes
 REPORT_MOUSE_POSITION  report mouse movement
 _
 .TE
 .SS getmouse
-.PP
 Once a class of mouse events has been made visible in a window,
-calling the \fBwgetch\fP function on that window may return
-\fBKEY_MOUSE\fP as an indicator that a mouse event has been queued.
+calling the \fB\%wgetch\fP function on that window may return
+\fB\%KEY_MOUSE\fP as an indicator that a mouse event has been queued.
 To read the event data and pop the event off the queue, call
-\fBgetmouse\fP.
+\fB\%getmouse\fP.
 This function will return \fBOK\fP if a mouse event
 is actually visible in the given window, \fBERR\fP otherwise.
-When \fBgetmouse\fP returns \fBOK\fP, the data deposited as y and
+When \fB\%getmouse\fP returns \fBOK\fP, the data deposited as y and
 x in the event structure coordinates will be screen-relative character-cell
 coordinates.
 The returned state mask will have exactly one bit set to
 indicate the event type.
 The corresponding data in the queue is marked invalid.
-A subsequent call to \fBgetmouse\fP will retrieve the next older
+A subsequent call to \fB\%getmouse\fP will retrieve the next older
 item from the queue.
 .SS ungetmouse
-.PP
-The \fBungetmouse\fP function behaves analogously to \fBungetch\fP.
+The \fB\%ungetmouse\fP function behaves analogously to \fB\%ungetch\fP.
 It pushes
-a \fBKEY_MOUSE\fP event onto the input queue, and associates with that event
+a \fB\%KEY_MOUSE\fP event onto the input queue, and associates with that event
 the given state data and screen-relative character-cell coordinates.
 .SS wenclose
-.PP
-The \fBwenclose\fP function tests whether a given pair of screen-relative
+The \fB\%wenclose\fP function tests whether a given pair of screen-relative
 character-cell coordinates is enclosed by a given window, returning \fBTRUE\fP
 if it is and \fBFALSE\fP otherwise.
 It is useful for determining what subset of
 the screen windows enclose the location of a mouse event.
-.SS wmouse_trafo
 .PP
-The \fBwmouse_trafo\fP function transforms a given pair of coordinates
-from stdscr-relative coordinates
+If the parameter is a pad,
+\fB\%wenclose\fP uses the most recent screen coordinates used for
+this pad in
+\fB\%prefresh\fP(3X) or
+\fB\%pnoutrefresh\fP(3X).
+.SS wmouse_trafo
+The \fB\%wmouse_trafo\fP function transforms a given pair of coordinates
+from \fB\%stdscr\fP-relative coordinates
 to coordinates relative to the given window or vice versa.
-The resulting stdscr-relative coordinates are not always identical
-to window-relative coordinates due to the mechanism to reserve lines on top
-or bottom of the screen for other purposes
-(see the \fBripoffline\fP and \fBslk_init\fP(3X) calls, for example).
+The resulting \fB\%stdscr\fP-relative coordinates are not always
+identical to screen coordinates due to the mechanism to reserve
+lines on top or bottom of the screen for other purposes
+(see the \fB\%ripoffline\fP(3X) and \fB\%slk_init\fP(3X) calls, for example).
 .bP
 If the parameter \fIto_screen\fP is \fBTRUE\fP, the pointers
 \fIpY, pX\fP must reference the coordinates of a location
 inside the window \fIwin\fP.
-They are converted to window-relative coordinates and returned
+They are converted to \fB\%stdscr\fP-relative coordinates and returned
 through the pointers.
 If the conversion was successful, the function returns \fBTRUE\fP.
-.bP
-If one of the parameters was NULL or the location is
+.IP
+If one of the parameters was \fBNULL\fP or the location is
 not inside the window, \fBFALSE\fP is returned.
 .bP
 If \fIto_screen\fP is
-\fBFALSE\fP, the pointers \fIpY, pX\fP must reference window-relative
-coordinates.
-They are converted to stdscr-relative coordinates if the
+\fBFALSE\fP, the pointers \fIpY, pX\fP must reference
+\fB\%stdscr\fP-relative coordinates.
+They are converted to window-relative coordinates if the
 window \fIwin\fP encloses this point.
 In this case the function returns \fBTRUE\fP.
-.bP
-If one of the parameters is NULL or the point is not inside the
+.IP
+If one of the parameters is \fBNULL\fP or the point is not inside the
 window, \fBFALSE\fP is returned.
+.PP
 The referenced coordinates
 are only replaced by the converted coordinates if the transformation was
 successful.
 .SS mouse_trafo
-.PP
-The \fBmouse_trafo\fP function performs the same translation
-as \fBwmouse_trafo\fP,
-using stdscr for \fIwin\fP.
+The \fB\%mouse_trafo\fP function performs the same translation
+as \fB\%wmouse_trafo\fP,
+using \fB\%stdscr\fP for \fIwin\fP.
 .SS mouseinterval
+The \fB\%mouseinterval\fP function sets the maximum time
+(in thousands of a second)
+that can elapse between press and release events for them to
+be resolved as a
+.IR click .
+An application might interpret button press and release events separated
+by more than the mouse interval as a \*(``long press\*('',
+or,
+with motion,
+as a \*(``drag\*(''.
+.PP
+Calling \fB\%mouseinterval(0)\fP disables click resolution.
+When
+.I \%ncurses
+detects a mouse event,
+it awaits further input activity up to this interval,
+and then checks for a subsequent mouse event which can be combined
+with the first event.
+If the timeout expires without input activity
+(which would happen with a zero interval),
+then no click resolution will occur.
 .PP
-The \fBmouseinterval\fP function sets the maximum time (in thousands of a
-second) that can elapse between press and release events for them to
-be recognized as a click.
-Use \fBmouseinterval(0)\fP to disable click resolution.
 This function returns the previous interval value.
-Use \fBmouseinterval(\-1)\fP to obtain the interval without altering it.
-The default is one sixth of a second.
-.SS has_mouse
+Use \fB\%mouseinterval(\-1)\fP to obtain the interval without altering it.
 .PP
-The \fBhas_mouse\fP function returns \fBTRUE\fP if the mouse driver has been
-successfully initialized.
-.PP
-Note that mouse events will be ignored when input is in cooked mode, and will
-cause an error beep when cooked mode is being simulated in a window by a
-function such as \fBgetstr\fP that expects a linefeed for input-loop
-termination.
+The mouse interval is set to one sixth of a second
+when the corresponding screen is initialized,
+e.g., in \fBinitscr\fP(3X) or \fBsetupterm\fP(3X).
 .SH RETURN VALUE
-\fBgetmouse\fP and \fBungetmouse\fP
-return the integer \fBERR\fP upon failure or \fBOK\fP
-upon successful completion:
-.RS 3
-.TP 5
-\fBgetmouse\fP
-returns an error.
+\fB\%has_mouse\fP,
+\fB\%wenclose\fP,
+\fB\%mouse_trafo\fP,
+and
+\fB\%wmouse_trafo\fP
+return \fBTRUE\fP or \fBFALSE\fP as noted above.
+.PP
+\fB\%getmouse\fP and \fB\%ungetmouse\fP
+return \fBERR\fP upon failure and \fBOK\fP upon success.
+.PP
+\fB\%getmouse\fP fails if:
 .bP
-If no mouse driver was initialized, or
-if the mask parameter is zero,
+no mouse driver was initialized,
 .bP
-It returns an error if a mouse event was detected which did not match the
-current \fImousemask\fP.
+the mask of reportable events is zero,
 .bP
-It also returns an error if no more events remain in the queue.
-.TP 5
-\fBungetmouse\fP
-returns an error if the FIFO is full.
-.RE
+a mouse event was detected that does not match the mask,
+.bP
+or if no more events remain in the queue.
+.PP
+\fB\%ungetmouse\fP returns an error if the event queue is full.
 .PP
-\fBmousemask\fP
+\fB\%mousemask\fP
 returns the mask of reportable events.
 .PP
-\fBmouseinterval\fP
+\fB\%mouseinterval\fP
 returns the previous interval value, unless
 the terminal was not initialized.
 In that case, it returns the maximum interval value (166).
-.PP
-\fBwenclose\fP and \fBwmouse_trafo\fP
-are boolean functions returning \fBTRUE\fP or \fBFALSE\fP depending
-on their test result.
-.SH PORTABILITY
-These calls were designed for \fBncurses\fP(3X), and are not found in SVr4
-curses, 4.4BSD curses, or any other previous version of curses.
-.PP
-SVr4 curses had support for the mouse in a variant of \fBxterm\fP(1).
-It is mentioned in a few places, but with no supporting documentation:
-.bP
-the \*(``libcurses\*('' manual page lists functions for this feature
-which are prototyped in \fBcurses.h\fP:
-.NS
-extern int mouse_set(long int);
-extern int mouse_on(long int);
-extern int mouse_off(long int);
-extern int request_mouse_pos(void);
-extern int map_button(unsigned long);
-extern void wmouse_position(WINDOW *, int *, int *);
-extern unsigned long getmouse(void), getbmap(void);
-.NE
-.bP
-the \*(``terminfo\*('' manual page lists capabilities for the feature
-.NS
-buttons           btns    BT       Number of buttons on the mouse
-get_mouse         getm    Gm       Curses should get button events
-key_mouse         kmous   Km       0631, Mouse event has occurred
-mouse_info        minfo   Mi       Mouse status information
-req_mouse_pos     reqmp   RQ       Request mouse position report
-.NE
-.bP
-the interface made assumptions (as does ncurses) about the escape sequences
-sent to and received from the terminal.
-.IP
-For instance
-the SVr4 curses library used the \fBget_mouse\fP capability to tell the
-terminal which mouse button events it should send,
-passing the mouse-button bit-mask to the terminal.
-Also, it could ask the terminal
-where the mouse was using the \fBreq_mouse_pos\fP capability.
-.IP
-Those features required a terminal which had been modified to work with curses.
-They were not part of the X Consortium's xterm.
-.PP
-When developing the xterm mouse support for ncurses in September 1995,
-Eric Raymond was uninterested in using the same interface due to its
-lack of documentation.
-Later, in 1998, Mark Hesseling provided support in
-PDCurses 2.3 using the SVr4 interface.
-PDCurses, however, does not use video terminals,
-making it unnecessary to be concerned about compatibility with the
-escape sequences.
-.PP
-The feature macro \fBNCURSES_MOUSE_VERSION\fP is provided so the preprocessor
-can be used to test whether these features are present.
-If the interface is changed, the value of \fBNCURSES_MOUSE_VERSION\fP will be
-incremented.
-These values for \fBNCURSES_MOUSE_VERSION\fP may be
-specified when configuring ncurses:
-.RS 3
-.TP 3
-1
-has definitions for reserved events.
-The mask uses 28 bits.
-.TP 3
-2
-adds definitions for button 5,
-removes the definitions for reserved events.
-The mask uses 29 bits.
-.RE
-.PP
-The order of the \fBMEVENT\fP structure members is not guaranteed.
+.SH NOTES
+The order of the \fB\%MEVENT\fP structure members is not guaranteed.
 Additional fields may be added to the structure in the future.
 .PP
-Under \fBncurses\fP(3X), these calls are implemented using either
-xterm's built-in mouse-tracking API or
+Under
+.IR \%ncurses ,
+these calls are implemented using either
+.IR \%xterm 's
+built-in mouse-tracking API or
 platform-specific drivers including
 .RS 3
 .bP
@@ -365,23 +316,31 @@ OS/2 EMX
 .PP
 If you are using an unsupported configuration,
 mouse events will not be visible to
-\fBncurses\fP(3X) (and the \fBmousemask\fP function will always
+\fI\%ncurses\fP (and the \fB\%mousemask\fP function will always
 return \fB0\fP).
 .PP
-If the terminfo entry contains a \fBXM\fP string,
-this is used in the xterm mouse driver to control the
+If the
+.I \%term\%info
+entry contains a \fBXM\fP string,
+this is used in the
+.I \%xterm
+mouse driver to control the
 way the terminal is initialized for mouse operation.
 The default, if \fBXM\fP is not found,
-corresponds to private mode 1000 of xterm:
+corresponds to private mode 1000 of
+.I \%xterm:
 .PP
 .RS 3
-\\E[?1000%?%p1%{1}%=%th%el%;
+\eE[?1000%?%p1%{1}%=%th%el%;
 .RE
 .PP
-The mouse driver also recognizes a newer xterm private mode 1006, e.g.,
+The mouse driver also recognizes a newer
+.I \%xterm
+private mode 1006,
+e.g.,
 .PP
 .RS 3
-\\E[?1006;1000%?%p1%{1}%=%th%el%;
+\eE[?1006;1000%?%p1%{1}%=%th%el%;
 .RE
 .PP
 The \fIz\fP member in the event structure is not presently used.
@@ -389,37 +348,178 @@ It is intended
 for use with touch screens (which may be pressure-sensitive) or with
 3D-mice/trackballs/power gloves.
 .PP
-The \fBALL_MOUSE_EVENTS\fP class does not include \fBREPORT_MOUSE_POSITION\fP.
+The \fB\%ALL_MOUSE_EVENTS\fP class does not
+include \fB\%REPORT_MOUSE_POSITION\fP.
 They are distinct.
-For example, in xterm,
+For example,
+in
+.IR \%xterm ,
 wheel/scrolling mice send position reports as a sequence of
 presses of buttons 4 or 5 without matching button-releases.
+.SH EXTENSIONS
+These functions were designed for
+\fB\%ncurses\fP(3X),
+and are not found in SVr4
+.IR curses ,
+4.4BSD
+.IR curses ,
+or any other previous curses implementation.
+(SVr4
+.I curses
+did have a
+.I \%getmouse
+function,
+which took no argument and returned a different type.)
+.SH PORTABILITY
+Applications employing the
+.I \%ncurses
+mouse extension should condition its use on the visibility of the
+.B \%NCURSES_MOUSE_VERSION
+preprocessor macro.
+When the interface changes,
+the macro's value increments.
+Multiple versions are available when
+.I \%ncurses
+is configured;
+see section \*(``ALTERNATE CONFIGURATIONS\*('' of \fB\%ncurses\fP(3X).
+The following values may be specified.
+.RS 3
+.TP 3
+1
+has definitions for reserved events.
+The mask uses 28 bits.
+.TP 3
+2
+adds definitions for button 5,
+removes the definitions for reserved events.
+The mask uses 29 bits.
+.RE
+.PP
+SVr4
+.I curses
+had support for the mouse in a variant of \fI\%xterm\fP(1).
+It is mentioned in a few places,
+with little supporting documentation.
+.bP
+Its \*(``libcurses\*('' manual page lists functions for this feature
+prototyped in \fI\%curses.h\fP.
+.PP
+.RS 8
+.EX
+extern int mouse_set(long int);
+extern int mouse_on(long int);
+extern int mouse_off(long int);
+extern int request_mouse_pos(void);
+extern int map_button(unsigned long);
+extern void wmouse_position(WINDOW *, int *, int *);
+extern unsigned long getmouse(void), getbmap(void);
+.EE
+.RE
+.bP
+Its \*(``terminfo\*('' manual page lists capabilities for the feature.
+.\" These don't appear in in the SVID 4th edition, Volume 3,
+.\" terminfo(TI_ENV) man page.  They can be found in, e.g., the "z/OS
+.\" V1R1.0 C Curses" book, Chapter 17, pp. 179-186 (PDF 213-220).
+.RS 8
+.TS
+Lb Lb Lb Lx.
+buttons        btns    BT      T{
+Number of buttons on the mouse
+T}
+get_mouse      getm    Gm      T{
+Curses should get button events
+T}
+key_mouse      kmous   Km      T{
+0631, Mouse event has occurred
+T}
+mouse_info     minfo   Mi      T{
+Mouse status information
+T}
+req_mouse_pos  reqmp   RQ      T{
+Request mouse position report
+T}
+.TE
+.RE
+.bP
+The interface made assumptions
+(as does
+.IR \%ncurses )
+about the escape sequences sent to and received from the terminal.
+.IP
+For instance,
+the SVr4
+.I curses
+library used the \fB\%get_mouse\fP capability to tell the terminal which
+mouse button events it should send,
+passing the mouse-button bit mask to the terminal.
+Also, it could ask the terminal
+where the mouse was using the \fB\%req_mouse_pos\fP capability.
+.IP
+Those features required a terminal program that had been modified
+to work with SVr4
+.IR curses .
+They were not part of the X Consortium's
+.IR \%xterm .
+.PP
+When developing the
+.I \%xterm
+mouse support for
+.I \%ncurses
+in September 1995,
+Eric Raymond was uninterested in using the same interface due to its
+lack of documentation.
+Later, in 1998, Mark Hesseling provided support in
+.I \%PDCurses
+2.3 using the SVr4 interface.
+.IR \%PDCurses ,
+however,
+does not use video terminals,
+making it unnecessary to be concerned about compatibility with the
+escape sequences.
 .SH BUGS
-Mouse events under xterm will not in fact be ignored during cooked mode,
-if they have been enabled by \fBmousemask\fP.
-Instead, the xterm mouse
-report sequence will appear in the string read.
-.PP
-Mouse events under xterm will not be detected correctly in a window with
-its keypad bit off, since they are interpreted as a variety of function key.
-Your terminfo description should have \fBkmous\fP set to \*(``\\E[M\*(''
-(the beginning of the response from xterm for mouse clicks).
-Other values for \fBkmous\fP are permitted,
-but under the same assumption,
-i.e., it is the beginning of the response.
-.PP
-Because there are no standard terminal responses that would serve to identify
-terminals which support the xterm mouse protocol, \fBncurses\fP assumes that
-if \fBkmous\fP is defined in the terminal description,
-or if the terminal description's primary name or aliases
-contain the string \*(``xterm\*('',
+Mouse events from
+.I \%xterm
+are
+.I not
+ignored in cooked mode if they have been enabled by \fB\%mousemask\fP.
+Instead,
+the
+.I \%xterm
+mouse report sequence appears in the string read.
+.PP
+Mouse event reports from
+.I \%xterm
+are not detected correctly in a window with keypad application mode
+disabled,
+since they are interpreted as a variety of function key.
+Set the terminal's
+.I \%term\%info
+capability \fB\%kmous\fP to \*(``\eE[M\*(''
+(the beginning of the response from
+.I \%xterm
+for mouse clicks).
+Other values of \fB\%kmous\fP are permitted under the same assumption,
+that is,
+the report begins with that sequence.
+.PP
+Because there are no standard response sequences that serve to identify
+terminals supporting the
+.I \%xterm
+mouse protocol,
+.I \%ncurses
+assumes that if \fB\%kmous\fP is defined in the terminal description,
+or if the terminal type's primary name or aliases contain the string
+\%\*(``xterm\*('',
 then the terminal may send mouse events.
-The \fBkmous\fP capability is checked first,
-allowing the use of newer xterm mouse protocols
-such as xterm's private mode 1006.
+The \fB\%kmous\fP capability is checked first,
+allowing use of newer
+.I \%xterm
+mouse protocols,
+such as its private mode 1006.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_inopts\fP(3X),
-\fBcurs_kernel\fP(3X),
-\fBcurs_slk\fP(3X),
-\fBcurs_variables\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_inopts\fP(3X),
+\fB\%curs_kernel\fP(3X),
+\fB\%curs_pad\fP(3X),
+\fB\%curs_slk\fP(3X),
+\fB\%curs_variables\fP(3X)
index 05917626287c5e9bf32dff0e3c65596d106bce69..c3b68e813d1cc9c70b39680db8de7c2a055328d5 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_move.3x,v 1.22 2022/02/12 20:05:11 tom Exp $
-.TH curs_move 3X ""
-.na
-.hy 0
+.\" $Id: curs_move.3x,v 1.40 2024/04/27 17:56:05 tom Exp $
+.TH curs_move 3X 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBmove\fP,
-\fBwmove\fP \- move \fBcurses\fP window cursor
-.ad
-.hy
+\fB\%move\fP,
+\fB\%wmove\fP \-
+move cursor in a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint move(int \fIy\fB, int \fIx\fB);\fR
-.br
-\fBint wmove(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint move(int \fIy\fP, int \fIx\fP);
+\fBint wmove(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP);
+.fi
 .SH DESCRIPTION
-These routines move the cursor associated with the window to line \fIy\fP and
-column \fIx\fP.
-This routine does not move the physical cursor of the terminal
-until \fBrefresh\fP(3X) is called.
-The position specified is relative to the upper
-left-hand corner of the window, which is (0,0).
+.B \%wmove
+relocates the cursor associated with the
+.I curses
+window
+.I win
+to line
+.I y
+and column
+.IR x .
+The terminal's cursor does not move until \fB\%refresh\fP(3X) is called.
+The position
+.RI ( y ,
+.IR x )
+is relative to the upper left-hand corner of the window,
+which has coordinates
+(0,\ 0).
+\fB\%ncurses\fP(3X) describes the
+.B \%move
+variant of this function.
 .SH RETURN VALUE
-These routines return \fBERR\fP upon failure and \fBOK\fP (SVr4
-specifies only "an integer value other than \fBERR\fP") upon successful
-completion.
+These functions return
+.B OK
+on success and
+.B ERR
+on failure.
+.PP
+They fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .PP
-Specifically, they return an error
-if the window pointer is null, or
-if the position is outside the window.
+.B \%wmove
+fails if its
+.I \%WINDOW
+pointer argument is
+.BR NULL .
 .SH NOTES
-Note that \fBmove\fP may be a macro.
+.B \%move
+may be implemented as a macro.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
+X/Open Curses,
+Issue 4 describes these functions.
 .SH SEE ALSO
-\fBcurses\fP(3X), \fBcurs_refresh\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_refresh\fP(3X)
index 948d32dac445e1e9ab5bd8d71633e5b8ebeecd26..fa623eea1e9609b18c10177458c319803d7d6003 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2020-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2020-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2007-2014,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_opaque.3x,v 1.18 2022/02/12 20:05:11 tom Exp $
-.TH curs_opaque 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.na
-.hy 0
+.\" $Id: curs_opaque.3x,v 1.43 2024/03/16 15:35:01 tom Exp $
+.TH curs_opaque 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBis_cleared\fP,
-\fBis_idlok\fP,
-\fBis_idcok\fP,
-\fBis_immedok\fP,
-\fBis_keypad\fP,
-\fBis_leaveok\fP,
-\fBis_nodelay\fP,
-\fBis_notimeout\fP,
-\fBis_pad\fP,
-\fBis_scrollok\fP,
-\fBis_subwin\fP,
-\fBis_syncok\fP,
-\fBwgetdelay\fP,
-\fBwgetparent\fP,
-\fBwgetscrreg\fP \- \fBcurses\fP window properties
-.ad
-.hy
+\fB\%is_cleared\fP,
+\fB\%is_idlok\fP,
+\fB\%is_idcok\fP,
+\fB\%is_immedok\fP,
+\fB\%is_keypad\fP,
+\fB\%is_leaveok\fP,
+\fB\%is_nodelay\fP,
+\fB\%is_notimeout\fP,
+\fB\%is_pad\fP,
+\fB\%is_scrollok\fP,
+\fB\%is_subwin\fP,
+\fB\%is_syncok\fP,
+\fB\%wgetdelay\fP,
+\fB\%wgetparent\fP,
+\fB\%wgetscrreg\fP \-
+obtain \fIcurses\fR window properties
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBbool is_cleared(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_idcok(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_idlok(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_immedok(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_keypad(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_leaveok(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_nodelay(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_notimeout(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_pad(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_scrollok(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_subwin(const WINDOW *\fIwin\fB);\fR
-.br
-\fBbool is_syncok(const WINDOW *\fIwin\fB);\fR
-.br
-\fBWINDOW * wgetparent(const WINDOW *\fIwin\fB);\fR
-.br
-\fBint wgetdelay(const WINDOW *\fIwin\fB);\fR
-.br
-\fBint wgetscrreg(const WINDOW *\fIwin\fB, int *\fItop\fB, int *\fIbottom\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBbool is_cleared(const WINDOW *\fIwin\fP);
+\fBbool is_idcok(const WINDOW *\fIwin\fP);
+\fBbool is_idlok(const WINDOW *\fIwin\fP);
+\fBbool is_immedok(const WINDOW *\fIwin\fP);
+\fBbool is_keypad(const WINDOW *\fIwin\fP);
+\fBbool is_leaveok(const WINDOW *\fIwin\fP);
+\fBbool is_nodelay(const WINDOW *\fIwin\fP);
+\fBbool is_notimeout(const WINDOW *\fIwin\fP);
+\fBbool is_pad(const WINDOW *\fIwin\fP);
+\fBbool is_scrollok(const WINDOW *\fIwin\fP);
+\fBbool is_subwin(const WINDOW *\fIwin\fP);
+\fBbool is_syncok(const WINDOW *\fIwin\fP);
+.PP
+\fBWINDOW * wgetparent(const WINDOW *\fIwin\fP);
+\fBint wgetdelay(const WINDOW *\fIwin\fP);
+\fBint wgetscrreg(const WINDOW *\fIwin\fP, int *\fItop\fP, int *\fIbottom\fP);
+.fi
 .SH DESCRIPTION
-This implementation provides functions which return properties
-set in the WINDOW structure, allowing it to be \*(``opaque\*('' if
-the symbol \fBNCURSES_OPAQUE\fP is defined:
-.TP 5
+\fI\%ncurses\fP provides functions returning properties of a
+\fI\%WINDOW\fP structure,
+allowing it to be \*(``opaque\*('' if
+the application defines the \fB\%NCURSES_OPAQUE\fP preprocessor symbol.
+\fIOpacity\fP in this sense means that the members of \fIstruct\fP data
+types are not directly accessible
+(for instance,
+through \*(``.\*('' or \*(``\->\*('' operators),
+but instead must be queried and/or set via library functions.
+Advantages of opacity include greater abstraction and improved
+management of concurrent accesses to data structures,
+keeping object states coherent.
+.TP
 \fBis_cleared\fP
-returns the value set in \fBclearok\fP
-.TP 5
+returns the value set by \fB\%clearok\fP(3X).
+.TP
 \fBis_idcok\fP
-returns the value set in \fBidcok\fP
-.TP 5
+returns the value set by \fB\%idcok\fP(3X).
+.TP
 \fBis_idlok\fP
-returns the value set in \fBidlok\fP
-.TP 5
+returns the value set by \fB\%idlok\fP(3X).
+.TP
 \fBis_immedok\fP
-returns the value set in \fBimmedok\fP
-.TP 5
+returns the value set by \fB\%immedok\fP(3X).
+.TP
 \fBis_keypad\fP
-returns the value set in \fBkeypad\fP
-.TP 5
+returns the value set by \fB\%keypad\fP(3X).
+.TP
 \fBis_leaveok\fP
-returns the value set in \fBleaveok\fP
-.TP 5
+returns the value set by \fB\%leaveok\fP(3X).
+.TP
 \fBis_nodelay\fP
-returns the value set in \fBnodelay\fP
-.TP 5
+returns the value set by \fB\%nodelay\fP(3X).
+.TP
 \fBis_notimeout\fP
-returns the value set in \fBnotimeout\fP
-.TP 5
+returns the value set by \fB\%notimeout\fP(3X).
+.TP
 \fBis_pad\fP
-returns \fBTRUE\fP if the window is a pad
-i.e., created by \fBnewpad\fP
-.TP 5
+returns \fBTRUE\fP if the window is a pad;
+that is,
+it was created by \fB\%newpad\fP(3X).
+.TP
 \fBis_scrollok\fP
-returns the value set in \fBscrollok\fP
-.TP 5
+returns the value set by \fB\%scrollok\fP(3X).
+.TP
 \fBis_subwin\fP
 returns \fBTRUE\fP if the window is a subwindow,
-i.e., created by \fBsubwin\fP or \fBderwin\fP
-.TP 5
+that is,
+it was created by \fB\%subwin\fP(3X) or \fB\%derwin\fP(3X).
+.TP
 \fBis_syncok\fP
-returns the value set in \fBsyncok\fP
-.TP 5
+returns the value set by \fB\%syncok\fP(3X).
+.TP
 \fBwgetdelay\fP
-returns the delay timeout as set in \fBwtimeout\fP.
-.TP 5
+returns the delay timeout set by \fB\%wtimeout\fP(3X).
+.TP
 \fBwgetparent\fP
-returns the parent WINDOW pointer for subwindows,
-or NULL for windows having no parent.
-.TP 5
+returns the parent \fI\%WINDOW\fP pointer for subwindows,
+or \fBNULL\fP for windows having no parent.
+.TP
 \fBwgetscrreg\fP
-returns the top and bottom rows for the scrolling margin
-as set in \fBwsetscrreg\fP.
+stores the the top and bottom rows for the scrolling margin set by
+\fB\%wsetscrreg\fP(3X) in the corresponding arguments,
+returning \fBERR\fP upon failure and \fBOK\fP upon successful
+completion.
 .SH RETURN VALUE
-These functions all return \fBTRUE\fP or \fBFALSE\fP, except as noted.
+These functions return \fBTRUE\fP or \fBFALSE\fP except as noted.
 .SH NOTES
-Both a macro and a function are provided for each name.
+\fI\%ncurses\fP provides both a C function and a preprocessor macro for
+each function documented in this page.
 .SH PORTABILITY
-These routines are specific to ncurses.
+These routines are specific to \fI\%ncurses\fP.
 They were not supported on Version 7, BSD or System V implementations.
-It is recommended that any code depending on ncurses extensions
-be conditioned using NCURSES_VERSION.
+It is recommended that any code depending on \fI\%ncurses\fP extensions
+be conditioned using \fB\%NCURSES_VERSION\fP.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_inopts\fP(3X),
-\fBcurs_outopts\fP(3X),
-\fBcurs_window\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_inopts\fP(3X),
+\fB\%curs_outopts\fP(3X),
+\fB\%curs_threads\fP(3X),
+\fB\%curs_window\fP(3X)
index 4f90611bbdcc63bba975ab3e722d50df7738f2da..df263f2c1a81c9dd43348b2dea6f82b75013da98 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_outopts.3x,v 1.36 2022/02/12 20:05:11 tom Exp $
-.TH curs_outopts 3X ""
-.na
-.hy 0
+.\" $Id: curs_outopts.3x,v 1.64 2024/04/20 21:24:19 tom Exp $
+.TH curs_outopts 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBclearok\fP,
-\fBidlok\fP,
-\fBidcok\fP,
-\fBimmedok\fP,
-\fBleaveok\fP,
-\fBsetscrreg\fP,
-\fBwsetscrreg\fP,
-\fBscrollok\fP \- \fBcurses\fP output options
-.ad
-.hy
+\fB\%clearok\fP,
+\fB\%idlok\fP,
+\fB\%idcok\fP,
+\fB\%immedok\fP,
+\fB\%leaveok\fP,
+\fB\%setscrreg\fP,
+\fB\%wsetscrreg\fP,
+\fB\%scrollok\fP \-
+set \fIcurses\fR output options
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint clearok(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.br
-\fBint idlok(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.br
-\fBvoid idcok(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.br
-\fBvoid immedok(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.br
-\fBint leaveok(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.br
-\fBint scrollok(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.sp
-\fBint setscrreg(int \fItop\fB, int \fIbot\fB);\fR
-.br
-\fBint wsetscrreg(WINDOW *\fIwin\fB, int \fItop\fB, int \fIbot\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint clearok(WINDOW *\fIwin\fP, bool \fIbf\fP);
+\fBint idlok(WINDOW *\fIwin\fP, bool \fIbf\fP);
+\fBvoid idcok(WINDOW *\fIwin\fP, bool \fIbf\fP);
+\fBvoid immedok(WINDOW *\fIwin\fP, bool \fIbf\fP);
+\fBint leaveok(WINDOW *\fIwin\fP, bool \fIbf\fP);
+\fBint scrollok(WINDOW *\fIwin\fP, bool \fIbf\fP);
+.PP
+\fBint setscrreg(int \fItop\fP, int \fIbot\fP);
+\fBint wsetscrreg(WINDOW *\fIwin\fP, int \fItop\fP, int \fIbot\fP);
+.fi
 .SH DESCRIPTION
-.PP
 These routines set options that change the style of output within
 \fBcurses\fP.
 All options are initially \fBFALSE\fP, unless otherwise stated.
 It is not necessary to turn these options off before calling \fBendwin\fP(3X).
 .SS clearok
-.PP
 If \fBclearok\fP is called with \fBTRUE\fP as argument, the next
 call to \fBwrefresh\fP with this window will clear the screen completely and
 redraw the entire screen from scratch.
@@ -83,7 +73,6 @@ the \fIwin\fP argument to \fBclearok\fP is the global variable \fBcurscr\fP,
 the next call to \fBwrefresh\fP with any window causes the screen to be cleared
 and repainted from scratch.
 .SS idlok
-.PP
 If \fBidlok\fP is called with \fBTRUE\fP as second argument, \fBcurses\fP
 considers using the hardware insert/delete line feature of terminals so
 equipped.
@@ -97,7 +86,6 @@ when used in applications where it is not really needed.
 If insert/delete line
 cannot be used, \fBcurses\fP redraws the changed portions of all lines.
 .SS idcok
-.PP
 If \fBidcok\fP is called with \fBFALSE\fP as second argument, \fBcurses\fP
 no longer considers using the hardware insert/delete character feature of
 terminals so equipped.
@@ -105,15 +93,16 @@ Use of character insert/delete is enabled by default.
 Calling \fBidcok\fP with \fBTRUE\fP as second argument re-enables use
 of character insertion and deletion.
 .SS immedok
-.PP
-If \fBimmedok\fP is called with \fBTRUE as argument\fP, any change
-in the window image, such as the ones caused by \fBwaddch, wclrtobot, wscrl\fP,
-etc., automatically cause a call to \fBwrefresh\fP.
-However, it may
-degrade performance considerably, due to repeated calls to \fBwrefresh\fP.
-It is disabled by default.
+If \fBimmedok\fP is called with \fBTRUE\fP as second argument,
+any change in the window image,
+such as the ones caused by \fBwaddch, wclrtobot, wscrl\fP,
+etc., automatically causes a call to \fBwrefresh\fP.
+However, it may degrade performance considerably,
+due to repeated calls to \fBwrefresh\fP.
+Calling \fBimmedok\fP with \fBFALSE\fP as second argument
+restores the default behavior,
+i.e., deferring screen updates until a refresh is needed.
 .SS leaveok
-.PP
 Normally, the hardware cursor is left at the location of the window cursor
 being refreshed.
 The \fBleaveok\fP option allows the cursor to be left
@@ -121,7 +110,6 @@ wherever the update happens to leave it.
 It is useful for applications where
 the cursor is not used, since it reduces the need for cursor motions.
 .SS scrollok
-.PP
 The \fBscrollok\fP option controls what happens when the cursor of a window is
 moved off the edge of the window or scrolling region, either as a result of a
 newline action on the bottom line, or typing the last character of the last
@@ -131,8 +119,7 @@ line.
 If enabled, (\fIbf\fP is \fBTRUE\fP), the window is scrolled up one line
 (Note that to get the physical scrolling effect on the terminal, it is
 also necessary to call \fBidlok\fP).
-.SS  setscrreg/wsetscrreg
-.PP
+.SS  "setscrreg, wsetscrreg"
 The \fBsetscrreg\fP and \fBwsetscrreg\fP routines allow the application
 programmer to set a software scrolling region in a window.
 The \fItop\fP and
@@ -156,7 +143,7 @@ and \fBERR\fP upon failure.
 All other routines that return an integer always
 return \fBOK\fP.
 .PP
-X/Open Curses does not define any error conditions.
+X/Open Curses does not specify any error conditions.
 .PP
 In this implementation,
 .bP
@@ -164,60 +151,49 @@ those functions that have a window pointer
 will return an error if the window pointer is null
 .bP
 \fBwsetscrreg\fP
-returns an error if the scrolling region limits extend outside the window.
-.RE
+returns an error if the scrolling region limits extend outside the
+window boundaries.
+.SH NOTES
+Note that
+\fBclearok\fP,
+\fBleaveok\fP,
+\fBscrollok\fP,
+\fBidcok\fP, and
+\fBsetscrreg\fP may be macros.
 .PP
-X/Open does not define any error conditions.
-This implementation returns an error
-if the window pointer is null.
+The \fBimmedok\fP routine is useful for windows that are used as terminal
+emulators.
 .SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
-.PP
-From the outset, ncurses used \fBnl\fP/\fBnonl\fP to control the conversion
-of newlines to carriage return/line-feed on output as well as input.
-XSI Curses documents only the use of these functions for input.
-This difference arose from converting the \fIpcurses\fP source
-(which used \fBioctl\fP calls with the \fBsgttyb\fP structure)
-to termios (i.e., the POSIX terminal interface).
-In the former, both input and output were controlled via a single
-option \fBCRMOD\fP,
-while the latter separates these features.
-Because that conversion interferes with output optimization,
-\fBnl\fP/\fBnonl\fP were amended after ncurses 6.2
-to eliminate their effect on output.
+These functions are described in X/Open Curses, Issue 4.
 .PP
 Some historic curses implementations had, as an undocumented feature, the
 ability to do the equivalent of \fBclearok(..., 1)\fP by saying
 \fBtouchwin(stdscr)\fP or \fBclear(stdscr)\fP.
-This will not work under ncurses.
+This will not work under \fI\%ncurses\fP.
 .PP
 Earlier System V curses implementations specified that with \fBscrollok\fP
 enabled, any window modification triggering a scroll also forced a physical
 refresh.
-XSI Curses does not require this, and \fBncurses\fP avoids doing
+X/Open Curses does not require this, and \fI\%ncurses\fP avoids doing
 it to perform better vertical-motion optimization at \fBwrefresh\fP
 time.
 .PP
-The XSI Curses standard does not mention that the cursor should be
+X/Open Curses does not mention that the cursor should be
 made invisible as a side-effect of \fBleaveok\fP.
 SVr4 curses documentation does this, but the code does not.
 Use \fBcurs_set\fP to make the cursor invisible.
-.SH NOTES
-Note that
-\fBclearok\fP,
-\fBleaveok\fP,
-\fBscrollok\fP,
-\fBidcok\fP, and
-\fBsetscrreg\fP may be macros.
-.PP
-The \fBimmedok\fP routine is useful for windows that are used as terminal
-emulators.
+.SH HISTORY
+.I \%ncurses
+formerly treated \fBnl\fP(3X) and \fBnonl\fP(3X) as both input
+.I and
+output options,
+but no longer;
+see \fB\%curs_inopts\fP(3X).
 .SH SEE ALSO
-.na
-\fBcurses\fP(3X),
-\fBcurs_addch\fP(3X),
-\fBcurs_clear\fP(3X),
-\fBcurs_initscr\fP(3X),
-\fBcurs_scroll\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_variables\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_addch\fP(3X),
+\fB\%curs_clear\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_scroll\fP(3X),
+\fB\%curs_variables\fP(3X)
index 9c6561e7a268f72c41650af4d22a370934ff2d3d..2d4eb729bc22bfcaf199c2fc433a1cbc486d041d 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2020-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2020-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2013,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_overlay.3x,v 1.22 2022/02/12 20:05:11 tom Exp $
-.TH curs_overlay 3X ""
-.na
-.hy 0
+.\" $Id: curs_overlay.3x,v 1.43 2024/04/20 21:20:07 tom Exp $
+.TH curs_overlay 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .SH NAME
-\fBoverlay\fP,
-\fBoverwrite\fP,
-\fBcopywin\fP \- overlay and manipulate overlapped \fBcurses\fP windows
-.ad
-.hy
+\fB\%overlay\fP,
+\fB\%overwrite\fP,
+\fB\%copywin\fP \-
+overlay \fIcurses\fR windows and manipulate them
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint overlay(const WINDOW *\fIsrcwin\fB, WINDOW *\fIdstwin\fB);\fR
-.br
-\fBint overwrite(const WINDOW *\fIsrcwin\fB, WINDOW *\fIdstwin\fB);\fR
-.br
-\fBint copywin(const WINDOW *\fIsrcwin\fB, WINDOW *\fIdstwin\fB, int \fIsminrow\fB,\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint overlay(const WINDOW *\fIsrcwin\fP, WINDOW *\fIdstwin\fP);
+\fBint overwrite(const WINDOW *\fIsrcwin\fP, WINDOW *\fIdstwin\fP);
+\fBint copywin(const WINDOW *\fIsrcwin\fP, WINDOW *\fIdstwin\fP, int \fIsminrow\fP,
       \fBint \fIsmincol\fB, int \fIdminrow\fB, int \fIdmincol\fB, int \fIdmaxrow\fB,\fR
       \fBint \fIdmaxcol\fB, int \fIoverlay\fB);\fR
+.fi
 .SH DESCRIPTION
-.SS overlay, overwrite
+.SS "overlay, overwrite"
 The \fBoverlay\fP and \fBoverwrite\fP routines overlay \fIsrcwin\fP on
 top of \fIdstwin\fP.
 \fIscrwin\fP and \fIdstwin\fP are not required
@@ -56,7 +64,6 @@ to be the same size; only text where the two windows overlap is copied.
 The difference is that \fBoverlay\fP is non-destructive
 (blanks are not copied) whereas \fBoverwrite\fP is destructive.
 .SS copywin
-.PP
 The \fBcopywin\fP routine provides a finer granularity of control over the
 \fBoverlay\fP and \fBoverwrite\fP routines.
 As in the \fBprefresh\fP routine,
@@ -67,9 +74,10 @@ If the argument \fIoverlay\fP is \fBtrue\fP,
 then copying is non-destructive,
 as in \fBoverlay\fP.
 .SH RETURN VALUE
-Routines that return an integer return \fBERR\fP upon failure, and \fBOK\fP
-(SVr4 only specifies "an integer value other than \fBERR\fP") upon successful
-completion.
+These routines return the integer \fBERR\fP upon failure and an \fBOK\fP
+(SVr4 specifies only
+\*(``an integer value other than \fBERR\fP\*('')
+upon successful completion.
 .PP
 X/Open defines no error conditions.
 In this implementation,
@@ -80,9 +88,11 @@ if some part of the window would be placed off-screen.
 .SH NOTES
 Note that \fBoverlay\fP and \fBoverwrite\fP may be macros.
 .SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions (adding the const
-qualifiers).
+These functions are described in X/Open Curses, Issue 4,
+which adds \fI\%const\fP qualifiers to the arguments.
 It further specifies their behavior in the presence of characters
 with multibyte renditions (not yet supported in this implementation).
 .SH SEE ALSO
-\fBcurses\fP(3X), \fBcurs_pad\fP(3X), \fBcurs_refresh\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_pad\fP(3X),
+\fB\%curs_refresh\fP(3X)
index da25f3b74d0064960a6e509b21fd4ee350a0f9d1..21cc405c731b83f3ad662a62febe950a8be31fed 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_pad.3x,v 1.29 2022/02/12 20:05:11 tom Exp $
+.\" $Id: curs_pad.3x,v 1.61 2024/04/27 17:55:43 tom Exp $
+.TH curs_pad 3X 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.TH curs_pad 3X ""
-.na
-.hy 0
 .SH NAME
-\fBnewpad\fP,
-\fBsubpad\fP,
-\fBprefresh\fP,
-\fBpnoutrefresh\fP,
-\fBpechochar\fP,
-\fBpecho_wchar\fP \- create and display \fBcurses\fP pads
-.ad
-.hy
+\fB\%newpad\fP,
+\fB\%subpad\fP,
+\fB\%prefresh\fP,
+\fB\%pnoutrefresh\fP,
+\fB\%pechochar\fP,
+\fB\%pecho_wchar\fP \-
+create and display \fIcurses\fR pads
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBWINDOW *newpad(int \fInlines\fB, int \fIncols\fB);\fR
-.br
-\fBWINDOW *subpad(WINDOW *\fIorig\fB, int \fInlines\fB, int \fIncols\fB,\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBWINDOW *newpad(int \fInlines\fP, int \fIncols\fP);
+\fBWINDOW *subpad(WINDOW *\fIparent\fP, int \fInlines\fP, int \fIncols\fP,
       \fBint \fIbegin_y\fB, int \fIbegin_x\fB);\fR
-.br
+.PP
 \fBint prefresh(WINDOW *\fIpad\fB, int \fIpminrow\fB, int \fIpmincol\fB,\fR
       \fBint \fIsminrow\fB, int \fIsmincol\fB, int \fIsmaxrow\fB, int \fIsmaxcol\fB);\fR
-.br
 \fBint pnoutrefresh(WINDOW *\fIpad\fB, int \fIpminrow\fB, int \fIpmincol\fB,\fR
       \fBint \fIsminrow\fB, int \fIsmincol\fB, int \fIsmaxrow\fB, int \fIsmaxcol\fB);\fR
-.br
+.PP
 \fBint pechochar(WINDOW *\fIpad\fB, chtype \fIch\fB);\fR
-.br
 \fBint pecho_wchar(WINDOW *\fIpad\fB, const cchar_t *\fIwch\fB);\fR
+.fi
 .SH DESCRIPTION
-.SS newpad
-The \fBnewpad\fP routine creates and returns a pointer to a new pad data
-structure with the given number of lines, \fInlines\fP, and columns,
-\fIncols\fP.
-A pad is like a window, except that it is not restricted by the
-screen size, and is not necessarily associated with a particular part of the
-screen.
-Pads can be used when a large window is needed, and only a part of the
-window will be on the screen at one time.
-Automatic refreshes of pads
-(e.g., from scrolling or echoing of input) do not occur.
+A
+.I curses
+.I pad
+is like a window,
+except that it is not restricted by the screen size,
+and is not necessarily associated with a particular part of the screen.
+Pads can be used when a large window is needed,
+only part of which is to be visible on the screen.
+Pads are not automatically refreshed by scrolling or input-echoing
+operations.
 .PP
-It is not
-legal to call \fBwrefresh\fP with a \fIpad\fP as an argument; the routines
-\fBprefresh\fP or \fBpnoutrefresh\fP should be called instead.
-Note that these
-routines require additional parameters to specify the part of the pad to be
-displayed and the location on the screen to be used for the display.
+Pads cannot be refreshed with \fB\%wrefresh\fP(3X);
+use
+.B \%prefresh
+or
+.B \%pnoutrefresh
+instead.
+.SS newpad
+\fB\%newpad\fP creates and returns a pointer to a new pad data structure
+with the given number of lines,
+.IR nlines ,
+and columns,
+.IR ncols .
 .SS subpad
-.PP
-The \fBsubpad\fP routine creates and returns a pointer to a subwindow within a
-pad with the given number of lines, \fInlines\fP, and columns, \fIncols\fP.
-Unlike \fBsubwin\fP, which uses screen coordinates, the window is at position
-(\fIbegin\fR_\fIx\fB,\fR \fIbegin\fR_\fIy\fR) on the pad.
-The window is
-made in the middle of the window \fIorig\fP, so that changes made to one window
-affect both windows.
-During the use of this routine, it will often be
-necessary to call \fBtouchwin\fP or \fBtouchline\fP on \fIorig\fP before
-calling \fBprefresh\fP.
-.SS prefresh, pnoutrefresh
-.PP
-The \fBprefresh\fP and \fBpnoutrefresh\fP routines are analogous to
-\fBwrefresh\fP and \fBwnoutrefresh\fP except that they relate to pads instead
-of windows.
-The additional parameters are needed to indicate what part of the
-pad and screen are involved.
+.B \%subpad
+creates and returns a pointer to a subwindow within a pad
+with the given number of lines,
+.IR nlines ,
+and columns,
+.IR ncols .
+Unlike \fB\%subwin\fP(3X),
+which uses screen coordinates,
+the new pad is placed at position
+.RI ( begin_y ,
+.IR begin_x )
+relative to its parent.
+Thus,
+changes made to one pad can affect both.
+When operating on a subpad,
+it is often necessary to call \fB\%touchwin\fP(3X) or
+\fB\%touchline\fP(3X) on
+.I parent
+before calling
+.BR \%prefresh .
+.SS "prefresh, pnoutrefresh"
+.B \%prefresh\fP
+and
+.B \%pnoutrefresh
+are analogous to \fB\%wrefresh\fP(3X) and \fB\%wnoutrefresh\fP(3X)
+except that they operate on pads rather than windows.
+They require additional parameters are needed to indicate what portions
+of the pad and screen are involved.
 .bP
-The \fIpminrow\fP and \fIpmincol\fP parameters specify the upper
-left-hand corner of the rectangle to be displayed in the pad.
+.I pminrow
+and
+.I pmincol
+specify the upper left-hand corner of a rectangular view of the pad.
 .bP
-The \fIsminrow\fP,
-\fIsmincol\fP, \fIsmaxrow\fP, and \fIsmaxcol\fP
-parameters specify the edges of the
-rectangle to be displayed on the screen.
+.IR sminrow ,
+.IR smincol ,
+.IR smaxrow ,
+and
+.I smaxcol
+specify the vertices of the rectangle to be displayed on the screen.
 .PP
-The lower right-hand corner of the
-rectangle to be displayed in the pad is calculated from the screen coordinates,
+The lower right-hand corner
+of the rectangle to be displayed in the pad
+is calculated from the screen coordinates,
 since the rectangles must be the same size.
-Both rectangles must be entirely
-contained within their respective structures.
-Negative values of
-\fIpminrow\fP, \fIpmincol\fP, \fIsminrow\fP, or \fIsmincol\fP are treated as if
-they were zero.
+Both rectangles must be entirely contained
+within their respective structures.
+.I curses
+treats
+negative values of any of these parameters as zero.
 .SS pechochar
-.PP
-The \fBpechochar\fP routine is functionally equivalent to a call to \fBaddch\fP
-followed by a call to \fBrefresh\fP(3X),
-a call to \fBwaddch\fP followed by a call
-to \fBwrefresh\fP, or a call to \fBwaddch\fP followed by a call to
-\fBprefresh\fP.
-The knowledge that only a single character is being output is
-taken into consideration and, for non-control characters, a considerable
-performance gain might be seen by using these routines instead of their
-equivalents.
-In the case of \fBpechochar\fP, the last location of the pad on
-the screen is reused for the arguments to \fBprefresh\fP.
+.B \%pechochar
+is functionally equivalent to calling \fB\%waddch\fP(3X) followed by
+.BR \%prefresh .
+It suggests to the
+.I curses
+optimizer that only a single character is being output;
+a considerable performance benefit may be thus enjoyed.
+The location of the character
+.I ch
+written to the pad is used to populate the arguments to
+.BR \%prefresh .
 .SS pecho_wchar
-.PP
-The \fBpecho_wchar\fP function is the analogous wide-character
-form of \fBpechochar\fP.
-It outputs one character to a pad and immediately refreshes the pad.
-It does this by a call to \fBwadd_wch\fP followed by a call to \fBprefresh\fP.
+.B \%pecho_wchar\fP
+is functionally equivalent to calling \fB\%wadd_wch\fP(3X) followed by
+.BR \%prefresh .
+It suggests to the
+.I curses
+optimizer that only a single wide character is being output;
+a considerable performance benefit may be thus enjoyed.
+The location of the character
+.I wch
+written to the pad is used to populate the arguments to
+.BR \%prefresh .
 .SH RETURN VALUE
-Routines that return an integer return \fBERR\fP upon failure and \fBOK\fP
-(SVr4 only specifies "an integer value other than \fBERR\fP") upon successful
-completion.
+Functions that return an integer return \fBERR\fP upon failure and
+\fBOK\fP
+(SVr4 specifies only
+\*(``an integer value other than \fBERR\fP\*('')
+upon successful completion.
 .PP
-Routines that return pointers return \fBNULL\fP on error, and set \fBerrno\fP
-to \fBENOMEM\fP.
+Functions that return pointers return \fBNULL\fP on error,
+and set \fB\%errno\fP to \fB\%ENOMEM\fP.
 .PP
-X/Open does not define any error conditions.
+X/Open Curses does not specify any error conditions.
 In this implementation
 .RS 3
 .TP 5
-\fBprefresh\fP and \fBpnoutrefresh\fP
+\fB\%prefresh\fP and \fB\%pnoutrefresh\fP
 return an error
 if the window pointer is null, or
 if the window is not really a pad or
@@ -157,19 +191,19 @@ if the minimum coordinates are greater than the maximum.
 \fBpechochar\fP
 returns an error
 if the window is not really a pad, and the associated call
-to \fBwechochar\fP returns an error.
+to \fB\%wechochar\fP returns an error.
 .TP 5
 \fBpecho_wchar\fP
 returns an error
 if the window is not really a pad, and the associated call
-to \fBwecho_wchar\fP returns an error.
+to \fB\%wecho_wchar\fP returns an error.
 .RE
 .SH NOTES
-Note that \fBpechochar\fP may be a macro.
+\fB\%pechochar\fP may be a macro.
 .SH PORTABILITY
-BSD curses has no \fIpad\fP feature.
+BSD \fIcurses\fP has no \fIpad\fP feature.
 .PP
-SVr2 curses (1986) provided the \fBnewpad\fP and related functions,
+SVr2 \fIcurses\fP (1986) provided the \fB\%newpad\fP and related functions,
 documenting them in a single line each.
 SVr3 (1987) provided more extensive documentation.
 .PP
@@ -184,59 +218,63 @@ and select text from the pad.
 .PP
 The two uses may be related.
 .PP
-The XSI Curses standard, Issue 4 describes these functions,
+X/Open Curses, Issue 4 describes these functions,
 without significant change from the SVr3 documentation.
 It describes no error conditions.
-The behavior of \fBsubpad\fP if the parent window is not
+The behavior of \fB\%subpad\fP if the parent window is not
 a pad is undocumented,
 and is not checked by the vendor Unix implementations:
 .bP
-SVr4 curses sets a flag in the \fBWINDOW\fP structure in \fBnewpad\fP
-which tells if the window is a \fIpad\fP.
+SVr4 \fIcurses\fP sets a flag in the \fI\%WINDOW\fP structure in
+\fB\%newpad\fP which tells if the window is a \fIpad\fP.
 .IP
 However, it uses this information only in
-\fBwaddch\fP (to decide if it should call \fBwrefresh\fP) and
-\fBwscrl\fP (to avoid scrolling a pad),
-and does not check in \fBwrefresh\fP to ensure that the pad
+\fB\%waddch\fP (to decide if it should call \fB\%wrefresh\fP) and
+\fB\%wscrl\fP (to avoid scrolling a pad),
+and does not check in \fB\%wrefresh\fP to ensure that the pad
 is refreshed properly.
 .bP
-Solaris X/Open Curses checks if a window is a pad in \fBwnoutrefresh\fP,
+Solaris \fI\%xcurses\fP checks whether a window is a pad in
+\fB\%wnoutrefresh\fP,
 returning \fBERR\fP in that case.
 .IP
-However, it only sets the flag for subwindows if the parent window is a pad.
-Its \fBnewpad\fP function does not set this information.
+However,
+it only sets the flag for subwindows if the parent window is a pad.
+Its \fB\%newpad\fP function does not set this information.
 Consequently, the check will never fail.
 .IP
-It makes no comparable check in \fBpnoutrefresh\fP,
+It makes no comparable check in \fB\%pnoutrefresh\fP,
 though interestingly enough, a comment in the source code
 states that the lack of a check was an MKS extension.
 .bP
-NetBSD 7 curses
-sets a flag in the \fBWINDOW\fP structure for \fBnewpad\fP and \fBsubpad\fP,
-using this to help with the distinction between \fBwnoutrefresh\fP
-and \fBpnoutrefresh\fP.
+NetBSD 7 \fIcurses\fP
+sets a flag in the \fI\%WINDOW\fP structure
+for \fB\%newpad\fP and \fB\%subpad\fP,
+using this to help with the distinction between \fB\%wnoutrefresh\fP
+and \fB\%pnoutrefresh\fP.
 .IP
 It does not check for the case where a subwindow is created in
-a pad using \fBsubwin\fP or \fBderwin\fP.
+a pad using \fB\%subwin\fP or \fB\%derwin\fP.
 .IP
-The \fBdupwin\fP function returns a regular window when duplicating a pad.
-Likewise, \fBgetwin\fP always returns a window, even if the saved
+The \fB\%dupwin\fP function returns a regular window when duplicating a pad.
+Likewise, \fB\%getwin\fP always returns a window, even if the saved
 data was from a pad.
 .PP
 This implementation
 .bP
-sets a flag in the \fBWINDOW\fP structure for \fBnewpad\fP and \fBsubpad\fP,
+sets a flag in the \fI\%WINDOW\fP structure
+for \fB\%newpad\fP and \fB\%subpad\fP,
 .bP
-allows a \fBsubwin\fP or \fBderwin\fP call to succeed having a pad parent by
+allows a \fB\%subwin\fP or \fB\%derwin\fP call to succeed having a pad parent by
 forcing the subwindow to be a pad,
 .bP
-checks in both \fBwnoutrefresh\fP and \fBpnoutrefresh\fP to ensure
+checks in both \fB\%wnoutrefresh\fP and \fB\%pnoutrefresh\fP to ensure
 that pads and windows are handled distinctly, and
 .bP
-ensures that \fBdupwin\fP and \fBgetwin\fP treat
+ensures that \fB\%dupwin\fP and \fB\%getwin\fP treat
 pads versus windows consistently.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_touch\fP(3X),
-\fBcurs_addch\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_addch\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_touch\fP(3X)
index 31c7dc46ecd99bf2fa8346d59b8686c9ce82b10b..3694beffcca163ddd5fe783930f5e9261c7e05c6 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_print.3x,v 1.19 2022/02/12 20:05:11 tom Exp $
-.TH curs_print 3X ""
+.\" $Id: curs_print.3x,v 1.38 2024/03/16 15:35:01 tom Exp $
+.TH curs_print 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBmcprint\fP \- ship binary data to printer
+\fB\%mcprint\fP \-
+write binary data to printer using \fIterminfo\fR capabilities
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint mcprint(char *\fIdata\fB, int \fIlen\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint mcprint(char *\fIdata\fP, int \fIlen\fP);
+.fi
 .SH DESCRIPTION
 This function uses the \fBmc5p\fP or \fBmc4\fP and \fBmc5\fP capabilities,
 if they are present, to ship given data to a printer attached to the terminal.
 .PP
-Note that the \fBmcprint\fP code has no way to do flow control with the printer
+Note that the \fB\%mcprint\fP code has no way
+to do flow control with the printer
 or to know how much buffering it has.
 Your application is responsible for
 keeping the rate of writes to the printer below its continuous throughput rate
@@ -49,24 +53,37 @@ Dot-matrix printers and
 rule of thumb is to sleep for a second after shipping each 80-character line.
 .
 .SH RETURN VALUE
-The \fBmcprint\fP function returns \fBERR\fP if the write operation aborted
+The \fB\%mcprint\fP function returns \fBERR\fP if the write operation aborted
 for some reason.
-In this case, \fBerrno\fP will contain either an error associated
+In this case, \fB\%errno\fP will contain either an error associated
 with \fBwrite\fP(2) or one of the following:
 .TP 5
-ENODEV
+\fBENODEV\fP
 Capabilities for printer redirection do not exist.
 .TP 5
-ENOMEM
+\fBENOMEM\fP
 Couldn't allocate sufficient memory to buffer the printer write.
 .PP
-When \fBmcprint\fP succeeds, it returns the number of characters actually
+When \fB\%mcprint\fP succeeds, it returns the number of characters actually
 sent to the printer.
+.SH EXTENSIONS
+\fB\%mcprint\fP was designed for
+\fB\%ncurses\fP(3X),
+and was not found in SVr4
+.IR curses ,
+4.4BSD
+.IR curses ,
+or any other previous curses implementation.
 .SH PORTABILITY
-The \fBmcprint\fP call was designed for \fBncurses\fP(3X), and is not found
-in SVr4 curses, 4.4BSD curses, or any other previous version of curses.
+Applications employing this
+.I \%ncurses
+extension should condition its use on the visibility of the
+.B \%NCURSES_VERSION
+preprocessor macro.
 .SH BUGS
-Padding in the \fBmc5p\fP, \fBmc4\fP and \fBmc5\fP capabilities will not be
-interpreted.
+Padding in the
+\fBmc5p\fP,
+\fBmc4\fP, and
+\fBmc5\fP capabilities is not interpreted.
 .SH SEE ALSO
-\fBcurses\fP(3X)
+\fB\%curses\fP(3X)
index ee9ea8a37c02a73d7b89078d7b1b924f071cbff5..282536b363e0a7dc59fa5fb2b41afc24f939e6cc 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_printw.3x,v 1.32 2022/02/12 20:05:11 tom Exp $
-.TH curs_printw 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_printw.3x,v 1.53 2024/04/20 19:18:18 tom Exp $
+.TH curs_printw 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBprintw\fP,
-\fBwprintw\fP,
-\fBmvprintw\fP,
-\fBmvwprintw\fP,
-\fBvwprintw\fP, \fBvw_printw\fP \- print formatted output in \fBcurses\fP windows
-.ad
-.hy
+\fB\%printw\fP,
+\fB\%wprintw\fP,
+\fB\%mvprintw\fP,
+\fB\%mvwprintw\fP,
+\fB\%vwprintw\fP,
+\fB\%vw_printw\fP \-
+write formatted output to a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint printw(const char *\fIfmt\fB, ...);\fR
-.br
-\fBint wprintw(WINDOW *\fIwin\fB, const char *\fIfmt\fB, ...);\fR
-.br
-\fBint mvprintw(int \fIy\fB, int \fIx\fB, const char *\fIfmt\fB, ...);\fR
-.br
-\fBint mvwprintw(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const char *\fIfmt\fB, ...);\fR
-.br
-\fBint vw_printw(WINDOW *\fIwin\fB, const char *\fIfmt\fB, va_list \fIvarglist\fB);\fR
-.sp
-/* obsolete */
-.br
-\fBint vwprintw(WINDOW *\fIwin\fB, const char *\fIfmt\fB, va_list \fIvarglist\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint printw(const char *\fIfmt\fP, ...);
+\fBint wprintw(WINDOW *\fIwin\fP, const char *\fIfmt\fP, ...);
+\fBint mvprintw(int \fIy\fP, int \fIx\fP, const char *\fIfmt\fP, ...);
+\fBint mvwprintw(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const char *\fIfmt\fP, ...);
+.PP
+\fBint vw_printw(WINDOW *\fIwin\fP, const char *\fIfmt\fP, va_list \fIvarglist\fP);
+.PP
+\fI/* obsolete */\fP
+\fBint vwprintw(WINDOW *\fIwin\fP, const char *\fIfmt\fP, va_list \fIvarglist\fP);
+.fi
 .SH DESCRIPTION
-The \fBprintw\fP, \fBwprintw\fP, \fBmvprintw\fP and \fBmvwprintw\fP
-routines are analogous to \fBprintf\fP [see \fBprintf\fP(3)].
-In
-effect, the string that would be output by \fBprintf\fP is output
-instead as though \fBwaddstr\fP were used on the given window.
+\fB\%printw\fP,
+\fB\%wprintw\fP,
+\fB\%mvprintw\fP,
+and
+\fB\%mvwprintw\fP
+are analogous to \fI\%printf\fP(3).
+In effect,
+the string that would be output by \fI\%printf\fP(3) is instead output
+as though \fB\%waddstr\fP(3X) were used with
+.I win
+(or
+.BR \%stdscr )
+as its first argument.
 .PP
-The \fBvwprintw\fP and \fBvw_printw\fP routines are analogous
-to \fBvprintf\fP [see \fBprintf\fP(3)]
-and perform a \fBwprintw\fP using a variable argument list.
-The third argument is a \fBva_list\fP, a pointer to a
-list of arguments, as defined in \fB<stdarg.h>\fP.
+\fB\%vwprintw\fP
+and
+\fB\%vw_printw\fP are analogous to \fI\%vprintf\fP(3),
+and perform a \fB\%wprintw\fP using a variable argument list.
+The third argument is a \fI\%va_list\fP,
+a pointer to a list of arguments,
+as defined in \fI\%stdarg.h\fP.
 .SH RETURN VALUE
-Routines that return an integer return \fBERR\fP upon failure and \fBOK\fP
-(SVr4 only specifies "an integer value other than \fBERR\fP") upon successful
-completion.
+These functions return
+.B ERR
+upon failure and
+.B OK
+upon success.
 .PP
-X/Open defines no error conditions.
-In this implementation,
-an error may be returned if it cannot allocate enough memory for the
-buffer used to format the results.
-It will return an error if the window pointer is null.
+In
+.IR \%ncurses ,
+failure occurs if the library cannot allocate enough memory for the
+buffer into which the output is formatted,
+or if the window pointer
+.I win
+is null.
+.PP
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
+.SH NOTES
+No wide character counterpart functions are defined by the
+\*(``wide\*(''
+.I \%ncurses
+configuration nor by any standard.
+To format and write a wide-character string to a
+.I curses
+window,
+consider using \fI\%swprintf\fP(3) and \fB\%waddwstr\fP(3X) or similar.
+.SH PORTABILITY
+X/Open Curses,
+Issue 4 describes these functions.
+It specifies no error conditions for them.
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
+.I \%ncurses
+defines \fB\%vw_printw\fP and \fB\%vwprintw\fP identically to support
+legacy applications.
+However,
+the latter is obsolete.
+.bP
+X/Open Curses,
+Issue 4 Version 2 (1996),
+marked \fB\%vwprintw\fP as requiring \fI\%varargs.h\fP and
+\*(``TO BE WITHDRAWN\*('',
+and specified \fB\%vw_printw\fP using the \fI\%stdarg.h\fP interface.
+.bP
+X/Open Curses, Issue 5, Draft 2
+(December 2007) marked \fBvwprintw\fP (along with
+\fBvwscanw\fP and the \fItermcap\fP interface) as withdrawn.
+After incorporating review comments,
+this became
+X/Open Curses, Issue 7 (2009).
+.bP
+.I \%ncurses
+provides \fB\%vwprintw\fP,
+but marks it as deprecated.
 .SH HISTORY
-While \fBprintw\fP was implemented in 4BSD,
-it was unused until 4.2BSD (which used it in games).
-That early version of curses was before the ANSI C standard.
-It did not use <varargs.h>, though that was available.
-In 1991 (a couple of years after SVr4 was generally available,
+While \fB\%printw\fP was implemented in 4BSD
+(November 1980),
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/\
+.\"   libcurses/printw.c
+it was unused until 4.2BSD
+(August 1983),
+which employed it for games.
+That early version of
+.I curses
+preceded the ANSI C standard of 1989.
+It did not use \fI\%varargs.h\fP,
+though that had been available since Seventh Edition Unix (1979).
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/include/\
+.\"  varargs.h
+In 1991
+(a couple of years after SVr4 was generally available,
 and after the C standard was published),
 other developers updated the library,
-using <stdarg.h> internally in 4.4BSD curses.
+using \fI\%stdarg.h\fP internally in 4.4BSD
+.IR curses .
 Even with this improvement,
-BSD curses did not use function prototypes (or even declare
-functions) in the <curses.h> header until 1992.
+BSD
+.I curses
+did not use function prototypes
+(nor even declare functions)
+in \fI\%curses.h\fP until 1992.
 .PP
-SVr2 documented
-\fBprintw\fP,
-\fBwprintw\fP
-tersely as \*(``printf on \fIstdscr\fP\*('' and
-tersely as \*(``printf on \fIwin\fP\*('', respectively.
+SVr2 (1984) documented \fB\%printw\fP and \fB\%wprintw\fP tersely as
+\*(``printf on \fB\%stdscr\fP\*('' and
+\*(``printf on \fIwin\fP\*('',
+respectively.
 .PP
-SVr3 added
-\fBmvprintw\fP, and
-\fBmvwprintw\fP, with a three-line summary saying that they were analogous
-to \fBprintf\fP(3),
-explaining that the string which would be output from \fBprintf\fP(3) would
-instead be output using \fBwaddstr\fP on the given window.
-SVr3 also added \fBvwprintw\fP, saying that the third parameter
-is a \fBva_list\fP, defined in <varargs.h>,
-and referring the reader to the manual pages for \fIvarargs\fP and
-\fBvprintf\fP for detailed descriptions.
+SVr3 (1987) added \fB\%mvprintw\fP and \fB\%mvwprintw\fP,
+with a three-line summary asserting that they were analogous to
+\fI\%printf\fP(3),
+explaining that the string that \fI\%printf\fP(3) would write to the
+standard output stream would instead be output using \fB\%waddstr\fP to
+the given window.
+SVr3 also implemented \fB\%vwprintw\fP,
+describing its third parameter as a \fI\%va_list\fP,
+defined in \fI\%varargs.h\fP,
+and referred the reader to the manual pages for \fI\%varargs\fP and
+\fI\%vprintf\fP for detailed descriptions.
 .PP
-SVr4 added no new variations of \fBprintw\fP,
-but provided for using <varargs.h> or <stdarg.h> to define the \fBva_list\fP
-type.
+SVr4 (1989) introduced no new variations of \fI\%printw\fP,
+but provided for using either \fI\%varargs.h\fP or \fI\%stdarg.h\fP to
+define the \fI\%va_list\fP type.
+.\" either header declares "va_list", but only one can be used
 .PP
-X/Open Curses added \fBvw_printw\fP to replace \fBvwprintw\fP,
-stating that its \fBva_list\fP definition requires <stdarg.h>.
-.SH PORTABILITY
-In this implementation, \fBvw_printw\fP and \fBvwprintw\fP are equivalent,
-to support legacy applications.
-However, the latter (\fBvwprintw\fP) is obsolete:
-.bP
-The XSI Curses standard, Issue 4 described these functions.
-The function
-\fBvwprintw\fP is marked TO BE WITHDRAWN, and is to be replaced by a function
-\fBvw_printw\fP using the \fB<stdarg.h>\fP interface.
-.bP
-The Single Unix Specification, Version 2 states that
-\fBvw_printw\fP  is preferred to \fBvwprintw\fP since the latter requires
-including \fB<varargs.h>\fP, which
-cannot be used in the same file as \fB<stdarg.h>\fP.
-This implementation uses \fB<stdarg.h>\fP for both,
-because that header is included in \fB<curses.h\fP>.
-.bP
-X/Open Curses, Issue 5 (December 2007) marked \fBvwprintw\fP (along with
-\fBvwscanw\fP and the termcap interface) as withdrawn.
+X/Open Curses, Issue 4 (1995),
+defined \fB\%vw_printw\fP to replace \fB\%vwprintw\fP,
+stating that its \fI\%va_list\fP type is defined in \fI\%stdarg.h\fP.
 .SH SEE ALSO
-.na
-\fBcurses\fP(3X),
-\fBcurs_addstr\fP(3X),
-\fBcurs_scanw\fP(3X),
-\fBcurs_termcap\fP(3X),
-\fBprintf\fP(3),
-\fBvprintf\fP(3).
+\fB\%curses\fP(3X),
+\fB\%curs_addstr\fP(3X),
+\fB\%curs_scanw\fP(3X),
+\fB\%printf\fP(3),
+\fB\%vprintf\fP(3)
index 32e089343cf1ba79c5e8713a31246cfde05818fa..ac81d1e6393e7644eec68624c3eca995365f5f36 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_refresh.3x,v 1.25 2022/02/12 20:05:11 tom Exp $
-.TH curs_refresh 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_refresh.3x,v 1.46 2024/04/20 21:20:07 tom Exp $
+.TH curs_refresh 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBdoupdate\fP,
-\fBredrawwin\fP,
-\fBrefresh\fP,
-\fBwnoutrefresh\fP,
-\fBwredrawln\fP,
-\fBwrefresh\fP \- refresh \fBcurses\fP windows and lines
-.ad
-.hy
+\fB\%doupdate\fP,
+\fB\%redrawwin\fP,
+\fB\%refresh\fP,
+\fB\%wnoutrefresh\fP,
+\fB\%wredrawln\fP,
+\fB\%wrefresh\fP \-
+refresh \fIcurses\fR windows or lines thereupon
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint refresh(void);\fP
-.br
-\fBint wrefresh(WINDOW *\fIwin\fB);\fR
-.br
-\fBint wnoutrefresh(WINDOW *\fIwin\fB);\fR
-.br
-\fBint doupdate(void);\fP
-.sp
-\fBint redrawwin(WINDOW *\fIwin\fB);\fR
-.br
-\fBint wredrawln(WINDOW *\fIwin\fB, int \fIbeg_line\fB, int \fInum_lines\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint refresh(void);
+\fBint wrefresh(WINDOW *\fIwin\fP);
+\fBint wnoutrefresh(WINDOW *\fIwin\fP);
+\fBint doupdate(void);
+.PP
+\fBint redrawwin(WINDOW *\fIwin\fP);
+\fBint wredrawln(WINDOW *\fIwin\fP, int \fIbeg_line\fP, int \fInum_lines\fP);
+.fi
 .SH DESCRIPTION
-.SS refresh/wrefresh
+.SS "refresh, wrefresh"
 The \fBrefresh\fP and \fBwrefresh\fP routines (or \fBwnoutrefresh\fP and
 \fBdoupdate\fP) must be called to get actual output to the terminal,
 as other routines merely manipulate data structures.
@@ -73,20 +74,21 @@ the named window to the \fIphysical screen\fP,
 taking into account what is already there to do optimizations.
 The \fBrefresh\fP routine is the
 same, using \fBstdscr\fP as the default window.
-Unless \fBleaveok\fP has been
+Unless \fBleaveok\fP(3X) has been
 enabled, the physical cursor of the terminal is left at the location of the
 cursor for that window.
-.SS wnoutrefresh/doupdate
-.PP
+.SS "wnoutrefresh, doupdate"
 The \fBwnoutrefresh\fP and \fBdoupdate\fP routines allow multiple updates with
 more efficiency than \fBwrefresh\fP alone.
 In addition to all the window
 structures, \fBcurses\fP keeps two data structures representing the terminal
 screen:
 .bP
-a \fIphysical screen\fP, describing what is actually on the screen, and
+a \fIphysical screen\fP,
+describing what is actually on the screen, and
 .bP
-a \fIvirtual screen\fP, describing what the programmer wants to have on the screen.
+a \fIvirtual screen\fP,
+describing what the programmer wants to have on the screen.
 .PP
 The routine \fBwrefresh\fP works by
 .bP
@@ -120,18 +122,18 @@ order and the overlap region will be modified only when it is explicitly
 changed.
 (But see the section on \fBPORTABILITY\fP below for a warning about
 exploiting this behavior.)
-.SS wredrawln/redrawwin
-.PP
+.SS "wredrawln, redrawwin"
 The \fBwredrawln\fP routine indicates to \fBcurses\fP that some screen lines
 are corrupted and should be thrown away before anything is written over them.
 It touches the indicated lines (marking them changed).
 The routine \fBredrawwin\fP touches the entire window.
 .SH RETURN VALUE
-Routines that return an integer return \fBERR\fP upon failure, and \fBOK\fP
-(SVr4 only specifies "an integer value other than \fBERR\fP") upon successful
-completion.
+These routines return the integer \fBERR\fP upon failure and \fBOK\fP
+(SVr4 specifies only
+\*(``an integer value other than \fBERR\fP\*('')
+upon successful completion.
 .PP
-X/Open does not define any error conditions.
+X/Open Curses does not specify any error conditions.
 In this implementation
 .RS 3
 .TP 5
@@ -147,7 +149,7 @@ if the associated call to \fBtouchln\fP returns an error.
 .SH NOTES
 Note that \fBrefresh\fP and \fBredrawwin\fP may be macros.
 .SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions.
+X/Open Curses, Issue 4 describes these functions.
 .PP
 Whether \fBwnoutrefresh\fP copies to the virtual screen the entire contents
 of a window or just its changed portions has never been well-documented in
@@ -158,6 +160,6 @@ implementations.
 Instead, you can do an explicit \fBtouchwin\fP before the
 \fBwnoutrefresh\fP call to guarantee an entire-contents copy anywhere.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_outopts\fP(3X)
-\fBcurs_variables\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_outopts\fP(3X)
+\fB\%curs_variables\fP(3X)
index ca78012e6babd83541627c66d36531db21bf5b7d..409c297fb233ad58c34a5b270453a4806ae26fe0 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_scanw.3x,v 1.32 2022/02/12 20:05:11 tom Exp $
-.TH curs_scanw 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_scanw.3x,v 1.53 2024/04/20 19:18:18 tom Exp $
+.TH curs_scanw 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBscanw\fP,
-\fBwscanw\fP,
-\fBmvscanw\fP,
-\fBmvwscanw\fP,
-\fBvwscanw\fP, \fBvw_scanw\fP \- convert formatted input from a \fBcurses\fP window
+\fB\%scanw\fP,
+\fB\%wscanw\fP,
+\fB\%mvscanw\fP,
+\fB\%mvwscanw\fP,
+\fB\%vwscanw\fP,
+\fB\%vw_scanw\fP \-
+read formatted input from a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint scanw(const char *\fIfmt\fB, ...);\fR
-.br
-\fBint wscanw(WINDOW *\fIwin\fB, const char *\fIfmt\fB, ...);\fR
-.br
-\fBint mvscanw(int \fIy\fB, int \fIx\fB, const char *\fIfmt\fB, ...);\fR
-.br
-\fBint mvwscanw(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB, const char *\fIfmt\fB, ...);\fR
-.sp
-\fBint vw_scanw(WINDOW *\fIwin\fB, const char *\fIfmt\fB, va_list \fIvarglist\fB);\fR
-.sp
-/* obsolete */
-.br
-\fBint vwscanw(WINDOW *\fIwin\fB, const char *\fIfmt\fB, va_list \fIvarglist\fB);\fR
-.SH DESCRIPTION
-The \fBscanw\fP, \fBwscanw\fP and \fBmvscanw\fP routines are analogous to
-\fBscanf\fP [see \fBscanf\fP(3)].
-The effect of these routines is as though
-\fBwgetstr\fP were called on the window, and the resulting line used as input
-for \fBsscanf\fP(3).
-Fields which do not map to a variable in the \fIfmt\fP
-field are lost.
+.nf
+\fB#include <curses.h>
 .PP
-The \fBvwscanw\fP and \fBvw_scanw\fP routines are analogous to \fBvscanf\fP(3).
-They perform a \fBwscanw\fP using a variable argument list.
-The third argument is a \fBva_list\fP,
-a pointer to a list of arguments, as defined in \fB<stdarg.h>\fP.
-.SH RETURN VALUE
-\fBvwscanw\fP returns \fBERR\fP on failure and an integer equal to the
-number of fields scanned on success.
+\fBint scanw(const char *\fIfmt\fP, ...);
+\fBint wscanw(WINDOW *\fIwin\fP, const char *\fIfmt\fP, ...);
+\fBint mvscanw(int \fIy\fP, int \fIx\fP, const char *\fIfmt\fP, ...);
+\fBint mvwscanw(WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const char *\fIfmt\fP, ...);
 .PP
-Applications may use the return value from the \fBscanw\fP, \fBwscanw\fP,
-\fBmvscanw\fP and \fBmvwscanw\fP routines to determine the number of fields
-which were mapped in the call.
+\fBint vw_scanw(WINDOW *\fIwin\fP, const char *\fIfmt\fP, va_list \fIvarglist\fP);
 .PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
-.SH HISTORY
-While \fBscanw\fP was implemented in 4BSD,
-none of the BSD releases used it until 4.4BSD (in a game).
-That early version of curses was before the ANSI C standard.
-It did not use <varargs.h>, though that was available.
-In 1991 (a couple of years after SVr4 was generally available,
-and after the C standard was published),
-other developers updated the library,
-using <stdarg.h> internally in 4.4BSD curses.
-Even with this improvement,
-BSD curses did not use function prototypes (or even declare
-functions) in the <curses.h> header until 1992.
+\fI/* obsolete */\fP
+\fBint vwscanw(WINDOW *\fIwin\fP, const char *\fIfmt\fP, va_list \fIvarglist\fP);
+.fi
+.SH DESCRIPTION
+\fB\%scanw\fP,
+\fB\%wscanw\fP,
+\fB\%mvscanw\fP,
+and
+\fB\%mvwscanw\fP
+are analogous to \fI\%scanf\fP(3).
+In effect,
+they call \fB\%wgetstr\fP(3X) with
+.I win
+(or
+.BR \%stdscr )
+as its first argument,
+then attempt conversion of the resulting string with \fI\%vsscanf\fP(3).
+Fields in the string that do not map to a variable in the \fIfmt\fP
+parameter are discarded.
 .PP
-SVr2 documented
-\fBscanw\fP,
-\fBwscanw\fP
-tersely as \*(``scanf through \fIstdscr\fP\*('' and
-tersely as \*(``scanf through \fIwin\fP\*('', respectively.
+\fB\%vwscanw\fP
+and
+\fB\%vw_scanw\fP are analogous to \fI\%vscanf\fP(3),
+and perform a \fB\%wscanw\fP using a variable argument list.
+The third argument is a \fI\%va_list\fP,
+a pointer to a list of arguments,
+as defined in \fI\%stdarg.h\fP.
+.SH RETURN VALUE
+These functions return
+.B ERR
+upon failure and otherwise a count of successful conversions;
+this quantity may be zero.
 .PP
-SVr3 added
-\fBmvscanw\fP, and
-\fBmvwscanw\fP, with a three-line summary saying that they were analogous
-to \fBscanf\fP(3),
-explaining that the string which would be output from \fBscanf\fP(3) would
-instead be output using \fBwaddstr\fP on the given window.
-SVr3 also added \fBvwscanw\fP, saying that the third parameter
-is a \fBva_list\fP, defined in <varargs.h>,
-and referring the reader to the manual pages for \fIvarargs\fP and
-\fBvprintf\fP for detailed descriptions.
-(Because the SVr3 documentation does not mention \fBvscanf\fP,
-that reference to \fBvprintf\fP may not be an error).
+In
+.IR \%ncurses ,
+failure occurs if \fI\%vsscanf\fP(3) returns
+\fBEOF\fP,
+or if the window pointer
+.I win
+is null.
 .PP
-SVr4 added no new variations of \fBscanw\fP,
-but provided for using <varargs.h> or <stdarg.h> to define the \fBva_list\fP
-type.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
+.SH NOTES
+No wide character counterpart functions are defined by the
+\*(``wide\*(''
+.I \%ncurses
+configuration nor by any standard.
+They are unnecessary:
+to retrieve and convert a wide-character string from a
+.I curses
+terminal keyboard,
+use these functions with the \fI\%scanf\fP(3) conversions \*(``%lc\*(''
+and \*(``%ls\*('' for wide characters and strings,
+respectively.
 .PP
-X/Open Curses added \fBvw_scanw\fP to replace \fBvwscanw\fP,
-stating that its \fBva_list\fP definition requires <stdarg.h>.
+.I \%ncurses
+implements \fI\%vsscanf\fP(3) internally if it is unavailable when the
+library is configured.
 .SH PORTABILITY
-In this implementation, \fBvw_scanw\fP and \fBvwscanw\fP are equivalent,
-to support legacy applications.
-However, the latter (\fBvwscanw\fP) is obsolete:
+X/Open Curses,
+Issue 4 describes these functions.
+It specifies no error conditions for them.
+.PP
+.I \%ncurses
+defines \fB\%vw_scanw\fP and \fB\%vwscanw\fP identically to support
+legacy applications.
+However,
+the latter is obsolete.
 .bP
-The XSI Curses standard, Issue 4 described these functions,
-noting that the function
-\fBvwscanw\fP is marked TO BE WITHDRAWN, and is to be replaced by a function
-\fBvw_scanw\fP using the \fB<stdarg.h>\fP interface.
+X/Open Curses,
+Issue 4 Version 2 (1996),
+marked \fB\%vwscanw\fP as requiring \fI\%varargs.h\fP and
+\*(``TO BE WITHDRAWN\*('',
+and specified \fB\%vw_scanw\fP using the \fI\%stdarg.h\fP interface.
 .bP
-The Single Unix Specification, Version 2 states that
-\fBvw_scanw\fP  is preferred to \fBvwscanw\fP since the latter requires
-including \fB<varargs.h>\fP, which
-cannot be used in the same file as \fB<stdarg.h>\fP.
-This implementation uses \fB<stdarg.h>\fP for both, because that header
-is included in \fB<curses.h\fP>.
+X/Open Curses,
+Issue 5,
+Draft 2 (December 2007) marked \fB\%vwscanw\fP (along with
+\fB\%vwscanw\fP and the \fItermcap\fP interface) as withdrawn.
+After incorporating review comments,
+this became
+X/Open Curses, Issue 7 (2009).
 .bP
-X/Open Curses, Issue 5 (December 2007) marked \fBvwscanw\fP (along with
-\fBvwprintw\fP and the termcap interface) as withdrawn.
-.LP
-Both XSI and The Single Unix Specification, Version 2 state that these
-functions return \fBERR\fP or \fBOK\fP.
+.I \%ncurses
+provides \fB\%vwscanw\fP,
+but marks it as deprecated.
+.PP
+X/Open Curses Issues 4 and 7 both state that these functions return
+\fBERR\fP or \fBOK\fP.
+This is likely an erratum.
 .bP
-Since the underlying \fBscanf\fP(3) can return the number of items scanned,
-and the SVr4 code was documented to use this feature,
-this is probably an editing error which was introduced in XSI,
-rather than being done intentionally.
+Since the underlying \fI\%scanf\fP(3) returns the number of successful
+conversions,
+and SVr4
+.I curses
+was documented to use this feature,
+this may have been an editorial solecism introduced by X/Open,
+rather than an intentional change.
 .bP
-This implementation returns the number of items scanned,
-for compatibility with SVr4 curses.
-As of 2018, NetBSD curses also returns the number of items scanned.
-Both ncurses and NetBSD curses call \fBvsscanf\fP to scan the string,
+This implementation retains compatibility with SVr4
+.IR curses .
+As of 2018,
+NetBSD
+.I curses
+also returns the number of successful conversions.
+Both
+.I \%ncurses\fP
+and NetBSD
+.I curses
+call \fI\%vsscanf\fP(3) to scan the string,
 which returns \fBEOF\fP on error.
 .bP
-Portable applications should only test if the return value is \fBERR\fP,
-since the \fBOK\fP value (zero) is likely to be misleading.
+Portable applications should test only if the return value is \fBERR\fP,
+and not compare it to \fBOK\fP,
+since that value (zero) might be misleading.
 .IP
-One possible way to get useful results would be to use a "%n" conversion
-at the end of the format string to ensure that something was processed.
+One portable way to get useful results would be to use a \*(``%n\*(''
+conversion at the end of the format string,
+and check the value of the corresponding variable to determine how many
+conversions succeeded.
+.SH HISTORY
+\fB\%scanw\fP was implemented in 4BSD
+(November 1980);
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/\
+.\"  libcurses/scanw.c
+that early version of
+.I curses
+preceded the ANSI C standard of 1989.
+The function was unused in Berkeley distributions for over ten years,
+until 4.4BSD,
+which employed it in a game.
+The 4BSD \fB\%scanw\fP did not use \fI\%varargs.h\fP,
+though that had been available since Seventh Edition Unix (1979).
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/include/\
+.\"  varargs.h
+In 1991
+(a couple of years after SVr4 was generally available,
+and after the C standard was published),
+other developers updated the library,
+using \fI\%stdarg.h\fP internally in 4.4BSD
+.IR curses .
+Even with this improvement,
+BSD
+.I curses
+did not use function prototypes
+(nor even declare functions)
+in \fI\%curses.h\fP until 1992.
+.PP
+SVr2 (1984) documented \fB\%scanw\fP and \fB\%wscanw\fP tersely as
+\*(``scanf through \fB\%stdscr\fP\*('' and
+\*(``scanf through \fIwin\fP\*('',
+respectively.
+.PP
+SVr3 (1987) added
+\fB\%mvscanw\fP, and
+\fB\%mvwscanw\fP, stating
+.RS
+.PP
+\*(``[t]hese routines correspond to \fIscanf\fP(3S),
+as do their arguments and return values.
+\fB\%wgetstr\fP() is called on the window,
+and the resulting line is used as input for the scan.\*(''
+.RE
+.PP
+SVr3 also implemented \fB\%vwscanw\fP,
+describing its third parameter as a \fI\%va_list\fP,
+defined in \fI\%varargs.h\fP,
+and referred the reader to the manual pages for \fI\%varargs\fP and
+\fI\%vprintf\fP for detailed descriptions.
+(Because the SVr3 documentation does not mention \fI\%vscanf\fP,
+the reference to \fI\%vprintf\fP might not be an error).
+.PP
+SVr4 (1989) introduced no new variations of \fI\%scanw\fP,
+but provided for using either \fI\%varargs.h\fP or \fI\%stdarg.h\fP to
+define the \fI\%va_list\fP type.
+.\" either header declares "va_list", but only one can be used
+.PP
+X/Open Curses, Issue 4 (1995),
+defined \fI\%vw_scanw\fP to replace \fI\%vwscanw\fP,
+stating that its \fI\%va_list\fP type is defined in \fI\%stdarg.h\fP.
 .SH SEE ALSO
-.na
-\fBcurses\fP(3X),
-\fBcurs_getstr\fP(3X),
-\fBcurs_printw\fP(3X),
-\fBcurs_termcap\fP(3X),
-\fBscanf\fP(3).
+\fB\%curses\fP(3X),
+\fB\%curs_getstr\fP(3X),
+\fB\%curs_printw\fP(3X),
+\fB\%scanf\fP(3),
+\fB\%vscanf\fP(3)
index 7829fade996abc8fcffab3370a6b819977dd8828..5f14a2287268818ad2915351956c5637d4100e63 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_scr_dump.3x,v 1.20 2022/02/12 20:05:11 tom Exp $
-.TH curs_scr_dump 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_scr_dump.3x,v 1.43 2024/04/20 18:54:36 tom Exp $
+.TH curs_scr_dump 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBscr_dump\fP,
-\fBscr_restore\fP,
-\fBscr_init\fP,
-\fBscr_set\fP \- read (write) a \fBcurses\fP screen from (to) a file
-.ad
-.hy
+\fB\%scr_dump\fP,
+\fB\%scr_restore\fP,
+\fB\%scr_init\fP,
+\fB\%scr_set\fP \-
+read/write a \fIcurses\fR screen from/to a file
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint scr_dump(const char *\fIfilename\fB);\fR
-.br
-\fBint scr_restore(const char *\fIfilename\fB);\fR
-.br
-\fBint scr_init(const char *\fIfilename\fB);\fR
-.br
-\fBint scr_set(const char *\fIfilename\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint scr_dump(const char *\fIfilename\fP);
+\fBint scr_restore(const char *\fIfilename\fP);
+\fBint scr_init(const char *\fIfilename\fP);
+\fBint scr_set(const char *\fIfilename\fP);
+.fi
 .SH DESCRIPTION
+.I curses
+provides applications the ability to write the contents of the screen
+to a file and read them back.
+To read/write a window
+(rather than the whole screen)
+from/to a file,
+use \fB\%getwin\fP(3X) and
+\fB\%putwin\fP(3X),
+respectively.
 .SS scr_dump
-.PP
-The \fBscr_dump\fP routine dumps the current contents
-of the \fIvirtual screen\fP
-to the file \fIfilename\fP.
+\fB\%scr_dump\fP writes to
+.I filename
+the contents of the virtual screen;
+see \fB\%curscr\fP(3X).
 .SS scr_restore
-.PP
-The \fBscr_restore\fP routine sets the \fIvirtual screen\fP to the contents
-of \fIfilename\fP, which must have been written using \fBscr_dump\fP.
-The next call to \fBdoupdate\fP restores
-the \fIphysical screen\fP to the way it looked in the dump file.
+\fB\%scr_restore\fP updates the virtual screen to contain the contents
+of
+.I filename
+(if it was validly written with \fB\%scr_dump\fP).
+No refresh is performed;
+after performing any further desired updates,
+call \fB\%doupdate\fP(3X) or similar.
 .SS scr_init
+\fB\%scr_init\fP reads
+.IR filename ,
+using it to initialize
+.I curses
+data structures describing the state of the terminal screen.
+If these data are valid,
+.I curses
+bases its next update of the screen on this information rather than
+clearing it and starting from scratch.
 .PP
-The \fBscr_init\fP routine reads in the contents of \fIfilename\fP and uses
-them to initialize the \fBcurses\fP data structures about what the terminal
-currently has on its screen.
-If the data is determined to be valid,
-\fBcurses\fP bases its next update of the screen on this information rather
-than clearing the screen and starting from scratch.
-\fBscr_init\fP is used
-after \fBinitscr\fP(3X) or a \fBsystem\fP(3) call to share
-the screen with another process which has done a \fBscr_dump\fP after its
-\fBendwin\fP(3X) call.
-The data is declared invalid
+The data fail the validity check
 .bP
-if the terminfo capabilities \fBrmcup\fP and \fBnrrmc\fP exist, also
+if the terminal employs
+.I \%term\%info
+capabilities
+.B \%exit_ca_mode
+.RB ( \%rmcup )
+or
+.B \%non_rev_rmcup
+.RB ( \%nrrmc )
+are defined,
+or
 .bP
-if the terminal has been written to since the preceding \fBscr_dump\fP call.
-.SS scr_set
+if
+.I curses
+knows that the terminal has been written to since the preceding
+\fB\%scr_dump\fP call.
 .PP
+\fB\%scr_init\fP could be used after \fB\%initscr\fP(3X) or
+\fB\%system\fP(3) to share the screen with another process that has
+done a \fBscr_dump\fP after \fB\%endwin\fP(3X).
+.SS scr_set
 The \fBscr_set\fP routine is a combination of \fBscr_restore\fP and
 \fBscr_init\fP.  It tells the program that the information in \fIfilename\fP is
 what is currently on the screen, and also what the program wants on the screen.
 This can be thought of as a screen inheritance function.
-.PP
-To read (write) a window from (to) a file, use the \fBgetwin\fP and
-\fBputwin\fP routines [see \fBcurs_util\fP(3X)].
 .SH RETURN VALUE
-All routines return the integer \fBERR\fP upon failure and \fBOK\fP
-upon success.
+These functions return \fBOK\fP on success and \fBERR\fP on failure.
 .PP
-X/Open defines no error conditions.
+X/Open defines no failure conditions.
 In this implementation,
-each will return an error if the file cannot be opened.
+each function fails if it cannot open
+.IR filename .
 .SH NOTES
-Note that \fBscr_init\fP, \fBscr_set\fP, and \fBscr_restore\fP may be macros.
+\fB\%scr_init\fP,
+\fB\%scr_set\fP,
+and
+\fB\%scr_restore\fP may be macros.
 .SH PORTABILITY
-The XSI Curses standard, Issue 4, describes these functions (adding the const
-qualifiers).
+X/Open Curses,
+Issue 4 describes these functions.
+.PP
+.\" SVID 4, p. 529
+SVr4 omitted the
+.I \%const
+qualifiers.
 .PP
-The SVr4 docs merely say under \fBscr_init\fP that the dump data is also
-considered invalid "if the time-stamp of the tty is old" but do not define
-\*(``old\*(''.
+SVr4 documentation describes \fB\%scr_init\fP such that the dump data is
+also considered invalid \*(``if the time-stamp of the tty is old\*(''
+but does not define \*(``old\*(''.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_initscr\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_util\fP(3X),
-\fBscr_dump\fP(5),
-\fBsystem\fP(3)
+\fB\%curses\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_util\fP(3X),
+\fB\%system\fP(3),
+\fB\%scr_dump\fP(5)
index 9a99adfad9a9b4e7e7e8a5d1b81edcdd6799e02f..16d5a501094f4c145790639c2a308842cc463980 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_scroll.3x,v 1.22 2022/02/12 20:05:11 tom Exp $
-.TH curs_scroll 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.na
-.hy 0
+.\" $Id: curs_scroll.3x,v 1.43 2024/04/20 18:54:36 tom Exp $
+.TH curs_scroll 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
+.de bP
+.ie n  .IP \(bu 4
+.el    .IP \(bu 2
+..
 .SH NAME
-\fBscroll\fP,
-\fBscrl\fP,
-\fBwscrl\fP \- scroll a \fBcurses\fP window
-.ad
-.hy
+\fB\%scroll\fP,
+\fB\%scrl\fP,
+\fB\%wscrl\fP \-
+scroll a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint scroll(WINDOW *\fIwin\fB);\fR
-.sp
-\fBint scrl(int \fIn\fB);\fR
-.br
-\fBint wscrl(WINDOW *\fIwin\fB, int \fIn\fB);\fR
-.br
-.SH DESCRIPTION
-The \fBscroll\fP routine scrolls the window up one line.
-This involves moving
-the lines in the window data structure.
-As an optimization, if the scrolling
-region of the window is the entire screen,
-the \fIphysical screen\fP may be scrolled at the same time.
+.nf
+\fB#include <curses.h>
+.PP
+\fBint scroll(WINDOW *\fIwin\fP);
 .PP
-For positive \fIn\fP, the \fBscrl\fP and \fBwscrl\fP routines scroll the
-window up \fIn\fP lines (line \fIi\fP+\fIn\fP becomes \fIi\fP); otherwise
-scroll the window down \fIn\fP lines.
-This involves moving the lines in the
-window character image structure.
-The current cursor position is not changed.
+\fBint scrl(int \fIn\fP);
+\fBint wscrl(WINDOW *\fIwin\fP, int \fIn\fP);
+.fi
+.SH DESCRIPTION
+\fBscroll\fP scrolls the given window up one line.
+That is,
+every visible line we might number
+.I i
+becomes line
+.IR i "\-1."
+The text of the top line in the window disappears and the bottom line
+is populated with blank characters;
+see \fB\%bkgd\fP(3X) or \fB\%bkgrnd\fP(3X).
+As an optimization,
+if the scrolling region of the window is the entire screen,
+the physical screen may be scrolled at the same time;
+see \fB\%curscr\fP(3X).
 .PP
-For these functions to work, scrolling must be enabled via \fBscrollok\fP.
-.SH RETURN VALUE
-These routines return \fBERR\fP upon failure, and \fBOK\fP (SVr4 only specifies
-"an integer value other than \fBERR\fP") upon successful completion.
+\fB\%scrl\fP and \fB\%wscrl\fP scroll
+.B \%stdscr
+or the specified window up or down depending on the sign of
+.IR n .
+.bP
+For positive
+.IR n ,
+line \fIi\fP+\fIn\fP becomes \fIi\fP (scrolling up);
+.bP
+for negative
+.IR n ,
+line \fIi\fP-\fIn\fP becomes \fIi\fP (scrolling down).
 .PP
-X/Open defines no error conditions.
+The cursor does not move.
+These functions perform no operation unless scrolling is enabled for the
+window via \fB\%scrollok\fP(3X).
+.SH "RETURN VALUE"
+These functions return
+.B ERR
+upon failure and
+.B OK
+upon success.
 .PP
-This implementation returns an error
-if the window pointer is null, or
-if scrolling is not enabled in the window, e.g., with \fBscrollok\fP.
+.I \%ncurses
+returns \fBERR\fP if scrolling is not enabled in the window,
+for example with \fB\%scrollok\fP(3X),
+or if the
+.I \%WINDOW
+pointer is null.
 .SH NOTES
-Note that \fBscrl\fP and \fBscroll\fP may be macros.
-.PP
-The SVr4 documentation says that the optimization of physically scrolling
-immediately if the scroll region is the entire screen \*(``is\*('' performed, not
-\*(``may be\*('' performed.
-This implementation deliberately does not guarantee
-that this will occur, to leave open the possibility of smarter
-optimization of multiple scroll actions on the next update.
+Unusually,
+there is no \fB\%wscroll\fP function;
+\fBscroll\fP behaves as one would expect \fB\%wscroll\fP to,
+accepting a \fI\%WINDOW\fP pointer argument.
 .PP
-Neither the SVr4 nor the XSI documentation specify whether the current
-attribute or
-current color-pair of blanks generated by the scroll function is zeroed.
-Under this implementation it is.
+\fB\%scrl\fP and \fB\%scroll\fP may be implemented as macros.
 .SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions.
+X/Open Curses,
+Issue 4 describes these functions.
+It defines no error conditions.
+.PP
+SVr4 specifies only
+\*(``an integer value other than \fBERR\fP\*('' as a successful return
+value.
+.PP
+SVr4 indicates that the optimization of physically scrolling immediately
+if the scroll region is the entire screen \*(``is\*('' performed,
+not \*(``may be\*('' performed.
+.I \%ncurses
+deliberately does not guarantee that this will occur,
+to leave open the possibility of smarter optimization of multiple scroll
+actions on the next update.
+.PP
+Neither SVr4
+.I curses
+nor X/Open Curses specify whether the current attribute or current color
+pair of blanks generated by the scroll function are zeroed.
+.I \%ncurses
+does so.
 .SH SEE ALSO
-\fBcurses\fP(3X), \fBcurs_outopts\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_outopts\fP(3X)
index 0816785e004dc7168ef50927805006857b82f563..fbc718115434467fb0f897c26d1077c4c09ed3b9 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_slk.3x,v 1.44 2022/10/29 22:44:14 tom Exp $
-.TH curs_slk 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_slk.3x,v 1.71 2024/04/20 18:54:36 tom Exp $
+.TH curs_slk 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBslk_init\fP,
-\fBslk_set\fP,
-\fBslk_wset\fP,
-\fBslk_refresh\fP,
-\fBslk_noutrefresh\fP,
-\fBslk_label\fP,
-\fBslk_clear\fP,
-\fBslk_restore\fP,
-\fBslk_touch\fP,
-\fBslk_attron\fP,
-\fBslk_attrset\fP,
-\fBslk_attroff\fP,
-\fBslk_attr_on\fP,
-\fBslk_attr_set\fP,
-\fBslk_attr_off\fP,
-\fBslk_attr\fP,
-\fBslk_color\fP,
-\fBextended_slk_color\fP \- \fBcurses\fP soft label routines
-.ad
-.hy
+\fB\%slk_init\fP,
+\fB\%slk_set\fP,
+\fB\%slk_wset\fP,
+\fB\%slk_refresh\fP,
+\fB\%slk_noutrefresh\fP,
+\fB\%slk_label\fP,
+\fB\%slk_clear\fP,
+\fB\%slk_restore\fP,
+\fB\%slk_touch\fP,
+\fB\%slk_attron\fP,
+\fB\%slk_attrset\fP,
+\fB\%slk_attroff\fP,
+\fB\%slk_attr_on\fP,
+\fB\%slk_attr_set\fP,
+\fB\%slk_attr_off\fP,
+\fB\%slk_attr\fP,
+\fB\%slk_color\fP,
+\fB\%extended_slk_color\fP \-
+\fIcurses\fR soft label key routines
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint slk_init(int \fIfmt\fB);\fR
-.sp
-\fBint slk_set(int \fIlabnum\fB, const char *\fIlabel\fB, int \fIfmt\fB);\fR
-.br
-\fBint slk_wset(int \fIlabnum\fB, const wchar_t *\fIlabel\fB, int \fIfmt\fB);\fR
-.sp
-\fBchar *slk_label(int \fIlabnum\fB);\fR
-.sp
-\fBint slk_refresh(void);\fP
-.br
-\fBint slk_noutrefresh(void);\fP
-.br
-\fBint slk_clear(void);\fP
-.br
-\fBint slk_restore(void);\fP
-.br
-\fBint slk_touch(void);\fP
-.sp
-\fBint slk_attron(const chtype \fIattrs\fB);\fR
-.br
-\fBint slk_attroff(const chtype \fIattrs\fB);\fR
-.br
-\fBint slk_attrset(const chtype \fIattrs\fB);\fR
-.br
-\fBint slk_attr_on(attr_t \fIattrs\fB, void* \fIopts\fB);\fR
-.br
-\fBint slk_attr_off(const attr_t \fIattrs\fB, void * \fIopts\fB);\fR
-.br
-\fBint slk_attr_set(const attr_t \fIattrs\fB, short \fIpair\fB, void* \fIopts\fB);\fR
-.br
-/* extension */
-.br
-\fBattr_t slk_attr(void);\fP
-.sp
-\fBint slk_color(short \fIpair\fB);\fR
-.br
-/* extension */
-.br
-\fBint extended_slk_color(int \fIpair\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint slk_init(int \fIfmt\fP);
+.PP
+\fBint slk_set(int \fIlabnum\fP, const char *\fIlabel\fP, int \fIalign\fP);
+\fBint slk_wset(int \fIlabnum\fP, const wchar_t *\fIlabel\fP, int \fIalign\fP);
+.PP
+\fBchar *slk_label(int \fIlabnum\fP);
+.PP
+\fBint slk_refresh(void);
+\fBint slk_noutrefresh(void);
+\fBint slk_clear(void);
+\fBint slk_restore(void);
+\fBint slk_touch(void);
+.PP
+\fBint slk_attron(const chtype \fIattrs\fP);
+\fBint slk_attroff(const chtype \fIattrs\fP);
+\fBint slk_attrset(const chtype \fIattrs\fP);
+\fBint slk_attr_on(attr_t \fIattrs\fP, void *\fIopts\fP);
+\fBint slk_attr_off(const attr_t \fIattrs\fP, void *\fIopts\fP);
+\fBint slk_attr_set(const attr_t \fIattrs\fP, short \fIpair\fP, void*\fIopts\fP);
+\fI/* extension */
+\fBattr_t slk_attr(void);
+.PP
+\fBint slk_color(short \fIpair\fP);
+\fI/* extension */
+\fBint extended_slk_color(int \fIpair\fP);
+.fi
 .SH DESCRIPTION
-The slk* functions manipulate the set of soft function-key labels that exist on
-many terminals.
+These functions manipulate the soft function key labels that some
+hardware terminals support.
 For those terminals that do not have soft labels,
-\fBcurses\fP takes over the bottom line of \fBstdscr\fP, reducing the size of
-\fBstdscr\fP and the variable \fBLINES\fP.
-\fBcurses\fP standardizes on eight
-labels of up to eight characters each.
-In addition to this, the ncurses
-implementation supports a mode where it simulates 12 labels of up to five
-characters each.
-This is useful for PC-like enduser devices.
-ncurses simulates this mode by taking over up to two lines at
+\fIcurses\fP takes over the bottom line of \fB\%stdscr\fP,
+reducing its vertical size and the value of \fBLINES\fP by one.
+By default,
+\fIcurses\fP uses eight labels of up to eight characters each.
+.PP
+\fI\%ncurses\fP
+furthermore supports a mode comprising twelve labels of up to five
+characters each,
+following a convention associated with the IBM PC/AT keyboard.
+\fI\%ncurses\fP simulates this mode by taking over up to two lines at
 the bottom of the screen;
 it does not try to use any hardware support for this
 mode.
 .SS Initialization
-.PP
-The \fBslk_init\fP routine must be called before \fBinitscr\fP or \fBnewterm\fP
-is called.
-If \fBinitscr\fP eventually uses a line from \fBstdscr\fP to
+\fB\%slk_init\fP must be called before \fB\%initscr\fP or
+\fB\%newterm\fP.
+If \fB\%initscr\fP eventually uses a line from \fB\%stdscr\fP to
 emulate the soft labels,
-then \fIfmt\fP determines how the labels are arranged on the screen:
-.RS 3
+then \fIfmt\fP determines how the labels are arranged on the screen.
 .TP 3
 .B 0
 indicates a 3\-2\-3 arrangement of
@@ -139,85 +130,104 @@ indicates the PC-like 4\-4\-4 mode.
 .TP 3
 .B 3
 is again the PC-like 4\-4\-4 mode,
-but in addition an index line is generated, helping the user to
-identify the key numbers easily.
-.RE
+but in addition an index line is generated,
+helping the user to associate each label with its numbered function key.
+\fBLINES\fP and the vertical size of \fB\%stdscr\fP are further reduced.
 .SS Labels
-.PP
-The \fBslk_set\fP routine
-(and the \fBslk_wset\fP routine for the wide-character library)
-has three parameters:
-.RS 3
-.TP 5
+Populate the labels with normal strings
+(\fB\%slk_set\fP)
+or wide-character strings
+(\fB\%slk_wset\fP).
+Each function takes three parameters.
+.TP 8 \" "labnum" + 2n
 .I labnum
 is the label number, from \fB1\fP to \fB8\fP
-(12 if \fIfmt\fP in \fBslk_init\fP is \fB2\fP or \fB3\fP);
+(12 if \fIfmt\fP in \fB\%slk_init\fP is \fB2\fP or \fB3\fP);
 .TP
 .I label
 is be the string to put on the label,
 up to eight
-(five if \fIfmt\fP in \fBslk_init\fP is \fB2\fP or \fB3\fP)
+(five if \fIfmt\fP in \fB\%slk_init\fP is \fB2\fP or \fB3\fP)
 characters in length.
-A null string or a null pointer sets up a blank label.
+A empty string or a null pointer sets up a blank label.
 .TP
-.I fmt
-is either
-\fB0\fP, \fB1\fP, or \fB2\fP, indicating whether the label is to be
-left-justified, centered, or right-justified, respectively, within the
-label.
-.RE
-.PP
-The \fBslk_label\fP routine returns the current label for label number
-\fIlabnum\fP, with leading and trailing blanks stripped.
-.SS Screen updates
-.PP
-The \fBslk_refresh\fP and \fBslk_noutrefresh\fP routines correspond to
-the \fBwrefresh\fP and \fBwnoutrefresh\fP routines.
+.I align
+is
+.BR 0 ,
+.BR 1 ,
+or
+.BR 2 ,
+aligning
+.I label
+to the left,
+center,
+or right,
+respectively,
+within the 8 (5) character cells housing it.
 .PP
-The \fBslk_clear\fP routine clears the soft labels from the screen.
+\fB\%slk_label\fP obtains the string assigned to label number
+\fIlabnum\fP,
+with any leading and trailing blanks stripped.
+.SS "Screen Updates"
+\fB\%slk_refresh\fP and \fB\%slk_noutrefresh\fP affect the soft key
+label lines as \fB\%wrefresh\fP and \fB\%wnoutrefresh\fP do the
+.I curses
+window.
 .PP
-The \fBslk_restore\fP routine restores the soft labels to the screen
-after a \fBslk_clear\fP has been performed.
+The \fB\%slk_clear\fP routine clears the soft labels from the screen.
 .PP
-The \fBslk_touch\fP routine forces all the soft labels to be output
-the next time a \fBslk_noutrefresh\fP is performed.
-.SS Video attributes
+The \fB\%slk_restore\fP routine restores the soft labels to the screen
+after a \fB\%slk_clear\fP has been performed.
 .PP
+The \fB\%slk_touch\fP routine forces all the soft labels to be output
+the next time a \fB\%slk_noutrefresh\fP is performed.
+.SS "Video Attributes"
 The
-\fBslk_attron\fP, \fBslk_attrset\fP, \fBslk_attroff\fP and \fBslk_attr\fP
+\fB\%slk_attron\fP,
+\fB\%slk_attrset\fP,
+\fB\%slk_attroff\fP,
+and
+\fB\%slk_attr\fP
 routines correspond to
-\fBattron\fP, \fBattrset\fP, \fBattroff\fP and \fBattr_get\fP, respectively.
-They have an effect only if soft labels are simulated on the bottom line of
-the screen.
-The default highlight for soft keys is A_STANDOUT (as in
-System V curses, which does not document this fact).
+\fB\%attron\fP,
+\fB\%attrset\fP,
+\fB\%attroff\fP,
+and
+\fB\%attr_get\fP,
+respectively.
+They have an effect only if soft labels are simulated on the bottom line
+of the screen.
+The default highlight for soft key labels is \fB\%A_STANDOUT\fP
+(as in System\ V \fIcurses\fP,
+which does not document this fact).
 .SS Colors
-.PP
-The \fBslk_color\fP routine corresponds to \fBcolor_set\fP.
+The \fB\%slk_color\fP routine corresponds to \fB\%color_set\fP.
 It has an effect only
 if soft labels are simulated on the bottom line of the screen.
 .PP
-Because \fBslk_color\fP accepts only \fBshort\fP (signed 16-bit integer) values,
+Because \fB\%slk_color\fP accepts
+only \fIshort\fP
+(signed 16-bit integer)
+values,
 this implementation provides
-\fBextended_slk_color\fP which accepts an integer value, e.g., 32-bits.
-.
+\fB\%extended_slk_color\fP,
+which accepts an \fIint\fP value of at least 32 bits.
 .SH RETURN VALUE
-These routines return \fBERR\fP upon failure
-and \fBOK\fP (SVr4 specifies only "an integer value other than \fBERR\fP")
+Routines that return an integer return \fBERR\fP upon failure and
+\fBOK\fP
+(SVr4 specifies only
+\*(``an integer value other than \fBERR\fP\*('')
 upon successful completion.
 .PP
-X/Open defines no error conditions.
+X/Open Curses defines no error conditions.
+.PP
 In this implementation
 .RS 3
 .TP 5
 \fBslk_attr\fP
 returns the attribute used for the soft keys.
 .TP 5
-.na
-.hy 0
 \fBslk_attroff\fP, \fBslk_attron\fP, \fBslk_clear\fP, \fBslk_noutrefresh\fP, \fBslk_refresh\fP, \fBslk_touch\fP
-.ad
-.hy
 return an error
 if the terminal or the softkeys were not initialized.
 .TP 5
@@ -228,12 +238,12 @@ if the terminal or the softkeys were not initialized.
 \fBslk_attr_set\fP
 returns an error
 if the terminal or the softkeys were not initialized, or
-the color pair is outside the range 0..COLOR_PAIRS\-1.
+the color pair is outside the range 0..\fBCOLOR_PAIRS\fP\-1.
 .TP 5
 \fBslk_color\fP
 returns an error
 if the terminal or the softkeys were not initialized, or
-the color pair is outside the range 0..COLOR_PAIRS\-1.
+the color pair is outside the range 0..\fBCOLOR_PAIRS\fP\-1.
 .TP 5
 \fBslk_init\fP
 returns an error
@@ -249,68 +259,55 @@ the \fIlabnum\fP parameter is outside the range of label counts, or
 if the format parameter is outside the range 0..2, or if
 memory for the labels cannot be allocated.
 .RE
-.SH HISTORY
-SVr3 introduced these functions:
-  slk_clear
-  slk_init
-  slk_label
-  slk_noutrefresh
-  slk_refresh
-  slk_restore
-  slk_set
-  slk_touch
-.PP
-SVr4 added these functions:
-  slk_attroff
-  slk_attron
-  slk_attrset
-  slk_start
-.PP
-X/Open Curses added these:
-  slk_attr_off
-  slk_attr_on
-  slk_attr_set
-  slk_color
-  slk_wset
+.SH NOTES
+Most applications would use \fB\%slk_noutrefresh\fP because a
+\fB\%wrefresh\fP is likely to follow soon.
 .SH EXTENSIONS
-.PP
-X/Open Curses documents the \fIopts\fP argument as reserved for future use,
+X/Open Curses documents the \fIopts\fP argument
+as reserved for future use,
 saying that it must be null.
 This implementation
-uses that parameter in ABI 6 for the functions which have a color-pair
+uses that parameter in ABI 6 for the functions which have a color pair
 parameter to support extended color pairs.
 .PP
-For  functions  which modify the color, e.g., \fBslk_attr_set\fP,
-if \fIopts\fP is set it is treated as a pointer to \fBint\fP,
-and used to  set  the  color pair instead of the \fBshort\fP pair parameter.
-.SH NOTES
-Most applications would use \fBslk_noutrefresh\fP because a
-\fBwrefresh\fP is likely to follow soon.
+For functions which modify the color,
+e.g.,
+\fB\%slk_attr_set\fP,
+if \fIopts\fP is set it is treated as a pointer to \fIint\fP,
+and used to set the color pair instead of the \fIshort\fP pair
+parameter.
 .SH PORTABILITY
-The XSI Curses standard, Issue 4, described the soft-key functions,
-with some differences from SVr4 curses:
+X/Open Curses,
+Issue 4 describes these functions,
+with some differences from SVr4 \fIcurses\fP:
 .bP
-It added functions like the SVr4
-attribute-manipulation functions \fBslk_attron\fP,
-\fBslk_attroff\fP, \fBslk_attrset\fP,
-but which use \fBattr_t\fP parameters (rather than \fBchtype\fP),
+X/Open added functions like the SVr4 attribute-manipulation functions
+\fB\%slk_attron\fP,
+\fB\%slk_attroff\fP,
+and
+\fB\%slk_attrset\fP,
+but which use \fI\%attr_t\fP parameters
+(rather than \fI\%chtype\fP),
 along with a reserved \fIopts\fP parameter.
 .IP
-Two of these new functions (unlike the SVr4 functions) have no provision
-for color: \fBslk_attr_on\fP and \fBslk_attr_off\fP.
+Two of these new functions
+(unlike the SVr4 functions)
+have no provision for color:
+\fB\%slk_attr_on\fP and \fB\%slk_attr_off\fP.
 .IP
-The third function (\fBslk_attr_set\fP) has a color-pair parameter.
+The third function \%(\fBslk_attr_set\fP) has a color pair parameter.
 .bP
-It added \fBconst\fP qualifiers to parameters (unnecessarily), and
+It added \fIconst\fP qualifiers to parameters (unnecessarily),
+and
 .bP
-It added \fBslk_color\fP.
+It added \fB\%slk_color\fP.
 .PP
-Although \fBslk_start\fP is declared in the curses header file,
+Although \fB\%slk_start\fP is declared in the \fIcurses\fP header file,
 it was not documented by SVr4 other than its presence in a list
 of libtermlib.so.1 symbols.
 Reading the source code (i.e., Illumos):
 .bP
-\fBslk_start\fP has two parameters:
+\fB\%slk_start\fP has two parameters:
 .RS
 .bP
 \fIng\fP (number of groups) and
@@ -320,39 +317,63 @@ Reading the source code (i.e., Illumos):
 .bP
 Soft-key groups are an array of \fIng\fP integers.
 .bP
-In SVr4, \fBslk_init\fP calls \fBslk_start\fP passing a null for \fIgp\fP. 
-For this case, \fBslk_start\fP uses the number of groups \fIng\fP
-(3 for the 3-2-3 layout, 2 for the 4-4 layout) which \fBslk_init\fP provided.
+In SVr4, \fB\%slk_init\fP calls \fB\%slk_start\fP passing a null for \fIgp\fP.
+For this case, \fB\%slk_start\fP uses the number of groups \fIng\fP
+(3 for the 3-2-3 layout, 2 for the 4-4 layout) which \fB\%slk_init\fP provided.
 .IP
 If \fIng\fP is neither 2 or 3,
-\fBslk_start\fP checks the terminfo \fIfln\fP (label_format) capability,
+\fB\%slk_start\fP checks the terminfo \fBfln\fP (label_format) capability,
 interpreting that as a comma-separated list of numbers,
 e.g., \*(``3,2,3\*('' for the 3-2-3 layout.
 .IP
-Finally, if there is no \fIfln\fP capability, \fBslk_start\fP returns ERR.
+Finally, if there is no \fBfln\fP capability,
+\fB\%slk_start\fP returns \fBERR\fP.
 .bP
-If \fBslk_start\fP is given a non-null \fIgp\fP,
+If \fB\%slk_start\fP is given a non-null \fIgp\fP,
 it copies the \fIng\fP elements of the group of soft-keys, up to 16.
 .IP
-If there are more than 16 elements, \fBslk_start\fP returns an error.
+If there are more than 16 elements, \fB\%slk_start\fP returns an error.
 .bP
-The format codes \fB2\fP and \fB3\fP for \fBslk_init\fP
-were added by ncurses in 1996.
+The format codes \fB2\fP and \fB3\fP for \fB\%slk_init\fP
+were added by \fI\%ncurses\fP in 1996.
 PDCurses 2.4 added this feature in 2001.
 .PP
-The function \fBslk_attr\fP was added by ncurses in 1996.
+The function \fB\%slk_attr\fP was added by \fI\%ncurses\fP in 1996.
 .PP
 X/Open Curses does not specify a limit for the number of colors and
 color pairs which a terminal can support.
-However, in its use of \fBshort\fP for the parameters,
+However, in its use of \fIshort\fP for the parameters,
 it carries over SVr4's implementation detail for the compiled
 terminfo database, which uses signed 16-bit numbers.
 This implementation provides extended versions of those functions
-which use \fBint\fP parameters,
+which use \fIint\fP parameters,
 allowing applications to use larger color- and pair-numbers.
+.SH HISTORY
+SVr3 introduced these functions:
+  \fBslk_clear\fP
+  \fBslk_init\fP
+  \fBslk_label\fP
+  \fBslk_noutrefresh\fP
+  \fBslk_refresh\fP
+  \fBslk_restore\fP
+  \fBslk_set\fP
+  \fBslk_touch\fP
+.PP
+SVr4 added these functions:
+  \fBslk_attroff\fP
+  \fBslk_attron\fP
+  \fBslk_attrset\fP
+  \fBslk_start\fP
+.PP
+X/Open Curses added these:
+  \fBslk_attr_off\fP
+  \fBslk_attr_on\fP
+  \fBslk_attr_set\fP
+  \fBslk_color\fP
+  \fBslk_wset\fP
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_attr\fP(3X),
-\fBcurs_initscr\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_variables\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_attr\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_variables\fP(3X)
index 9bfc45787427f72d16a7398a2e373f2ab3d066dc..e58a48e3caeae909376fbdae17e8eb7d16c1d65b 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2010-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_sp_funcs.3x,v 1.27 2022/02/12 20:05:11 tom Exp $
-.TH curs_sp_funcs 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.na
-.hy 0
+.\" $Id: curs_sp_funcs.3x,v 1.50 2024/04/20 18:56:31 tom Exp $
+.TH curs_sp_funcs 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-curs_sp_funcs \- \fBcurses\fP screen-pointer extension
-.ad
-.hy
+\fB\%curs_sp_funcs\fP \-
+\fIcurses\fR screen-pointer extension
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
 .nf
-.sp
-\fBint alloc_pair_sp(SCREEN* \fIsp\fB, int \fIfg\fB, int \fIbg\fB);\fR
-.br
-\fBint assume_default_colors_sp(SCREEN* \fIsp\fB, int \fIfg\fB, int \fIbg\fB);\fR
-.br
-\fBint baudrate_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint beep_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBbool can_change_color_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint cbreak_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint color_content_sp(SCREEN* \fIsp\fB, short \fIcolor\fB, short* \fIr\fB, short* \fIg\fB, short* \fIb\fB);\fR
-.br
-\fBint curs_set_sp(SCREEN* \fIsp\fB, int \fIvisibility\fR);\fR
-.br
-\fBint def_prog_mode_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint def_shell_mode_sp(SCREEN* \fIsp\fB);\fR
-.sp
-\fBint define_key_sp(SCREEN* \fIsp\fB, const char * \fIdefinition\fB, int \fIkeycode\fB);\fR
-.br
-\fBint delay_output_sp(SCREEN* \fIsp\fB, int \fIms\fB);\fR
-.br
-\fBint doupdate_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint echo_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint endwin_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBchar erasechar_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint erasewchar_sp(SCREEN* \fIsp\fB, wchar_t *\fIch\fB);\fR
-.br
-\fBint extended_color_content_sp(SCREEN * \fIsp\fB, int \fIcolor\fB, int * \fIr\fB, int * \fIg\fB, int * \fIb\fB);\fR
-.br
-\fBint extended_pair_content_sp(SCREEN* \fIsp\fB, int \fIpair\fB, int * \fIfg\fB, int * \fIbg\fB);\fR
-.br
-\fBint extended_slk_color_sp(SCREEN* \fIsp\fB, int \fIpair\fB);\fR
-.sp
-\fBvoid filter_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint find_pair_sp(SCREEN* \fIsp\fB, int \fIfg\fB, int \fIbg\fB);\fR
-.br
-\fBint flash_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint flushinp_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint free_pair_sp(SCREEN* \fIsp\fB, int \fIpair\fB);\fR
-.br
-\fBint get_escdelay_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint getmouse_sp(SCREEN* \fIsp\fB, MEVENT* \fBevent\fB);\fR
-.br
-\fBWINDOW* getwin_sp(SCREEN* \fIsp\fB, FILE* \fIfilep\fB);\fR
-.br
-\fBint halfdelay_sp(SCREEN* \fIsp\fB, int \fItenths\fB);\fR
-.br
-\fBbool has_colors_sp(SCREEN* \fIsp\fB);\fR
-.sp
-\fBbool has_ic_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBbool has_il_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint has_key_sp(SCREEN* \fIsp\fB, int \fIch\fB);\fR
-.br
-\fBbool has_mouse_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint init_color_sp(SCREEN* \fIsp\fB, short \fIcolor\fB, short \fIr\fB, short \fIg\fB, short \fIb\fB);\fR
-.br
-\fBint init_extended_color_sp(SCREEN* \fIsp\fB, int \fIcolor\fB, int \fIr\fB, int \fIg\fB, int \fIb\fB);\fR
-.br
-\fBint init_extended_pair_sp(SCREEN* \fIsp\fB, int \fIpair\fB, int \fIfg\fB, int \fIbg\fB);\fR
-.br
-\fBint init_pair_sp(SCREEN* \fIsp\fB, short \fIpair\fB, short \fIfg\fB, short \fIbg\fB);\fR
-.br
-\fBint intrflush_sp(SCREEN* \fIsp\fB, WINDOW* \fIwin\fB, bool \fIbf\fB);\fR
-.br
-\fBbool is_term_resized_sp(SCREEN* \fIsp\fB, int \fIlines\fB, int \fIcolumns\fB);\fR
-.sp
-\fBbool isendwin_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint key_defined_sp(SCREEN* \fIsp\fB, const char *\fIdefinition\fB);\fR
-.br
-\fBchar* keybound_sp(SCREEN* \fIsp\fB, int \fIkeycode\fB, int \fIcount\fB);\fR
-.br
-\fBNCURSES_CONST char * keyname_sp(SCREEN* \fIsp\fB, int \fIc\fB);\fR
-.br
-\fBint keyok_sp(SCREEN* \fIsp\fB, int \fIkeycode\fB, bool \fIenable\fB);\fR
-.br
-\fBchar killchar_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint killwchar_sp(SCREEN* \fIsp\fB, wchar_t *\fIch\fB);\fR
-.br
-\fBchar* longname_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint mcprint_sp(SCREEN* \fIsp\fB, char *\fIdata\fB, int \fIlen\fB);\fR
-.br
-\fBint mouseinterval_sp(SCREEN* \fIsp\fB, int \fIerval\fB);\fR
-.sp
-\fBmmask_t mousemask_sp(SCREEN* \fIsp\fB, mmask_t \fInewmask\fB, mmask_t *\fIoldmask\fB);\fR
-.br
-\fBint mvcur_sp(SCREEN* \fIsp\fB, int \fIoldrow\fB, int \fIoldcol\fB, int \fInewrow\fB, int \fInewcol\fB);\fR
-.br
-\fBint napms_sp(SCREEN* \fIsp\fB, int \fIms\fB);\fR
-.br
-\fBWINDOW* newpad_sp(SCREEN* \fIsp\fB, int \fInrows\fB, int \fIncols\fB);\fR
-.br
-\fBSCREEN* new_prescr(void);\fP
-.br
-\fBSCREEN* newterm_sp(SCREEN* \fIsp\fB, const char *\fItype\fB, FILE *\fIoutfd\fB, FILE *\fIinfd\fB);\fR
-.br
-\fBWINDOW* newwin_sp(SCREEN* \fIsp\fB, int \fInlines\fB, int \fIncols\fB, int \fIbegin_y\fB, int \fIbegin_x\fB);\fR
-.br
-\fBint nl_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint nocbreak_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint noecho_sp(SCREEN* \fIsp\fB);\fR
-.sp
-\fBvoid nofilter_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint nonl_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBvoid noqiflush_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint noraw_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint pair_content_sp(SCREEN* \fIsp\fB, short \fIpair\fB, short* \fIfg\fB, short* \fIbg\fB);\fR
-.br
-\fBvoid qiflush_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint raw_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint reset_prog_mode_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBvoid reset_color_pairs_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint reset_shell_mode_sp(SCREEN* \fIsp\fB);\fR
-.sp
-\fBint resetty_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint resize_term_sp(SCREEN* \fIsp\fB, int \fIlines\fB, int \fIcolumns\fB);\fR
-.br
-\fBint resizeterm_sp(SCREEN* \fIsp\fB, int \fIlines\fB, int \fIcolumns\fB);\fR
-.br
-\fBint ripoffline_sp(SCREEN* \fIsp\fB, int \fIline\fB, int (*\fIinit\fB)(WINDOW* \fIwin\fB, int \fIfmt\fB));\fR
-.br
-\fBint savetty_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint scr_init_sp(SCREEN* \fIsp\fB, const char *\fIfilename\fB);\fR
-.br
-\fBint scr_restore_sp(SCREEN* \fIsp\fB, const char *\fIfilename\fB);\fR
-.br
-\fBint scr_set_sp(SCREEN* \fIsp\fB, const char *\fIfilename\fB);\fR
-.br
-\fBint set_escdelay_sp(SCREEN* \fIsp\fB, int \fIms\fB);\fR
-.br
-\fBint set_tabsize_sp(SCREEN* \fIsp\fB, int \fIcols\fB);\fR
-.sp
-\fBint slk_attr_set_sp(SCREEN* \fIsp\fB, const attr_t \fIattrs\fB, short \fIpair\fB, void*\fIopts\fB);\fR
-.br
-\fBint slk_attrset_sp(SCREEN* \fIsp\fB, const chtype \fIa\fB);\fR
-.br
-\fBint slk_attroff_sp(SCREEN* \fIsp\fB, const chtype \fIa\fB);\fR
-.br
-\fBint slk_attron_sp(SCREEN* \fIsp\fB, const chtype \fIa\fB);\fR
-.br
-\fBattr_t slk_attr_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint slk_clear_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint slk_color_sp(SCREEN* \fIsp\fB, short \fIpair\fB);\fR
-.br
-\fBint slk_init_sp(SCREEN* \fIsp\fB, int \fIfmt\fB);\fR
-.br
-\fBchar* slk_label_sp(SCREEN* \fIsp\fB, int \fIlabnum\fB);\fR
-.br
-\fBint slk_noutrefresh_sp(SCREEN* \fIsp\fB);\fR
-.sp
-\fBint slk_refresh_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint slk_restore_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint slk_set_sp(SCREEN* \fIsp\fB, int \fIlabnum\fB, const char * \fIlabel\fB, int \fIfmt\fB);\fR
-.br
-\fBint slk_touch_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint start_color_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBattr_t term_attrs_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBchtype termattrs_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBchar* termname_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBint typeahead_sp(SCREEN* \fIsp\fB, int \fIfd\fB);\fR
-.br
-\fBint unget_wch_sp(SCREEN* \fIsp\fB, const wchar_t \fIwch\fB);\fR
-.sp
-\fBint ungetch_sp(SCREEN* \fIsp\fB, int \fIch\fB);\fR
-.br
-\fBint ungetmouse_sp(SCREEN* \fIsp\fB,MEVENT * \fBevent\fB);\fR
-.br
-\fBint use_default_colors_sp(SCREEN* \fIsp\fB);\fR
-.br
-\fBvoid use_env_sp(SCREEN* \fIsp\fB, bool \fIbf\fB);\fR
-.br
-\fBint use_legacy_coding_sp(SCREEN* \fIsp\fB, int \fIlevel\fB);\fR
-.br
-\fBvoid use_tioctl_sp(SCREEN *\fIsp\fB, bool \fIbf\fB);\fR
-.br
-\fBint vid_attr_sp(SCREEN* \fIsp\fB, attr_t \fIattrs\fB, short \fIpair\fB, void * \fIopts\fB);\fR
-.br
-\fBint vid_puts_sp(SCREEN* \fIsp\fB, attr_t \fIattrs\fB, short \fIpair\fB, void * \fIopts\fB, NCURSES_SP_OUTC \fIputc\fB);\fR
-.br
-\fBint vidattr_sp(SCREEN* \fIsp\fB, chtype \fIattrs\fB);\fR
-.br
-\fBint vidputs_sp(SCREEN* \fIsp\fB, chtype \fIattrs\fB, NCURSES_SP_OUTC \fIputc\fB);\fR
-.br
-\fBwchar_t* wunctrl_sp(SCREEN* \fIsp\fB, cchar_t *\fIch\fB);\fR
-.sp
-\fB#include <form.h>\fP
-.sp
-\fBFORM* new_form_sp(SCREEN* \fIsp\fB, FIELD **\fIfields\fB);\fR
-.sp
-\fB#include <menu.h>\fP
-.sp
-\fBMENU* new_menu_sp(SCREEN* \fIsp\fB, ITEM **\fIitems\fB);\fR
-.sp
-\fB#include <panel.h>\fP
-.sp
-\fBPANEL* ceiling_panel(SCREEN* \fIsp\fB);\fR
-.br
-\fBPANEL* ground_panel(SCREEN* \fIsp\fB);\fR
-.br
-\fBvoid update_panels_sp(SCREEN* \fIsp\fB);\fR
-.sp
-\fB#include <term.h>\fP
-.sp
-\fBint del_curterm_sp(SCREEN* \fIsp\fB, TERMINAL *\fIoterm\fB);\fR
-.br
-\fBint putp_sp(SCREEN* \fIsp\fB, const char *\fIstr\fB);\fR
-.br
-\fBint restartterm_sp(SCREEN* \fIsp\fB, NCURSES_CONST char*\fIterm\fB, int \fIfiledes\fB, int *\fIerrret\fB);\fR
-.br
-\fBTERMINAL* set_curterm_sp(SCREEN* \fIsp\fB, TERMINAL*\fInterm\fB);\fR
-.br
-\fBint tgetent_sp(SCREEN* \fIsp\fB, char *\fIbp\fB, const char *\fIname\fB);\fR
-.br
-\fBint tgetflag_sp(SCREEN* \fIsp\fB, const char *\fIcapname\fB);\fR
-.br
-\fBint tgetnum_sp(SCREEN* \fIsp\fB, const char *\fIcapname\fB);\fR
-.br
-\fBchar* tgetstr_sp(SCREEN* \fIsp\fB, const char *\fIcapname\fB, char **\fIarea\fB);\fR
-.br
-\fBchar* tgoto_sp(SCREEN* \fIsp\fB, const char *\fIcapname\fB, int \fIcol\fB, int \fIrow\fB);\fR
-.br
-\fBint tigetflag_sp(SCREEN* \fIsp\fB, const char *\fIcapname\fB);\fR
-.br
-\fBint tigetnum_sp(SCREEN* \fIsp\fB, const char *\fIcapname\fB);\fR
-.br
-\fBchar* tigetstr_sp(SCREEN* \fIsp\fB, const char *\fIcapname\fB);\fR
-.br
-\fR/* may instead use 9 long parameters */\fP
-.br
-\fBchar* tparm_sp(SCREEN* \fIsp\fB, const char *\fIstr\fB, ...);\fR
-.br
-\fBint tputs_sp(SCREEN* \fIsp\fB, const char *\fIstr\fB, int \fIaffcnt\fB, NCURSES_SP_OUTC \fIputc\fB);\fR
-.sp
-\fB#include <unctrl.h>\fP
-.sp
-\fBNCURSES_CONST char* unctrl_sp(SCREEN* \fIsp\fB, chtype \fIc\fB);\fR
-.ad
-.br
+\fB#include <curses.h>
+.PP
+\fBint alloc_pair_sp(SCREEN* \fIsp\fP, int \fIfg\fP, int \fIbg\fP);
+\fBint assume_default_colors_sp(SCREEN* \fIsp\fP, int \fIfg\fP, int \fIbg\fP);
+\fBint baudrate_sp(SCREEN* \fIsp\fP);
+\fBint beep_sp(SCREEN* \fIsp\fP);
+\fBbool can_change_color_sp(SCREEN* \fIsp\fP);
+\fBint cbreak_sp(SCREEN* \fIsp\fP);
+\fBint color_content_sp(SCREEN* \fIsp\fP, short \fIcolor\fP, short* \fIr\fP, short* \fIg\fP, short* \fIb\fP);
+\fBint curs_set_sp(SCREEN* \fIsp\fP, int \fIvisibility\fP);
+\fBint def_prog_mode_sp(SCREEN* \fIsp\fP);
+\fBint def_shell_mode_sp(SCREEN* \fIsp\fP);
+.PP
+\fBint define_key_sp(SCREEN* \fIsp\fP, const char * \fIdefinition\fP, int \fIkeycode\fP);
+\fBint delay_output_sp(SCREEN* \fIsp\fP, int \fIms\fP);
+\fBint doupdate_sp(SCREEN* \fIsp\fP);
+\fBint echo_sp(SCREEN* \fIsp\fP);
+\fBint endwin_sp(SCREEN* \fIsp\fP);
+\fBchar erasechar_sp(SCREEN* \fIsp\fP);
+\fBint erasewchar_sp(SCREEN* \fIsp\fP, wchar_t *\fIwc\fP);
+\fBint extended_color_content_sp(SCREEN * \fIsp\fP, int \fIcolor\fP, int * \fIr\fP, int * \fIg\fP, int * \fIb\fP);
+\fBint extended_pair_content_sp(SCREEN* \fIsp\fP, int \fIpair\fP, int * \fIfg\fP, int * \fIbg\fP);
+\fBint extended_slk_color_sp(SCREEN* \fIsp\fP, int \fIpair\fP);
+.PP
+\fBvoid filter_sp(SCREEN* \fIsp\fP);
+\fBint find_pair_sp(SCREEN* \fIsp\fP, int \fIfg\fP, int \fIbg\fP);
+\fBint flash_sp(SCREEN* \fIsp\fP);
+\fBint flushinp_sp(SCREEN* \fIsp\fP);
+\fBint free_pair_sp(SCREEN* \fIsp\fP, int \fIpair\fP);
+\fBint get_escdelay_sp(SCREEN* \fIsp\fP);
+\fBint getmouse_sp(SCREEN* \fIsp\fP, MEVENT* \fIevent\fP);
+\fBWINDOW* getwin_sp(SCREEN* \fIsp\fP, FILE* \fIfilep\fP);
+\fBint halfdelay_sp(SCREEN* \fIsp\fP, int \fItenths\fP);
+\fBbool has_colors_sp(SCREEN* \fIsp\fP);
+.PP
+\fBbool has_ic_sp(SCREEN* \fIsp\fP);
+\fBbool has_il_sp(SCREEN* \fIsp\fP);
+\fBint has_key_sp(SCREEN* \fIsp\fP, int \fIc\fP);
+\fBbool has_mouse_sp(SCREEN* \fIsp\fP);
+\fBint init_color_sp(SCREEN* \fIsp\fP, short \fIcolor\fP, short \fIr\fP, short \fIg\fP, short \fIb\fP);
+\fBint init_extended_color_sp(SCREEN* \fIsp\fP, int \fIcolor\fP, int \fIr\fP, int \fIg\fP, int \fIb\fP);
+\fBint init_extended_pair_sp(SCREEN* \fIsp\fP, int \fIpair\fP, int \fIfg\fP, int \fIbg\fP);
+\fBint init_pair_sp(SCREEN* \fIsp\fP, short \fIpair\fP, short \fIfg\fP, short \fIbg\fP);
+\fBint intrflush_sp(SCREEN* \fIsp\fP, WINDOW* \fIwin\fP, bool \fIbf\fP);
+\fBint is_cbreak_sp(SCREEN* \fIsp\fP);
+.PP
+\fBint is_echo_sp(SCREEN* \fIsp\fP);
+\fBint is_nl_sp(SCREEN* \fIsp\fP);
+\fBint is_raw_sp(SCREEN* \fIsp\fP);
+\fBbool is_term_resized_sp(SCREEN* \fIsp\fP, int \fIlines\fP, int \fIcolumns\fP);
+\fBbool isendwin_sp(SCREEN* \fIsp\fP);
+\fBint key_defined_sp(SCREEN* \fIsp\fP, const char *\fIdefinition\fP);
+\fBchar* keybound_sp(SCREEN* \fIsp\fP, int \fIkeycode\fP, int \fIcount\fP);
+\fBNCURSES_CONST char* keyname_sp(SCREEN* \fIsp\fP, int \fIc\fP);
+\fBint keyok_sp(SCREEN* \fIsp\fP, int \fIkeycode\fP, bool \fIenable\fP);
+\fBchar killchar_sp(SCREEN* \fIsp\fP);
+.PP
+\fBint killwchar_sp(SCREEN* \fIsp\fP, wchar_t *\fIwc\fP);
+\fBchar* longname_sp(SCREEN* \fIsp\fP);
+\fBint mcprint_sp(SCREEN* \fIsp\fP, char *\fIdata\fP, int \fIlen\fP);
+\fBint mouseinterval_sp(SCREEN* \fIsp\fP, int \fIerval\fP);
+\fBmmask_t mousemask_sp(SCREEN* \fIsp\fP, mmask_t \fInewmask\fP, mmask_t *\fIoldmask\fP);
+\fBint mvcur_sp(SCREEN* \fIsp\fP, int \fIoldrow\fP, int \fIoldcol\fP, int \fInewrow\fP, int \fInewcol\fP);
+\fBint napms_sp(SCREEN* \fIsp\fP, int \fIms\fP);
+\fBWINDOW* newpad_sp(SCREEN* \fIsp\fP, int \fInrows\fP, int \fIncols\fP);
+\fBSCREEN* new_prescr(void);
+\fBSCREEN* newterm_sp(SCREEN* \fIsp\fP, const char *\fItype\fP, FILE *\fIoutfd\fP, FILE *\fIinfd\fP);
+.PP
+\fBWINDOW* newwin_sp(SCREEN* \fIsp\fP, int \fInlines\fP, int \fIncols\fP, int \fIbegin_y\fP, int \fIbegin_x\fP);
+\fBint nl_sp(SCREEN* \fIsp\fP);
+\fBint nocbreak_sp(SCREEN* \fIsp\fP);
+\fBint noecho_sp(SCREEN* \fIsp\fP);
+\fBvoid nofilter_sp(SCREEN* \fIsp\fP);
+\fBint nonl_sp(SCREEN* \fIsp\fP);
+\fBvoid noqiflush_sp(SCREEN* \fIsp\fP);
+\fBint noraw_sp(SCREEN* \fIsp\fP);
+\fBint pair_content_sp(SCREEN* \fIsp\fP, short \fIpair\fP, short* \fIfg\fP, short* \fIbg\fP);
+\fBvoid qiflush_sp(SCREEN* \fIsp\fP);
+.PP
+\fBint raw_sp(SCREEN* \fIsp\fP);
+\fBvoid reset_color_pairs_sp(SCREEN* \fIsp\fP);
+\fBint reset_prog_mode_sp(SCREEN* \fIsp\fP);
+\fBint reset_shell_mode_sp(SCREEN* \fIsp\fP);
+\fBint resetty_sp(SCREEN* \fIsp\fP);
+\fBint resize_term_sp(SCREEN* \fIsp\fP, int \fIlines\fP, int \fIcolumns\fP);
+\fBint resizeterm_sp(SCREEN* \fIsp\fP, int \fIlines\fP, int \fIcolumns\fP);
+\fBint ripoffline_sp(SCREEN* \fIsp\fP, int \fIline\fP, int (*\fIinit\fP)(WINDOW* \fIwin\fP, int \fIfmt\fP));
+\fBint savetty_sp(SCREEN* \fIsp\fP);
+\fBint scr_init_sp(SCREEN* \fIsp\fP, const char *\fIfilename\fP);
+.PP
+\fBint scr_restore_sp(SCREEN* \fIsp\fP, const char *\fIfilename\fP);
+\fBint scr_set_sp(SCREEN* \fIsp\fP, const char *\fIfilename\fP);
+\fBint set_escdelay_sp(SCREEN* \fIsp\fP, int \fIms\fP);
+\fBint set_tabsize_sp(SCREEN* \fIsp\fP, int \fIcols\fP);
+\fBint slk_attrset_sp(SCREEN* \fIsp\fP, const chtype \fIa\fP);
+\fBint slk_attr_set_sp(SCREEN* \fIsp\fP, const attr_t \fIattrs\fP, short \fIpair\fP, void*\fIopts\fP);
+\fBint slk_attroff_sp(SCREEN* \fIsp\fP, const chtype \fIa\fP);
+\fBint slk_attron_sp(SCREEN* \fIsp\fP, const chtype \fIa\fP);
+\fBattr_t slk_attr_sp(SCREEN* \fIsp\fP);
+\fBint slk_clear_sp(SCREEN* \fIsp\fP);
+.PP
+\fBint slk_color_sp(SCREEN* \fIsp\fP, short \fIpair\fP);
+\fBint slk_init_sp(SCREEN* \fIsp\fP, int \fIfmt\fP);
+\fBchar* slk_label_sp(SCREEN* \fIsp\fP, int \fIlabnum\fP);
+\fBint slk_noutrefresh_sp(SCREEN* \fIsp\fP);
+\fBint slk_refresh_sp(SCREEN* \fIsp\fP);
+\fBint slk_restore_sp(SCREEN* \fIsp\fP);
+\fBint slk_set_sp(SCREEN* \fIsp\fP, int \fIlabnum\fP, const char * \fIlabel\fP, int \fIfmt\fP);
+\fBint slk_touch_sp(SCREEN* \fIsp\fP);
+\fBint start_color_sp(SCREEN* \fIsp\fP);
+\fBattr_t term_attrs_sp(SCREEN* \fIsp\fP);
+.PP
+\fBchtype termattrs_sp(SCREEN* \fIsp\fP);
+\fBchar* termname_sp(SCREEN* \fIsp\fP);
+\fBint typeahead_sp(SCREEN* \fIsp\fP, int \fIfd\fP);
+\fBint unget_wch_sp(SCREEN* \fIsp\fP, const wchar_t \fIwc\fP);
+\fBint ungetch_sp(SCREEN* \fIsp\fP, int \fIc\fP);
+\fBint ungetmouse_sp(SCREEN* \fIsp\fP, MEVENT* \fIevent\fP);
+\fBint use_default_colors_sp(SCREEN* \fIsp\fP);
+\fBvoid use_env_sp(SCREEN* \fIsp\fP, bool \fIbf\fP);
+\fBint use_legacy_coding_sp(SCREEN* \fIsp\fP, int \fIlevel\fP);
+\fBvoid use_tioctl_sp(SCREEN *\fIsp\fP, bool \fIbf\fP);
+.PP
+\fBint vid_attr_sp(SCREEN* \fIsp\fP, attr_t \fIattrs\fP, short \fIpair\fP, void * \fIopts\fP);
+\fBint vid_puts_sp(SCREEN* \fIsp\fP, attr_t \fIattrs\fP, short \fIpair\fP, void * \fIopts\fP, NCURSES_SP_OUTC \fIputc\fP);
+\fBint vidattr_sp(SCREEN* \fIsp\fP, chtype \fIattrs\fP);
+\fBint vidputs_sp(SCREEN* \fIsp\fP, chtype \fIattrs\fP, NCURSES_SP_OUTC \fIputc\fP);
+\fBwchar_t* wunctrl_sp(SCREEN* \fIsp\fP, cchar_t *\fIwch\fP);
+.PP
+\fB#include <form.h>
+.PP
+\fBFORM* new_form_sp(SCREEN* \fIsp\fP, FIELD **\fIfields\fP);
+.PP
+\fB#include <menu.h>
+.PP
+\fBMENU* new_menu_sp(SCREEN* \fIsp\fP, ITEM **\fIitems\fP);
+.PP
+\fB#include <panel.h>
+.PP
+\fBPANEL* ceiling_panel(SCREEN* \fIsp\fP);
+\fBPANEL* ground_panel(SCREEN* \fIsp\fP);
+\fBvoid update_panels_sp(SCREEN* \fIsp\fP);
+.PP
+\fB#include <term.h>
+.PP
+\fBint del_curterm_sp(SCREEN* \fIsp\fP, TERMINAL *\fIoterm\fP);
+\fBint putp_sp(SCREEN* \fIsp\fP, const char *\fIstr\fP);
+\fBint restartterm_sp(SCREEN* \fIsp\fP, NCURSES_CONST char*\fIterm\fP, int \fIfiledes\fP, int *\fIerrret\fP);
+\fBTERMINAL* set_curterm_sp(SCREEN* \fIsp\fP, TERMINAL*\fInterm\fP);
+\fBint tgetent_sp(SCREEN* \fIsp\fP, char *\fIbp\fP, const char *\fIname\fP);
+\fBint tgetflag_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP);
+\fBint tgetnum_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP);
+\fBchar* tgetstr_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP, char **\fIarea\fP);
+\fBchar* tgoto_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP, int \fIcol\fP, int \fIrow\fP);
+\fBint tigetflag_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP);
+.PP
+\fBint tigetnum_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP);
+\fBchar* tigetstr_sp(SCREEN* \fIsp\fP, const char *\fIcapname\fP);
+\fI/* tparm_sp may use 9 long parameters rather than being variadic */
+\fBchar* tparm_sp(SCREEN* \fIsp\fP, const char *\fIstr\fP, ...);
+\fBint tputs_sp(SCREEN* \fIsp\fP, const char *\fIstr\fP, int \fIaffcnt\fP, NCURSES_SP_OUTC \fIputc\fP);
+.PP
+\fB#include <unctrl.h>
+.PP
+\fBNCURSES_CONST char* unctrl_sp(SCREEN* \fIsp\fP, chtype \fIch\fP);
+.fi
 .SH DESCRIPTION
 This implementation can be configured to provide a set of functions which
 improve the ability to manage multiple screens.
-This feature can be added to any of the configurations supported by ncurses;
-it adds new entrypoints
+This feature can be added to any of the configurations supported by
+\fI\%ncurses\fP;
+it adds new symbols
 without changing the meaning of any of the existing ones.
-.PP
 .\" ***************************************************************************
-.SS IMPROVED FUNCTIONS
+.SS "Improved Functions"
 Most of the functions are new versions of existing functions.
 A parameter is added at the front of the parameter list.
-It is a SCREEN pointer.
+It is a \fISCREEN\fP pointer.
 .PP
 The existing functions all use the current screen,
 which is a static variable.
@@ -337,7 +229,7 @@ The extended functions use the specified screen,
 thereby reducing the number of variables which must be modified
 to update multiple screens.
 .\" ***************************************************************************
-.SS NEW FUNCTIONS
+.SS "New Functions"
 Here are the new functions:
 .TP 5
 ceiling_panel
@@ -353,8 +245,8 @@ With the screen-pointer extension,
 there are situations where it must create a current screen before
 the unextended library does.
 The \fBnew_prescr\fP function is used internally to handle these cases.
-It is also provided as an entrypoint to allow applications to customize
-the library initialization.
+It is also provided to allow applications to customize library
+initialization.
 .\" ***************************************************************************
 .SH NOTES
 This extension introduces some new names:
@@ -367,7 +259,8 @@ to make it useful for checking if the extension is provided.
 NCURSES_SP_NAME
 The new functions are named using the macro \fINCURSES_SP_NAME\fP,
 which hides the actual implementation.
-Currently this adds a \*(``_sp\*('' suffix to the name of the unextended function.
+Currently this adds a \*(``_sp\*('' suffix
+to the name of the unextended function.
 This manual page indexes the extensions showing the full name.
 However the proper usage of these functions uses the macro,
 to provide for the possibility of changing the naming convention
@@ -380,13 +273,12 @@ where an \fINCURSES_OUTC\fP is used in the unextended library.
 NCURSES_OUTC
 This is a function-pointer type used for the cases where a function passes
 characters to the output stream, e.g., \fBvidputs\fP(3X).
-.PP
 .SH PORTABILITY
-These routines are specific to ncurses.
+These routines are specific to \fI\%ncurses\fP.
 They were not supported on Version 7, BSD or System V implementations.
-It is recommended that any code depending on ncurses extensions
+It is recommended that any code depending on \fI\%ncurses\fP extensions
 be conditioned using \fINCURSES_SP_FUNCS\fP.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_opaque\fP(3X),
-\fBcurs_threads\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_opaque\fP(3X),
+\fB\%curs_threads\fP(3X)
index 017dbe4b318ffcb36a766c493e62b19f62ce6a0b..dacd3b0f4d84bdf5d98b3d04d1d387f8451d82ae 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_termattrs.3x,v 1.19 2022/02/12 20:05:11 tom Exp $
-.TH curs_termattrs 3X ""
+.\" $Id: curs_termattrs.3x,v 1.41 2024/04/20 21:20:07 tom Exp $
+.TH curs_termattrs 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBbaudrate\fP,
-\fBerasechar\fP,
-\fBerasewchar\fP,
-\fBhas_ic\fP,
-\fBhas_il\fP,
-\fBkillchar\fP,
-\fBkillwchar\fP,
-\fBlongname\fP,
-\fBterm_attrs\fP,
-\fBtermattrs\fP,
-\fBtermname\fP \- \fBcurses\fP environment query routines
+\fB\%baudrate\fP,
+\fB\%erasechar\fP,
+\fB\%erasewchar\fP,
+\fB\%has_ic\fP,
+\fB\%has_il\fP,
+\fB\%killchar\fP,
+\fB\%killwchar\fP,
+\fB\%longname\fP,
+\fB\%term_attrs\fP,
+\fB\%termattrs\fP,
+\fB\%termname\fP \-
+\fIcurses\fR environment query routines
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
+.nf
+\fB#include <curses.h>
 .PP
-\fBint baudrate(void);\fP
-.br
-\fBchar erasechar(void);\fP
-.br
-\fBint erasewchar(wchar_t *\fIch\fB);\fR
-.br
-\fBbool has_ic(void);\fP
-.br
-\fBbool has_il(void);\fP
-.br
-\fBchar killchar(void);\fP
-.br
-\fBint killwchar(wchar_t *\fIch\fB);\fR
-.br
-\fBchar *longname(void);\fP
-.br
-\fBattr_t term_attrs(void);\fP
-.br
-\fBchtype termattrs(void);\fP
-.br
-\fBchar *termname(void);\fP
-.br
+\fBint baudrate(void);
+\fBchar erasechar(void);
+\fBint erasewchar(wchar_t *\fIwc\fP);
+\fBbool has_ic(void);
+\fBbool has_il(void);
+\fBchar killchar(void);
+\fBint killwchar(wchar_t *\fIwc\fP);
+\fBchar *longname(void);
+\fBattr_t term_attrs(void);
+\fBchtype termattrs(void);
+\fBchar *termname(void);
+.fi
 .SH DESCRIPTION
 .SS baudrate
 The \fBbaudrate\fP routine returns the output speed of the terminal.
 The
 number returned is in bits per second, for example \fB9600\fP, and is an
 integer.
-.SS erasechar, erasewchar
-.PP
+.SS "erasechar, erasewchar"
 The \fBerasechar\fP routine returns the user's current erase character.
 .PP
 The \fBerasewchar\fP routine stores the current erase character
-in the location referenced by \fIch\fP.
+in the location referenced by \fIwc\fP.
 If no erase character has been defined, the routine fails
-and the location referenced by \fIch\fP is not changed.
-.SS has_is, has_il
-.PP
+and the location referenced by \fIwc\fP is not changed.
+.SS "has_ic, has_il"
 The \fBhas_ic\fP routine is true if the terminal has insert- and delete-
 character capabilities.
 .PP
@@ -89,17 +79,15 @@ The \fBhas_il\fP routine is true if the terminal has insert- and delete-line
 capabilities, or can simulate them using scrolling regions.
 This might
 be used to determine if it would be appropriate to turn on physical
-scrolling using \fBscrollok\fP.
-.SS killchar, killwchar
-.PP
+scrolling using \fBscrollok\fP(3X).
+.SS "killchar, killwchar"
 The \fBkillchar\fP routine returns the user's current line kill character.
 .PP
 The \fBkillwchar\fP routine stores the current line-kill character
-in the location referenced by \fIch\fP.
+in the location referenced by \fIwc\fP.
 If no line-kill character has been defined,
-the routine fails and the location referenced by \fIch\fP is not changed.
+the routine fails and the location referenced by \fIwc\fP is not changed.
 .SS longname
-.PP
 The \fBlongname\fP routine returns a pointer to a static area
 containing a verbose description of the current terminal.
 The maximum
@@ -110,8 +98,7 @@ overwritten by each call to \fBnewterm\fP and is not restored by
 \fBset_term\fP, so the value should be saved between calls to
 \fBnewterm\fP if \fBlongname\fP is going to be used with multiple
 terminals.
-.SS termattrs, term_attrs
-.PP
+.SS "termattrs, term_attrs"
 If a given terminal does not support a video attribute that an
 application program is trying to use, \fBcurses\fP may substitute a
 different video attribute for it.
@@ -121,7 +108,6 @@ terminal using \fBA_\fP and \fBWA_\fP constants respectively.
 This information is useful when a \fBcurses\fP program
 needs complete control over the appearance of the screen.
 .SS termname
-.PP
 The \fBtermname\fP routine returns the terminal name used by \fBsetupterm\fP.
 .SH RETURN VALUE
 \fBlongname\fP and \fBtermname\fP return \fBNULL\fP on error.
@@ -132,10 +118,12 @@ completion.
 .SH NOTES
 Note that \fBtermattrs\fP may be a macro.
 .SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions.
+X/Open Curses, Issue 4 describes these functions.
 It changes the
 return type of \fBtermattrs\fP to the new type \fBattr_t\fP.
 Most versions of curses truncate the result returned by \fBtermname\fP to
 14 characters.
 .SH SEE ALSO
-\fBcurses\fP(3X), \fBcurs_initscr\fP(3X), \fBcurs_outopts\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_outopts\fP(3X)
index e073d940cdd29003d908423090e2339a3653ea22..6bd2a66a0b55e025e7731df8489441183468ea75 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2022,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_termcap.3x,v 1.56 2022/02/12 20:05:11 tom Exp $
-.TH curs_termcap 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_termcap.3x,v 1.85 2024/04/20 19:13:12 tom Exp $
+.TH curs_termcap 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
-.ds n 5
+.
 .SH NAME
-\fBPC\fP,
-\fBUP\fP,
-\fBBC\fP,
-\fBospeed\fP,
-\fBtgetent\fP,
-\fBtgetflag\fP,
-\fBtgetnum\fP,
-\fBtgetstr\fP,
-\fBtgoto\fP,
-\fBtputs\fP \- \fBcurses\fP emulation of termcap
-.ad
-.hy
+\fB\%PC\fP,
+\fB\%UP\fP,
+\fB\%BC\fP,
+\fB\%ospeed\fP,
+\fB\%tgetent\fP,
+\fB\%tgetflag\fP,
+\fB\%tgetnum\fP,
+\fB\%tgetstr\fP,
+\fB\%tgoto\fP,
+\fB\%tputs\fP \-
+\fIcurses\fR emulation of \fItermcap\fR
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.br
-\fB#include <term.h>\fP
-.sp
-\fBextern char PC;\fP
-.br
-\fBextern char * UP;\fP
-.br
-\fBextern char * BC;\fP
-.br
-\fBextern @NCURSES_OSPEED@ ospeed;\fP
-.sp
-\fBint tgetent(char *\fIbp\fB, const char *\fIname\fB);\fR
-.br
-\fBint tgetflag(const char *\fIid\fB);\fR
-.br
-\fBint tgetnum(const char *\fIid\fB);\fR
-.br
-\fBchar *tgetstr(const char *\fIid\fB, char **\fIarea\fB);\fR
-.br
-\fBchar *tgoto(const char *\fIcap\fB, int \fIcol\fB, int \fIrow\fB);\fR
-.br
-\fBint tputs(const char *\fIstr\fB, int \fIaffcnt\fB, int (*\fIputc\fB)(int));\fR
-.br
+.nf
+\fB#include <curses.h>
+\fB#include <term.h>
+.PP
+\fBchar PC;
+\fBchar * UP;
+\fBchar * BC;
+\fB@NCURSES_OSPEED@ ospeed;
+.PP
+\fBint tgetent(char *\fIbp\fP, const char *\fIname\fP);
+\fBint tgetflag(const char *\fIid\fP);
+\fBint tgetnum(const char *\fIid\fP);
+\fBchar *tgetstr(const char *\fIid\fP, char **\fIarea\fP);
+\fBchar *tgoto(const char *\fIcap\fP, int \fIcol\fP, int \fIrow\fP);
+\fBint tputs(const char *\fIstr\fP, int \fIaffcnt\fP, int (*\fIputc\fP)(int));
+.fi
 .SH DESCRIPTION
-These routines are included as a conversion aid for programs that use
-the \fItermcap\fP library.
-Their parameters are the same, but the
-routines are emulated using the \fIterminfo\fP database.
-Thus, they
-can only be used to query the capabilities of entries for which a
-terminfo entry has been compiled.
+.I \%ncurses
+provides the foregoing variables and functions as a compatibility layer
+for programs that use the \fItermcap\fP library.
+The API is the same,
+but behavior is emulated using the \fI\%term\%info\fP database.
+Thus,
+it can be used only to query the capabilities of terminal database
+entries for which a \fI\%term\%info\fP entry has been compiled.
 .SS Initialization
-.PP
-The \fBtgetent\fP routine loads the entry for \fIname\fP.
-It returns:
+\fB\%tgetent\fP loads the terminal database entry for \fIname\fP;
+see \fBterm\fP(7).
+This must be done before calling any of the other functions.
+It returns
 .RS 3
-.TP 3
+.TP 5 \" "-1" + 2n + adjust for PDF
 1
 on success,
-.TP 3
+.TP
 0
 if there is no such entry
-(or that it is a generic type, having too little information for curses
-applications to run), and
-.TP 3
+(or if the matching entry describes a generic terminal,
+having too little information for
+.I curses
+applications to run),
+and
+.TP
 \-1
-if the terminfo database could not be found.
+if the \fI\%term\%info\fP database could not be found.
 .RE
 .PP
-This differs from the \fItermcap\fP library in two ways:
+This implementation differs from those of historical \fItermcap\fP
+libraries.
 .RS 3
 .bP
-The emulation ignores the buffer pointer \fIbp\fP.
-The \fItermcap\fP library would store a copy of the terminal
+.I \%ncurses
+ignores the buffer pointer \fIbp\fP,
+as do other \fItermcap\fP implementations conforming to portions of
+X/Open Curses now withdrawn.
+The BSD \fItermcap\fP library would store a copy of the terminal type
 description in the area referenced by this pointer.
-However, ncurses stores its terminal descriptions in compiled
-binary form, which is not the same thing.
+\fI\%term\%info\fP stores terminal type descriptions in compiled form,
+which is not the same thing.
 .bP
-There is a difference in return codes.
-The \fItermcap\fP library does not check if the terminal
-description is marked with the \fIgeneric\fP capability,
-or if the terminal description has cursor-addressing.
+The meanings of the return values differ.
+The BSD \fItermcap\fP library does not check whether the terminal type
+description includes the
+.B \%generic
+.RB ( gn )
+capability,
+nor whether the terminal type description supports an addressable
+cursor,
+a property essential for any \fIcurses\fP implementation to operate.
 .RE
-.SS Capability Values
-.PP
-The \fBtgetflag\fP routine gets the boolean entry for \fIid\fP,
+.SS "Retrieving Capability Values"
+\fB\%tgetflag\fP reports the Boolean entry for \fIid\fP,
 or zero if it is not available.
 .PP
-The \fBtgetnum\fP routine gets the numeric entry for \fIid\fP,
+\fB\%tgetnum\fP obtains the numeric entry for \fIid\fP,
 or \-1 if it is not available.
 .PP
-The \fBtgetstr\fP routine returns the string entry for \fIid\fP,
-or zero if it is not available.
-Use \fBtputs\fP to output the returned string.
-The \fIarea\fP parameter is used as follows:
+\fB\%tgetstr\fP returns the string entry for \fIid\fP,
+or
+.B NULL
+if it is not available.
+Use \fB\%tputs\fP to output the string returned.
+The
+.I area
+parameter is used as follows.
 .RS 3
 .bP
 It is assumed to be the address of a pointer to a buffer managed by the
 calling application.
 .bP
-However, ncurses checks to ensure that \fBarea\fP is not NULL,
-and also that the resulting buffer pointer is not NULL.
-If either check fails, the \fIarea\fP parameter is ignored.
+However,
+\fI\%ncurses\fP checks to ensure that
+.I area
+is not
+.BR NULL ,
+and also that the resulting buffer pointer is not
+.BR NULL .
+If either check fails,
+.I area
+is ignored.
 .bP
-If the checks succeed, ncurses also copies the return value to
-the buffer pointed to by \fIarea\fP,
-and the \fIarea\fP value will be updated to point past the null ending
-this value.
+If the checks succeed,
+\fI\%ncurses\fP also copies the return value to the buffer pointed to by
+\fIarea\fP,
+and the library updates
+.I area
+to point past the null character terminating this value.
 .bP
-The return value itself is an address in the terminal description which
-is loaded into memory.
+The return value itself is an address in the terminal type description
+loaded into memory.
 .RE
-.PP
-Only the first two characters of the \fBid\fP parameter of
-\fBtgetflag\fP,
-\fBtgetnum\fP and
-\fBtgetstr\fP are compared in lookups.
-.SS Formatting Capabilities
-.PP
-The \fBtgoto\fP routine expands the given capability using the parameters.
+.SS "Applying String Capabilities"
+String capabilities can be parameterized;
+see subsection \*(``Parameterized Strings\*('' in  \fB\%terminfo\fP(5).
+\fB\%tgoto\fP applies its second and third arguments to the parametric
+placeholders in the capability stored in the first argument.
 .bP
-Because the capability may have padding characters,
-the output of \fBtgoto\fP should be passed to \fBtputs\fP
-rather than some other output function such as \fBprintf\fP(3).
+The capability may contain padding specifications;
+see subsection \*(``Delays and Padding\*('' of \fB\%terminfo\fP(5).
+The output of \fB\%tgoto\fP should thus be passed to \fB\%tputs\fP
+rather than some other output function such as \fI\%printf\fP(3).
 .bP
-While \fBtgoto\fP is assumed to be used for the two-parameter
+While \fB\%tgoto\fP is assumed to be used for the two-parameter
 cursor positioning capability,
-termcap applications also use it for single-parameter capabilities.
+\fItermcap\fP applications also use it for single-parameter
+capabilities.
 .IP
-Doing this shows a quirk in \fBtgoto\fP: most hardware
-terminals use cursor addressing with \fIrow\fP first,
-but the original developers of the termcap interface chose to
-put the \fIcolumn\fP parameter first.
-The \fBtgoto\fP function swaps the order of parameters.
-It does this also for calls requiring only a single parameter.
-In that case, the first parameter is merely a placeholder.
+Doing so reveals a quirk in \fB\%tgoto\fP:
+most hardware terminals use cursor addressing with \fIrow\fP first,
+but the original developers of the \fItermcap\fP interface chose to
+put the \fIcol\fP (column) parameter first.
+The \fB\%tgoto\fP function swaps the order of its parameters.
+It does this even for calls requiring only a single parameter.
+In that case,
+the first parameter is merely a placeholder.
 .bP
-Normally the ncurses library is compiled with terminfo support.
-In that case, \fBtgoto\fP uses \fBtparm\fP(3X) (a more capable formatter).
+Normally the \fI\%ncurses\fP library is compiled without
+full \fI\%termcap\fP support.
+In that case,
+\fB\%tgoto\fP uses an internal version of \fB\%tparm\fP(3X)
+(a more capable function).
 .IP
-However, \fBtparm\fP is not a \fItermcap\fP feature,
-and portable \fItermcap\fP applications should not rely upon its availability.
-.PP
-The \fBtputs\fP routine is described on the \fBcurs_terminfo\fP(3X) manual
-page.
-It can retrieve capabilities by either termcap or terminfo name.
-.SS Global Variables
+Because it uses \fB\%tparm\fP internally,
+\fB\%tgoto\fP is able to use some \fI\%term\%info\fP features,
+but not all.
+In particular,
+it allows only numeric parameters;
+\fB\%tparm\fP supports string parameters.
+.IP
+However,
+\fB\%tparm\fP is not a \fItermcap\fP feature,
+and portable \fItermcap\fP applications should not rely upon its
+availability.
 .PP
+\fB\%tputs\fP is described in \fB\%curs_terminfo\fP(3X).
+It can retrieve capabilities by either \fItermcap\fP or
+\fI\%term\%info\fP code.
+.SS "Global Variables"
 The variables
 \fBPC\fP,
 \fBUP\fP and
 \fBBC\fP
-are set by \fBtgetent\fP to the terminfo entry's data for
-\fBpad_char\fP,
-\fBcursor_up\fP and
-\fBbackspace_if_not_bs\fP,
+are set by \fB\%tgetent\fP to the \fI\%term\%info\fP entry's data for
+\fB\%pad_char\fP,
+\fB\%cursor_up\fP and
+\fB\%backspace_if_not_bs\fP,
 respectively.
-\fBUP\fP is not used by ncurses.
-\fBPC\fP is used in the \fBtdelay_output\fP function.
-\fBBC\fP is used in the \fBtgoto\fP emulation.
-The variable \fBospeed\fP is set by ncurses in a system-specific coding
-to reflect the terminal speed.
-.SS Releasing Memory
-The termcap functions provide no means for freeing memory,
-because legacy termcap implementations used only the buffer
-areas provided by the caller via \fBtgetent\fP and \fBtgetstr\fP.
-Those buffers are unused in terminfo.
+\fBUP\fP is not used by \fI\%ncurses\fP.
+\fBPC\fP is used by \fB\%delay_output\fP(3X).
+\fBBC\fP is used by \fB\%tgoto\fP emulation.
+The variable \fB\%ospeed\fP is set by \fI\%ncurses\fP using a
+system-specific encoding to indicate the terminal's data rate.
+.SS "Releasing Memory"
+The \fItermcap\fP functions provide no means of freeing memory,
+because legacy \fItermcap\fP implementations used only the buffer
+areas provided by the caller via \fB\%tgetent\fP and \fB\%tgetstr\fP.
+Those buffers are unused in \fI\%term\%info\fP.
 .PP
-On the other hand, terminfo allocates memory.
-It uses \fBsetupterm\fP to retrieve the data used by \fBtgetent\fP
-and the functions which return capability values such as \fBtgetstr\fP.
+By contrast,
+\fI\%term\%info\fP allocates memory.
+It uses \fB\%setupterm\fP(3X) to obtain the data used by \fB\%tgetent\fP
+and the functions that retrieve capability values.
 One could use
-.sp
-       \fBdel_curterm(cur_term);\fP
-.sp
-.PP
-to free this memory, but there is an additional complication with ncurses.
-It uses a fixed-size \fIpool\fP of storage locations,
-one per setting of the \fBTERM\fP variable when \fBtgetent\fP is called.
-The \fBscreen\fP(1) program relies upon this arrangement,
-to improve its performance.
-.PP
-An application which uses only the low-level termcap functions could
-free the memory using \fBdel_curterm\fP,
-because the pool is freed using other functions
-(see \fBcurs_memleaks\fP(3X)).
-.
-.SH RETURN VALUE
-Except where explicitly noted,
-routines that return an integer return \fBERR\fP upon failure and \fBOK\fP
-(SVr4 only specifies "an integer value other than \fBERR\fP") upon successful
-completion.
+.RS
+.EX
+del_curterm(cur_term);
+.EE
+.RE
+to free this memory,
+but there is an additional complication with \fI\%ncurses\fP.
+It uses a fixed-size pool of storage locations,
+one per value of the terminal name parameter given to \fB\%tgetent\fP.
+The \fIscreen\fP(1) program relies upon this arrangement to improve its
+performance.
 .PP
-Routines that return pointers return \fBNULL\fP on error.
-.SH BUGS
-If you call \fBtgetstr\fP to fetch \fBca\fP or any other parameterized string,
-be aware that it will be returned in terminfo notation, not the older and
-not-quite-compatible termcap notation.
-This will not cause problems if all
-you do with it is call \fBtgoto\fP or \fBtparm\fP, which both expand
-terminfo-style strings as terminfo.
-(The \fBtgoto\fP function, if configured to support termcap, will check
-if the string is indeed terminfo-style by looking for "%p" parameters or
-"$<..>" delays, and invoke a termcap-style parser if the string does not
-appear to be terminfo).
+An application that uses only the \fItermcap\fP functions,
+not the higher level
+.I \%curses
+API,
+could release the memory using \fB\%del_curterm\fP(3X),
+because the pool is freed using other functions;
+see \fB\%curs_memleaks\fP(3X).
+.SH "RETURN VALUE"
+The return values of
+\fB\%tgetent\fP,
+\fB\%tgetflag\fP,
+\fB\%tgetname\fP,
+and
+\fB\%tgetstr\fP
+are documented above.
 .PP
-Because terminfo conventions for representing padding in string capabilities
-differ from termcap's,
-users can be surprised:
+\fB\%tgoto\fP returns
+.B NULL
+on error.
+Error conditions include:
 .bP
-\fBtputs("50")\fP in a terminfo system will put out a literal \*(``50\*(''
-rather than busy-waiting for 50 milliseconds.
+uninitialized state
+(\fB\%tgetent\fP was not called successfully),
 .bP
-However, if ncurses is configured to support termcap,
-it may also have been configured to support the BSD-style padding.
-.IP
-In that case, \fBtputs\fP inspects strings passed to it,
-looking for digits at the beginning of the string.
-.IP
-\fBtputs("50")\fP in a termcap system may wait for 50 milliseconds
-rather than put out a literal \*(``50\*(''
+.I cap
+being a null pointer,
+.bP
+.I cap
+referring to a canceled capability,
+.bP
+.I cap
+being a capability with string-valued parameters
+(a \fI\%term\%info\fP-only feature),
+and
+.bP
+.I cap
+being a capability with more than two parameters.
 .PP
-Note that termcap has nothing analogous to terminfo's \fBsgr\fP string.
-One consequence of this is that termcap applications assume \fBme\fP
-(terminfo \fBsgr0\fP) does not reset the alternate character set.
-This implementation checks for, and modifies the data shown to the
-termcap interface to accommodate termcap's limitation in this respect.
+See \fB\%curs_terminfo\fP(3X) regarding \fB\%tputs\fP.
+.SH NOTES
+\fI\%ncurses\fP compares only the first two characters of the \fIid\fP
+parameter of
+\fB\%tgetflag\fP,
+\fB\%tgetnum\fP,
+and
+\fB\%tgetstr\fP to the capability names in the database.
 .SH PORTABILITY
+These functions are no longer standardized
+(and the variables never were);
+\fI\%ncurses\fP provides them to support legacy applications.
+They should not be used in new programs.
 .SS Standards
-These functions are provided for supporting legacy applications,
-and should not be used in new programs:
 .bP
-The XSI Curses standard, Issue 4 describes these functions.
-However, they
-are marked TO BE WITHDRAWN and may be removed in future versions.
+X/Open Curses, Issue 4, Version 2 (1996),
+describes these functions,
+marking them as
+\*(``TO BE WITHDRAWN\*(''.
 .bP
-X/Open Curses, Issue 5 (December 2007) marked the termcap interface
-(along with \fBvwprintw\fP and \fBvwscanw\fP) as withdrawn.
+X/Open Curses, Issue 7 (2009) marks the \fItermcap\fP interface
+(along with \fB\%vwprintw\fP and \fB\%vwscanw\fP) as withdrawn.
 .PP
-Neither the XSI Curses standard nor the SVr4 man pages documented the return
-values of \fBtgetent\fP correctly, though all three were in fact returned ever
-since SVr1.
-In particular, an omission in the XSI Curses documentation has been
-misinterpreted to mean that \fBtgetent\fP returns \fBOK\fP or \fBERR\fP.
+Neither X/Open Curses nor the SVr4 man pages documented the return
+values of \fB\%tgetent\fP correctly,
+though all three shown here were in fact returned ever since SVr1.
+In particular,
+an omission in the X/Open Curses specification has been misinterpreted
+to mean that \fB\%tgetent\fP returns \fBOK\fP or \fBERR\fP.
 Because the purpose of these functions is to provide compatibility with
-the \fItermcap\fP library, that is a defect in XCurses, Issue 4, Version 2
-rather than in ncurses.
-.SS Compatibility with BSD Termcap
-.PP
-External variables are provided for support of certain termcap applications.
-However, termcap applications' use of those variables is poorly documented,
-e.g., not distinguishing between input and output.
-In particular, some applications are reported to declare and/or
-modify \fBospeed\fP.
+the \fItermcap\fP library,
+that is a defect in X/Open Curses, Issue 4, Version 2
+rather than in \fI\%ncurses\fP.
+.SS "Compatibility with BSD \fItermcap\fP"
+Externally visible variables are provided for support of certain
+\fItermcap\fP applications.
+However,
+their correct usage is poorly documented;
+for example,
+it is unclear when reading and writing them is meaningful.
+In particular,
+some applications are reported to declare and/or modify \fB\%ospeed\fP.
 .PP
-The comment that only the first two characters of the \fBid\fP parameter
-are used escapes many application developers.
-The original BSD 4.2 termcap library (and historical relics thereof)
-did not require a trailing null NUL on the parameter name passed
-to \fBtgetstr\fP, \fBtgetnum\fP and \fBtgetflag\fP.
-Some applications assume that the termcap interface does not require
-the trailing NUL for the parameter name.
-Taking into account these issues:
+The constraint that only the first two characters of the \fIid\fP
+parameter are used escapes many application developers.
+The BSD \fItermcap\fP library did not require a trailing null character
+on the capability identifier passed to \fB\%tgetstr\fP,
+\fB\%tgetnum\fP,
+and
+\fB\%tgetflag\fP.
+.\" See <https://minnie.tuhs.org/cgi-bin/utree.pl?file=2BSD/src/\
+.\"   termlib/termcap.c>.
+Some applications thus assume that the \fItermcap\fP interface does not
+require the trailing null character for the capability identifier.
 .bP
-As a special case,
-\fBtgetflag\fP matched against a single-character identifier
-provided that was at the end of the terminal description.
-You should not rely upon this behavior in portable programs.
-This implementation disallows matches against single-character capability names.
-.bP
-This implementation disallows matches by the termcap interface against
-extended capability names which are longer than two characters.
+.I \%ncurses
+disallows matches by the \fItermcap\fP interface against extended
+capability names that are longer than two characters;
+see \fB\%user_caps\fP(5).
 .PP
-The BSD termcap function \fBtgetent\fP returns the text of a termcap
-entry in the buffer passed as an argument.
-This library (like other terminfo implementations) does not store
-terminal descriptions as text.
+The BSD \fItermcap\fP function \fB\%tgetent\fP returns the text of a
+\fItermcap\fP entry in the buffer passed as an argument.
+This library,
+like other \fI\%term\%info\fP implementations,
+does not store terminal type descriptions as text.
 It sets the buffer contents to a null-terminated string.
-.SS Other Compatibility
-This library includes a termcap.h header,
-for compatibility with other implementations.
-But the header is rarely used because the other implementations
-are not strictly compatible.
+.SS "Header File"
+This library includes a \fI\%termcap.h\fP header for compatibility with
+other implementations,
+but the header is rarely used because the other implementations are not
+strictly compatible.
+.SH HISTORY
+.\" See https://www.oreilly.com/openbook/opensources/book/kirkmck.html
+.\" for much BSD release history.
+Bill Joy originated a forerunner of \fItermcap\fP called
+\*(``ttycap\*('',
+dated September 1977,
+and released in 1BSD
+(March 1978).
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/s7/ttycap.c
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/man7/ttycap.7
+It used many of the same function names as the later \fItermcap\fP,
+such as
+\fB\%tgetent\fP,
+\fB\%tgetflag\fP,
+\fB\%tgetnum\fP,
+and
+\fB\%tgetstr\fP.
+.PP
+A clear descendant,
+the \fItermlib\fP library,
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=2BSD/src/termlib/
+followed in 2BSD
+(May 1979),
+adding \fB\%tgoto\fP and \fB\%tputs\fP.
+The former applied at that time only to cursor positioning capabilities,
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=2BSD/bin/etc/termcap
+thus the overly specific name.
+Little changed in 3BSD
+(late 1979)
+except the addition of test programs and a \fI\%termlib\fP man page,
+which documented the API shown in section \*(``SYNOPSIS\*('' above.
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/src/lib/\
+.\"   libtermlib/
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/man/man3/\
+.\"   termlib.3
 .PP
-The original BSD termcap (through 4.3BSD) had no header file which
-gave function prototypes, because that was a feature of ANSI C.
-BSD termcap was written several years before C was standardized.
-However, there were two different termcap.h header files in the BSD
-sources:
+4BSD
+(November 1980)
+renamed \fItermlib\fP to \fItermcap\fP
+.\" ...except in the source tree...
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=4BSD/usr/src/lib/\
+.\"   libtermlib/makefile
+and added another test program.
+The library remained much the same though 4.3BSD
+(June 1986).
+4.4BSD-Lite
+(June 1994)
+refactored it,
+.\" Observe the `tncktc()`, `tnamatch()`, `tskip()`, and `tdecode()`
+.\" entry points disappearing from termcap.c.
+leaving the API unchanged.
+.PP
+Function prototypes were a feature of ANSI C (1989).
+The library long antedated the standard and thus provided no header file
+declaring them.
+Nevertheless,
+the BSD sources included two different \fI\%termcap.h\fP header files
+over time.
 .bP
-One was used internally by the \fBjove\fP editor in 2BSD through 4.4BSD.
-It defined global symbols for the termcap variables which it used.
+One was used internally by \fBjove\fP(1) from 4.3BSD onward.
+.\" 2BSD became a branch retaining support for non-virtual memory
+.\" systems (such as the PDP-11) whereas most BSD development focused on
+.\" the VAX and other VM-enabled systems starting with 3BSD.
+.\"
+.\" This man page previously located a termcap.h in 2BSD, but that may
+.\" be confusion arising from its backport to 2.9BSD (and still present
+.\" in surviving sources for 2.11BSD, the "end of the line" for that
+.\" branch's development).
+.\"
+.\" Observe the copyright notice in
+.\"   https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD/usr/contrib/\
+.\"     jove/Makefile
+.\" --much too late for 2BSD (1979).
+It declared global symbols for the \fItermcap\fP variables that it used.
 .bP
-The other appeared in 4.4BSD Lite Release 2 (mid-1993)
-as part of \fIlibedit\fP (also known as the \fIeditline\fP library).
-The CSRG source history shows that this was added in mid-1992.
-The \fIlibedit\fP header file was used internally,
-as a convenience for compiling the \fIeditline\fP library.
-It declared function prototypes, but no global variables.
-.PP
-The header file from \fIlibedit\fP was added to NetBSD's termcap
-library in mid-1994.
+The other appeared in 4.4BSD-Lite Release 2
+(June 1995)
+as part of \fIlibedit\fP
+(also known as the \fI\%edit\%line\fP library).
+CSRG source history shows that this was added in mid-1992.
+The \fIlibedit\fP header file was used internally as a convenience for
+compiling the \fI\%edit\%line\fP library.
+It declared function prototypes,
+but no global variables.
+This header file was added to NetBSD's \fItermcap\fP library in
+mid-1994.
 .PP
-Meanwhile, GNU termcap was under development, starting in 1990.
-The first release (termcap 1.0) in 1991 included a termcap.h header.
-The second release (termcap 1.1) in September 1992 modified the
-header to use \fBconst\fP for the function prototypes in the header
-where one would expect the parameters to be read-only.
-This was a difference versus the original BSD termcap.
-The prototype for \fBtputs\fP also differed,
-but in that instance, it was \fIlibedit\fP which differed from BSD termcap.
+Meanwhile,
+GNU \fItermcap\fP began development in 1990.
+Its first release (1.0) in 1991 included a \fI\%termcap.h\fP header.
+Its second (1.1) in September 1992 modified the header to use
+\fIconst\fP for the function prototypes in the header where one would
+expect the parameters to be read-only.
+BSD \fItermcap\fP did not.
+The prototype for \fB\%tputs\fP also differed,
+but in that instance,
+it was \fIlibedit\fP that differed from BSD \fItermcap\fP.
 .PP
-A copy of GNU termcap 1.3 was bundled with \fIbash\fP in mid-1993,
-to support the \fBreadline\fP(3) library.
+GNU \fItermcap\fP 1.3 was bundled with \fIbash\fP(1) in mid-1993 to
+support the \fI\%readline\fP(3) library.
 .PP
-A termcap.h file was provided in ncurses 1.8.1 (November 1993).
-That reflected influence by \fBemacs\fP(1) (rather than \fBjove\fP(1))
-and GNU termcap:
+\fI\%ncurses\fP 1.8.1
+(November 1993)
+provided a \fI\%termcap.h\fP file.
+It reflected influence from GNU \fItermcap\fP and \fBemacs\fP(1)
+(rather than \fBjove\fP(1)),
+providing the following interface:
 .bP
-it provided declarations for a few global symbols used by \fBemacs\fP
+global symbols used by \fIemacs\fP,
 .bP
-it provided function prototypes (using \fBconst\fP).
+\fIconst\fP-qualified function prototypes,
+and
 .bP
-a prototype for \fBtparam\fP (a GNU termcap feature) was provided.
+a prototype for \fBtparam\fP,
+a GNU \fItermcap\fP feature.
+.PP
+Later
+(in mid-1996)
+the \fB\%tparam\fP function was removed from \fI\%ncurses\fP.
+Any two of the four implementations thus differ,
+and programs that intend to work with all \fItermcap\fP library
+interfaces must account for that fact.
+.SH BUGS
+If you call \fB\%tgetstr\fP to fetch
+.B \%column_address
+.RB ( ch )
+or any other parameterized string capability,
+be aware that it is returned in \fI\%term\%info\fP notation,
+not the older and not-quite-compatible \fItermcap\fP notation.
+This does not cause problems if all you do with it is call \fB\%tgoto\fP
+or \fB\%tparm\fP,
+which both parametrically expand \fI\%term\%info\fP-style string
+capabilities as \fI\%term\%info\fP does.
+(If
+.I \%ncurses
+is configured to support \fItermcap,\fP
+\fB\%tgoto\fP checks whether the string is \fI\%term\%info\fP-style by
+looking for \*(``\fB%p\fP\*('' parameters or
+\*(``\fB<\fP.\|.\|.\fB>\fP\*('' delays,
+and invokes a \fItermcap\fP-style parser if the string appears not to
+use \fI\%term\%info\fP syntax.)
+.PP
+Because \fI\%term\%info\fP's syntax for padding in string capabilities
+differs from \fItermcap\fP's,
+users can be surprised.
+.IP \(bu 4
+\fB\%tputs("50")\fP in a \fI\%term\%info\fP system transmits
+\*(``50\*('' rather than busy-waiting for 50 milliseconds.
+.IP \(bu 4
+However,
+if \fI\%ncurses\fP is configured to support \fItermcap\fP,
+it may also have been configured to support BSD-style padding.
+.IP
+In that case,
+\fB\%tputs\fP inspects strings passed to it,
+looking for digits at the beginning of the string.
+.IP
+\fB\%tputs("50")\fP in a \fItermcap\fP system may busy-wait for 50
+milliseconds rather than transmitting \*(``50\*(''.
+.PP
+\fItermcap\fP has nothing analogous to \fI\%term\%info\fP's
+.B \%set_attributes
+.RB ( sgr )
+capability.
+One consequence is that \fItermcap\fP applications assume that
+.RB \*(`` me \*(''
+(equivalent to \fI\%term\%info\fP's
+.B \%exit_attribute_mode
+.RB ( sgr0 )
+capability)
+does not reset the alternate character set.
+\fI\%ncurses\fP checks for,
+and modifies the data shared with,
+the \fItermcap\fP interface to accommodate the latter's limitation in
+this respect.
+.SH "SEE ALSO"
+\fB\%curses\fP(3X),
+\fB\%curs_terminfo\fP(3X),
+\fB\%putc\fP(3),
+\fB\%term_variables\fP(3X),
+\fB\%terminfo\fP(5)
 .PP
-Later (in mid-1996) the \fBtparam\fP function was removed from ncurses.
-As a result, there are differences between any of the four implementations,
-which must be taken into account by programs which can work with all
-termcap library interfaces.
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBputc\fP(3),
-\fBterm_variables\fP(3X),
-\fBterminfo\fP(\*n).
-.sp
-https://invisible-island.net/ncurses/tctest.html
+https://invisible\-island.net/ncurses/tctest.html
index 00ae1349db0ad0a8cec0b1c1064a852e20178675..10d1fa78b6b4227983fef4822000a52611938b54 100644 (file)
@@ -1,5 +1,6 @@
+'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2022,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_terminfo.3x,v 1.82 2022/06/04 22:47:05 tom Exp $
-.TH curs_terminfo 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_terminfo.3x,v 1.136 2024/04/14 00:14:40 tom Exp $
+.TH curs_terminfo 3X 2024-04-13 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.ds n 5
-.na
-.hy 0
+.
 .SH NAME
-\fBdel_curterm\fP,
-\fBmvcur\fP,
-\fBputp\fP,
-\fBrestartterm\fP,
-\fBset_curterm\fP,
-\fBsetupterm\fP,
-\fBtigetflag\fP,
-\fBtigetnum\fP,
-\fBtigetstr\fP,
-\fBtiparm\fP,
-\fBtparm\fP,
-\fBtputs\fP,
-\fBvid_attr\fP,
-\fBvid_puts\fP,
-\fBvidattr\fP,
-\fBvidputs\fP \- \fBcurses\fP interfaces to terminfo database
-.ad
-.hy
+\fB\%del_curterm\fP,
+\fB\%mvcur\fP,
+\fB\%putp\fP,
+\fB\%restartterm\fP,
+\fB\%set_curterm\fP,
+\fB\%setupterm\fP,
+\fB\%tigetflag\fP,
+\fB\%tigetnum\fP,
+\fB\%tigetstr\fP,
+\fB\%tiparm\fP,
+\fB\%tiparm_s\fP,
+\fB\%tiscan_s\fP,
+\fB\%tparm\fP,
+\fB\%tputs\fP,
+\fB\%vid_attr\fP,
+\fB\%vid_puts\fP,
+\fB\%vidattr\fP,
+\fB\%vidputs\fP \-
+\fIcurses\fR interfaces to \fI\%term\%info\fR database
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h>\fP
-\fB#include <term.h>\fP
-.sp
-\fBTERMINAL *cur_term;\fP
-.sp
-\fBconst char * const boolnames[];\fP
-\fBconst char * const boolcodes[];\fP
-\fBconst char * const boolfnames[];\fP
-\fBconst char * const numnames[];\fP
-\fBconst char * const numcodes[];\fP
-\fBconst char * const numfnames[];\fP
-\fBconst char * const strnames[];\fP
-\fBconst char * const strcodes[];\fP
-\fBconst char * const strfnames[];\fP
-.sp
-\fBint setupterm(const char *\fIterm\fB, int \fIfiledes\fB, int *\fIerrret\fB);\fR
-.br
-\fBTERMINAL *set_curterm(TERMINAL *\fInterm\fB);\fR
-.br
-\fBint del_curterm(TERMINAL *\fIoterm\fB);\fR
-.br
-\fBint restartterm(const char *\fIterm\fB, int \fIfiledes\fB, int *\fIerrret\fB);\fR
-.sp
-\fBchar *tparm(const char *\fIstr\fB, ...);\fR
-.br
-\fBint tputs(const char *\fIstr\fB, int \fIaffcnt\fB, int (*\fIputc\fB)(int));\fR
-.br
-\fBint putp(const char *\fIstr\fB);\fR
-.sp
-\fBint vidputs(chtype \fIattrs\fB, int (*\fIputc\fB)(int));\fR
-.br
-\fBint vidattr(chtype \fIattrs\fB);\fR
-.br
-\fBint vid_puts(attr_t \fIattrs\fB, short \fIpair\fB, void *\fIopts\fB, int (*\fIputc\fB)(int));\fR
-.br
-\fBint vid_attr(attr_t \fIattrs\fB, short \fIpair\fB, void *\fIopts\fB);\fR
-.sp
-\fBint mvcur(int \fIoldrow\fB, int \fIoldcol\fB, int \fInewrow\fR, int \fInewcol\fB);\fR
-.sp
-\fBint tigetflag(const char *\fIcapname\fB);\fR
-.br
-\fBint tigetnum(const char *\fIcapname\fB);\fR
-.br
-\fBchar *tigetstr(const char *\fIcapname\fB);\fR
-.sp
-\fBchar *tiparm(const char *\fIstr\fB, ...);\fR
-.br
+\fB#include <curses.h>
+\fB#include <term.h>
+.PP
+\fBTERMINAL *cur_term;
+.PP
+\fBconst char * const boolnames[];
+\fBconst char * const boolcodes[];
+\fBconst char * const boolfnames[];
+\fBconst char * const numnames[];
+\fBconst char * const numcodes[];
+\fBconst char * const numfnames[];
+\fBconst char * const strnames[];
+\fBconst char * const strcodes[];
+\fBconst char * const strfnames[];
+.PP
+\fBint setupterm(const char *\fIterm\fP, int \fIfiledes\fP, int *\fIerrret\fP);
+\fBTERMINAL *set_curterm(TERMINAL *\fInterm\fP);
+\fBint del_curterm(TERMINAL *\fIoterm\fP);
+\fBint restartterm(const char *\fIterm\fP, int \fIfiledes\fP, int *\fIerrret\fP);
+.PP
+\fBchar *tparm(const char *\fIstr\fP, \fR.\|.\|.\fP);
+       \fI/* or */
+\fBchar *tparm(const char *\fIstr\fP, long \fIp1\fP \fR.\|.\|.\fP \fBlong\fP \fIp9\fP);
+.PP
+\fBint tputs(const char *\fIstr\fP, int \fIaffcnt\fP, int (*\fIputc\fP)(int));
+\fBint putp(const char *\fIstr\fP);
+.PP
+\fBint vidputs(chtype \fIattrs\fP, int (*\fIputc\fP)(int));
+\fBint vidattr(chtype \fIattrs\fP);
+\fBint vid_puts(attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP, int (*\fIputc\fP)(int));
+\fBint vid_attr(attr_t \fIattrs\fP, short \fIpair\fP, void *\fIopts\fP);
+.PP
+\fBint mvcur(int \fIoldrow\fP, int \fIoldcol\fP, int \fInewrow\fP, int \fInewcol\fP);
+.PP
+\fBint tigetflag(const char *\fIcap-code\fP);
+\fBint tigetnum(const char *\fIcap-code\fP);
+\fBchar *tigetstr(const char *\fIcap-code\fP);
+.PP
+\fBchar *tiparm(const char *\fIstr\fP, \fR.\|.\|.\fP);
+.PP
+\fI/* extensions */
+\fBchar *tiparm_s(int \fIexpected\fP, int \fImask\fP, const char *\fIstr\fP, ...);
+\fBint tiscan_s(int *\fIexpected\fP, int *\fImask\fP, const char *\fIstr\fP);
+.PP
+\fI/* deprecated */
+\fBint setterm(const char *\fIterm\fP);
 .fi
 .SH DESCRIPTION
-These low-level routines must be called by programs that have to deal
-directly with the \fBterminfo\fP database to handle certain terminal
-capabilities, such as programming function keys.
-For all other
-functionality, \fBcurses\fP routines are more suitable and their use is
-recommended.
+These low-level functions must be called by programs that deal directly
+with the
+.I \%term\%info
+database to handle certain terminal capabilities,
+such as programming function keys.
+For all other functionality,
+.I curses
+functions are more suitable and their use is recommended.
 .PP
-None of these functions use (or are aware of) multibyte character strings
-such as UTF-8:
+None of these functions use
+(or are aware of)
+multibyte character strings such as UTF-8.
 .bP
-capability names use the POSIX portable character set
+Capability names and codes use the POSIX portable character set.
 .bP
-capability string values have no associated encoding;
+Capability string values have no associated encoding;
 they are strings of 8-bit characters.
 .SS Initialization
+Initially,
+\fB\%setupterm\fP should be called.
+The high-level
+.I curses
+functions \fB\%initscr\fP and \fB\%newterm\fP call \fB\%setupterm\fP to
+initialize the low-level set of terminal-dependent variables listed in
+\fB\%term_variables\fP(3X).
 .PP
-Initially, \fBsetupterm\fP should be called.
-The high-level curses functions \fBinitscr\fP and
-\fBnewterm\fP call \fBsetupterm\fP to initialize the
-low-level set of terminal-dependent variables
-[listed in \fBterminfo\fP(\*n)].
-.PP
-Applications can use the
-terminal capabilities either directly (via header definitions),
+Applications can use the terminal capabilities either directly
+(via header definitions),
 or by special functions.
-The header files \fBcurses.h\fP and \fBterm.h\fP should be included (in this
-order) to get the definitions for these strings, numbers, and flags.
+The header files
+.I \%curses.h
+and
+.I \%term.h
+should be included
+(in that order)
+to get the definitions for these strings,
+numbers,
+and flags.
 .PP
-The \fBterminfo\fP variables
-\fBlines\fP and \fBcolumns\fP are initialized by \fBsetupterm\fP as
-follows:
+The
+.I \%term\%info
+variables
+.B \%lines
+and
+.B \%columns
+are initialized by \fB\%setupterm\fP as follows.
 .bP
-If \fBuse_env(FALSE)\fP has been called, values for
-\fBlines\fP and \fBcolumns\fP specified in \fBterminfo\fP are used.
+If \fB\%use_env(FALSE)\fP has been called,
+values for
+.B \%lines
+and
+.B \%columns
+specified in
+.I \%term\%info
+are used.
 .bP
-Otherwise, if the environment variables \fBLINES\fP and \fBCOLUMNS\fP
-exist, their values are used.
-If these environment variables do not
-exist and the program is running in a window, the current window size
+Otherwise,
+if the environment variables
+.I LINES
+and
+.I \%COLUMNS
+exist,
+their values are used.
+If these environment variables do not exist and the program is running
+in a window,
+the current window size
 is used.
-Otherwise, if the environment variables do not exist, the
-values for \fBlines\fP and \fBcolumns\fP specified in the
-\fBterminfo\fP database are used.
-.PP
-Parameterized strings should be passed through \fBtparm\fP to instantiate them.
-All \fBterminfo\fP strings
-(including the output of \fBtparm\fP)
-should be printed
-with \fBtputs\fP or \fBputp\fP.
-Call \fBreset_shell_mode\fP to restore the
-tty modes before exiting [see \fBcurs_kernel\fP(3X)].
-.PP
-Programs which use
+Otherwise,
+if the environment variables do not exist,
+the values for
+.B \%lines
+and
+.B \%columns
+specified in the
+.I \%term\%info
+database are used.
+.PP
+Parameterized strings should be passed through \fB\%tparm\fP to
+instantiate them.
+All
+.I \%term\%info
+strings
+(including the output of \fB\%tparm\fP)
+should be sent to the terminal device with \fB\%tputs\fP or
+\fB\%putp\fP.
+Call \fB\%reset_shell_mode\fP to restore the terminal modes before
+exiting;
+see \fB\%curs_kernel\fP(3X).
+.PP
+Programs that use
 cursor addressing should
 .bP
-output \fBenter_ca_mode\fP upon startup and
+output \fB\%enter_ca_mode\fP upon startup and
 .bP
-output \fBexit_ca_mode\fP before exiting.
+output \fB\%exit_ca_mode\fP before exiting.
 .PP
-Programs which execute shell subprocesses should
+Programs that execute shell subprocesses should
 .bP
-call \fBreset_shell_mode\fP and
-output \fBexit_ca_mode\fP before the shell
+call \fB\%reset_shell_mode\fP and
+output \fB\%exit_ca_mode\fP before the shell
 is called and
 .bP
-output \fBenter_ca_mode\fP and
-call \fBreset_prog_mode\fP after returning from the shell.
+output \fB\%enter_ca_mode\fP and
+call \fB\%reset_prog_mode\fP after returning from the shell.
 .PP
-The \fBsetupterm\fP routine reads in the \fBterminfo\fP database,
-initializing the \fBterminfo\fP structures, but does not set up the
-output virtualization structures used by \fBcurses\fP.
-These are its parameters:
+\fB\%setupterm\fP reads in the
+.I \%term\%info
+database,
+initializing the
+.I \%term\%info
+structures,
+but does not set up the output virtualization structures used by
+.IR curses .
+Its parameters follow.
 .RS 3
 .TP 5
-\fIterm\fP
-is the terminal type, a character string.
-If \fIterm\fP is null, the environment variable \fBTERM\fP is used.
+.I term
+is the terminal type,
+a character string.
+If
+.I term
+is null,
+the environment variable
+.I TERM
+is read.
 .TP 5
-\fIfiledes\fP
-is the file descriptor used for all output.
+.I filedes
+is the file descriptor used for getting and setting terminal I/O modes.
+.IP
+Higher-level applications use \fB\%newterm\fP(3X) to initialize the
+terminal,
+passing an output
+.I stream
+rather than a
+.IR descriptor .
+In
+.IR curses ,
+the two are the same because \fB\%newterm\fP calls \fB\%setupterm\fP,
+passing the file descriptor derived from its output stream parameter.
 .TP 5
-\fIerrret\fP
+.I errret
 points to an optional location where an error status can be returned to
 the caller.
-If \fIerrret\fP is not null,
-then \fBsetupterm\fP returns \fBOK\fP or
-\fBERR\fP and stores a status value in the integer pointed to by
-\fIerrret\fP.
-A return value of \fBOK\fP combined with status of \fB1\fP in \fIerrret\fP
+If
+.I errret
+is not null,
+then \fB\%setupterm\fP returns
+.B OK
+or
+.B ERR
+and stores a status value in the integer pointed to by
+.IR errret .
+A return value of
+.B OK
+combined with status of
+.B 1
+in
+.I errret
 is normal.
 .IP
-If \fBERR\fP is returned, examine \fIerrret\fP:
+If
+.B ERR
+is returned,
+examine
+.I errret:
 .RS
 .TP 5
 .B 1
-means that the terminal is hardcopy, cannot be used for curses applications.
+means that the terminal is hardcopy,
+and cannot be used for
+.I curses
+applications.
 .IP
-\fBsetupterm\fP determines if the entry is a hardcopy type by
-checking the \fBhc\fP (\fBhardcopy\fP) capability.
+\fB\%setupterm\fP determines if the entry is a hardcopy type by
+checking the
+.B \%hardcopy
+.RB ( hc )
+capability.
 .TP 5
 .B 0
 means that the terminal could not be found,
 or that it is a generic type,
-having too little information for curses applications to run.
+having too little information for
+.I curses
+applications to run.
 .IP
-\fBsetupterm\fP determines if the entry is a generic type by
-checking the \fBgn\fP (\fBgeneric\fP) capability.
+\fB\%setupterm\fP determines if the entry is a generic type by
+checking the
+.B \%generic_type
+.RB ( gn )
+capability.
 .TP 5
 .B \-1
-means that the \fBterminfo\fP database could not be found.
+means that the
+.I \%term\%info
+database could not be found.
 .RE
 .IP
-If \fIerrret\fP is
-null, \fBsetupterm\fP prints an error message upon finding an error
-and exits.
-Thus, the simplest call is:
-.sp
-      \fBsetupterm((char *)0, 1, (int *)0);\fP,
-.sp
-which uses all the defaults and sends the output to \fBstdout\fP.
+If
+.I errret
+is null,
+\fB\%setupterm\fP reports an error message upon finding an error and
+exits.
+Thus,
+the simplest call is:
+.RS
+.IP
+.EX
+setupterm((char *)0, 1, (int *)0);
+.EE
 .RE
-.\" ***************************************************************************
-.SS The Terminal State
-.PP
-The \fBsetupterm\fP routine stores its information about the terminal
-in a \fBTERMINAL\fP structure pointed to by the global variable \fBcur_term\fP.
+.IP
+which uses all the defaults and sends the output to
+.BR stdout .
+.RE
+.\" ********************************************************************
+.SS "The Terminal State"
+\fB\%setupterm\fP stores its information about the terminal in a
+.I \%TERMINAL
+structure pointed to by the global variable \fB\%cur_term\fP.
 If it detects an error,
-or decides that the terminal is unsuitable (hardcopy or generic),
+or decides that the terminal is unsuitable
+(hardcopy or generic),
 it discards this information,
 making it not available to applications.
 .PP
-If \fBsetupterm\fP is called repeatedly for the same terminal type,
+If \fB\%setupterm\fP is called repeatedly for the same terminal type,
 it will reuse the information.
 It maintains only one copy of a given terminal's capabilities in memory.
 If it is called for different terminal types,
-\fBsetupterm\fP allocates new storage for each set of terminal capabilities.
-.PP
-The \fBset_curterm\fP routine sets \fBcur_term\fP to
-\fInterm\fP, and makes all of the \fBterminfo\fP boolean, numeric, and
-string variables use the values from \fInterm\fP.
-It returns the old value of \fBcur_term\fP.
-.PP
-The \fBdel_curterm\fP routine frees the space pointed to by
-\fIoterm\fP and makes it available for further use.
-If \fIoterm\fP is
-the same as \fBcur_term\fP, references to any of the \fBterminfo\fP
-boolean, numeric, and string variables thereafter may refer to invalid
-memory locations until another \fBsetupterm\fP has been called.
-.PP
-The \fBrestartterm\fP routine is similar to \fBsetupterm\fP and \fBinitscr\fP,
-except that it is called after restoring memory to a previous state (for
-example, when reloading a game saved as a core image dump).
-\fBrestartterm\fP assumes that the windows and the input and output options
-are the same as when memory was saved,
-but the terminal type and baud rate may be different.
-Accordingly, \fBrestartterm\fP saves various tty state bits,
-calls \fBsetupterm\fP, and then restores the bits.
-.\" ***************************************************************************
-.SS Formatting Output
+\fB\%setupterm\fP allocates new storage for each set of terminal
+capabilities.
 .PP
-The \fBtparm\fP routine instantiates the string \fIstr\fP with
-parameters \fIpi\fP.  A pointer is returned to the result of \fIstr\fP
+\fB\%set_curterm\fP sets \fB\%cur_term\fP to
+.IR \%nterm ,
+and makes all of the
+.I \%term\%info
+Boolean,
+numeric,
+and string variables use the values from
+.IR \%nterm .
+It returns the old value of \fB\%cur_term\fP.
+.PP
+\fB\%del_curterm\fP frees the space pointed to by
+.I \%oterm
+and makes it available for further use.
+If
+.I \%oterm
+is
+the same as \fB\%cur_term\fP,
+references to any of the
+.I \%term\%info
+Boolean,
+numeric,
+and string variables thereafter may refer to invalid memory locations
+until another \fB\%setupterm\fP has been called.
+.PP
+\fB\%restartterm\fP is similar to \fB\%setupterm\fP and \fB\%initscr\fP,
+except that it is called after restoring memory to a previous state
+(for example,
+when reloading a game saved as a core image dump).
+\fB\%restartterm\fP assumes that the windows and the input and output
+options are the same as when memory was saved,
+but the terminal type and baud rate may be different.
+Accordingly,
+\fB\%restartterm\fP saves various terminal state bits,
+calls \fB\%setupterm\fP,
+and then restores the bits.
+.\" ********************************************************************
+.SS "Formatting Output"
+\fB\%tparm\fP instantiates the string
+.I str
+with parameters
+.IR pi .
+A pointer is returned to the result of
+.I str
 with the parameters applied.
-Application developers should keep in mind these quirks of the interface:
+Application developers should keep in mind these quirks of the
+interface:
 .bP
-Although \fBtparm\fP's actual parameters may be integers or strings,
-the prototype expects \fBlong\fP (integer) values.
+Although \fB\%tparm\fP's actual parameters may be integers or strings,
+the prototype expects
+.I long
+(integer) values.
 .bP
-Aside from the \fBset_attributes\fP (\fBsgr\fP) capability,
+Aside from the
+.B \%set_attributes\fP
+.RB ( sgr )
+capability,
 most terminal capabilities require no more than one or two parameters.
 .bP
-Padding information is ignored by \fBtparm\fP;
-it is interpreted by \fBtputs\fP.
+Padding information is ignored by \fB\%tparm\fP;
+it is interpreted by \fB\%tputs\fP.
 .bP
 The capability string is null-terminated.
-Use \*(``\\200\*('' where an ASCII NUL is needed in the output.
+Use \*(``\e200\*('' where an ASCII NUL is needed in the output.
 .PP
-\fBtiparm\fP is a newer form of \fBtparm\fP which uses \fI<stdarg.h>\fP
+\fB\%tiparm\fP is a newer form of \fB\%tparm\fP which uses
+.I \%stdarg.h
 rather than a fixed-parameter list.
-Its numeric parameters are integers (int) rather than longs.
-.\" ***************************************************************************
-.SS Output Functions
-.PP
-The \fBtputs\fP routine applies padding information
-(i.e., by interpreting marker embedded in the terminfo capability
-such as \*(``$<5>\*('' as 5 milliseconds)
-to the string
-\fIstr\fP and outputs it:
-.bP
-The \fIstr\fP parameter must be a terminfo string
-variable or the return value from
-\fBtparm\fP, \fBtiparm\fP, \fBtgetstr\fP, or \fBtgoto\fP.
+Its numeric parameters are
+.IR int s
+rather than
+.IR long "s."
+.PP
+Both \fB\%tparm\fP and \fB\%tiparm\fP assume that the application passes
+parameters consistent with the terminal description.
+Two extensions are provided as alternatives to deal with untrusted data.
+.bP
+\fB\%tiparm_s\fP is an extension which is a safer formatting function
+than \fB\%tparm\fR or \fB\%tiparm\fR,
+because it allows the developer to tell the
+.I curses
+library how many parameters to expect in the parameter list,
+and which may be string parameters.
+.IP
+The \fImask\fP parameter has one bit set for each of the parameters
+(up to 9)
+passed as
+.I char
+pointers rather than numbers.
+.bP
+The extension \fB\%tiscan_s\fP allows the application to inspect a
+formatting capability to see what the
+.I curses
+library would assume.
+.\" ********************************************************************
+.SS "Output Functions"
+String capabilities can contain padding information,
+a time delay
+(accommodating performance limitations of hardware terminals)
+expressed as \fB$<\fIn\fB>\fR,
+where \fIn\fP is a nonnegative integral count of milliseconds.
+If \fIn\fP exceeds 30,000
+(thirty seconds),
+it is capped at that value.
+.PP
+\fB\%tputs\fP interprets time-delay information in the string
+.I str
+and outputs it,
+executing the delays:
+.bP
+The
+.I str
+parameter must be a
+.I \%term\%info
+string variable or the return value of
+\fB\%tparm\fP,
+\fB\%tiparm\fP,
+\fB\%tgetstr\fP,
+or \fB\%tgoto\fP.
 .IP
-The \fBtgetstr\fP and \fBtgoto\fP functions are part of the \fItermcap\fP
+The \fB\%tgetstr\fP and \fB\%tgoto\fP functions are part of the
+.I termcap
 interface,
-which happens to share this function name with the \fIterminfo\fP interface.
+which happens to share these function names with the
+.I \%term\%info
+API.
 .bP
-\fIaffcnt\fP is the number of lines affected, or 1 if
-not applicable.
+.I affcnt
+is the number of lines affected,
+or
+.B 1
+if not applicable.
 .bP
-\fIputc\fP is a \fBputchar\fP-like routine to which
-the characters are passed, one at a time.
+.I putc
+is a
+.IR \%putchar -like
+function to which the characters are passed,
+one at a time.
+.IP
+If \fB\%tputs\fP processes a time-delay,
+it uses the \fB\%delay_output\fP(3X) function,
+routing any resulting padding characters through this function.
 .PP
-The \fBputp\fR routine calls \fBtputs(\fIstr\fB, 1, putchar)\fR.
-The output of \fBputp\fP always goes to \fBstdout\fP, rather than
-the \fIfiledes\fP specified in \fBsetupterm\fP.
+\fB\%putp\fR calls
+.RB \%\*(`` tputs(\c
+.IB str ", 1, putchar)\c"
+\*(''.
+The output of \fB\%putp\fP always goes to
+.BR stdout ,
+rather than the
+.I \%file\%des
+specified in \fB\%setupterm\fP.
 .PP
-The \fBvidputs\fP routine displays the string on the terminal in the
-video attribute mode \fIattrs\fP, which is any combination of the
-attributes listed in \fBcurses\fP(3X).
-The characters are passed to
-the \fBputchar\fP-like routine \fIputc\fP.
+\fB\%vidputs\fP displays the string on the terminal in the video
+attribute mode
+.IR attrs ,
+which is any combination of the attributes listed in \fB\%curses\fP(3X).
+The characters are passed to the
+.IR \%putchar -like
+function
+.IR putc .
 .PP
-The \fBvidattr\fP routine is like the \fBvidputs\fP routine, except
-that it outputs through \fBputchar\fP.
+\fB\%vidattr\fP is like \fB\%vidputs\fP,
+except that it outputs through \fI\%putchar\fP(3).
 .PP
-The \fBvid_attr\fP and \fBvid_puts\fP routines correspond
-to vidattr and vidputs, respectively.
-They use a set of arguments for representing the video attributes plus color,
-i.e.,
+.B \%vid_attr
+and
+.B \%vid_puts
+correspond to
+.B \%vidattr
+and
+.BR \%vidputs ,
+respectively.
+They use multiple parameters to represent the character attributes and
+color;
+namely,
 .bP
-\fIattrs\fP of type \fBattr_t\fP for the attributes and
+.IR \%attrs ,
+of type
+.IR \%attr_t ,
+for the attributes and
 .bP
-\fIpair\fP of type \fBshort\fP for the color-pair number.
+.IR pair ,
+of type
+.IR short ,
+for the color pair number.
 .PP
-The \fBvid_attr\fP and \fBvid_puts\fP routines
-are designed to use the attribute constants with the \fBWA_\fP prefix.
+Use the attribute constants prefixed with
+.RB \*(`` WA_ \*(''
+with
+.B \%vid_attr
+and
+.BR \%vid_puts .
 .PP
-X/Open Curses reserves the \fIopts\fP argument for future use,
-saying that applications must provide a null pointer for that argument.
-As an extension,
-this implementation allows \fIopts\fP to be used as a pointer to \fBint\fP,
-which overrides the \fIpair\fP (\fBshort\fP) argument.
-.PP
-The \fBmvcur\fP routine provides low-level cursor motion.
-It takes effect immediately (rather than at the next refresh).
+X/Open Curses reserves the
+.I opts
+argument for future use,
+saying that applications must provide a null pointer for that argument;
+but see section \*(``EXTENSIONS\*('' below.
 .PP
-While \fBputp\fP and \fBmvcur\fP are low-level functions which
-do not use the high-level curses state,
-they are declared in \fB<curses.h>\fP because SystemV did this
-(see \fIHISTORY\fP).
-.\" ***************************************************************************
-.SS Terminal Capability Functions
+\fB\%mvcur\fP provides low-level cursor motion.
+It takes effect immediately
+(rather than at the next refresh).
+Unlike the other low-level output functions,
+which either write to the standard output or pass an output function
+parameter,
+\fB\%mvcur\fP uses an output file descriptor derived from
+the output stream parameter of \fB\%newterm\fP(3X).
 .PP
-The \fBtigetflag\fP, \fBtigetnum\fP and \fBtigetstr\fP routines return
-the value of the capability corresponding to the \fBterminfo\fP
-\fIcapname\fP passed to them, such as \fBxenl\fP.
-The \fIcapname\fP for each capability is given in the table column entitled
-\fIcapname\fP code in the capabilities section of \fBterminfo\fP(\*n).
+While \fB\%putp\fP and \fB\%mvcur\fP are low-level functions that do not
+use high-level
+.I curses
+state,
+.I \%ncurses
+declares them in
+.I \%curses.h
+because System\ V did this
+(see section \*(``HISTORY\*('' below).
+.\" ********************************************************************
+.SS "Terminal Capability Functions"
+\fB\%tigetflag\fP,
+\fB\%tigetnum\fP,
+and \fB\%tigetstr\fP return the value of the capability corresponding to
+the
+.I \%term\%info
+.IR cap-code ,
+such as
+.BR xenl ,
+passed to them.
+The
+.I cap-code
+for each capability is given in the table column entitled
+.I cap-code
+code in the capabilities section of \fB\%terminfo\fP(5).
 .PP
-These routines return special values to denote errors.
+These functions return special values to denote errors.
 .PP
-The \fBtigetflag\fP routine returns
+\fB\%tigetflag\fP returns
 .TP
-\fB\-1\fP
-if \fIcapname\fP is not a boolean capability,
+.B \-1
+if
+.I cap-code
+is not a Boolean capability,
 or
 .TP
-\fB0\fP
+.B 0
 if it is canceled or absent from the terminal description.
 .PP
-The \fBtigetnum\fP routine returns
+\fB\%tigetnum\fP returns
 .TP
-\fB\-2\fP
-if \fIcapname\fP is not a numeric capability, or
+.B \-2
+if
+.I cap-code
+is not a numeric capability,
+or
 .TP
-\fB\-1\fP
+.B \-1
 if it is canceled or absent from the terminal description.
 .PP
-The \fBtigetstr\fP routine returns
+\fB\%tigetstr\fP returns
 .TP
-\fB(char *)\-1\fP
-if \fIcapname\fP is not a string capability,
+.B "(char *)\-1"
+if
+.I cap-code
+is not a string capability,
 or
 .TP
-\fB0\fP
+.B 0
 if it is canceled or absent from the terminal description.
-.\" ***************************************************************************
-.SS Terminal Capability Names
-.PP
+.\" ********************************************************************
+.SS "Terminal Capability Names"
 These null-terminated arrays contain
 .bP
-the short terminfo names (\*(``codes\*(''),
+the short \fI\%term\%info\fP names (\*(``codes\*(''),
 .bP
-the \fBtermcap\fP names (\*(``names\*(''), and
+the \fItermcap\fP names (\*(``names\*(''),
+and
 .bP
-the long terminfo names (\*(``fnames\*('')
+the long \fI\%term\%info\fP names (\*(``fnames\*('')
+.PP
+for each of the predefined
+.I \%term\%info
+variables:
 .PP
-for each of the predefined \fBterminfo\fP variables:
-.sp
 .RS
+.nf
 \fBconst char *boolnames[]\fP, \fB*boolcodes[]\fP, \fB*boolfnames[]\fP
-.br
 \fBconst char *numnames[]\fP, \fB*numcodes[]\fP, \fB*numfnames[]\fP
-.br
 \fBconst char *strnames[]\fP, \fB*strcodes[]\fP, \fB*strfnames[]\fP
+.fi
 .RE
-.\" ***************************************************************************
-.SS Releasing Memory
-Each successful call to \fBsetupterm\fP allocates memory to hold the terminal
-description.
-As a side-effect, it sets \fBcur_term\fP to point to this memory.
+.\" ********************************************************************
+.SS "Releasing Memory"
+Each successful call to \fB\%setupterm\fP allocates memory to hold the
+terminal description.
+As a side effect,
+it sets \fB\%cur_term\fP to point to this memory.
 If an application calls
-.sp
-       \fBdel_curterm(cur_term);\fP
-.sp
+.IP
+.EX
+del_curterm(cur_term);
+.EE
+.PP
 the memory will be freed.
 .PP
-The formatting functions \fBtparm\fP and \fBtiparm\fP extend the storage
-allocated by \fBsetupterm\fP: 
+The formatting functions \fB\%tparm\fP and \fB\%tiparm\fP extend the
+storage allocated by \fB\%setupterm\fP as follows.
 .bP
-the \*(``static\*('' terminfo variables [a-z].
-Before ncurses 6.3, those were shared by all screens.
-With ncurses 6.3, those are allocated per screen.
-See \fBterminfo\fP(\*n) for details.
+They add the \*(``static\*(''
+.I \%term\%info
+variables [a-z].
+Before
+.I \%ncurses
+6.3,
+those were shared by all screens.
+With
+.I \%ncurses
+6.3,
+those are allocated per screen.
+See \fB\%terminfo\fP(5).
 .bP
-to improve performance, ncurses 6.3 caches the result of analyzing terminfo
+To improve performance,
+.I \%ncurses
+6.3 caches the result of analyzing
+.I \%term\%info
 strings for their parameter types.
-That is stored as a binary tree referenced from the \fBTERMINAL\fP structure.
+That is stored as a binary tree referenced from the
+.I \%TERMINAL
+structure.
 .PP
-The higher-level \fBinitscr\fP and \fBnewterm\fP functions use \fBsetupterm\fP.
-Normally they do not free this memory, but it is possible to do that using
-the \fBdelscreen\fP(3X) function.
-.\" ***************************************************************************
+The higher-level \fB\%initscr\fP and \fB\%newterm\fP functions use
+\fB\%setupterm\fP.
+Normally they do not free this memory,
+but it is possible to do that using the \fB\%delscreen\fP(3X) function.
+.\" ********************************************************************
 .SH RETURN VALUE
-Routines that return an integer return \fBERR\fP upon failure and \fBOK\fP
-(SVr4 only specifies \*(``an integer value other than \fBERR\fP\*('')
-upon successful completion,
-unless otherwise noted in the preceding routine descriptions.
-.PP
-Routines that return pointers always return \fBNULL\fP on error.
-.PP
-X/Open defines no error conditions.
-In this implementation
-.RS 3
+X/Open Curses defines no failure conditions.
+In
+.IR \%ncurses ,
 .TP 5
-\fBdel_curterm\fP
-returns an error
-if its terminal parameter is null.
+.B del_curtem
+fails if its terminal parameter is null.
 .TP 5
-\fBputp\fP
-calls \fBtputs\fP, returning the same error-codes.
+.B putp
+calls \fB\%tputs\fP,
+returning the same error codes.
 .TP 5
-\fBrestartterm\fP
-returns an error
-if the associated call to \fBsetupterm\fP returns an error.
+.B restartterm
+fails if the associated call to \fB\%setupterm\fP returns an error.
 .TP 5
-\fBsetupterm\fP
-returns an error
-if it cannot allocate enough memory, or
-create the initial windows (stdscr, curscr, newscr).
+.B setupterm
+fails if it cannot allocate enough memory,
+or create the initial windows
+.RB ( \%stdscr ,
+.BR \%curscr ,
+and
+.BR \%newscr )
 Other error conditions are documented above.
 .TP 5
-\fBtputs\fP
-returns an error if the string parameter is null.
+.B tparm
+returns a null pointer if the capability would require unexpected
+parameters;
+that is,
+too many,
+too few,
+or incorrect types
+(strings where integers are expected,
+or vice versa).
+.TP 5
+.B tputs
+fails if the string parameter is null.
 It does not detect I/O errors:
-X/Open states that \fBtputs\fP ignores the return value
-of the output function \fIputc\fP.
-.RE
-.\" ***************************************************************************
-.SS Compatibility macros
+X/Open Curses states that \fB\%tputs\fP ignores the return value
+of the output function \fI\%putc\fP.
+.\" ********************************************************************
+.SH NOTES
+The
+.B \%vid_attr
+function in
+.I \%ncurses
+is a special case.
+It was originally implemented based on a draft of X/Open Curses,
+as a macro,
+before other parts of the
+.I \%ncurses
+wide-character API were developed,
+and unlike the other wide-character functions,
+is also provided in the non-wide-character configuration.
+.\" ********************************************************************
+.SH EXTENSIONS
+The functions marked as extensions were designed for
+.IR \%ncurses ,
+and are not found in SVr4
+.IR curses ,
+4.4BSD
+.IR curses ,
+or any other previous
+.I curses
+implementation.
+.PP
+.I \%ncurses
+allows
+.I opts
+to be a pointer to
+.IR int ,
+which overrides the
+.I pair
+.RI ( short )
+argument.
+.\" ********************************************************************
+.SH PORTABILITY
+\fB\%setterm\fP is not described by X/Open and must be considered
+non-portable.
+All other functions are as described by X/Open.
+.SS "Compatibility Macros"
 This implementation provides a few macros for compatibility with systems
-before SVr4 (see \fIHISTORY\fP).
-Those include
-\fBcrmode\fP,
-\fBfixterm\fP,
-\fBgettmode\fP,
-\fBnocrmode\fP,
-\fBresetterm\fP,
-\fBsaveterm\fP, and
-\fBsetterm\fP.
-.PP
-In SVr4, those are found in \fB<curses.h>\fP,
-but except for \fBsetterm\fP, are likewise macros.
-The one function, \fBsetterm\fP, is mentioned in the manual page.
-The manual page notes that the \fBsetterm\fP routine
-was replaced by \fBsetupterm\fP, stating that the call:
-.sp
-      \fBsetupterm(\fIterm\fB, 1, (int *)0)\fR
-.sp
-provides the same functionality as \fBsetterm(\fIterm\fB)\fR,
-and is not recommended for new programs.
-This implementation provides each of those symbols
-as macros for BSD compatibility,
-.\" ***************************************************************************
+before SVr4
+(see section \*(``HISTORY\*('' below).
+They include
+\fB\%Bcrmode\fP,
+\fB\%Bfixterm\fP,
+\fB\%Bgettmode\fP,
+\fB\%Bnocrmode\fP,
+\fB\%Bresetterm\fP,
+\fB\%Bsaveterm\fP,
+and
+\fB\%Bsetterm\fP.
+.PP
+In SVr4,
+these are found in
+.IR \%curses.h ,
+but except for \fB\%setterm\fP,
+are likewise macros.
+The one function,
+\fB\%setterm\fP,
+is mentioned in the manual page.
+It further notes that \fB\%setterm\fP was replaced by \fB\%setupterm\fP,
+stating that the call
+.RS
+.EX
+setupterm(\fIterm\fP, 1, (int *)0)
+.EE
+.RE
+provides the same functionality as \fB\%setterm(\fIterm\fB)\fR,
+discouraging the latter for new programs.
+.I \%ncurses
+implements each of these symbols as macros for BSD
+.I curses
+compatibility.
+.SS "Legacy Data"
+\fB\%setupterm\fP copies the terminal name to the array \fB\%ttytype\fP.
+This is not part of X/Open Curses,
+but is assumed by some applications.
+.PP
+Other implementions may not declare the capability name arrays.
+Some provide them without declaring them.
+X/Open Curses does not specify them.
+.PP
+Extended terminal capability names,
+as defined by
+.RB \%\*(`` "@TIC@ \-x" \*('',
+are not stored in the arrays described here.
+.SS "Output Buffering"
+Older versions of \fI\%ncurses\fP assumed that the file descriptor
+passed to \fB\%setupterm\fP from \fB\%initscr\fP or \fB\%newterm\fP uses
+buffered I/O,
+and would write to the corresponding stream.
+In addition to the limitation that the terminal was left in
+block-buffered mode on exit
+(like System\ V
+.IR curses ),
+it was problematic because
+.I \%ncurses
+did not allow a reliable way to clean up on receiving
+.BR SIGTSTP .
+.PP
+The current version (ncurses6)
+uses output buffers managed directly by
+.IR \%ncurses .
+Some of the low-level functions described in this manual page write
+to the standard output.
+They are not signal-safe.
+The high-level functions in
+.I \%ncurses
+employ alternate versions of these functions using the more reliable
+buffering scheme.
+.SS "Function Prototypes"
+The X/Open Curses prototypes are based on the SVr4
+.I curses
+header declarations,
+which were defined at the same time the C language was first
+standardized in the late 1980s.
+.bP
+X/Open Curses uses
+.I \%const
+less effectively than a later design might,
+sometimes applying it needlessly to values that are already constant,
+and in most cases overlooking parameters that normally would use
+.IR \%const .
+Passing
+.IR \%const -qualified
+parameters to functions that do not declare them
+.I \%const
+may prevent the program from compiling.
+On the other hand,
+\*(``writable strings\*('' are an obsolescent feature.
+.IP
+As an extension,
+this implementation can be configured to change the function prototypes
+to use the
+.I \%const
+keyword.
+The
+.I \%ncurses
+ABI 6 enables this feature by default.
+.bP
+X/Open Curses prototypes \fB\%tparm\fP with a fixed number of
+parameters,
+rather than a variable argument list.
+.IP
+This implementation uses a variable argument list,
+but can be configured to use the fixed-parameter list.
+Portable applications should provide nine parameters after the format;
+zeroes are fine for this purpose.
+.IP
+In response to review comments by Thomas E. Dickey,
+X/Open Curses Issue 7 proposed the \fB\%tiparm\fP function in mid-2009.
+.IP
+While \fB\%tiparm\fP is always provided in \fI\%ncurses\fP,
+the older form is only available as a build-time configuration option.
+If not specially configured,
+\fB\%tparm\fP is the same as \fB\%tiparm\fP.
+.PP
+Both forms of \fB\%tparm\fP have drawbacks:
+.bP
+Most of the calls to \fB\%tparm\fP use only one or two parameters.
+Passing nine on each call is awkward.
+.IP
+Using
+.I long
+for the numeric parameter type is a workaround to make the parameter use
+the same amount of stack as a pointer.
+That approach dates back to the mid-1980s,
+before C was standardized.
+Since then,
+there is a standard
+(and pointers are not required to fit in a
+.IR long ).
+.bP
+Providing the right number of parameters for a variadic function
+such as \fB\%tiparm\fP can be a problem,
+in particular for string parameters.
+However,
+only a few
+.I \%term\%info
+capabilities use string parameters
+(for instance,
+the ones used for programmable function keys).
+.IP
+The \fI\%ncurses\fP library checks usage of these capabilities,
+and returns an error if the capability mishandles string parameters.
+But it cannot check if a calling program provides strings in the right
+places for the \fB\%tparm\fP calls.
+.IP
+The \fB\%@TPUT@\fR(1) program checks its use of these capabilities with
+a table,
+so that it calls \fB\%tparm\fP correctly.
+.SS "Special \fITERM\fP treatment"
+If configured to use the terminal driver,
+.\" XXX: as opposed to the Unix terminal driver, termio(s)?
+as with the MinGW port,
+.bP
+\fB\%setupterm\fP interprets a missing/empty \fITERM\fP variable as the
+special value \*(``unknown\*(''.
+.IP
+SVr4
+.I curses
+uses the special value \*(``dumb\*(''.
+.IP
+The difference between the two is that the former uses the
+.B \%generic_type
+.RB ( gn )
+.I \%term\%info
+capability,
+while the latter does not.
+A generic terminal is unsuitable for full-screen applications.
+.bP
+\fB\%setupterm\fP allows explicit use of the
+the windows console driver by checking if \fB$TERM\fP is set to
+\*(``#win32con\*('' or an abbreviation of that string.
+.SS "Other Portability Issues"
+In SVr4,
+\fB\%set_curterm\fP returns an
+.IR int ,
+.B OK
+or
+.BR ERR .
+We have chosen to implement the X/Open Curses semantics.
+.PP
+In SVr4,
+the third argument of \fB\%tputs\fP has the type
+.RB \*(`` "int (*putc)(char)" \*(''.
+.PP
+At least one implementation of X/Open Curses (Solaris) returns a value
+other than
+.B OK
+or
+.B ERR
+from \fB\%tputs\fP.
+It instead returns the length of the string,
+and does no error checking.
+.PP
+X/Open Curses notes that after calling \fB\%mvcur\fP,
+the
+.I curses
+state may not match the actual terminal state,
+and that an application should touch and refresh the window before
+resuming normal
+.I curses
+calls.
+Both
+.I \%ncurses
+and SVr4
+.I curses
+implement \fB\%mvcur\fP using the
+.I SCREEN
+data allocated in either \fB\%initscr\fP or \fB\%newterm\fP.
+So though it is documented as a
+.I \%term\%info
+function,
+\fB\%mvcur\fP is really a
+.I curses
+function that is not well specified.
+.PP
+X/Open Curses states that the old location must be given for
+\fB\%mvcur\fP to accommodate terminals that lack absolute cursor
+positioning.
+.\" X/Open Curses Issue 7, p. 161
+.I \%ncurses
+allows the caller to use \-1 for either or both old coordinates.
+The \-1 tells
+.I \%ncurses
+that the old location is unknown,
+and that it must use only absolute motion,
+as with the
+.B \%cursor_address
+.RB ( cup )
+capability,
+rather than the least costly combination of absolute and relative
+motion.
+.\" ********************************************************************
 .SH HISTORY
+SVr2 (1984) introduced the
+.I \%term\%info
+feature.
+Its programming manual mentioned the following low-level functions.
 .PP
-SVr2 introduced the terminfo feature.
-Its programming manual mentioned these low-level functions:
 .TS
-l l
-_ _
-l l.
-\fBFunction\fP \fBDescription\fP
-fixterm        restore tty to \*(``in curses\*('' state
-gettmode       establish current tty modes
+lB lB
+lB lx.
+Function       Description
+_
+fixterm        restore terminal to \*(``in \fIcurses\fP\*('' state
+gettmode       establish current terminal modes
 mvcur  low level cursor motion
-putp   T{
-utility function that uses \fBtputs\fP to send characters via \fBputchar\fP.
-T}
-resetterm      set tty modes to \*(``out of curses\*('' state
-resetty        reset tty flags to stored value
-saveterm       save current modes as \*(``in curses\*('' state
-savetty        store current tty flags
+putp   use \fBtputs\fP to send characters via \fIputchar\fP
+resetterm      set terminal modes to \*(``out of \fIcurses\fP\*(''\
+ state
+resetty        reset terminal flags to stored value
+saveterm       save current modes as \*(``in \fIcurses\fP\*('' state
+savetty        store current terminal flags
 setterm        establish terminal with given type
 setupterm      establish terminal with given type
-tparm  instantiate a string expression with parameters
+tparm  interpolate parameters into string capability
 tputs  apply padding information to a string
-vidattr        like \fBvidputs\fP, but outputs through \fBputchar\fP
+vidattr        like \fBvidputs\fP, but output through \fIputchar\fP
 vidputs        T{
-output a string to put terminal in a specified video attribute mode
+write string to terminal, applying specified attributes
 T}
 .TE
 .PP
 The programming manual also mentioned
-functions provided for termcap compatibility
-(commenting that they \*(``may go away at a later date\*(''):
+functions provided for
+.I termcap
+compatibility
+(commenting that they \*(``may go away at a later date\*('').
+.PP
 .TS
-l l
-_ _
-l l.
-\fBFunction\fP \fBDescription\fP
-tgetent        look up termcap entry for given \fIname\fP
-tgetflag       get boolean entry for given \fIid\fP
+lB lB
+lB lx.
+Function       Description
+_
+tgetent        look up \fItermcap\fP entry for given \fIname\fP
+tgetflag       get Boolean entry for given \fIid\fP
 tgetnum        get numeric entry for given \fIid\fP
 tgetstr        get string entry for given \fIid\fP
 tgoto  apply parameters to given capability
 tputs  T{
-apply padding to capability, calling a function to put characters
+write characters via a function parameter, applying padding
 T}
 .TE
 .PP
-Early terminfo programs obtained capability values from the
-\fBTERMINAL\fP structure initialized by \fBsetupterm\fP.
+Early
+.I \%term\%info
+programs obtained capability values from the
+.I \%TERMINAL
+structure initialized by \fB\%setupterm\fP.
+.PP
+SVr3 (1987) extended
+.I \%term\%info
+by adding functions to retrieve capability values
+(like the
+.I termcap
+interface),
+and reusing \fB\%tgoto\fP and \fB\%tputs\fP.
 .PP
-SVr3 extended terminfo by adding functions to retrieve capability values
-(like the termcap interface),
-and reusing tgoto and tputs:
 .TS
-l l
-_ _
-l l.
-\fBFunction\fP \fBDescription\fP
-tigetflag      get boolean entry for given \fIid\fP
+lB lB
+lB lx.
+Function       Description
+_
+tigetflag      get Boolean entry for given \fIid\fP
 tigetnum       get numeric entry for given \fIid\fP
 tigetstr       get string entry for given \fIid\fP
 .TE
 .PP
-SVr3 also replaced several of the SVr2 terminfo functions
-which had no counterpart in the termcap interface,
-documenting them as obsolete:
+SVr3 also replaced several of the SVr2
+.I \%term\%info
+functions that had no counterpart in the
+.I termcap
+interface,
+documenting them as obsolete.
+.PP
 .TS
-l l
-_ _
-l l.
-\fBFunction\fP \fBReplaced by\fP
+lB lB
+l  lx.
+Function       Replaced by
+_
 crmode cbreak
 fixterm        reset_prog_mode
-gettmode       N/A
+gettmode       \fIn/a\fP
 nocrmode       nocbreak
 resetterm      reset_shell_mode
 saveterm       def_prog_mode
 setterm        setupterm
 .TE
 .PP
-SVr3 kept the \fBmvcur\fP, \fBvidattr\fP and \fBvidputs\fP functions,
-along with \fBputp\fP, \fBtparm\fP and \fBtputs\fP.
+SVr3 kept the \fB\%mvcur\fP,
+\fB\%vidattr\fP,
+and \fB\%vidputs\fP functions,
+along with \fB\%putp\fP,
+\fB\%tparm\fP,
+and \fB\%tputs\fP.
 The latter were needed to support padding,
-and handling functions such as \fBvidattr\fP
-(which used more than the two parameters supported by \fBtgoto\fP).
+and to handle capabilities accessed by functions such as \fB\%vidattr\fP
+(which used more than the two parameters supported by \fB\%tgoto\fP).
 .PP
 SVr3 introduced the functions for switching between terminal
-descriptions, e.g., \fBset_curterm\fP.
-Some of that was incremental improvements to the SVr2 library:
+descriptions;
+for example,
+\fB\%set_curterm\fP.
+Some changes reflected incremental improvements to the SVr2 library.
 .bP
-The \fBTERMINAL\fP type definition was introduced in SVr3.01,
-for the \fBterm\fP structure provided in SVr2.
+The
+.I \%TERMINAL
+type definition was introduced in SVr3.01,
+for the
+.I term
+structure provided in SVr2.
 .bP
-The various global variables such as \fBboolnames\fP were mentioned
+Various global variables such as \fB\%boolnames\fP were mentioned
 in the programming manual at this point,
-though the variables were provided in SVr2.
+though the variables had been provided in SVr2.
 .PP
-SVr4 added the \fBvid_attr\fP and \fBvid_puts\fP functions.
+SVr4 (1989) added the \fB\%vid_attr\fP and \fB\%vid_puts\fP functions.
 .PP
-There are other low-level functions declared in the curses header files
-on Unix systems,
-but none were documented.
-The functions marked \*(``obsolete\*('' remained in use
-by the Unix \fBvi\fP(1) editor.
-.SH PORTABILITY
-.SS Legacy functions
-.PP
-X/Open notes that \fBvidattr\fP and \fBvidputs\fP may be macros.
-.PP
-The function \fBsetterm\fP is not described by X/Open and must
-be considered non-portable.
-All other functions are as described by X/Open.
-.SS Legacy data
-.PP
-\fBsetupterm\fP copies the terminal name to the array \fBttytype\fP.
-This is not part of X/Open Curses, but is assumed by some applications.
-.PP
-Other implementions may not declare the capability name arrays.
-Some provide them without declaring them.
-X/Open does not specify them.
-.PP
-Extended terminal capability names, e.g., as defined by \fB@TIC@\ \-x\fP,
-are not stored in the arrays described here.
-.SS Output buffering
-.PP
-Older versions of \fBncurses\fP assumed that the file descriptor passed to
-\fBsetupterm\fP from \fBinitscr\fP or \fBnewterm\fP uses buffered I/O,
-and would write to the corresponding stream.
-In addition to the limitation that the terminal was left in block-buffered
-mode on exit (like System V curses),
-it was problematic because \fBncurses\fP
-did not allow a reliable way to cleanup on receiving SIGTSTP.
-.PP
-The current version (ncurses6)
-uses output buffers managed directly by \fBncurses\fP.
-Some of the low-level functions described in this manual page write
-to the standard output.
-They are not signal-safe.
-The high-level functions in \fBncurses\fP use
-alternate versions of these functions
-using the more reliable buffering scheme.
-.SS Function prototypes
-.PP
-The X/Open Curses prototypes are based on the SVr4 curses header declarations,
-which were defined at the same time the C language was first standardized in
-the late 1980s.
-.bP
-X/Open Curses uses \fBconst\fP less effectively than a later design might,
-in some cases applying it needlessly to values are already constant,
-and in most cases overlooking parameters which normally would use \fBconst\fP.
-Using constant parameters for functions which do not use \fBconst\fP
-may prevent the program from compiling.
-On the other hand, \fIwritable strings\fP are an obsolescent feature.
-.IP
-As an extension, this implementation can be configured to change the
-function prototypes to use the \fBconst\fP keyword.
-The ncurses ABI 6 enables this feature by default.
-.bP
-X/Open Curses prototypes \fBtparm\fP with a fixed number of parameters,
-rather than a variable argument list.
-.IP
-This implementation uses a variable argument list, but can be
-configured to use the fixed-parameter list.
-Portable applications should provide 9 parameters after the format;
-zeroes are fine for this purpose.
-.IP
-In response to review comments by Thomas E. Dickey,
-X/Open Curses Issue 7 proposed the \fBtiparm\fP function in mid-2009.
-.SS Special TERM treatment
-.PP
-If configured to use the terminal-driver,
-e.g., for the MinGW port,
-.bP
-\fBsetupterm\fP interprets a missing/empty TERM variable as the
-special value \*(``unknown\*(''.
-.bP
-\fBsetupterm\fP allows explicit use of the
-the windows console driver by checking if $TERM is set to
-\*(``#win32con\*('' or an abbreviation of that string.
-.SS Other portability issues
-.PP
-In System V Release 4, \fBset_curterm\fP has an \fBint\fP return type and
-returns \fBOK\fP or \fBERR\fP.  We have chosen to implement the X/Open Curses
-semantics.
-.PP
-In System V Release 4, the third argument of \fBtputs\fP has the type
-\fBint (*putc)(char)\fP.
-.PP
-At least one implementation of X/Open Curses (Solaris) returns a value
-other than \fBOK\fP/\fBERR\fP from \fBtputs\fP.
-That returns the length of the string, and does no error-checking.
-.PP
-X/Open notes that after calling \fBmvcur\fP, the curses state may not match the
-actual terminal state, and that an application should touch and refresh
-the window before resuming normal curses calls.
-Both \fBncurses\fP and System V Release 4 curses implement \fBmvcur\fP using
-the SCREEN data allocated in either \fBinitscr\fP or \fBnewterm\fP.
-So though it is documented as a terminfo function,
-\fBmvcur\fP is really a curses function which is not well specified.
-.PP
-X/Open states that the old location must be given for \fBmvcur\fP.
-This implementation allows the caller to use \-1's for the old ordinates.
-In that case, the old location is unknown.
+Other low-level functions are declared in the
+.I curses
+header files of Unix systems,
+but none are documented.
+Those noted as \*(``obsolete\*('' by SVr3 remained in use by System\ V's
+\fIvi\fP(1) editor.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_initscr\fP(3X),
-\fBcurs_kernel\fP(3X),
-\fBcurs_memleaks\fP(3X),
-\fBcurs_termcap\fP(3X),
-\fBcurs_variables\fP(3X),
-\fBterm_variables\fP(3X),
-\fBputc\fP(3),
-\fBterminfo\fP(\*n)
+\fB\%curses\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_kernel\fP(3X),
+\fB\%curs_memleaks\fP(3X),
+\fB\%curs_termcap\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%putc\fP(3),
+\fB\%term_variables\fP(3X),
+\fB\%terminfo\fP(5)
index 58ace20e4412ca695cd1b86ed4e16ac613bcf50b..d49c16e71f0969e00c8c5844f174088ac1256f6b 100644 (file)
@@ -1,5 +1,6 @@
+'\" t
 .\"***************************************************************************
-.\" Copyright 2021,2022 Thomas E. Dickey                                     *
+.\" Copyright 2021-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2008-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_threads.3x,v 1.31 2022/02/12 20:05:11 tom Exp $
-.TH curs_threads 3X ""
+.\" $Id: curs_threads.3x,v 1.56 2024/03/16 15:35:01 tom Exp $
+.TH curs_threads 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBcurs_threads\fP \- \fBcurses\fP thread support
-.ad
-.hy
+\fI\%NCURSES_WINDOW_CB\fP,
+\fI\%NCURSES_SCREEN_CB\fP,
+\fB\%get_escdelay\fP,
+\fB\%set_escdelay\fP,
+\fB\%set_tabsize\fP,
+\fB\%use_screen\fP,
+\fB\%use_window\fP \-
+\fIcurses\fR support for multi-threaded applications
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBtypedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);\fP
-.br
-\fBtypedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);\fP
-.sp
-\fBint get_escdelay(void);\fP
-.br
-\fBint set_escdelay(int \fIms\fB);\fR
-.br
-\fBint set_tabsize(int \fIcols\fB);\fR
-.sp
-\fBint use_screen(SCREEN *\fIscr\fB, NCURSES_SCREEN_CB \fIfunc\fB, void *\fIdata\fB);\fR
-.br
-\fBint use_window(WINDOW *\fIwin\fB, NCURSES_WINDOW_CB \fIfunc\fB, void *\fIdata\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fI/* data types */
+\fBtypedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
+\fBtypedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
+.PP
+\fBint get_escdelay(void);
+\fBint set_escdelay(int \fIms\fP);
+\fBint set_tabsize(int \fIcols\fP);
+.PP
+\fBint use_screen(SCREEN *\fIscr\fP, NCURSES_SCREEN_CB \fIfunc\fP, void *\fIdata\fP);
+\fBint use_window(WINDOW *\fIwin\fP, NCURSES_WINDOW_CB \fIfunc\fP, void *\fIdata\fP);
+.fi
 .SH DESCRIPTION
-This implementation can be configured to provide rudimentary support
-for multi-threaded applications.
-This makes a different set of libraries, e.g., \fBlibncursest\fP since
-the binary interfaces are different.
+The \fI\%ncurses\fP library can be configured to support multi-threaded
+applications in a rudimentary way.
+Such configuration produces a different set of libraries,
+named \fIlibncursest\fP,
+for example,
+since doing so alters \fI\%ncurses\fP's application binary interface
+(ABI).
 .PP
-Rather than modify the interfaces to pass a thread specifier to
-each function, it adds a few functions which can be used in any
-configuration which hide the mutex's needed to prevent concurrent
-use of the global variables when configured for threading.
+Instead of modifying the programming interface (API) to make
+\fI\%ncurses\fP functions expect an additional argument specifying a
+thread,
+the library adds functions,
+usable in any configuration,
+that hide the \fImutexes\fP
+(mutual exclusion locks)
+needed to prevent concurrent access to variables shared by multiple
+threads of execution.
 .PP
-In addition to forcing access to members of the \fBWINDOW\fP structure
-to be via functions (see \fBcurs_opaque\fP(3X)),
-it makes functions of the common global variables,
-e.g.,
-COLORS,
-COLOR_PAIRS,
-COLS,
-ESCDELAY,
-LINES,
-TABSIZE
-curscr,
-newscr and
-ttytype.
-Those variables are maintained as read-only values, stored in the \fBSCREEN\fP
-structure.
+\fI\%ncurses\fP threading support requires the use of functions to
+access members of the \fI\%WINDOW\fP structure (see
+\fBcurs_opaque\fP(3X)).
+It further makes functions of the common global variables
+\fB\%COLORS\fP,
+\fB\%COLOR_PAIRS\fP,
+\fB\%COLS\fP,
+\fB\%ESCDELAY\fP,
+\fB\%LINES\fP,
+\fB\%TABSIZE\fP,
+\fB\%curscr\fP,
+\fB\%newscr\fP,
+and
+\fB\%ttytype\fP,
+maintaining them as as read-only values in the \fISCREEN\fP structure.
 .PP
-Even this is not enough to make a thread-safe application using curses.
-A multi-threaded application would be expected to have threads updating
-separate windows (within the same device),
-or updating on separate screens (on different devices).
-Also, a few of the global variables are considered writable by some
-applications.
+Even this is not enough to make an application using \fIcurses\fP
+thread-safe.
+We would expect a multi-threaded application to have threads updating
+separate windows (on the same device),
+and separate screens (on different devices).
+Further,
+applications expect a few of the global variables to be writable.
 The functions described here address these special situations.
 .PP
-The ESCDELAY and TABSIZE global variables are modified by some applications.
+The \fB\%ESCDELAY\fP and \fB\%TABSIZE\fP global variables are modified
+by some applications.
 To modify them in any configuration,
-use the \fBset_escdelay\fP or \fBset_tabsize\fP functions.
+use the \fB\%set_escdelay\fP or \fB\%set_tabsize\fP functions.
 Other global variables are not modifiable.
+\fBget_escdelay\fP retrieves \fB\%ESCDELAY\fP's value.
 .PP
-The \fBget_escdelay\fP function returns the value for ESCDELAY.
-.PP
-The \fBuse_window\fP and \fBuse_screen\fP functions provide coarse
-granularity mutexes for their respective \fBWINDOW\fP and \fBSCREEN\fP
-parameters, and call a user-supplied function,
-passing it a \fIdata\fP parameter,
-and returning the value from the user-supplied function to the application.
+The \fBuse_window\fP and \fBuse_screen\fP functions provide
+coarse-grained mutexes for their respective \fI\%WINDOW\fP and
+\fISCREEN\fP parameters;
+they call a user-supplied function,
+pass it a \fIdata\fP parameter,
+and return the value from the user-supplied function to the application.
 .\" ***************************************************************************
-.SS USAGE
-All of the ncurses library functions assume that the locale is not
+.SS Usage
+All \fI\%ncurses\fP library functions assume that the locale is not
 altered during operation.
 In addition,
-they use data which is maintained within a hierarchy of scopes.
-.RS 3
+they use data that is maintained within a hierarchy of scopes.
 .bP
-global data, e.g., used in the low-level terminfo or termcap interfaces.
+global data used in the low-level \fIterminfo\fP or \fItermcap\fP
+interfaces
 .bP
-terminal data, e.g., associated with a call to \fBset_curterm\fP.
-The terminal data are initialized when screens are created.
+terminal data associated with a call to \fBset_curterm\fP(3X)
+.IP
+Terminal data are initialized when screens are created.
 .bP
-screen data, e.g., associated with a call to \fBnewterm\fP or \fBinitscr\fP.
+screen data associated with a call to \fBnewterm\fP(3X) or
+\fBinitscr\fP(3X)
 .bP
-window data, e.g., associated with a call to \fBnewwin\fP or \fBsubwin\fP.
+window data associated with a call to \fBnewwin\fP(3X) or
+\fBsubwin\fP(3X)
+.IP
 Windows are associated with screens.
-Pads are not necessarily associated with a particular screen.
+Pads are not necessarily associated with any particular screen.
 .IP
-Most curses applications operate on one or more windows within a single screen.
+Most \fIcurses\fP applications operate on one or more windows within a
+single screen.
 .bP
-reentrant, i.e., it uses only the data passed as parameters.
-.RE
+reentrant data associated with \*(``pure\*('' functions that alter no
+shared variables
+.PP
+The following table lists the scope of each symbol in the
+\fI\%ncurses\fP library when configured to support multi-threaded
+applications.
 .PP
-This table lists the scope of data used for each symbol in the
-ncurses library when it is configured to support threading:
 .TS
-center tab(/);
-l l
-l l .
-Symbol/Scope
-=
-BC/global
-COLORS/screen (readonly)
-COLOR_PAIR/reentrant
-COLOR_PAIRS/screen (readonly)
-COLS/screen (readonly)
-ESCDELAY/screen (readonly, see \fBset_escdelay\fP)
-LINES/screen (readonly)
-PAIR_NUMBER/reentrant
-PC/global
-SP/global
-TABSIZE/screen (readonly)
-UP/global
-acs_map/screen (readonly)
-add_wch/window (stdscr)
-add_wchnstr/window (stdscr)
-add_wchstr/window (stdscr)
-addch/window (stdscr)
-addchnstr/window (stdscr)
-addchstr/window (stdscr)
-addnstr/window (stdscr)
-addnwstr/window (stdscr)
-addstr/window (stdscr)
-addwstr/window (stdscr)
-assume_default_colors/screen
-attr_get/window (stdscr)
-attr_off/window (stdscr)
-attr_on/window (stdscr)
-attr_set/window (stdscr)
-attroff/window (stdscr)
-attron/window (stdscr)
-attrset/window (stdscr)
-baudrate/screen
-beep/screen
-bkgd/window (stdscr)
-bkgdset/window (stdscr)
-bkgrnd/window (stdscr)
-bkgrndset/window (stdscr)
-boolcodes/global (readonly)
-boolfnames/global (readonly)
-boolnames/global (readonly)
-border/window (stdscr)
-border_set/window (stdscr)
-box/window (stdscr)
-box_set/window (stdscr)
-can_change_color/terminal
-cbreak/screen
-chgat/window (stdscr)
-clear/window (stdscr)
-clearok/window
-clrtobot/window (stdscr)
-clrtoeol/window (stdscr)
-color_content/screen
-color_set/window (stdscr)
-copywin/window locks(source, target)
-cur_term/terminal
-curs_set/screen
-curscr/screen (readonly)
-curses_version/global (readonly)
-def_prog_mode/terminal
-def_shell_mode/terminal
-define_key/screen
-del_curterm/screen
-delay_output/screen
-delch/window (stdscr)
-deleteln/window (stdscr)
-delscreen/global locks(screenlist, screen)
-delwin/global locks(windowlist)
-derwin/screen
-doupdate/screen
-dupwin/screen locks(window)
-echo/screen
-echo_wchar/window (stdscr)
-echochar/window (stdscr)
-endwin/screen
-erase/window (stdscr)
-erasechar/window (stdscr)
-erasewchar/window (stdscr)
-filter/global
-flash/terminal
-flushinp/screen
-get_wch/screen (input-operation)
-get_wstr/screen (input-operation)
-getattrs/window
-getbegx/window
-getbegy/window
-getbkgd/window
-getbkgrnd/window
-getcchar/reentrant
-getch/screen (input-operation)
-getcurx/window
-getcury/window
-getmaxx/window
-getmaxy/window
-getmouse/screen (input-operation)
-getn_wstr/screen (input-operation)
-getnstr/screen (input-operation)
-getparx/window
-getpary/window
-getstr/screen (input-operation)
-getwin/screen (input-operation)
-halfdelay/screen
-has_colors/terminal
-has_ic/terminal
-has_il/terminal
-has_key/screen
-hline/window (stdscr)
-hline_set/window (stdscr)
-idcok/window
-idlok/window
-immedok/window
-in_wch/window (stdscr)
-in_wchnstr/window (stdscr)
-in_wchstr/window (stdscr)
-inch/window (stdscr)
-inchnstr/window (stdscr)
-inchstr/window (stdscr)
-init_color/screen
-init_pair/screen
-initscr/global locks(screenlist)
-innstr/window (stdscr)
-innwstr/window (stdscr)
-ins_nwstr/window (stdscr)
-ins_wch/window (stdscr)
-ins_wstr/window (stdscr)
-insch/window (stdscr)
-insdelln/window (stdscr)
-insertln/window (stdscr)
-insnstr/window (stdscr)
-insstr/window (stdscr)
-instr/window (stdscr)
-intrflush/terminal
-inwstr/window (stdscr)
-is_cleared/window
-is_idcok/window
-is_idlok/window
-is_immedok/window
-is_keypad/window
-is_leaveok/window
-is_linetouched/window
-is_nodelay/window
-is_notimeout/window
-is_scrollok/window
-is_syncok/window
-is_term_resized/terminal
-is_wintouched/window
-isendwin/screen
-key_defined/screen
-key_name/global (static data)
-keybound/screen
-keyname/global (static data)
-keyok/screen
-keypad/window
-killchar/terminal
-killwchar/terminal
-leaveok/window
-longname/screen
-mcprint/terminal
-meta/screen
-mouse_trafo/window (stdscr)
-mouseinterval/screen
-mousemask/screen
-move/window (stdscr)
-mvadd_wch/window (stdscr)
-mvadd_wchnstr/window (stdscr)
-mvadd_wchstr/window (stdscr)
-mvaddch/window (stdscr)
-mvaddchnstr/window (stdscr)
-mvaddchstr/window (stdscr)
-mvaddnstr/window (stdscr)
-mvaddnwstr/window (stdscr)
-mvaddstr/window (stdscr)
-mvaddwstr/window (stdscr)
-mvchgat/window (stdscr)
-mvcur/screen
-mvdelch/window (stdscr)
-mvderwin/window (stdscr)
-mvget_wch/screen (input-operation)
-mvget_wstr/screen (input-operation)
-mvgetch/screen (input-operation)
-mvgetn_wstr/screen (input-operation)
-mvgetnstr/screen (input-operation)
-mvgetstr/screen (input-operation)
-mvhline/window (stdscr)
-mvhline_set/window (stdscr)
-mvin_wch/window (stdscr)
-mvin_wchnstr/window (stdscr)
-mvin_wchstr/window (stdscr)
-mvinch/window (stdscr)
-mvinchnstr/window (stdscr)
-mvinchstr/window (stdscr)
-mvinnstr/window (stdscr)
-mvinnwstr/window (stdscr)
-mvins_nwstr/window (stdscr)
-mvins_wch/window (stdscr)
-mvins_wstr/window (stdscr)
-mvinsch/window (stdscr)
-mvinsnstr/window (stdscr)
-mvinsstr/window (stdscr)
-mvinstr/window (stdscr)
-mvinwstr/window (stdscr)
-mvprintw/window (stdscr)
-mvscanw/screen
-mvvline/window (stdscr)
-mvvline_set/window (stdscr)
-mvwadd_wch/window
-mvwadd_wchnstr/window
-mvwadd_wchstr/window
-mvwaddch/window
-mvwaddchnstr/window
-mvwaddchstr/window
-mvwaddnstr/window
-mvwaddnwstr/window
-mvwaddstr/window
-mvwaddwstr/window
-mvwchgat/window
-mvwdelch/window
-mvwget_wch/screen (input-operation)
-mvwget_wstr/screen (input-operation)
-mvwgetch/screen (input-operation)
-mvwgetn_wstr/screen (input-operation)
-mvwgetnstr/screen (input-operation)
-mvwgetstr/screen (input-operation)
-mvwhline/window
-mvwhline_set/window
-mvwin/window
-mvwin_wch/window
-mvwin_wchnstr/window
-mvwin_wchstr/window
-mvwinch/window
-mvwinchnstr/window
-mvwinchstr/window
-mvwinnstr/window
-mvwinnwstr/window
-mvwins_nwstr/window
-mvwins_wch/window
-mvwins_wstr/window
-mvwinsch/window
-mvwinsnstr/window
-mvwinsstr/window
-mvwinstr/window
-mvwinwstr/window
-mvwprintw/window
-mvwscanw/screen
-mvwvline/window
-mvwvline_set/window
-napms/reentrant
-newpad/global locks(windowlist)
-newscr/screen (readonly)
-newterm/global locks(screenlist)
-newwin/global locks(windowlist)
-nl/screen
-nocbreak/screen
-nodelay/window
-noecho/screen
-nofilter/global
-nonl/screen
-noqiflush/terminal
-noraw/screen
-notimeout/window
-numcodes/global (readonly)
-numfnames/global (readonly)
-numnames/global (readonly)
-ospeed/global
-overlay/window locks(source, target)
-overwrite/window locks(source, target)
-pair_content/screen
-pecho_wchar/screen
-pechochar/screen
-pnoutrefresh/screen
-prefresh/screen
-printw/window
-putp/global
-putwin/window
-qiflush/terminal
-raw/screen
-redrawwin/window
-refresh/screen
-reset_prog_mode/screen
-reset_shell_mode/screen
-resetty/terminal
-resize_term/screen locks(windowlist)
-resizeterm/screen
-restartterm/screen
-ripoffline/global (static data)
-savetty/terminal
-scanw/screen
-scr_dump/screen
-scr_init/screen
-scr_restore/screen
-scr_set/screen
-scrl/window (stdscr)
-scroll/window
-scrollok/window
-set_curterm/screen
-set_escdelay/screen
-set_tabsize/screen
-set_term/global locks(screenlist, screen)
-setcchar/reentrant
-setscrreg/window (stdscr)
-setupterm/global
-slk_attr/screen
-slk_attr_off/screen
-slk_attr_on/screen
-slk_attr_set/screen
-slk_attroff/screen
-slk_attron/screen
-slk_attrset/screen
-slk_clear/screen
-slk_color/screen
-slk_init/screen
-slk_label/screen
-slk_noutrefresh/screen
-slk_refresh/screen
-slk_restore/screen
-slk_set/screen
-slk_touch/screen
-slk_wset/screen
-standend/window
-standout/window
-start_color/screen
-stdscr/screen (readonly)
-strcodes/global (readonly)
-strfnames/global (readonly)
-strnames/global (readonly)
-subpad/window
-subwin/window
-syncok/window
-term_attrs/screen
-termattrs/screen
-termname/terminal
-tgetent/global
-tgetflag/global
-tgetnum/global
-tgetstr/global
-tgoto/global
-tigetflag/terminal
-tigetnum/terminal
-tigetstr/terminal
-timeout/window (stdscr)
-touchline/window
-touchwin/window
-tparm/global (static data)
-tputs/screen
-trace/global (static data)
-ttytype/screen (readonly)
-typeahead/screen
-unctrl/screen
-unget_wch/screen (input-operation)
-ungetch/screen (input-operation)
-ungetmouse/screen (input-operation)
-untouchwin/window
-use_default_colors/screen
-use_env/global (static data)
-use_extended_names/global (static data)
-use_legacy_coding/screen
-use_screen/global locks(screenlist, screen)
-use_window/global locks(windowlist, window)
-vid_attr/screen
-vid_puts/screen
-vidattr/screen
-vidputs/screen
-vline/window (stdscr)
-vline_set/window (stdscr)
-vw_printw/window
-vw_scanw/screen
-vwprintw/window
-vwscanw/screen
-wadd_wch/window
-wadd_wchnstr/window
-wadd_wchstr/window
-waddch/window
-waddchnstr/window
-waddchstr/window
-waddnstr/window
-waddnwstr/window
-waddstr/window
-waddwstr/window
-wattr_get/window
-wattr_off/window
-wattr_on/window
-wattr_set/window
-wattroff/window
-wattron/window
-wattrset/window
-wbkgd/window
-wbkgdset/window
-wbkgrnd/window
-wbkgrndset/window
-wborder/window
-wborder_set/window
-wchgat/window
-wclear/window
-wclrtobot/window
-wclrtoeol/window
-wcolor_set/window
-wcursyncup/screen (affects window plus parents)
-wdelch/window
-wdeleteln/window
-wecho_wchar/window
-wechochar/window
-wenclose/window
-werase/window
-wget_wch/screen (input-operation)
-wget_wstr/screen (input-operation)
-wgetbkgrnd/window
-wgetch/screen (input-operation)
-wgetdelay/window
-wgetn_wstr/screen (input-operation)
-wgetnstr/screen (input-operation)
-wgetparent/window
-wgetscrreg/window
-wgetstr/screen (input-operation)
-whline/window
-whline_set/window
-win_wch/window
-win_wchnstr/window
-win_wchstr/window
-winch/window
-winchnstr/window
-winchstr/window
-winnstr/window
-winnwstr/window
-wins_nwstr/window
-wins_wch/window
-wins_wstr/window
-winsch/window
-winsdelln/window
-winsertln/window
-winsnstr/window
-winsstr/window
-winstr/window
-winwstr/window
-wmouse_trafo/window
-wmove/window
-wnoutrefresh/screen
-wprintw/window
-wredrawln/window
-wrefresh/screen
-wresize/window locks(windowlist)
-wscanw/screen
-wscrl/window
-wsetscrreg/window
-wstandend/window
-wstandout/window
-wsyncdown/screen (affects window plus parents)
-wsyncup/screen (affects window plus parents)
-wtimeout/window
-wtouchln/window
-wunctrl/global (static data)
-wvline/window
-wvline_set/window
+center;
+Lb2 Lb
+Lb2 Lx.
+Symbol Scope
+_
+BC     global
+COLORS screen (read-only)
+COLOR_PAIR     reentrant
+COLOR_PAIRS    screen (read-only)
+COLS   screen (read-only)
+ESCDELAY       screen (read-only; see \fBset_escdelay\fP)
+LINES  screen (read-only)
+PAIR_NUMBER    reentrant
+PC     global
+SP     global
+TABSIZE        screen (read-only; see \fBset_tabsize\fP)
+UP     global
+acs_map        screen (read-only)
+add_wch        window (\fBstdscr\fP)
+add_wchnstr    window (\fBstdscr\fP)
+add_wchstr     window (\fBstdscr\fP)
+addch  window (\fBstdscr\fP)
+addchnstr      window (\fBstdscr\fP)
+addchstr       window (\fBstdscr\fP)
+addnstr        window (\fBstdscr\fP)
+addnwstr       window (\fBstdscr\fP)
+addstr window (\fBstdscr\fP)
+addwstr        window (\fBstdscr\fP)
+assume_default_colors  screen
+attr_get       window (\fBstdscr\fP)
+attr_off       window (\fBstdscr\fP)
+attr_on        window (\fBstdscr\fP)
+attr_set       window (\fBstdscr\fP)
+attroff        window (\fBstdscr\fP)
+attron window (\fBstdscr\fP)
+attrset        window (\fBstdscr\fP)
+baudrate       screen
+beep   screen
+bkgd   window (\fBstdscr\fP)
+bkgdset        window (\fBstdscr\fP)
+bkgrnd window (\fBstdscr\fP)
+bkgrndset      window (\fBstdscr\fP)
+boolcodes      global (read-only)
+boolfnames     global (read-only)
+boolnames      global (read-only)
+border window (\fBstdscr\fP)
+border_set     window (\fBstdscr\fP)
+box    window (\fBstdscr\fP)
+box_set        window (\fBstdscr\fP)
+can_change_color       terminal
+cbreak screen
+chgat  window (\fBstdscr\fP)
+clear  window (\fBstdscr\fP)
+clearok        window
+clrtobot       window (\fBstdscr\fP)
+clrtoeol       window (\fBstdscr\fP)
+color_content  screen
+color_set      window (\fBstdscr\fP)
+copywin        window (locks source, target)
+cur_term       terminal
+curs_set       screen
+curscr screen (read-only)
+curses_version global (read-only)
+def_prog_mode  terminal
+def_shell_mode terminal
+define_key     screen
+del_curterm    screen
+delay_output   screen
+delch  window (\fBstdscr\fP)
+deleteln       window (\fBstdscr\fP)
+delscreen      global (locks screen list, screen)
+delwin global (locks window list)
+derwin screen
+doupdate       screen
+dupwin screen (locks window)
+echo   screen
+echo_wchar     window (\fBstdscr\fP)
+echochar       window (\fBstdscr\fP)
+endwin screen
+erase  window (\fBstdscr\fP)
+erasechar      window (\fBstdscr\fP)
+erasewchar     window (\fBstdscr\fP)
+filter global
+flash  terminal
+flushinp       screen
+get_wch        screen (input operation)
+get_wstr       screen (input operation)
+getattrs       window
+getbegx        window
+getbegy        window
+getbkgd        window
+getbkgrnd      window
+getcchar       reentrant
+getch  screen (input operation)
+getcurx        window
+getcury        window
+getmaxx        window
+getmaxy        window
+getmouse       screen (input operation)
+getn_wstr      screen (input operation)
+getnstr        screen (input operation)
+getparx        window
+getpary        window
+getstr screen (input operation)
+getwin screen (input operation)
+halfdelay      screen
+has_colors     terminal
+has_ic terminal
+has_il terminal
+has_key        screen
+hline  window (\fBstdscr\fP)
+hline_set      window (\fBstdscr\fP)
+idcok  window
+idlok  window
+immedok        window
+in_wch window (\fBstdscr\fP)
+in_wchnstr     window (\fBstdscr\fP)
+in_wchstr      window (\fBstdscr\fP)
+inch   window (\fBstdscr\fP)
+inchnstr       window (\fBstdscr\fP)
+inchstr        window (\fBstdscr\fP)
+init_color     screen
+init_pair      screen
+initscr        global (locks screen list)
+innstr window (\fBstdscr\fP)
+innwstr        window (\fBstdscr\fP)
+ins_nwstr      window (\fBstdscr\fP)
+ins_wch        window (\fBstdscr\fP)
+ins_wstr       window (\fBstdscr\fP)
+insch  window (\fBstdscr\fP)
+insdelln       window (\fBstdscr\fP)
+insertln       window (\fBstdscr\fP)
+insnstr        window (\fBstdscr\fP)
+insstr window (\fBstdscr\fP)
+instr  window (\fBstdscr\fP)
+intrflush      terminal
+inwstr window (\fBstdscr\fP)
+is_cleared     window
+is_idcok       window
+is_idlok       window
+is_immedok     window
+is_keypad      window
+is_leaveok     window
+is_linetouched window
+is_nodelay     window
+is_notimeout   window
+is_scrollok    window
+is_syncok      window
+is_term_resized        terminal
+is_wintouched  window
+isendwin       screen
+key_defined    screen
+key_name       global (static data)
+keybound       screen
+keyname        global (static data)
+keyok  screen
+keypad window
+killchar       terminal
+killwchar      terminal
+leaveok        window
+longname       screen
+mcprint        terminal
+meta   screen
+mouse_trafo    window (\fBstdscr\fP)
+mouseinterval  screen
+mousemask      screen
+move   window (\fBstdscr\fP)
+mvadd_wch      window (\fBstdscr\fP)
+mvadd_wchnstr  window (\fBstdscr\fP)
+mvadd_wchstr   window (\fBstdscr\fP)
+mvaddch        window (\fBstdscr\fP)
+mvaddchnstr    window (\fBstdscr\fP)
+mvaddchstr     window (\fBstdscr\fP)
+mvaddnstr      window (\fBstdscr\fP)
+mvaddnwstr     window (\fBstdscr\fP)
+mvaddstr       window (\fBstdscr\fP)
+mvaddwstr      window (\fBstdscr\fP)
+mvchgat        window (\fBstdscr\fP)
+mvcur  screen
+mvdelch        window (\fBstdscr\fP)
+mvderwin       window (\fBstdscr\fP)
+mvget_wch      screen (input operation)
+mvget_wstr     screen (input operation)
+mvgetch        screen (input operation)
+mvgetn_wstr    screen (input operation)
+mvgetnstr      screen (input operation)
+mvgetstr       screen (input operation)
+mvhline        window (\fBstdscr\fP)
+mvhline_set    window (\fBstdscr\fP)
+mvin_wch       window (\fBstdscr\fP)
+mvin_wchnstr   window (\fBstdscr\fP)
+mvin_wchstr    window (\fBstdscr\fP)
+mvinch window (\fBstdscr\fP)
+mvinchnstr     window (\fBstdscr\fP)
+mvinchstr      window (\fBstdscr\fP)
+mvinnstr       window (\fBstdscr\fP)
+mvinnwstr      window (\fBstdscr\fP)
+mvins_nwstr    window (\fBstdscr\fP)
+mvins_wch      window (\fBstdscr\fP)
+mvins_wstr     window (\fBstdscr\fP)
+mvinsch        window (\fBstdscr\fP)
+mvinsnstr      window (\fBstdscr\fP)
+mvinsstr       window (\fBstdscr\fP)
+mvinstr        window (\fBstdscr\fP)
+mvinwstr       window (\fBstdscr\fP)
+mvprintw       window (\fBstdscr\fP)
+mvscanw        screen
+mvvline        window (\fBstdscr\fP)
+mvvline_set    window (\fBstdscr\fP)
+mvwadd_wch     window
+mvwadd_wchnstr window
+mvwadd_wchstr  window
+mvwaddch       window
+mvwaddchnstr   window
+mvwaddchstr    window
+mvwaddnstr     window
+mvwaddnwstr    window
+mvwaddstr      window
+mvwaddwstr     window
+mvwchgat       window
+mvwdelch       window
+mvwget_wch     screen (input operation)
+mvwget_wstr    screen (input operation)
+mvwgetch       screen (input operation)
+mvwgetn_wstr   screen (input operation)
+mvwgetnstr     screen (input operation)
+mvwgetstr      screen (input operation)
+mvwhline       window
+mvwhline_set   window
+mvwin  window
+mvwin_wch      window
+mvwin_wchnstr  window
+mvwin_wchstr   window
+mvwinch        window
+mvwinchnstr    window
+mvwinchstr     window
+mvwinnstr      window
+mvwinnwstr     window
+mvwins_nwstr   window
+mvwins_wch     window
+mvwins_wstr    window
+mvwinsch       window
+mvwinsnstr     window
+mvwinsstr      window
+mvwinstr       window
+mvwinwstr      window
+mvwprintw      window
+mvwscanw       screen
+mvwvline       window
+mvwvline_set   window
+napms  reentrant
+newpad global (locks window list)
+newscr screen (read-only)
+newterm        global (locks screen list)
+newwin global (locks window list)
+nl     screen
+nocbreak       screen
+nodelay        window
+noecho screen
+nofilter       global
+nonl   screen
+noqiflush      terminal
+noraw  screen
+notimeout      window
+numcodes       global (read-only)
+numfnames      global (read-only)
+numnames       global (read-only)
+ospeed global
+overlay        window (locks source, target)
+overwrite      window (locks source, target)
+pair_content   screen
+pecho_wchar    screen
+pechochar      screen
+pnoutrefresh   screen
+prefresh       screen
+printw window
+putp   global
+putwin window
+qiflush        terminal
+raw    screen
+redrawwin      window
+refresh        screen
+reset_prog_mode        screen
+reset_shell_mode       screen
+resetty        terminal
+resize_term    screen (locks window list)
+resizeterm     screen
+restartterm    screen
+ripoffline     global (static data)
+savetty        terminal
+scanw  screen
+scr_dump       screen
+scr_init       screen
+scr_restore    screen
+scr_set        screen
+scrl   window (\fBstdscr\fP)
+scroll window
+scrollok       window
+set_curterm    screen
+set_escdelay   screen
+set_tabsize    screen
+set_term       global (locks screen list, screen)
+setcchar       reentrant
+setscrreg      window (\fBstdscr\fP)
+setupterm      global
+slk_attr       screen
+slk_attr_off   screen
+slk_attr_on    screen
+slk_attr_set   screen
+slk_attroff    screen
+slk_attron     screen
+slk_attrset    screen
+slk_clear      screen
+slk_color      screen
+slk_init       screen
+slk_label      screen
+slk_noutrefresh        screen
+slk_refresh    screen
+slk_restore    screen
+slk_set        screen
+slk_touch      screen
+slk_wset       screen
+standend       window
+standout       window
+start_color    screen
+\fBstdscr\fP   screen (read-only)
+strcodes       global (read-only)
+strfnames      global (read-only)
+strnames       global (read-only)
+subpad window
+subwin window
+syncok window
+term_attrs     screen
+termattrs      screen
+termname       terminal
+tgetent        global
+tgetflag       global
+tgetnum        global
+tgetstr        global
+tgoto  global
+tigetflag      terminal
+tigetnum       terminal
+tigetstr       terminal
+timeout        window (\fBstdscr\fP)
+touchline      window
+touchwin       window
+tparm  global (static data)
+tputs  screen
+trace  global (static data)
+ttytype        screen (read-only)
+typeahead      screen
+unctrl screen
+unget_wch      screen (input operation)
+ungetch        screen (input operation)
+ungetmouse     screen (input operation)
+untouchwin     window
+use_default_colors     screen
+use_env        global (static data)
+use_extended_names     global (static data)
+use_legacy_coding      screen
+use_screen     global (locks screen list, screen)
+use_window     global (locks window list, window)
+vid_attr       screen
+vid_puts       screen
+vidattr        screen
+vidputs        screen
+vline  window (\fBstdscr\fP)
+vline_set      window (\fBstdscr\fP)
+vw_printw      window
+vw_scanw       screen
+vwprintw       window
+vwscanw        screen
+wadd_wch       window
+wadd_wchnstr   window
+wadd_wchstr    window
+waddch window
+waddchnstr     window
+waddchstr      window
+waddnstr       window
+waddnwstr      window
+waddstr        window
+waddwstr       window
+wattr_get      window
+wattr_off      window
+wattr_on       window
+wattr_set      window
+wattroff       window
+wattron        window
+wattrset       window
+wbkgd  window
+wbkgdset       window
+wbkgrnd        window
+wbkgrndset     window
+wborder        window
+wborder_set    window
+wchgat window
+wclear window
+wclrtobot      window
+wclrtoeol      window
+wcolor_set     window
+wcursyncup     screen (affects window plus parents)
+wdelch window
+wdeleteln      window
+wecho_wchar    window
+wechochar      window
+wenclose       window
+werase window
+wget_wch       screen (input operation)
+wget_wstr      screen (input operation)
+wgetbkgrnd     window
+wgetch screen (input operation)
+wgetdelay      window
+wgetn_wstr     screen (input operation)
+wgetnstr       screen (input operation)
+wgetparent     window
+wgetscrreg     window
+wgetstr        screen (input operation)
+whline window
+whline_set     window
+win_wch        window
+win_wchnstr    window
+win_wchstr     window
+winch  window
+winchnstr      window
+winchstr       window
+winnstr        window
+winnwstr       window
+wins_nwstr     window
+wins_wch       window
+wins_wstr      window
+winsch window
+winsdelln      window
+winsertln      window
+winsnstr       window
+winsstr        window
+winstr window
+winwstr        window
+wmouse_trafo   window
+wmove  window
+wnoutrefresh   screen
+wprintw        window
+wredrawln      window
+wrefresh       screen
+wresize        window (locks window list)
+wscanw screen
+wscrl  window
+wsetscrreg     window
+wstandend      window
+wstandout      window
+wsyncdown      screen (affects window plus parents)
+wsyncup        screen (affects window plus parents)
+wtimeout       window
+wtouchln       window
+wunctrl        global (static data)
+wvline window
+wvline_set     window
 .TE
 .\" ***************************************************************************
 .SH RETURN VALUE
-These functions all return \fBTRUE\fP or \fBFALSE\fP, except as noted.
+\fB\%get_escdelay\fP returns the value of \fB\%ESCDELAY\fP.
+\fB\%set_escdelay\fP and \fB\%set_tabsize\fP return \fBERR\fP upon
+failure and \fBOK\fP upon successful completion.
+\fB\%use_screen\fP and \fB\%use_window\fP return the \fIint\fP returned
+by the user-supplied function they are called with.
 .SH NOTES
-Both a macro and a function are provided for each name.
+\fI\%ncurses\fP provides both a C function and a preprocessor macro for
+each function documented in this page.
 .SH PORTABILITY
-These routines are specific to ncurses.
+These routines are specific to \fI\%ncurses\fP.
 They were not supported on Version 7, BSD or System V implementations.
-It is recommended that any code depending on ncurses extensions
-be conditioned using NCURSES_VERSION.
+It is recommended that any code depending on \fI\%ncurses\fP extensions
+be conditioned using \fB\%NCURSES_VERSION\fP.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_opaque\fP(3X),
-\fBcurs_variables\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_opaque\fP(3X),
+\fB\%curs_variables\fP(3X)
index 7b979b2b63ab51a89f102604816328ad34cabf0d..613b6958268dbc82d871abb9cd6e5abb990ce8ae 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_touch.3x,v 1.26 2022/02/12 20:05:11 tom Exp $
-.TH curs_touch 3X ""
-.na
-.hy 0
+.\" $Id: curs_touch.3x,v 1.47 2024/04/20 21:20:07 tom Exp $
+.TH curs_touch 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBtouchwin\fP,
-\fBtouchline\fP,
-\fBuntouchwin\fP,
-\fBwtouchln\fP,
-\fBis_linetouched\fP,
-\fBis_wintouched\fP \- \fBcurses\fP refresh control routines
-.ad
-.hy
+\fB\%touchwin\fP,
+\fB\%touchline\fP,
+\fB\%untouchwin\fP,
+\fB\%wtouchln\fP,
+\fB\%is_linetouched\fP,
+\fB\%is_wintouched\fP \-
+control terminal output refresh in a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint touchline(WINDOW *\fIwin\fB, int \fIstart\fB, int \fIcount\fB);\fR
-.sp
-\fBint touchwin(WINDOW *\fIwin\fB);\fR
-.br
-\fBint wtouchln(WINDOW *\fIwin\fB, int \fIy\fB, int \fIn\fB, int \fIchanged\fB);\fR
-.sp
-\fBint untouchwin(WINDOW *\fIwin\fB);\fR
-.sp
-\fBbool is_linetouched(WINDOW *\fIwin\fB, int \fIline\fB);\fR
-.br
-\fBbool is_wintouched(WINDOW *\fIwin\fB);\fR
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBint touchline(WINDOW *\fIwin\fP, int \fIstart\fP, int \fIcount\fP);
+.PP
+\fBint touchwin(WINDOW *\fIwin\fP);
+\fBint wtouchln(WINDOW *\fIwin\fP, int \fIy\fP, int \fIn\fP, int \fIchanged\fP);
+.PP
+\fBint untouchwin(WINDOW *\fIwin\fP);
+.PP
+\fBbool is_linetouched(WINDOW *\fIwin\fP, int \fIline\fP);
+\fBbool is_wintouched(WINDOW *\fIwin\fP);
+.fi
 .SH DESCRIPTION
-The \fBtouchwin\fP and \fBtouchline\fP routines throw away all
+The \fB\%touchwin\fP and \fB\%touchline\fP routines throw away all
 optimization information about which parts of the window have been
 touched, by pretending that the entire window has been drawn on.
 This
@@ -64,35 +60,35 @@ is sometimes necessary when using overlapping windows, since a change
 to one window affects the other window, but the records of which lines
 have been changed in the other window do not reflect the change.
 The
-routine \fBtouchline\fP only pretends that \fIcount\fP lines have been
+routine \fB\%touchline\fP only pretends that \fIcount\fP lines have been
 changed, beginning with line \fIstart\fP.
 .PP
-The \fBuntouchwin\fP routine marks all lines in the window as unchanged since
-the last call to \fBwrefresh\fP.
+The \fB\%untouchwin\fP routine marks all lines in the window as unchanged since
+the last call to \fB\%wrefresh\fP.
 .PP
-The \fBwtouchln\fP routine makes \fIn\fP lines in the window, starting
+The \fB\%wtouchln\fP routine makes \fIn\fP lines in the window, starting
 at line \fIy\fR, look as if they have (\fIchanged\fB=1\fR) or have
 not (\fIchanged\fB=0\fR) been changed since the last call to
-\fBwrefresh\fP.
+\fB\%wrefresh\fP.
 .PP
-The \fBis_linetouched\fP and \fBis_wintouched\fP routines return
+The \fB\%is_linetouched\fP and \fB\%is_wintouched\fP routines return
 \fBTRUE\fP if the specified line/window was modified since the last
-call to \fBwrefresh\fP; otherwise they return \fBFALSE\fP.  In
-addition, \fBis_linetouched\fP returns \fBERR\fP if \fIline\fP is not
+call to \fB\%wrefresh\fP; otherwise they return \fBFALSE\fP.  In
+addition, \fB\%is_linetouched\fP returns \fBERR\fP if \fIline\fP is not
 valid for the given window.
 .SH RETURN VALUE
 All routines return the integer \fBERR\fP upon failure and an integer value
 other than \fBERR\fP upon successful completion, unless otherwise noted in the
 preceding routine descriptions.
 .PP
-X/Open does not define any error conditions.
+X/Open Curses does not specify any error conditions.
 In this implementation
 .RS 3
 .TP 5
 \fBis_linetouched\fP
 returns an error
 if the window pointer is null, or
-if the line number is outside the window.
+if the line number is outside the window boundaries.
 .IP
 The constant \fBERR\fP is distinct from \fBTRUE\fP and \fBFALSE\fP,
 which are the normal return values of this function.
@@ -101,29 +97,28 @@ returning \fBERR\fP (which is neither \fBTRUE\fP nor \fBFALSE\fP)
 may not be supported by the compiler.
 .IP
 To provide error-checking and also match the X/Open function prototype,
-the \fBERR\fP is provided by a macro named \fBis_linetouched\fP.
+the \fBERR\fP is provided by a macro named \fB\%is_linetouched\fP.
 The actual function returns \fBFALSE\fP when it detects an error.
 .TP 5
 \fBwtouchln\fP
 returns an error
 if the window pointer is null, or
-if the line number is outside the window.
+if the line number is outside the window boundaries.
 .RE
+.SH NOTES
+All of these routines except \fB\%wtouchln\fP may be macros.
 .SH PORTABILITY
-.PP
 These functions were introduced by SVr4.
-The Solaris curses header file,
+The Solaris \fIcurses\fP header file,
 for instance, defines both an actual function and macro for each.
 The macros give the same result as the actual functions.
-SVr4 curses does not check the window parameter \fIwin\fP to ensure
+SVr4 \fIcurses\fP does not check the window parameter \fIwin\fP to ensure
 that it is not \fBNULL\fP;
 otherwise this implementation behaves the same as SVr4.
 .PP
-The XSI Curses standard, Issue 4 describes these functions,
+X/Open Curses, Issue 4 describes these functions,
 but defines no error conditions.
-.SH NOTES
-All of these routines except \fBwtouchln\fP may be macros.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_variables\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_variables\fP(3X)
index 02e67394d3121bf87c820e2b770284b0ff67db97..ddae7911254160565f7c286adde7bdc6b1657454 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2000-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_trace.3x,v 1.25 2022/02/12 20:06:41 tom Exp $
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_trace.3x,v 1.50 2024/04/20 21:24:19 tom Exp $
+.TH curs_trace 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.TH curs_trace 3X ""
+.
+.de dS \" Start unfilled display.
+.nr aD \n(.j
 .na
-.hy 0
+..
+.
+.de dE \" End unfilled display.
+.ad \n(.j
+.rr aD
+..
+.
 .SH NAME
-\fBcurses_trace\fP,
-\fBtrace\fP,
-\fB_tracef\fP,
-\fB_traceattr\fP,
-\fB_traceattr2\fP,
-\fB_tracecchar_t\fP,
-\fB_tracecchar_t2\fP,
-\fB_tracechar\fP,
-\fB_tracechtype\fP,
-\fB_tracechtype2\fP,
-\fB_nc_tracebits\fP,
-\fB_tracedump\fP,
-\fB_tracemouse\fP \- \fBcurses\fP debugging routines
-.ad
-.hy
+\fB\%curses_trace\fP,
+\fB\%trace\fP,
+\fB\%_tracef\fP,
+\fB\%_traceattr\fP,
+\fB\%_traceattr2\fP,
+\fB\%_tracecchar_t\fP,
+\fB\%_tracecchar_t2\fP,
+\fB\%_tracechar\fP,
+\fB\%_tracechtype\fP,
+\fB\%_tracechtype2\fP,
+\fB\%_nc_tracebits\fP,
+\fB\%_tracedump\fP,
+\fB\%_tracemouse\fP \-
+\fIcurses\fR debugging routines
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBunsigned curses_trace(const unsigned \fIparam\fB);\fR
-.sp
-\fBvoid _tracef(const char *\fIformat\fB, ...);\fR
-.sp
-\fBchar *_traceattr(attr_t \fIattr\fB);\fR
-.br
-\fBchar *_traceattr2(int \fIbuffer\fB, chtype \fIch\fB);\fR
-.br
-\fBchar *_tracecchar_t(const cchar_t *\fIstring\fB);\fR
-.br
-\fBchar *_tracecchar_t2(int \fIbuffer\fB, const cchar_t *\fIstring\fB);\fR
-.br
-\fBchar *_tracechar(int \fIch\fB);\fR
-.br
-\fBchar *_tracechtype(chtype \fIch\fB);\fR
-.br
-\fBchar *_tracechtype2(int \fIbuffer\fB, chtype \fIch\fB);\fR
-.sp
-\fBvoid _tracedump(const char *\fIlabel\fB, WINDOW *\fIwin\fB);\fR
-.br
-\fBchar *_nc_tracebits(void);\fP
-.br
-\fBchar *_tracemouse(const MEVENT *\fIevent\fB);\fR
-.sp
-/* deprecated */
-.br
-\fBvoid trace(const unsigned int \fIparam\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBunsigned curses_trace(const unsigned \fItrace-mask\fP);
+.PP
+\fBvoid _tracef(const char *\fIformat\fP, ...);
+.PP
+\fBchar *_traceattr(attr_t \fIattr\fP);
+\fBchar *_traceattr2(int \fIbuffer\fP, chtype \fIch\fP);
+\fBchar *_tracecchar_t(const cchar_t *\fIstring\fP);
+\fBchar *_tracecchar_t2(int \fIbuffer\fP, const cchar_t *\fIstring\fP);
+\fBchar *_tracechar(int \fIc\fP);
+\fBchar *_tracechtype(chtype \fIch\fP);
+\fBchar *_tracechtype2(int \fIbuffer\fP, chtype \fIch\fP);
+.PP
+\fBvoid _tracedump(const char *\fIlabel\fP, WINDOW *\fIwin\fP);
+\fBchar *_nc_tracebits(void);
+\fBchar *_tracemouse(const MEVENT *\fIevent\fP);
+.PP
+\fI/* deprecated */\fP
+\fBvoid trace(const unsigned int \fItrace-mask\fP);
+.fi
 .SH DESCRIPTION
-The \fIcurses trace\fP routines are used for debugging the ncurses libraries,
-as well as applications which use the ncurses libraries.
+The \fIcurses trace\fP routines are used for debugging the
+\fI\%ncurses\fP libraries,
+as well as applications which use the \fI\%ncurses\fP libraries.
 Some limitations apply:
 .bP
 Aside from \fBcurses_trace\fP,
@@ -125,11 +134,11 @@ updates the trace mask,
 and returns the previous trace mask.
 .IP
 When the trace mask is nonzero,
-ncurses creates the file \*(``trace\*('' in the current directory for output.
+\fI\%ncurses\fP creates the file \*(``trace\*('' in the current directory for output.
 If the file already exists, no tracing is done.
 .bP
 If tracing is not available, \fBcurses_trace\fP returns zero (0).
-.SS Trace Parameter
+.SS "Trace Parameter"
 The trace parameter is formed by OR'ing
 values from the list of \fBTRACE_\fIxxx\fR definitions in \fB<curses.h>\fR.
 These include:
@@ -194,31 +203,7 @@ Some tracing features are enabled whenever the \fBcurses_trace\fP parameter
 is nonzero.
 Some features overlap.
 The specific names are used as a guideline.
-.SS Initialization
-These functions check the \fBNCURSES_TRACE\fP environment variable,
-to set the tracing feature as if \fBcurses_trace\fP was called:
-.RS 4
-.PP
-.na
-.hy 0
-filter,
-initscr,
-new_prescr,
-newterm,
-nofilter,
-restartterm,
-ripoffline,
-setupterm,
-slk_init,
-tgetent,
-use_env,
-use_extended_names,
-use_tioctl
-.hy
-.ad
-.RE
-.SS Command-line Utilities
-.PP
+.SS "Command-line Utilities"
 The command-line utilities such as \fBtic\fP(1) provide a verbose option
 which extends the set of messages written using the \fBcurses_trace\fP function.
 Both of these (\fB\-v\fP and \fBcurses_trace\fP)
@@ -228,22 +213,47 @@ which determines the messages which are written.
 Because the command-line utilities may call initialization functions
 such as \fBsetupterm\fP, \fBtgetent\fP or \fBuse_extended_names\fP,
 some of their debugging output may be directed to the \fItrace\fP file
-if the \fBNCURSES_TRACE\fP environment variable is set:
+if the \fI\%NCURSES_TRACE\fP environment variable is set:
 .bP
 messages produced in the utility are written to the standard error.
 .bP
 messages produced by the underlying library are written to \fItrace\fP.
 .PP
-If ncurses is built without tracing, none of the latter are produced,
+If \fI\%ncurses\fP is built without tracing,
+none of the latter are produced,
 and fewer diagnostics are provided by the command-line utilities.
 .SH RETURN VALUE
 Routines which return a value are designed to be used as parameters
 to the \fB_tracef\fP routine.
+.SH ENVIRONMENT
+.SS NCURSES_TRACE
+A positive integral value stored in this variable causes the following
+functions to enable the tracing feature as if
+.B \%curses_trace
+were called.
+.PP
+.dS
+.RS 4
+\fB\%filter\fP,
+\fB\%initscr\fP,
+\fB\%new_prescr\fP,
+\fB\%newterm\fP,
+\fB\%nofilter\fP,
+\fB\%restartterm\fP,
+\fB\%ripoffline\fP,
+\fB\%setupterm\fP,
+\fB\%slk_init\fP,
+\fB\%tgetent\fP,
+\fB\%use_env\fP,
+\fB\%use_extended_names\fP,
+\fB\%use_tioctl\fP
+.RE
+.dE
 .SH PORTABILITY
-These functions are not part of the XSI interface.
+These functions are not part of the X/Open Curses interface.
 Some other curses implementations are known to
 have similar features,
-but they are not compatible with ncurses:
+but they are not compatible with \fI\%ncurses\fP:
 .bP
 SVr4 provided \fBtraceon\fP and \fBtraceoff\fP,
 to control whether debugging information was written
@@ -262,21 +272,22 @@ only when a debug-library is built.
 .IP
 PDCurses has a short description of these functions,
 with a note that they are not present in X/Open Curses,
-ncurses or NetBSD.
+\fI\%ncurses\fP or NetBSD.
 It does not mention SVr4,
 but the functions' inclusion in a header file section
 labeled \*(``Quasi-standard\*('' hints at the origin.
 .bP
 NetBSD does not provide functions for enabling/disabling traces.
 It uses environment variables
-\fBCURSES_TRACE_MASK\fP and
-\fBCURSES_TRACE_FILE\fP to determine what is traced,
+\fI\%CURSES_TRACE_MASK\fP and
+\fI\%CURSES_TRACE_FILE\fP to determine what is traced,
 and where the results are written.
 This is available only when a debug-library is built.
 .IP
 The NetBSD tracing feature is undocumented.
 .PP
-A few ncurses functions are not provided when symbol versioning is used:
+A few \fI\%ncurses\fP functions are not provided when symbol versioning
+is used:
 .RS 4
 .PP
 _nc_tracebits,
@@ -287,4 +298,4 @@ _tracemouse
 The original \fBtrace\fP routine was deprecated because
 it often conflicted with application names.
 .SH SEE ALSO
-\fBcurses\fP(3X).
+\fB\%curses\fP(3X)
index 32b058f9bb1b92838009cd52fc61abbd81be4ee3..1df0a1d3f394812f31101f448500893683291726 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_util.3x,v 1.65 2022/02/12 20:06:41 tom Exp $
-.TH curs_util 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_util.3x,v 1.101 2024/04/20 21:20:07 tom Exp $
+.TH curs_util 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBdelay_output\fP,
-\fBfilter\fP,
-\fBflushinp\fP,
-\fBgetwin\fP,
-\fBkey_name\fP,
-\fBkeyname\fP,
-\fBnofilter\fP,
-\fBputwin\fP,
-\fBunctrl\fP,
-\fBuse_env\fP,
-\fBuse_tioctl\fP,
-\fBwunctrl\fP \- miscellaneous \fBcurses\fP utility routines
-.ad
-.hy
+\fB\%delay_output\fP,
+\fB\%filter\fP,
+\fB\%flushinp\fP,
+\fB\%getwin\fP,
+\fB\%key_name\fP,
+\fB\%keyname\fP,
+\fB\%nofilter\fP,
+\fB\%putwin\fP,
+\fB\%unctrl\fP,
+\fB\%use_env\fP,
+\fB\%use_tioctl\fP,
+\fB\%wunctrl\fP \-
+miscellaneous \fIcurses\fR utility routines
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBconst char *unctrl(chtype \fIc\fB);\fR
-.br
-\fBwchar_t *wunctrl(cchar_t *\fIc\fB);\fR
-.sp
-\fBconst char *keyname(int \fIc\fB);\fR
-.br
-\fBconst char *key_name(wchar_t \fIw\fB);\fR
-.sp
-\fBvoid filter(void);\fP
-.br
-\fBvoid nofilter(void);\fP
-.sp
-\fBvoid use_env(bool \fIf\fB);\fR
-.br
-\fBvoid use_tioctl(bool \fIf\fB);\fR
-.sp
-\fBint putwin(WINDOW *\fIwin\fB, FILE *\fIfilep\fB);\fR
-.br
-\fBWINDOW *getwin(FILE *\fIfilep\fB);\fR
-.sp
-\fBint delay_output(int \fIms\fB);\fR
-.br
-\fBint flushinp(void);\fP
-.br
+.nf
+\fB#include <curses.h>
+.PP
+\fBconst char *unctrl(chtype \fIch\fP);
+\fBwchar_t *wunctrl(cchar_t *\fIwch\fP);
+.PP
+\fBconst char *keyname(int \fIc\fP);
+\fBconst char *key_name(wchar_t \fIwc\fP);
+.PP
+\fBvoid filter(void);
+.PP
+\fBvoid use_env(bool \fIf\fP);
+.PP
+\fBint putwin(WINDOW *\fIwin\fP, FILE *\fIfilep\fP);
+\fBWINDOW *getwin(FILE *\fIfilep\fP);
+.PP
+\fBint delay_output(int \fIms\fP);
+\fBint flushinp(void);
+.PP
+\fI/* extensions */
+\fBvoid nofilter(void);
+\fBvoid use_tioctl(bool \fIf\fP);
+.fi
 .SH DESCRIPTION
 .SS unctrl
-.PP
 The \fBunctrl\fP routine returns a character string which is a printable
-representation of the character \fIc\fP, ignoring attributes.
-Control characters are displayed in the \fB^\fIX\fR notation.
-Printing characters are displayed as is.
-The corresponding \fBwunctrl\fP returns a printable representation of
-a wide character.
-.SS keyname/key_name
-.PP
-The \fBkeyname\fP routine returns a character string
-corresponding to the key \fIc\fP:
+representation of the character \fIch\fP:
 .bP
 Printable characters are displayed as themselves,
 e.g., a one-character string containing the key.
 .bP
 Control characters are displayed in the \fB^\fIX\fR notation.
 .bP
+Printing characters are displayed as is.
+.bP
 DEL (character 127) is displayed as \fB^?\fP.
 .bP
 Values above 128 are either meta characters
@@ -110,20 +104,38 @@ shown in the \fBM\-\fIX\fR notation,
 or are displayed as themselves.
 In the latter case, the values may not be printable;
 this follows the X/Open specification.
+.PP
+The corresponding \fBwunctrl\fP returns a printable representation of
+a complex character \fIwch\fP.
+.PP
+In both \fBunctrl\fP and \fBwunctrl\fP the attributes and color associated
+with the character parameter are ignored.
+.SS "keyname, key_name"
+The \fBkeyname\fP routine returns a character string
+corresponding to the key \fIc\fP.
+Key codes are different from character codes.
 .bP
-Values above 256 may be the names of the names of function keys.
+Key codes below 256 are characters.
+They are displayed using \fBunctrl\fP.
 .bP
-Otherwise (if there is no corresponding name) the function returns null,
-to denote an error.
+Values above 256 may be the codes for function keys.
+The function key name is displayed.
+.bP
+Otherwise (if there is no corresponding name and the key is not a character)
+the function returns null, to denote an error.
 X/Open also lists an \*(``UNKNOWN KEY\*('' return value,
 which some implementations return rather than null.
 .LP
-The corresponding \fBkey_name\fP returns a character string corresponding
+The corresponding \fBkey_name\fP returns
+a multibyte character string corresponding
 to the wide-character value \fIw\fP.
-The two functions do not return the same set of strings;
-the latter returns null where the former would display a meta character.
-.SS filter/nofilter
-.PP
+The two functions (\fBkeyname\fP and \fBkey_name\fP)
+do not return the same set of strings:
+.bP
+\fBkeyname\fP returns null where \fBkey_name\fP would display a meta character.
+.bP
+\fBkey_name\fP does not return the name of a function key.
+.SS "filter, nofilter"
 The \fBfilter\fP routine, if used, must be called before \fBinitscr\fP or
 \fBnewterm\fP are called.
 Calling \fBfilter\fP causes these changes in initialization:
@@ -151,15 +163,15 @@ using a different value of \fB$TERM\fP.
 The limitation arises because the \fBfilter\fP routine modifies the
 in-memory copy of the terminal information.
 .SS use_env
-.PP
 The \fBuse_env\fP routine, if used,
 should be called before \fBinitscr\fP or
 \fBnewterm\fP are called
 (because those compute the screen size).
-It modifies the way \fBncurses\fP treats environment variables
+It modifies the way \fI\%ncurses\fP treats environment variables
 when determining the screen size.
 .bP
-Normally \fBncurses\fP looks first at the terminal database for the screen size.
+Normally \fI\%ncurses\fP looks first at the terminal database for the
+screen size.
 .IP
 If \fBuse_env\fP was called with \fBFALSE\fP for parameter,
 it stops here unless
@@ -170,57 +182,57 @@ If successful,
 it overrides the values from the terminal database.
 .bP
 Finally (unless \fBuse_env\fP was called with \fBFALSE\fP parameter),
-\fBncurses\fP examines the \fBLINES\fP or \fBCOLUMNS\fP environment variables,
+\fI\%ncurses\fP examines the \fILINES\fP or \fI\%COLUMNS\fP environment
+variables,
 using a value in those to override the results
 from the operating system or terminal database.
 .IP
-\fBNcurses\fP also updates the screen size in response to \fBSIGWINCH\fP,
-unless overridden by the \fBLINES\fP or \fBCOLUMNS\fP environment variables,
+\fI\%curses\fP also updates the screen size in response to
+\fBSIGWINCH\fP,
+unless overridden by the \fILINES\fP or \fI\%COLUMNS\fP environment
+variables,
 .SS use_tioctl
-.PP
 The \fBuse_tioctl\fP routine, if used,
 should be called before \fBinitscr\fP or \fBnewterm\fP are called
 (because those compute the screen size).
 After \fBuse_tioctl\fP is called with \fBTRUE\fP as an argument,
-\fBncurses\fP modifies the last step in its computation
+\fI\%ncurses\fP modifies the last step in its computation
 of screen size as follows:
 .bP
-checks if the \fBLINES\fP and \fBCOLUMNS\fP environment variables
+checks if the \fILINES\fP and \fI\%COLUMNS\fP environment variables
 are set to a number greater than zero.
 .bP
-for each, \fBncurses\fP updates the corresponding environment variable
+for each, \fI\%ncurses\fP updates the corresponding environment variable
 with the value that it has obtained via operating system call
 or from the terminal database.
 .bP
-\fBncurses\fP re-fetches the value of the environment variables so that
-it is still the environment variables which set the screen size.
+\fI\%ncurses\fP re-fetches the value of the environment variables so
+that it is still the environment variables which set the screen size.
 .PP
-The \fBuse_env\fP and \fBuse_tioctl\fP routines combine as
-summarized here:
+The \fB\%use_env\fP and \fB\%use_tioctl\fP routines combine as follows.
+.IP
 .TS
-center tab(/);
-l l l
-_ _ _
-lw7 lw7 lw40.
-\fBuse_env\fP/\fBuse_tioctl\fP/\fBSummary\fP
-TRUE/FALSE/T{
+lB lB lB
+lB lB lx.
+use_env        use_tioctl      Summary
+_
+TRUE   FALSE   T{
 This is the default behavior.
-\fBncurses\fP uses operating system calls
-unless overridden by $LINES or $COLUMNS environment variables.
-T}
-TRUE/TRUE/T{
-\fBncurses\fP updates $LINES and $COLUMNS based on operating system calls.
+\fI\%ncurses\fP uses operating system calls
+unless overridden by \fILINES\fP or \fI\%COLUMNS\fP environment
+variables;
+default.
 T}
-FALSE/TRUE/T{
-\fBncurses\fP ignores $LINES and $COLUMNS,
-uses operating system calls to obtain size.
+TRUE   TRUE    T{
+\fI\%ncurses\fP updates \fILINES\fP and \fI\%COLUMNS\fP based on
+operating system calls.
 T}
-FALSE/FALSE/T{
-\fBncurses\fP relies on the terminal database to determine size.
+FALSE  TRUE    T{
+\fI\%ncurses\fP ignores \fILINES\fP and \fI\%COLUMNS\fP,
+using operating system calls to obtain size.
 T}
 .TE
-.SS putwin/getwin
-.PP
+.SS "putwin, getwin"
 The \fBputwin\fP routine writes all data associated
 with window (or pad) \fIwin\fP into
 the file to which \fIfilep\fP points.
@@ -234,10 +246,10 @@ data.
 It returns a pointer to the new window.
 There are a few caveats:
 .bP
-the data written is a copy of the \fBWINDOW\fP structure,
+the data written is a copy of the \fI\%WINDOW\fP structure,
 and its associated character cells.
-The format differs between the wide-character (\fBncursesw\fP) and
-non-wide (\fBncurses\fP) libraries.
+The format differs between the wide-character (\fI\%ncursesw\fP) and
+non-wide (\fI\%ncurses\fP) libraries.
 You can transfer data between the two, however.
 .bP
 the retrieved window is always created as a top-level window (or pad),
@@ -249,15 +261,24 @@ If cells in the retrieved window use color pairs which have not been
 created in the application using \fBinit_pair\fP,
 they will not be colored when the window is refreshed.
 .SS delay_output
-.PP
 The \fBdelay_output\fP routine inserts an \fIms\fP millisecond pause
 in output.
-This routine should not be used extensively because
-padding characters are used rather than a CPU pause.
-If no padding character is specified,
-this uses \fBnapms\fP to perform the delay.
-.SS flushinp
+Employ this function judiciously when terminal output uses padding,
+because \fI\%ncurses\fP transmits null characters
+(consuming CPU and I/O resources)
+instead of sleeping and requesting resumption from the operating system.
+Padding is used unless:
+.bP
+the terminal description has \fBnpc\fP (\fBno_pad_char\fP) capability, or
+.bP
+the environment variable \fB\%NCURSES_NO_PADDING\fP is set.
 .PP
+If padding is not in use,
+\fI\%ncurses\fP uses \fBnapms\fP to perform the delay.
+If the value of \fIms\fP exceeds 30,000
+(thirty seconds),
+it is capped at that value.
+.SS flushinp
 The \fBflushinp\fP routine throws away any typeahead that has been typed by the
 user and has not yet been read by the program.
 .SH RETURN VALUE
@@ -267,7 +288,7 @@ upon failure and \fBOK\fP (SVr4 specifies only "an integer value other than
 .PP
 Routines that return pointers return \fBNULL\fP on error.
 .PP
-X/Open does not define any error conditions.
+X/Open Curses does not specify any error conditions.
 In this implementation
 .RS 3
 .TP 5
@@ -279,13 +300,22 @@ returns an error if the associated \fBfwrite\fP calls return an error.
 .RE
 .SH PORTABILITY
 .SS filter
-.PP
 The SVr4 documentation describes the action of \fBfilter\fP only in the vaguest
 terms.
-The description here is adapted from the XSI Curses standard (which
+The description here is adapted from X/Open Curses (which
 erroneously fails to describe the disabling of \fBcuu\fP).
-.SS keyname
+.SS "delay_output padding"
+The limitation to 30 seconds
+and the use of \fBnapms\fP
+differ from other implementations.
+.bP
+SVr4 curses does not delay if no padding character is available.
+.bP
+NetBSD curses uses \fBnapms\fP when no padding character is available,
+but does not take timing into account when using the padding character.
 .PP
+Neither limits the delay.
+.SS keyname
 The \fBkeyname\fP function may return the names of user-defined
 string capabilities which are defined in the terminfo entry via the \fB\-x\fP
 option of \fB@TIC@\fP.
@@ -296,14 +326,13 @@ the same value for different runs because user-defined codes are
 merged from all terminal descriptions which have been loaded.
 The \fBuse_extended_names\fP(3X) function controls whether this data is
 loaded when the terminal description is read by the library.
-.SS nofilter/use_tioctl
-.PP
-The \fBnofilter\fP and \fBuse_tioctl\fP routines are specific to \fBncurses\fP.
+.SS "nofilter, use_tioctl"
+The \fBnofilter\fP and \fBuse_tioctl\fP routines are specific to
+\fI\%ncurses\fP.
 They were not supported on Version 7, BSD or System V implementations.
-It is recommended that any code depending on \fBncurses\fP extensions
-be conditioned using NCURSES_VERSION.
-.SS putwin/getwin file-format
-.PP
+It is recommended that any code depending on \fI\%ncurses\fP extensions
+be conditioned using \fBNCURSES_VERSION\fP.
+.SS "putwin/getwin file-format"
 The \fBputwin\fP and \fBgetwin\fP functions have several issues with
 portability:
 .bP
@@ -318,9 +347,10 @@ the University of California, Berkeley (in 1982)
 and were later (in 1988) incorporated into SVr4.
 Oddly, there are no such functions in the 4.3BSD curses sources.
 .bP
-Most implementations simply dump the binary \fBWINDOW\fP structure to the file.
+Most implementations simply dump the binary \fI\%WINDOW\fP structure
+to the file.
 These include SVr4 curses, NetBSD and PDCurses,
-as well as older \fBncurses\fP versions.
+as well as older \fI\%ncurses\fP versions.
 This implementation
 (as well as the X/Open variant of Solaris curses, dated 1995)
 uses textual dumps.
@@ -333,9 +363,8 @@ these functions.
 Doing that can run into problems mixing block- and buffered-I/O.
 This implementation reduces the problem on writes by flushing the output.
 However, reading from a file written using mixed schemes may not be successful.
-.SS unctrl/wunctrl
-.PP
-The XSI Curses standard, Issue 4 describes these functions.
+.SS "unctrl, wunctrl"
+X/Open Curses, Issue 4 describes these functions.
 It states that \fBunctrl\fP and \fBwunctrl\fP will return a null pointer if
 unsuccessful, but does not define any error conditions.
 This implementation checks for three cases:
@@ -384,24 +413,23 @@ When treating them as \*(``meta\*('' keys
 this implementation returns strings \*(``M\-^@\*('', \*(``M\-^A\*('', etc.
 .PP
 X/Open Curses documents \fBunctrl\fP as declared in \fB<unctrl.h>\fP,
-which \fBncurses\fP does.
-However, \fBncurses\fP' \fB<curses.h>\fP includes \fB<unctrl.h>\fP,
+which \fI\%ncurses\fP does.
+However, \fI\%ncurses\fP' \fB<curses.h>\fP includes \fB<unctrl.h>\fP,
 matching the behavior of SVr4 curses.
 Other implementations may not do that.
-.SS use_env/use_tioctl
-.PP
-If \fBncurses\fP is configured to provide the sp-functions extension,
+.SS "use_env, use_tioctl"
+If \fI\%ncurses\fP is configured to provide the sp-functions extension,
 the state of \fBuse_env\fP and \fBuse_tioctl\fP may be updated before
 creating each \fIscreen\fP rather than once only
 (\fBcurs_sp_funcs\fP(3X)).
 This feature of \fBuse_env\fP
-is not provided by other implementation of curses.
+is not provided by other implementations of curses.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_initscr\fP(3X),
-\fBcurs_inopts\fP(3X),
-\fBcurs_kernel\fP(3X),
-\fBcurs_scr_dump\fP(3X),
-\fBcurs_sp_funcs\fP(3X),
-\fBcurs_variables\fP(3X),
-\fBlegacy_coding\fP(3X).
+\fB\%curses\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_inopts\fP(3X),
+\fB\%curs_kernel\fP(3X),
+\fB\%curs_scr_dump\fP(3X),
+\fB\%curs_sp_funcs\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%legacy_coding\fP(3X)
index ad6a5b801e08e08c3eb430f881dabb255960a92c..467b694445651daa5ae73c4fc5da730933d557ea 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2010-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_variables.3x,v 1.17 2021/12/25 21:49:32 tom Exp $
-.TH curs_variables 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: curs_variables.3x,v 1.47 2024/04/13 22:37:35 tom Exp $
+.TH curs_variables 3X 2024-04-13 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
+.ie \n(.g .ds : \:
+.el       .ds : \" empty
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.ds n 5
-.na
-.hy 0
+.
 .SH NAME
-\fBCOLORS\fP,
-\fBCOLOR_PAIRS\fP,
-\fBCOLS\fP,
-\fBESCDELAY\fP,
-\fBLINES\fP,
-\fBTABSIZE\fP,
-\fBcurscr\fP,
-\fBnewscr\fP,
-\fBstdscr\fP
-\- \fBcurses\fP global variables
-.ad
-.hy
+\fI\%bool\fP,
+\fI\%chtype\fP,
+\fI\%cchar_t\fP,
+\fI\%attr_t\fP,
+\fI\%SCREEN\fP,
+\fI\%WINDOW\fP,
+\fB\%TRUE\fP,
+\fB\%FALSE\fP,
+\fB\%ERR\fP,
+\fB\%OK\fP,
+\fB\%curscr\fP,
+\fB\%newscr\fP,
+\fB\%stdscr\fP,
+\fB\%COLORS\fP,
+\fB\%COLOR_PAIRS\fP,
+\fB\%COLS\fP,
+\fB\%LINES\fP,
+\fB\%ESCDELAY\fP,
+\fB\%TABSIZE\fP \-
+\fIcurses\fR data types, constants, and global variables
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h>\fP
-.PP
-\fBint COLOR_PAIRS;\fP
-.br
-\fBint COLORS;\fP
-.br
-\fBint COLS;\fP
-.br
-\fBint ESCDELAY;\fP
-.br
-\fBint LINES;\fP
-.br
-\fBint TABSIZE;\fP
-.br
-\fBWINDOW * curscr;\fP
-.br
-\fBWINDOW * newscr;\fP
-.br
-\fBWINDOW * stdscr;\fP
+\fB#include <curses.h>
+.PP
+\fI/* data types */
+\fBtypedef \fI/*\fP .\|.\|. \fI*/\fP bool;
+\fBtypedef \fI/*\fP .\|.\|. \fI*/\fP chtype;
+\fBtypedef \fI/*\fP .\|.\|. \fI*/\fP cchar_t;
+\fBtypedef \fI/*\fP .\|.\|. \fI*/\fP attr_t;
+\fBtypedef \fI/*\fP .\|.\|. \fI*/\fP SCREEN;
+\fBtypedef \fI/*\fP .\|.\|. \fI*/\fP WINDOW;
+.PP
+\fI/* constants */
+\fBconst bool TRUE;
+\fBconst bool FALSE;
+.PP
+\fBconst \fI/*\fP .\|.\|. \fI*/\fP ERR;
+\fBconst \fI/*\fP .\|.\|. \fI*/\fP OK;
+.PP
+\fI/* variables */
+\fBint COLORS;
+\fBint COLOR_PAIRS;
+\fBint COLS;
+\fBint LINES;
+\fBWINDOW * curscr;
+\fBWINDOW * stdscr;
+.PP
+\fI/* extensions */
+\fBint ESCDELAY;
+\fBint TABSIZE;
+\fBWINDOW * newscr;
 .fi
 .SH DESCRIPTION
-This page summarizes variables provided by the \fBcurses\fP library.
-A more complete description is given in the \fBcurses\fP(3X) manual page.
+This page summarizes data types,
+constants,
+and variables provided by the \fIcurses\fP library.
+Locate further discussion in \fB\%curses\fP(3X).
 .PP
-Depending on the configuration, these may be actual variables,
-or macros (see \fBcurs_threads\fP(3X) and \fBcurs_opaque\fP(3X))
-which provide read-only access to \fIcurses\fP's state.
-In either case, applications should treat them as read-only to avoid
+Depending on \fI\%ncurses\fP's build-time configuration,
+the variables may instead be
+macros (see \fB\%curs_threads\fP(3X) and \fB\%curs_opaque\fP(3X))
+that provide read-only access to the library's state.
+In either case,
+applications should treat them as read-only to avoid
 confusing the library.
-.SS COLOR_PAIRS
-After initializing curses, this variable contains the number of color pairs
-which the terminal can support.
-Usually the number of color pairs will be the product \fBCOLORS\fP*\fBCOLORS\fP,
-however this is not always true:
-.bP
-a few terminals use HLS colors, which do not follow this rule
-.bP
-terminals supporting a large number of colors are limited by the number
-of color pairs that can be represented in a \fIsigned short\fP value.
+.SH "CONSTANTS"
+.SS "TRUE, FALSE"
+The \fIcurses\fP library defines \fBTRUE\fP and \fBFALSE\fP
+to represent the values of the Boolean data type.
+.SS "ERR, OK"
+\fIcurses\fP and \fIterminfo\fP routines frequently return these
+constant integral values indicating failure and success,
+respectively.
+.SH "PREDEFINED TYPES"
+.SS "\fIbool\fP"
+X/Open Issue 4 \fIcurses\fP (1996) preceded the ISO C99 and ISO C++98
+standards,
+each of which also defined a Boolean data type.
+The \fIcurses\fP library requires an integral type \fIbool\fP.
+.PP
+\fB\%ncurses\fP' configure script attempts to discover the
+data type used by the system's C and C++ compilers,
+to reuse for the \fIcurses\fP \fIbool\fP.
+.SS "\fIchtype\fP"
+The \fI\%chtype\fP integral type combines a
+(\*(``narrow\*('',
+8-bit)
+character with attributes encoding the character's \fIrendition\fP,
+such as the styling of its typeface and/or foreground and background
+colors.
+See,
+for example,
+\fB\%addch\fP(3X),
+\fB\%attron\fP(3X),
+and
+\fB\%inch\fP(3X).
+.SS "\fIcchar_t\fP, \fIattr_t\fP"
+\fI\%chtype\fP is too small for the standard C library's wide-character
+type,
+\fIwchar_t\fP.
+\fI\%cchar_t\fP is a type that can accommodate an \fI\%attr_t\fP and
+enough wide characters to store what Unicode terms a \fIgrapheme cluster\fP
+(a \*(``user-perceived character\*('' [UAX #29],
+which may nevertheless require several character encoding units to
+represent).
+\fI\%attr_t\fP is an integral type storing \*(``wide\*('' attributes that
+apply to \fI\%cchar_t\fPs.
+See,
+for example,
+\fB\%add_wch\fP(3X),
+\fB\%attr_on\fP(3X),
+and
+\fB\%in_wch\fP(3X).
+.SS "\fISCREEN\fP"
+.I curses
+manages a terminal device with this structure type;
+see \fB\%initscr\fP(3X).
+.SS "\fIWINDOW\fP"
+.I curses
+represents rectangular portions of the terminal screen with the
+.I \%WINDOW
+structure type;
+see subsection \*(``Overview\*('' of \fB\%ncurses\fP(3X).
+.SH "VARIABLES"
+.SS "curscr, stdscr, newscr"
+The library records updates to the terminal screen in a window named
+\fB\%curscr\fP.
+This object is referred to as the \*(``physical screen\*('' in
+\fB\%curs_refresh\fP(3X) and
+\fB\%curs_outopts\fP(3X).
+.PP
+\fI\%ncurses\fP collects pending updates to the terminal screen in a
+window named \fB\%newscr\fP.
+This object is referred to as the \*(``virtual screen\*('' in the
+\fB\%curs_kernel\fP(3X),
+\fB\%curs_refresh\fP(3X),
+and
+\fB\%curs_outopts\fP(3X).
+When the screen is refreshed,
+\fIcurses\fP determines a minimal set of updates using the terminal's
+capabilities to make \fB\%curscr\fP look like \fB\%newscr\fP.
+.PP
+Once \fIcurses\fP is initialized,
+it creates a window named \fB\%stdscr\fP.
+It is the same size as the terminal screen and is the default window
+used by routines that do not take a parameter identifying one.
+Many \fIcurses\fP functions use this window.
 .SS COLORS
-After initializing curses, this variable contains the number of colors
-which the terminal can support.
-.SS COLS
-After initializing curses, this variable contains the width of the screen,
-i.e., the number of columns.
+Once \fIcurses\fP is initialized,
+\fB\%COLORS\fP
+contains the number of colors supported by the terminal;
+see \fB\%curs_color\fP(3X).
+.SS COLOR_PAIRS
+Once \fIcurses\fP is initialized,
+\fB\%COLOR_PAIRS\fP
+contains the number of color pairs supported by the terminal;
+see \fB\%curs_color\fP(3X).
+.SS "COLS, LINES"
+Once \fIcurses\fP is initialized,
+.B \%COLS
+and
+.B LINES
+contain the screen's width and height in character cells,
+respectively;
+that is,
+the number of columns and lines.
 .SS ESCDELAY
-This variable holds the number of milliseconds to wait after reading an
-escape character,
-to distinguish between an individual escape character entered on the
-keyboard from escape sequences sent by cursor- and function-keys
-(see curses(3X)).
-.SS LINES
-After initializing curses, this variable contains the height of the screen,
-i.e., the number of lines.
+For
+.I curses
+to distinguish the ESC character resulting from a user's press of the
+\*(``Escape\*('' key on the input device from one beginning an
+.I "escape sequence"
+(as commonly produced by function keys),
+it waits after the escape character to see if further characters are
+available on the input stream within a short interval.
+.B \%ESCDELAY
+stores this interval in milliseconds.
+.PP
+If \fB\%keypad\fP(3X) is disabled for the
+.I curses
+window receiving input,
+a program must disambiguate escape sequences itself.
 .SS TABSIZE
-This variable holds the number of columns used by the \fIcurses\fP library
-when converting a tab character to spaces as it adds the tab to a window
-(see \fBcurs_addch\fP(3X).
-.SS The Current Screen
-This implementation of curses uses a special window \fBcurscr\fP to
-record its updates to the terminal screen.
-.PP
-This is referred to as the \*(``physical screen\*('' in the
-\fBcurs_refresh\fP(3X) and
-\fBcurs_outopts\fP(3X) manual pages.
-.SS The New Screen
-This implementation of curses uses a special window \fBnewscr\fP to
-hold updates to the terminal screen before applying them to \fBcurscr\fP.
-.PP
-This is referred to as the \*(``virtual screen\*('' in the
-\fBcurs_kernel\fP(3X),
-\fBcurs_refresh\fP(3X) and
-\fBcurs_outopts\fP(3X) manual pages.
-.SS The Standard Screen
-Upon initializing curses,
-a default window called \fBstdscr\fP,
-which is the size of the terminal screen, is created.
-Many curses functions use this window.
+The \fIcurses\fP library converts a tab character to this number of
+spaces as it adds a tab to a window;
+see \fB\%curs_addch\fP(3X).
 .SH NOTES
-The curses library is initialized using either \fBinitscr\fP(3X),
-or \fBnewterm\fP(3X).
+Either \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X) initializes
+\fIcurses\fP.
 .PP
-If \fBcurses\fP is configured to use separate curses/terminfo libraries,
-most of these variables reside in the curses library.
+If
+.I \%ncurses
+is configured to provide separate
+.I curses
+and
+.I \%tinfo
+libraries,
+most of these variables reside in the former.
 .SH PORTABILITY
-\fBTABSIZE\fP is a feature of SVr4 curses
-which is not documented by X/Open curses.
+The X/Open Curses standard documents all of the foregoing types and
+symbols except for \fB\%newscr\fP,
+\fB\%TABSIZE\fP,
+and \fB\%ESCDELAY\fP.
+.PP
+X/Open Curses describes \fB\%curscr\fP only as \*(``an internal data
+structure\*('';
+SVr4 gave more details,
+noting its use \*(``for certain low-level operations like clearing and
+redrawing a screen containing garbage\*(''.
+.\" SVID 4, Volume 3, p. 408
+Neither specified its interaction with the rest of the interface beyond
+use as an argument to \fB\%clearok\fP(3X) and \fB\%wrefresh\fP(3X).
+.PP
+\fB\%newscr\fP is a feature of SVr4 \fIcurses\fP.
+When refreshing the screen,
+it is used as a working area for combining the standard window
+\fB\%stdscr\fP with any others the application may have created with
+\fB\%newwin\fP(3X).
+When the update of \fB\%newscr\fP is complete,
+\fIcurses\fP modifies \fB\%curscr\fP to match \fB\%newscr\fP.
+.PP
+\fB\%TABSIZE\fP is a feature of SVr4 \fIcurses\fP.
 .bP
-In SVr4 curses, \fBTABSIZE\fP is initially set from the terminal description's
-\fBinit_tabs\fP capability.
-After that, it can be altered by the applications using SVr4 curses.
-.IP
-SVr4 curses uses the current value of \fBTABSIZE\fP to
-compute the position of tabstops for updating both
-the virtual screen with \fBaddch\fP(3X) as well as
-the physical screen with \fBmvcur\fP(3X).
+SVr4 initially sets \fB\%TABSIZE\fP from the terminal description's
+\fB\%init_tabs\fP capability.
+After that,
+it can be altered by applications using SVr4 \fIcurses\fP.
 .bP
-This implementation uses the current value of \fBTABSIZE\fP only for
-updating the virtual screen.
-It uses the terminal description's \fBit\fP (\fBinit_tabs\fP) capability for
-computing hardware tabs (i.e., tab stops on the physical screen).
+SVr4 \fIcurses\fP uses the value of \fB\%TABSIZE\fP to compute the
+position of tab stops when updating both
+the virtual screen with \fB\%addch\fP(3X) and
+the physical screen with \fB\%mvcur\fP(3X).
+.bP
+\fI\%ncurses\fP uses the value of \fB\%TABSIZE\fP only to update the
+virtual screen.
+It uses the terminal description's \*(``\fBit\fP\*(''
+(\fB\%init_tabs\fP) capability for computing hardware tabs
+(that is,
+tab stops on the physical screen).
 .bP
 Other implementations differ.
-For instance, NetBSD curses allows \fBTABSIZE\fP to be set through
-an environment variable.
-This implementation does not.
+For instance,
+NetBSD \fIcurses\fP allows \fB\%TABSIZE\fP to be set through an
+environment variable.
+\fI\%ncurses\fP does not.
 .IP
-NetBSD curses does not support hardware tabs;
-it uses the \fBinit_tabs\fP capability and the \fBTABSIZE\fP variable
-only for updating the virtual screen.
+NetBSD \fIcurses\fP does not support hardware tabs;
+it uses the \fB\%init_tabs\fP capability and the \fB\%TABSIZE\fP
+variable only for updating the virtual screen.
 .PP
-\fBESCDELAY\fP is an extension in AIX curses:
+\fB\%ESCDELAY\fP is a feature of AIX \fIcurses\fP.
 .bP
-In AIX, the units for \fBESCDELAY\fP are \fIfifths\fP of a millisecond.
+In AIX,
+the units for \fB\%ESCDELAY\fP are \fIfifths\fP of milliseconds.
 .bP
-The default value for AIX's \fBESCDELAY\fP is 0.1 seconds.
+The default value for AIX's \fB\%ESCDELAY\fP equals 0.1 seconds.
 .bP
-AIX also enforces a limit of 10,000 seconds for \fBESCDELAY\fP;
-this implementation currently has no upper limit.
+AIX also enforces a limit of 10,000 seconds for \fB\%ESCDELAY\fP;
+\fI\%ncurses\fP does not enforce any upper limit.
 .PP
-This implementation has long used \fBESCDELAY\fP with units of milliseconds,
+\fI\%ncurses\fP has long used \fB\%ESCDELAY\fP with units of
+milliseconds,
 making it impossible to be completely compatible with AIX.
-Likewise, most users have either decided to override the value,
-or rely upon its default value.
+Consequently,
+most users have decided either to override the value,
+or to rely upon its default.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_opaque\fP(3X),
-\fBcurs_terminfo\fP(3X),
-\fBcurs_threads\fP(3X),
-\fBterm_variables\fP(3X),
-\fBterminfo\fP(\*n).
+\fB\%curses\fP(3X),
+\fB\%curs_color\fP(3X),
+\fB\%curs_opaque\fP(3X),
+\fB\%curs_terminfo\fP(3X),
+\fB\%curs_threads\fP(3X),
+\fB\%term_variables\fP(3X),
+\fB\%terminfo\fP(5)
+.PP
+[UAX #29] \*(``Unicode Standard Annex #29: Unicode Text
+Segmentation\*('';
+\%<https://\*:unicode\*:.org/\*:reports/\*:tr29/>
index f37eb5f65cbf33e1ba7bc9c70f415b23ce13dff1..d3d55c751444f4374467463a135250ddbee449e3 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2020-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2020-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_window.3x,v 1.28 2022/08/13 23:24:22 tom Exp $
-.TH curs_window 3X ""
+.\" $Id: curs_window.3x,v 1.48 2024/04/20 21:20:07 tom Exp $
+.TH curs_window 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.na
-.hy 0
 .SH NAME
-\fBnewwin\fP,
-\fBdelwin\fP,
-\fBmvwin\fP,
-\fBsubwin\fP,
-\fBderwin\fP,
-\fBmvderwin\fP,
-\fBdupwin\fP,
-\fBwsyncup\fP,
-\fBsyncok\fP,
-\fBwcursyncup\fP,
-\fBwsyncdown\fP \- create \fBcurses\fP windows
-.ad
-.hy
+\fB\%newwin\fP,
+\fB\%delwin\fP,
+\fB\%mvwin\fP,
+\fB\%subwin\fP,
+\fB\%derwin\fP,
+\fB\%mvderwin\fP,
+\fB\%dupwin\fP,
+\fB\%wsyncup\fP,
+\fB\%syncok\fP,
+\fB\%wcursyncup\fP,
+\fB\%wsyncdown\fP \-
+create and manipulate \fIcurses\fR windows
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBWINDOW *newwin(\fP
+.nf
+\fB#include <curses.h>
+.PP
+\fBWINDOW *newwin(
       \fBint \fInlines\fB, int \fIncols\fB,\fR
       \fBint \fIbegin_y\fB, int \fIbegin_x\fB);\fR
-.br
 \fBint delwin(WINDOW *\fIwin\fB);\fR
-.br
 \fBint mvwin(WINDOW *\fIwin\fB, int \fIy\fB, int \fIx\fB);\fR
-.br
 \fBWINDOW *subwin(WINDOW *\fIorig\fB,\fR
       \fBint \fInlines\fB, int \fIncols\fB,\fR
       \fBint \fIbegin_y\fB, int \fIbegin_x\fB);\fR
-.br
 \fBWINDOW *derwin(WINDOW *\fIorig\fB,\fR
       \fBint \fInlines\fB, int \fIncols\fB,\fR
       \fBint \fIbegin_y\fB, int \fIbegin_x\fB);\fR
-.br
 \fBint mvderwin(WINDOW *\fIwin\fB, int \fIpar_y\fB, int \fIpar_x\fB);\fR
-.br
 \fBWINDOW *dupwin(WINDOW *\fIwin\fB);\fR
-.br
 \fBvoid wsyncup(WINDOW *\fIwin\fB);\fR
-.br
 \fBint syncok(WINDOW *\fIwin\fB, bool \fIbf\fB);\fR
-.br
 \fBvoid wcursyncup(WINDOW *\fIwin\fB);\fR
-.br
 \fBvoid wsyncdown(WINDOW *\fIwin\fB);\fR
-.br
+.fi
 .SH DESCRIPTION
 .SS newwin
 Calling \fBnewwin\fP creates and returns a pointer to a new window with the
@@ -108,54 +96,49 @@ rather than a duplicate (with \fBdupwin\fP),
 all of the window modes are initialized to the default values.
 These functions set window modes after a window is created:
 .RS
-.na
 .PP
-idcok,
-idlok,
-immedok,
-keypad,
-leaveok,
-nodelay,
-scrollok,
-setscrreg,
-syncok,
-wbkgdset,
-wbkgrndset, and
-wtimeout
+\fB\%idcok\fP
+\fB\%idlok\fP
+\fB\%immedok\fP
+\fB\%keypad\fP
+\fB\%leaveok\fP
+\fB\%nodelay\fP
+\fB\%scrollok\fP
+\fB\%setscrreg\fP
+\fB\%syncok\fP
+\fB\%wbkgdset\fP
+\fB\%wbkgrndset\fP and
+\fB\%wtimeout\fP.
 .RE
-.ad
 .SS delwin
-.PP
 Calling \fBdelwin\fP deletes the named window, freeing all memory
 associated with it (it does not actually erase the window's screen
 image).
 Subwindows must be deleted before the main window can be deleted.
 .SS mvwin
-.PP
 Calling \fBmvwin\fP moves the window so that the upper left-hand
 corner is at position (\fIx\fP, \fIy\fP).
 If the move would cause the window to be off the screen,
 it is an error and the window is not moved.
 Moving subwindows is allowed, but should be avoided.
 .SS subwin
-.PP
 Calling \fBsubwin\fP creates and returns a pointer to a new window
 with the given number of lines, \fInlines\fP, and columns, \fIncols\fP.
 The window is at position (\fIbegin\fR_\fIy\fP,
 \fIbegin\fR_\fIx\fP) on the screen.
 The subwindow shares memory with the window \fIorig\fP,
+its \fIancestor\fP,
 so that changes made to one window
 will affect both windows.
 When using this routine, it is necessary to call
 \fBtouchwin\fP or \fBtouchline\fP on \fIorig\fP before calling
 \fBwrefresh\fP on the subwindow.
 .SS derwin
-.PP
 Calling \fBderwin\fP is the same as calling \fBsubwin,\fP except that
 \fIbegin\fR_\fIy\fP and \fIbegin\fR_\fIx\fP are relative to the origin
 of the window \fIorig\fP rather than the screen.
 There is no difference between the subwindows and the derived windows.
-.PP
+.SS mvderwin
 Calling \fBmvderwin\fP moves a derived window (or subwindow)
 inside its parent window.
 The screen-relative parameters of the window are not changed.
@@ -163,23 +146,19 @@ This routine is used to display different
 parts of the parent window at the same physical position on the
 screen.
 .SS dupwin
-.PP
 Calling \fBdupwin\fP creates an exact duplicate of the window \fIwin\fP.
 .SS wsyncup
-.PP
 Calling \fBwsyncup\fP touches all locations in ancestors of \fIwin\fP that are
 changed in \fIwin\fP.
 If \fBsyncok\fP is called with second argument
 \fBTRUE\fP then \fBwsyncup\fP is called automatically whenever there is a
 change in the window.
 .SS wsyncdown
-.PP
 The \fBwsyncdown\fP routine touches each location in \fIwin\fP that has been
 touched in any of its ancestor windows.
 This routine is called by
 \fBwrefresh\fP, so it should almost never be necessary to call it manually.
 .SS wcursyncup
-.PP
 The routine \fBwcursyncup\fP updates the current cursor position of all the
 ancestors of the window to reflect the current cursor position of the
 window.
@@ -242,20 +221,8 @@ If many small changes are made to the window, the \fBwsyncup\fP option could
 degrade performance.
 .PP
 Note that \fBsyncok\fP may be a macro.
-.SH BUGS
-The subwindow functions (\fBsubwin\fP, \fBderwin\fP, \fBmvderwin\fP,
-\fBwsyncup\fP, \fBwsyncdown\fP, \fBwcursyncup\fP, \fBsyncok\fP) are flaky,
-incompletely implemented, and not well tested.
-.PP
-The System V curses documentation is very unclear about what \fBwsyncup\fP
-and \fBwsyncdown\fP actually do.
-It seems to imply that they are only
-supposed to touch exactly those lines that are affected by ancestor changes.
-The language here, and the behavior of the \fBcurses\fP implementation,
-is patterned on the XPG4 curses standard.
-The weaker XPG4 spec may result in slower updates.
 .SH PORTABILITY
-The XSI Curses standard, Issue 4 describes these functions.
+X/Open Curses, Issue 4 describes these functions.
 .PP
 X/Open Curses states regarding \fBdelwin\fP:
 .bP
@@ -268,15 +235,38 @@ It simply returned \fBERR\fP when asked to delete a subwindow.
 Solaris X/Open curses does not even make that check,
 and will delete a parent window which still has subwindows.
 .bP
-Since release 4.0 (1996), ncurses maintains a list of windows for each screen,
+Since release 4.0 (1996),
+\fI\%ncurses\fP maintains a list of windows for each screen,
 to ensure that a window has no subwindows before allowing deletion.
 .bP
-NetBSD copied this feature of ncurses in 2003.
+NetBSD copied this feature of \fI\%ncurses\fP in 2003.
 .br
 PDCurses follows the scheme used in Solaris X/Open curses.
+.SH BUGS
+The subwindow functions
+\fB\%subwin\fP,
+\fB\%derwin\fP,
+\fB\%mvderwin\fP,
+\fB\%wsyncup\fP,
+\fB\%wsyncdown\fP,
+\fB\%wcursyncup\fP,
+and
+\fB\%syncok\fP
+are flaky,
+incompletely implemented,
+and not well tested.
+.PP
+System\ V's \fIcurses\fP documentation is unclear about what
+\fB\%wsyncup\fP and \fB\%wsyncdown\fP actually do.
+It seems to imply that they are supposed to touch only those lines that
+are affected by changes to a window's ancestors.
+The language here,
+and behavior of \fI\%ncurses\fP,
+is patterned on the X/Open Curses standard;
+this approach may result in slower updates.
 .SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_initscr\fP(3X),
-\fBcurs_refresh\fP(3X),
-\fBcurs_touch\fP(3X),
-\fBcurs_variables\fP(3X)
+\fB\%curses\fP(3X),
+\fB\%curs_initscr\fP(3X),
+\fB\%curs_refresh\fP(3X),
+\fB\%curs_touch\fP(3X),
+\fB\%curs_variables\fP(3X)
index 0710a510df9111c41b6d3da65688e0315ba59d3c..96124147cc68537bfdf134f5420eec1973aa8fed 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2000-2011,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\"
 .\" Author: Thomas E. Dickey 1997,1999,2000,2005
 .\"
-.\" $Id: default_colors.3x,v 1.35 2022/02/12 20:03:40 tom Exp $
-.TH default_colors 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: default_colors.3x,v 1.52 2024/04/13 22:17:22 tom Exp $
+.TH default_colors 3X 2024-04-13 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBuse_default_colors\fP,
-\fBassume_default_colors\fP \- use terminal's default colors
+\fB\%use_default_colors\fP,
+\fB\%assume_default_colors\fP \-
+use terminal's default colors in \fIcurses\fP
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint use_default_colors(void);\fP
-.br
-\fBint assume_default_colors(int \fIfg\fB, int \fIbg\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint use_default_colors(void);
+\fBint assume_default_colors(int \fIfg\fP, int \fIbg\fP);
+.fi
 .SH DESCRIPTION
 The \fBuse_default_colors\fP and \fBassume_default_colors\fP
 functions are extensions to the curses library.
@@ -57,7 +65,8 @@ Some applications are designed to work with the default background,
 using colors only for text.
 For example, there are several implementations of the \fBls\fP program
 which use colors to denote different file types or permissions.
-These \*(``color ls\*('' programs do not necessarily modify the background color,
+These \*(``color ls\*('' programs do not necessarily
+modify the background color,
 typically using only the \fBsetaf\fP terminfo capability to set the
 foreground color.
 Full-screen applications that use default colors can achieve similar
@@ -84,9 +93,9 @@ The following are equivalent:
 .I assume_default_colors(\-1,\-1);
 .RE
 .PP
-These are ncurses extensions.
+These are \fI\%ncurses\fP extensions.
 For other curses implementations, color
-number \-1 does not mean anything, just as for ncurses before a
+number \-1 does not mean anything, just as for \fI\%ncurses\fP before a
 successful call of \fBuse_default_colors\fP or \fBassume_default_colors\fP.
 .PP
 Other curses implementations do not allow an application to modify color pair 0.
@@ -97,7 +106,7 @@ If your application does not use either
 .B use_default_colors
 or
 .B assume_default_colors
-ncurses will paint a white foreground (text) with black background
+\fI\%ncurses\fP will paint a white foreground (text) with black background
 for color pair 0.
 .SH RETURN VALUE
 These functions return the integer \fBERR\fP upon failure
@@ -131,14 +140,14 @@ a different problem: support for applications which would use
 environment variables and other configuration to bypass curses'
 notion of the terminal's default colors, setting specific values.
 .SH PORTABILITY
-These routines are specific to ncurses.
+These routines are specific to \fI\%ncurses\fP.
 They were not supported on
 Version 7, BSD or System V implementations.
 It is recommended that
 any code depending on them be conditioned using NCURSES_VERSION.
-.SH SEE ALSO
-\fBded\fP(1),
-\fBcurs_color\fP(3X).
-.SH AUTHOR
+.SH AUTHORS
 Thomas Dickey (from an analysis of the requirements for color xterm
 for XFree86 3.1.2C, February 1996).
+.SH SEE ALSO
+\fB\%ded\fP(1),
+\fB\%curs_color\fP(3X)
index 1476bb7661d06a7a92ef8e064964ad073a58044c..667d8cd312fed2a26bf5b886bd576b8c7d709b2a 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\"
 .\" Author: Thomas E. Dickey 1997
 .\"
-.\" $Id: define_key.3x,v 1.21 2022/02/12 20:03:40 tom Exp $
-.TH define_key 3X ""
+.\" $Id: define_key.3x,v 1.42 2024/03/16 15:35:01 tom Exp $
+.TH define_key 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBdefine_key\fP \- define a keycode
+\fB\%define_key\fP \-
+define a \fIcurses\fR keycode
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint define_key(const char *\fIdefinition\fB, int \fIkeycode\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint define_key(const char *\fIdefinition\fP, int \fIkeycode\fP);
+.fi
 .SH DESCRIPTION
-This is an extension to the curses library.
+This is an extension to the \fIcurses\fP library.
 It permits an application to define keycodes with their corresponding control
-strings, so that the ncurses library will interpret them just as it would
+strings,
+so that the \fI\%ncurses\fP library will interpret them just as it would
 the predefined codes in the terminfo database.
 .PP
-If the given string is null, any existing definition for the keycode is
-removed.
+If \fIdefinition\fP is \fBNULL\fP,
+any existing one for the keycode is removed.
 Similarly, if the given keycode is negative or zero, any existing string
 for the given definition is removed.
 .SH RETURN VALUE
-The keycode must be greater than zero, and the string non-null,
+Either \fIkeycode\fP must be greater than zero,
+or \fIdefinition\fP must be non-\fBNULL\fP,
 otherwise \fBERR\fP is returned.
 \fBERR\fP may also be returned if there is insufficient memory to allocate the
 data to store the definition.
 If no error is detected, \fBOK\fP is returned.
 .SH PORTABILITY
-These routines are specific to ncurses.
+These routines are specific to \fI\%ncurses\fP.
 They were not supported on
 Version 7, BSD or System V implementations.
 It is recommended that
-any code depending on them be conditioned using NCURSES_VERSION.
+any code depending on them be conditioned using \fB\%NCURSES_VERSION\fP.
+.SH AUTHORS
+Thomas Dickey
 .SH SEE ALSO
-\fBkeyok\fP(3X),
-\fBkey_defined\fP(3X).
-.SH AUTHOR
-Thomas Dickey.
+\fB\%keyok\fP(3X),
+\fB\%key_defined\fP(3X)
index 5808d1e9427579add0088e9934f0664d243bc4b8..2f8f884861fae16e5689a2107b94dddc93fea567 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form.3x,v 1.38 2021/12/25 21:49:32 tom Exp $
-.TH form 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: form.3x,v 1.54 2024/03/16 15:35:01 tom Exp $
+.TH form 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBform\fP \- curses extension for programming forms
+\fBform\fP \-
+curses extension for programming forms
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.br
+.nf
+\fB#include <form.h>
+.fi
 .SH DESCRIPTION
 The \fBform\fP library provides terminal-independent facilities for composing
 form screens on character-cell terminals.
@@ -64,7 +73,7 @@ so that input/output processing will work.
 A curses initialization routine such as \fBinitscr\fP must be called
 before using any of these functions.
 .
-.SS Current Default Values for Field Attributes
+.SS "Current Default Values for Field Attributes"
 .
 The \fBform\fP library maintains a default value for field attributes.
 You
@@ -75,13 +84,13 @@ Changing this default with a
 \fBset_\fP function affects future field creations, but does not change the
 rendering of fields already created.
 .
-.SS Routine Name Index
+.SS "Routine Name Index"
 .
 The following table lists each \fBform\fP routine and the name of
 the manual page on which it is described.
 Routines flagged with \*(``*\*(''
-are ncurses-specific, not present in SVr4.
-.
+are \fI\%ncurses\fP-specific, not present in SVr4.
+.PP
 .TS
 l l
 l l .
@@ -206,39 +215,32 @@ System error occurred (see \fBerrno\fP(3)).
 .B E_UNKNOWN_COMMAND
 The form driver code saw an unknown request code.
 .SH NOTES
-The header file \fB<form.h>\fP automatically includes the header files
-\fB<curses.h>\fP and \fB<eti.h>\fP.
-.PP
-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 would give you a link error when using static libraries).
+The header file \fI\%form.h\fP itself includes \fI\%curses.h\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
 Version 7 or BSD versions.
 .PP
-The menu facility was documented in SVr4.2 in
-\fICharacter User Interface Programming (UNIX SVR4.2)\fP.
+A form facility was documented in SVr4.2's
+\fICharacter User Interface Programming\fP document.
 .PP
 It is not part of X/Open Curses.
 .PP
-Aside from ncurses, there are few implementations:
+Aside from \fI\%ncurses\fP, there are few implementations:
 .bP
 systems based on SVr4 source code, e.g., Solaris.
 .bP
 NetBSD curses.
 .PP
-A few functions in this implementation are extensions added for ncurses,
+A few functions in this implementation are extensions added for
+\fI\%ncurses\fP,
 but not provided by other implementations, e.g.,
 \fBform_driver_w\fP,
 \fBunfocus_current_field\fP.
 .SH AUTHORS
 Juergen Pfeifer.
-Manual pages and adaptation for ncurses by Eric
+Manual pages and adaptation for \fI\%ncurses\fP by Eric
 S. Raymond.
 .SH SEE ALSO
-\fBcurses\fP(3X) and related pages whose names begin \*(``form_\*('' for detailed
-descriptions of the entry points.
-.PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+\fBcurses\fP(3X) and related pages whose names begin \*(``form_\*('' for
+detailed descriptions of the entry points.
index a2af849d62fbb8c49ce27b1c824e22022793f930..ed8bab15f2cea64497db2c7885894e856f3f644b 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_cursor.3x,v 1.17 2022/02/12 20:03:40 tom Exp $
-.TH form_cursor 3X ""
+.\" $Id: form_cursor.3x,v 1.31 2024/03/16 15:35:01 tom Exp $
+.TH form_cursor 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBpos_form_cursor\fP \- position a form window cursor
+\fBpos_form_cursor\fP \-
+position a form window cursor
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint pos_form_cursor(FORM *\fIform\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint pos_form_cursor(FORM *\fIform\fP);
+.fi
 .SH DESCRIPTION
 The function \fBpos_form_cursor\fP restores the cursor to the position required
 for the forms driver to continue processing requests.
@@ -57,12 +59,6 @@ The form has not been posted.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -70,3 +66,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index ac7db7cd58ce020b0bc1501a4d0817c69e2d0dab..ded82eba19a28ebb60790195317d2e0e01a95fdf 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_data.3x,v 1.18 2022/02/12 20:03:40 tom Exp $
-.TH form_data 3X ""
+.\" $Id: form_data.3x,v 1.32 2024/03/16 15:35:01 tom Exp $
+.TH form_data 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBdata_ahead\fP,
-\fBdata_behind\fP \- test for off-screen data in given forms
+\fBdata_behind\fP \-
+test for off-screen data in given forms
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBbool data_ahead(const FORM *\fIform\fB);\fR
-.br
-\fBbool data_behind(const FORM *\fIform\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBbool data_ahead(const FORM *\fIform\fP);
+\fBbool data_behind(const FORM *\fIform\fP);
+.fi
 .SH DESCRIPTION
 The function \fBdata_ahead\fP tests whether there is off-screen data
 ahead in the given form.
@@ -48,11 +49,6 @@ It returns TRUE (1) or FALSE (0).
 The function \fBdata_behind\fP tests whether there is off-screen data
 behind in the given form.
 It returns TRUE (1) or FALSE (0).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -60,3 +56,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index ff3a013761d72a3674e3ca784edcd4e40cd87420..882a49dd463471c0888ff8500fbf25062ac2384b 100644 (file)
@@ -1,5 +1,6 @@
+'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_driver.3x,v 1.39 2022/02/12 20:03:40 tom Exp $
-.TH form_driver 3X ""
+.\" $Id: form_driver.3x,v 1.61 2024/04/20 18:55:09 tom Exp $
+.TH form_driver 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
 \fBform_driver\fP,
-\fBform_driver_w\fP \- command-processing loop of the form system
+\fBform_driver_w\fP \-
+command-processing loop of the form system
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint form_driver(FORM *\fIform\fB, int \fIc\fB);\fR
-.br
-\fBint form_driver_w(FORM *\fIform\fB, int \fIc\fB, wchar_t \fIwch\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint form_driver(FORM *\fIform\fP, int \fIc\fP);
+\fBint form_driver_w(FORM *\fIform\fP, int \fIc\fP, wchar_t \fIwc\fP);
+.fi
 .SH DESCRIPTION
 .SS form_driver
 Once a form has been posted (displayed), you should funnel input events to it
@@ -59,33 +61,32 @@ checked according to the program's locale settings.
 .bP
 The input is the KEY_MOUSE special key associated with an mouse event.
 .SS form_driver_w
-.PP
 This extension simplifies the use of the forms library using wide characters.
 The input is either a key code (a request) or a wide character
 returned by \fBget_wch\fP(3X).
 The type must be passed as well,
 to enable the library to determine whether the parameter
 is a wide character or a request.
-.SS Form-driver requests
-.PP
+.SS "Form Driver Requests"
 The form driver requests are as follows:
+.PP
 .TS
-l l
-_ _
-l l.
-\fBName\fP     \fBDescription\fP
-REQ_BEG_FIELD  Move to the beginning of the field.
-REQ_BEG_LINE   Move to the beginning of the line.
+Lb Lb
+Lb Lx.
+Name   Description
+_
+REQ_BEG_FIELD  Move to beginning of field.
+REQ_BEG_LINE   Move to beginning of the line.
 REQ_CLR_EOF    Clear to end of field from cursor.
 REQ_CLR_EOL    Clear to end of line from cursor.
 REQ_CLR_FIELD  Clear the entire field.
 REQ_DEL_CHAR   Delete character at the cursor.
 REQ_DEL_LINE   Delete line at the cursor.
 REQ_DEL_PREV   Delete character before the cursor.
-REQ_DEL_WORD   Delete blank-delimited word at the cursor.
-REQ_DOWN_CHAR  Move down in the field.
+REQ_DEL_WORD   Delete blank-delimited word at cursor.
+REQ_DOWN_CHAR  Move down in field.
 REQ_DOWN_FIELD Move down to a field.
-REQ_END_FIELD  Move to the end of the field.
+REQ_END_FIELD  Move to the end of field.
 REQ_END_LINE   Move to the end of the line.
 REQ_FIRST_FIELD        Move to the first field.
 REQ_FIRST_PAGE Move to the first page.
@@ -94,7 +95,7 @@ REQ_INS_LINE  Insert a blank line at the cursor.
 REQ_INS_MODE   Enter insert mode.
 REQ_LAST_FIELD Move to the last field.
 REQ_LAST_PAGE  Move to the last field.
-REQ_LEFT_CHAR  Move left in the field.
+REQ_LEFT_CHAR  Move left in field.
 REQ_LEFT_FIELD Move left to a field.
 REQ_NEW_LINE   Insert or overlay a new line.
 REQ_NEXT_CHAR  Move to the next char.
@@ -111,25 +112,25 @@ REQ_PREV_FIELD    Move to the previous field.
 REQ_PREV_LINE  Move to the previous line.
 REQ_PREV_PAGE  Move to the previous page.
 REQ_PREV_WORD  Move to the previous word.
-REQ_RIGHT_CHAR Move right in the field.
+REQ_RIGHT_CHAR Move right in field.
 REQ_RIGHT_FIELD        Move right to a field.
-REQ_SCR_BCHAR  Scroll the field backward a character.
-REQ_SCR_BHPAGE Scroll the field backward half a page.
-REQ_SCR_BLINE  Scroll the field backward a line.
-REQ_SCR_BPAGE  Scroll the field backward a page.
-REQ_SCR_FCHAR  Scroll the field forward a character.
-REQ_SCR_FHPAGE Scroll the field forward half a page.
-REQ_SCR_FLINE  Scroll the field forward a line.
-REQ_SCR_FPAGE  Scroll the field forward a page.
-REQ_SCR_HBHALF Horizontal scroll the field backward half a line.
-REQ_SCR_HBLINE Horizontal scroll the field backward a line.
-REQ_SCR_HFHALF Horizontal scroll the field forward half a line.
-REQ_SCR_HFLINE Horizontal scroll the field forward a line.
+REQ_SCR_BCHAR  Scroll field backward 1 character.
+REQ_SCR_BHPAGE Scroll field backward \(12 page.
+REQ_SCR_BLINE  Scroll field backward 1 line.
+REQ_SCR_BPAGE  Scroll field backward 1 page.
+REQ_SCR_FCHAR  Scroll field forward 1 character.
+REQ_SCR_FHPAGE Scroll field forward \(12 page.
+REQ_SCR_FLINE  Scroll field forward 1 line.
+REQ_SCR_FPAGE  Scroll field forward 1 page.
+REQ_SCR_HBHALF Horizontal scroll field backward \(12 line.
+REQ_SCR_HBLINE Horizontal scroll field backward 1 line.
+REQ_SCR_HFHALF Horizontal scroll field forward \(12 line.
+REQ_SCR_HFLINE Horizontal scroll field forward 1 line.
 REQ_SFIRST_FIELD       Move to the sorted first field.
 REQ_SLAST_FIELD        Move to the sorted last field.
 REQ_SNEXT_FIELD        Move to the sorted next field.
 REQ_SPREV_FIELD        Move to the sorted previous field.
-REQ_UP_CHAR    Move up in the field.
+REQ_UP_CHAR    Move up in field.
 REQ_UP_FIELD   Move up to a field.
 REQ_VALIDATION Validate field.
 .TE
@@ -138,7 +139,7 @@ If the second argument is a printable character, the driver places it
 in the current position in the current field.
 If it is one of the forms
 requests listed above, that request is executed.
-.SS Field validation
+.SS "Field Validation"
 The form library makes updates to the window associated
 with form fields rather than directly to the field buffers.
 .PP
@@ -147,7 +148,6 @@ The form driver also provides for validating modified fields
 to ensure that the contents
 meet whatever constraints an application may attach using \fBset_field_type\fP.
 .PP
-.PP
 You can validate a field without making any changes to it using
 \fBREQ_VALIDATION\fP.
 The form driver also validates a field in these cases:
@@ -166,8 +166,7 @@ In each case, the move fails if the field is invalid.
 If the modified field is valid, the form driver copies the modified
 data from the window associated with the field
 to the field buffer.
-.SS Mouse handling
-.PP
+.SS "Mouse Handling"
 If the second argument is the KEY_MOUSE special key, the associated
 mouse event is translated into one of the above pre-defined requests.
 Currently only clicks in the user window (e.g., inside the form display
@@ -214,8 +213,7 @@ into a request was done, \fBform_driver\fP returns the result of this request.
 If you clicked outside the user window
 or the mouse event could not be translated
 into a form request an \fBE_REQUEST_DENIED\fP is returned.
-.SS Application-defined commands
-.PP
+.SS "Application-defined Commands"
 If the second argument is neither printable nor one of the above
 pre-defined form requests, the driver assumes it is an application-specific
 command and returns \fBE_UNKNOWN_COMMAND\fP.  Application-defined commands
@@ -250,18 +248,6 @@ System error occurred (see \fBerrno\fP(3)).
 .TP 5
 .B E_UNKNOWN_COMMAND
 The form driver code saw an unknown request code.
-.
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBform\fP(3X),
-\fBform_fieldtype\fP(3X),
-\fBform_field_buffer\fP(3X),
-\fBform_field_validation\fP(3X),
-\fBform_variables\fP(3X),
-\fBgetch\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header files
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -269,3 +255,11 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X),
+\fB\%form_fieldtype\fP(3X),
+\fB\%form_field_buffer\fP(3X),
+\fB\%form_field_validation\fP(3X),
+\fB\%form_variables\fP(3X),
+\fB\%getch\fP(3X)
index c9cfbf2e5a65f13cdda455e31f07d9bb87f49fd2..9799d0c0cfda6ba5976132e4f5e6602be69cf661 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2012 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field.3x,v 1.20 2022/02/12 20:03:40 tom Exp $
-.TH form_field 3X ""
+.\" $Id: form_field.3x,v 1.34 2024/03/16 15:35:01 tom Exp $
+.TH form_field 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBform_field\fP \- make and break connections between fields and forms
+\fBform_field\fP \-
+make and break connections between fields and forms
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_form_fields(FORM *\fIform\fB, FIELD **\fIfields\fB);\fR
-.br
-\fBFIELD **form_fields(const FORM *\fIform\fB);\fR
-.br
-\fBint field_count(const FORM *\fIform\fB);\fR
-.br
-\fBint move_field(FIELD *\fIfield\fB, int \fIfrow\fB, int \fIfcol\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_form_fields(FORM *\fIform\fP, FIELD **\fIfields\fP);
+\fBFIELD **form_fields(const FORM *\fIform\fP);
+\fBint field_count(const FORM *\fIform\fP);
+\fBint move_field(FIELD *\fIfield\fP, int \fIfrow\fP, int \fIfcol\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_form_fields\fP changes the field pointer array of
 the given \fIform\fP.  The array must be terminated by a \fBNULL\fP.
@@ -77,11 +76,6 @@ The form is already posted.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -92,3 +86,6 @@ as \-1 (which is the value of \fBERR\fP).
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index 5a90cf8be9e46d6ac58808b6b8951476b5d2f2f4..687e909e59beb5d0242b880d1d5310a86f04736f 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_attributes.3x,v 1.21 2022/02/12 20:03:40 tom Exp $
-.TH form_field_attributes 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: form_field_attributes.3x,v 1.35 2024/03/16 15:35:01 tom Exp $
+.TH form_field_attributes 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
-\fBform_field_attributes\fP \- color and attribute control for form fields
+\fBform_field_attributes\fP \-
+color and attribute control for form fields
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_field_fore(FIELD *\fIfield\fB, chtype \fIattr\fB);\fR
-.br
-\fBchtype field_fore(const FIELD *\fIfield\fB);\fR
-.sp
-\fBint set_field_back(FIELD *\fIfield\fB, chtype \fIattr\fB);\fR
-.br
-\fBchtype field_back(const FIELD *\fIfield\fB);\fR
-.sp
-\fBint set_field_pad(FIELD *\fIfield\fB, int \fIpad\fB);\fR
-.br
-\fBint field_pad(const FIELD *\fIfield\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_field_fore(FIELD *\fIfield\fP, chtype \fIattr\fP);
+\fBchtype field_fore(const FIELD *\fIfield\fP);
+.PP
+\fBint set_field_back(FIELD *\fIfield\fP, chtype \fIattr\fP);
+\fBchtype field_back(const FIELD *\fIfield\fP);
+.PP
+\fBint set_field_pad(FIELD *\fIfield\fP, int \fIpad\fP);
+\fBint field_pad(const FIELD *\fIfield\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_field_fore\fP sets the foreground attribute of
 \fIfield\fP. This is the highlight used to display the field contents.  The
@@ -80,13 +85,6 @@ Routine detected an incorrect or out-of-range argument.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.
-.SH SEE ALSO
-\fBcurses\fP(3X) and related pages whose names begin \*(``form_\*('' for detailed
-descriptions of the entry points.
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -94,3 +92,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X) and related pages whose names begin \*(``form_\*(''
+for detailed descriptions of the entry points.
index 8688b7b6b2509dd1ba3818502a129197c447e928..ba176d3e122bef598587c187e36b04658551aa6f 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_buffer.3x,v 1.30 2022/02/12 20:03:40 tom Exp $
-.TH form_field_buffer 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: form_field_buffer.3x,v 1.45 2024/03/16 15:35:01 tom Exp $
+.TH form_field_buffer 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBform_field_buffer\fP \- field buffer control
+\fBform_field_buffer\fP \-
+field buffer control
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_field_buffer(FIELD *\fIfield\fB, int \fIbuf\fB, const char *\fIvalue\fB);\fR
-.br
-\fBchar *field_buffer(const FIELD *\fIfield\fB, int \fIbuffer\fB);\fR
-.sp
-\fBint set_field_status(FIELD *\fIfield\fB, bool \fIstatus\fB);\fR
-.br
-\fBbool field_status(const FIELD *\fIfield\fB);\fR
-.sp
-\fBint set_max_field(FIELD *\fIfield\fB, int \fImax\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_field_buffer(FIELD *\fIfield\fP, int \fIbuf\fP, const char *\fIvalue\fP);
+\fBchar *field_buffer(const FIELD *\fIfield\fP, int \fIbuffer\fP);
+.PP
+\fBint set_field_status(FIELD *\fIfield\fP, bool \fIstatus\fP);
+\fBbool field_status(const FIELD *\fIfield\fP);
+.PP
+\fBint set_max_field(FIELD *\fIfield\fP, int \fImax\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_field_buffer\fP sets the numbered buffer of the given field
 to contain a given string:
@@ -119,26 +125,23 @@ System error occurred (see \fBerrno\fP(3)).
 .TP 5
 .B E_BAD_ARGUMENT
 Routine detected an incorrect or out-of-range argument.
-.SH SEE ALSO
-\fBcurses\fP(3X) and related pages whose names begin \*(``form_\*('' for detailed
-descriptions of the entry points.
 .SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-.PP
 When configured for wide characters, \fBfield_buffer\fP returns a pointer
 to temporary storage (allocated and freed by the library).
 The application should not attempt to modify the data.
 It will be freed on the next call to \fBfield_buffer\fP to return the
 same buffer.
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
 Version 7 or BSD versions.
 .PP
-The \fBset_max_field\fP function checks for an ncurses extension
+The \fBset_max_field\fP function checks for an \fI\%ncurses\fP extension
 \fBO_INPUT_FIELD\fP which allows a dynamic field to shrink if the new
 limit is smaller than the current field size.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X) and related pages whose names begin \*(``form_\*(''
+for detailed descriptions of the entry points.
index f5d77778e186270bfdd03f76f74e15615ffb4295..84b10d96d4b83018dffa3486593d15e514c8e2f2 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_info.3x,v 1.21 2022/02/12 20:03:40 tom Exp $
-.TH form_field_info 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: form_field_info.3x,v 1.32 2024/03/16 15:35:01 tom Exp $
+.TH form_field_info 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
 \fBdynamic_field_info\fP,
-\fBfield_info\fP \- retrieve field characteristics
+\fBfield_info\fP \-
+retrieve field characteristics
 .SH SYNOPSIS
 .nf
-\fB#include <form.h>\fP
-.sp
-\fBint field_info(const FIELD *\fIfield\fB,\fR
+\fB#include <form.h>
+.PP
+\fBint field_info(const FIELD *\fIfield\fP,
                \fBint *\fIrows\fB, int *\fIcols\fB,\fR
                \fBint *\fIfrow\fB, int *\fIfcol\fB,\fR
                \fBint *\fInrow\fB, int *\fInbuf\fB);\fR
-.sp
+.PP
 \fBint dynamic_field_info(const FIELD *\fIfield\fB,\fR
                        \fBint *\fIrows\fB, int *\fIcols\fB, int *\fImax\fB);\fR
 .fi
@@ -73,12 +79,6 @@ System error occurred (see \fBerrno\fP(3)).
 .TP 5
 .B E_BAD_ARGUMENT
 Routine detected an incorrect or out-of-range argument.
-.SH SEE ALSO
-\fBcurses\fP(3X) and related pages whose names begin \*(``form_\*('' for detailed
-descriptions of the entry points.
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -90,3 +90,6 @@ Not all implementations allow this, e.g., Solaris 2.7 does not.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X) and related pages whose names begin \*(``form_\*(''
+for detailed descriptions of the entry points.
index 8f5efa61e3e3cdb1bf48436bb96e13b375382f48..c1fd5545eb8a1eaa566fe907ea05e893f1aa3f24 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_just.3x,v 1.21 2022/02/12 20:03:40 tom Exp $
-.TH form_field_just 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: form_field_just.3x,v 1.35 2024/03/16 15:35:01 tom Exp $
+.TH form_field_just 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
 \fBset_field_just\fP,
-\fBfield_just\fP \- retrieve field characteristics
+\fBfield_just\fP \-
+retrieve field characteristics
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_field_just(FIELD *\fIfield\fB, int \fIjustification\fB);\fR
-.br
-\fBint field_just(const FIELD *\fIfield\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_field_just(FIELD *\fIfield\fP, int \fIjustification\fP);
+\fBint field_just(const FIELD *\fIfield\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_field_just\fP sets the justification attribute of
 a field; \fBfield_just\fP returns a field's justification attribute.
@@ -64,12 +70,6 @@ System error occurred (see \fBerrno\fP(3)).
 .TP 5
 .B E_BAD_ARGUMENT
 Routine detected an incorrect or out-of-range argument.
-.SH SEE ALSO
-\fBcurses\fP(3X) and related pages whose names begin \*(``form_\*('' for detailed
-descriptions of the entry points.
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -77,3 +77,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X) and related pages whose names begin \*(``form_\*(''
+for detailed descriptions of the entry points.
index 05d6d03c7bbf16a695023ee7d31e6d3209b51544..9cf08adb521c0c02c8a9629cb1e9d416f369829a 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_new.3x,v 1.27 2022/02/12 20:03:40 tom Exp $
-.TH form_field_new 3X ""
+.\" $Id: form_field_new.3x,v 1.41 2024/03/16 15:35:01 tom Exp $
+.TH form_field_new 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBnew_field\fP,
 \fBdup_field\fP,
 \fBlink_field\fP,
-\fBfree_field\fP \- create and destroy form fields
+\fBfree_field\fP \-
+create and destroy form fields
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBFIELD *new_field(int \fIheight\fB, int \fIwidth\fB,\fR
+.nf
+\fB#include <form.h>
+.PP
+\fBFIELD *new_field(int \fIheight\fP, int \fIwidth\fP,
                  \fBint \fItoprow\fB, int \fIleftcol\fB,\fR
                  \fBint \fIoffscreen\fB, int \fInbuffers\fB);\fR
-.br
 \fBFIELD *dup_field(FIELD *\fIfield\fB, int \fItoprow\fB, int \fIleftcol\fB);\fR
-.br
 \fBFIELD *link_field(FIELD *\fIfield\fB, int \fItoprow\fB, int \fIleftcol\fB);\fR
-.br
 \fBint free_field(FIELD *\fIfield\fB);\fR
-.br
+.fi
 .SH DESCRIPTION
 The function \fBnew_field\fP allocates a new field and initializes it from the
 parameters given: height, width, row of upper-left corner, column of upper-left
@@ -90,11 +88,6 @@ Routine detected an incorrect or out-of-range argument.
 .TP 5
 .B E_CONNECTED
 field is connected.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -106,3 +99,6 @@ not very explicit about what gets copied and what does not.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index e19f6bd916b16357f453c26f57c80d2d2b7c3056..9ab3ad0cb32a8d9adc4ca7934f49e3aa452c0c63 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2014,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_opts.3x,v 1.30 2022/02/12 20:03:40 tom Exp $
-.TH form_field_opts 3X ""
+.\" $Id: form_field_opts.3x,v 1.44 2024/03/16 15:35:01 tom Exp $
+.TH form_field_opts 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_field_opts\fP,
 \fBfield_opts_on\fP,
 \fBfield_opts_off\fP,
-\fBfield_opts\fP \- set and get field options
+\fBfield_opts\fP \-
+set and get field options
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_field_opts(FIELD *\fIfield\fB, Field_Options \fIopts\fB);\fR
-.br
-\fBField_Options field_opts(const FIELD *\fIfield\fB);\fR
-.sp
-\fBint field_opts_on(FIELD *\fIfield\fB, Field_Options \fIopts\fB);\fR
-.br
-\fBint field_opts_off(FIELD *\fIfield\fB, Field_Options \fIopts\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_field_opts(FIELD *\fIfield\fP, Field_Options \fIopts\fP);
+\fBField_Options field_opts(const FIELD *\fIfield\fP);
+.PP
+\fBint field_opts_on(FIELD *\fIfield\fP, Field_Options \fIopts\fP);
+\fBint field_opts_off(FIELD *\fIfield\fP, Field_Options \fIopts\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_field_opts\fP sets all the given field's option bits (field
 option bits may be logically-OR'ed together).
@@ -134,13 +133,6 @@ The field is the current field.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBform\fP(3X).
-\fBform_field_just\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -148,3 +140,7 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X),
+\fB\%form_field_just\fP(3X)
index ae5f7512158cd0051f6e4a7045307a93cbde5d91..6eea09201e76db53d95ee4cc67149818cf2d6892 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_userptr.3x,v 1.19 2022/02/12 20:03:40 tom Exp $
-.TH form_field_userptr 3X ""
+.\" $Id: form_field_userptr.3x,v 1.30 2024/03/16 15:35:01 tom Exp $
+.TH form_field_userptr 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_field_userptr\fP,
-\fBfield_userptr\fP \- associate application data with a form field
+\fBfield_userptr\fP \-
+associate application data with a form field
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_field_userptr(FIELD *\fIfield\fB, void *\fIuserptr\fB);\fR
-.br
-\fBvoid *field_userptr(const FIELD *\fIfield\fB);\fR
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_field_userptr(FIELD *\fIfield\fP, void *\fIuserptr\fP);
+\fBvoid *field_userptr(const FIELD *\fIfield\fP);
+.fi
 .SH DESCRIPTION
 Every form field has a field that can be used to hold application-specific data
 (that is, the form-driver code leaves it alone).
@@ -49,11 +50,6 @@ The function \fBfield_userptr\fP returns a pointer (which may be \fBNULL\fP).
 It does not set \fBerrno\fP.
 .PP
 The function \fBset_field_userptr\fP returns \fBE_OK\fP (success).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -64,3 +60,6 @@ We chose not to leave it as a char pointer for SVr4 compatibility.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index ec68a90f188120e44e5c6c877e77bb3545b76ac6..54fa2a72a4b4f48c841f02fa53e293ac603b0907 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_field_validation.3x,v 1.36 2022/02/12 20:03:40 tom Exp $
-.TH form_field_validation 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: form_field_validation.3x,v 1.53 2024/03/16 15:35:01 tom Exp $
+.TH form_field_validation 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBform_field_validation\fP \- data type validation for fields
+\fBform_field_validation\fP \-
+data type validation for fields
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBvoid *field_arg(const FIELD *\fIfield\fB);\fR
-.br
-\fBFIELDTYPE *field_type(const FIELD *\fIfield\fB);\fR
-.br
-\fBint set_field_type(FIELD *\fIfield\fB, FIELDTYPE *\fItype\fB, ...);\fR
-.sp
-/* predefined field types */
-.br
-\fBFIELDTYPE *TYPE_ALNUM;\fP
-.br
-\fBFIELDTYPE *TYPE_ALPHA;\fP
-.br
-\fBFIELDTYPE *TYPE_ENUM;\fP
-.br
-\fBFIELDTYPE *TYPE_INTEGER;\fP
-.br
-\fBFIELDTYPE *TYPE_NUMERIC;\fP
-.br
-\fBFIELDTYPE *TYPE_REGEXP;\fP
-.br
-\fBFIELDTYPE *TYPE_IPV4;\fP
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBvoid *field_arg(const FIELD *\fIfield\fP);
+\fBFIELDTYPE *field_type(const FIELD *\fIfield\fP);
+\fBint set_field_type(FIELD *\fIfield\fP, FIELDTYPE *\fItype\fP, ...);
+.PP
+\fI/* predefined field types */\fP
+\fBFIELDTYPE *TYPE_ALNUM;
+\fBFIELDTYPE *TYPE_ALPHA;
+\fBFIELDTYPE *TYPE_ENUM;
+\fBFIELDTYPE *TYPE_INTEGER;
+\fBFIELDTYPE *TYPE_NUMERIC;
+\fBFIELDTYPE *TYPE_REGEXP;
+\fBFIELDTYPE *TYPE_IPV4;
+.fi
 .SH DESCRIPTION
 By default, no validation is done on form fields.
 You can associate a form with with a \fIfield type\fP,
@@ -83,8 +83,7 @@ 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
+.SH PREDEFINED TYPES
 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.
@@ -94,27 +93,19 @@ which describes functions which can be used to construct
 a field-type dynamically.
 .PP
 The predefined types are as follows:
-.TP 5
-TYPE_ALNUM
+.SS TYPE_ALNUM
 Alphanumeric data.
 Required parameter:
-.RS
 .bP
 a third \fBint\fP argument, a minimum field width.
-.RE
-.TP 5
-TYPE_ALPHA
+.SS TYPE_ALPHA
 Character data.
 Required parameter:
-.RS
 .bP
 a third \fBint\fP argument, a minimum field width.
-.RE
-.TP 5
-TYPE_ENUM
+.SS TYPE_ENUM
 Accept one of a specified set of strings.
 Required parameters:
-.RS
 .bP
 a third \fB(char **)\fP argument pointing to a string list;
 .bP
@@ -124,15 +115,12 @@ a fifth \fBint\fP 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
+.PP
 The library copies the string list,
 so you may use a list that lives in automatic variables on the stack.
-.TP 5
-TYPE_INTEGER
+.SS TYPE_INTEGER
 Integer data, parsable to an integer by \fBatoi\fP(3).
 Required parameters:
-.RS
 .bP
 a third \fBint\fP argument controlling the precision,
 .bP
@@ -141,18 +129,15 @@ a fourth \fBlong\fP argument constraining minimum value,
 a fifth \fBlong\fP constraining maximum value.
 If the maximum value is less than or equal to the minimum value, the range is
 simply ignored.
-.RE
-.IP
+.PP
 On return, the field buffer is formatted according to the
 \fBprintf\fP format specification \*(``.*ld\*('',
 where the \*(``*\*('' is replaced by the precision argument.
-.IP
+.PP
 For details of the precision handling see \fBprintf\fP(3).
-.TP 5
-TYPE_NUMERIC
+.SS TYPE_NUMERIC
 Numeric data (may have a decimal-point part).
 Required parameters:
-.RS
 .bP
 a third \fBint\fP argument controlling the precision,
 .bP
@@ -163,26 +148,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
+.PP
 On return, the field buffer is formatted according to the
 \fBprintf\fP format specification \*(``.*f\*('',
 where the \*(``*\*('' is replaced by the precision argument.
-.IP
+.PP
 For details of the precision handling see \fBprintf\fP(3).
-.TP 5
-TYPE_REGEXP
+.SS TYPE_REGEXP
 Regular expression data.
 Required parameter:
-.RS
 .bP
 a third argument, a regular expression \fB(char *)\fP string.
 The data is valid if the regular expression matches it.
-.RE
-.IP
+.PP
 Regular expressions
 are in the format of \fBregcomp\fP and \fBregexec\fP.
-.IP
+.PP
 The regular expression must match the whole field.
 If you have for example, an eight character wide field,
 a regular expression "^[0\-9]*$" always
@@ -192,21 +173,18 @@ you may use for example "^[0\-9]* *$" which is good for
 trailing spaces (up to an empty field),
 or "^ *[0\-9]* *$" which is good for
 leading and trailing spaces around the digits.
-.TP 5
-TYPE_IPV4
+.SS TYPE_IPV4
 An Internet Protocol Version 4 address.
 Required parameter:
-.RS
 .bP
 none
-.RE
-.IP
+.PP
 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;
+.PP
+This is an \fI\%ncurses\fP extension;
 this field type may not be available in other curses implementations.
 .SH RETURN VALUE
 The functions \fBfield_type\fP and \fBfield_arg\fP return \fBNULL\fP on error.
@@ -217,14 +195,6 @@ The routine succeeded.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBform\fP(3X),
-\fBform_fieldtype\fP(3X),
-\fBform_variables\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -232,3 +202,8 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X),
+\fB\%form_fieldtype\fP(3X),
+\fB\%form_variables\fP(3X)
index 7a23bb86d7fad75b90ecf7cab0efa03b336b6276..81a58b1d8e48f24beb1bbc38d700d6ffaec73e09 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_fieldtype.3x,v 1.31 2022/02/12 20:03:40 tom Exp $
+.\" $Id: form_fieldtype.3x,v 1.46 2024/03/16 15:35:01 tom Exp $
+.TH form_fieldtype 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.TH form_fieldtype 3X ""
 .SH NAME
-\fBform_fieldtype\fP \- define validation-field types
+\fBform_fieldtype\fP \-
+define validation-field types
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBFIELDTYPE *new_fieldtype(\fP
+.nf
+\fB#include <form.h>
+.PP
+\fBFIELDTYPE *new_fieldtype(
     \fBbool (* const \fIfield_check\fB)(FIELD *, const void *),\fR
     \fBbool (* const \fIchar_check\fB)(int, const void *));\fR
-.br
 \fBint free_fieldtype(FIELDTYPE *\fIfieldtype\fB);\fR
-.sp
+.PP
 \fBint set_fieldtype_arg(\fP
     \fBFIELDTYPE *\fIfieldtype\fB,\fR
     \fBvoid *(* const \fImake_arg\fB)(va_list *),\fR
     \fBvoid *(* const \fIcopy_arg\fB)(const void *),\fR
     \fBvoid  (* const \fIfree_arg\fB)(void *));\fR
-.br
 \fBint set_fieldtype_choice(\fP
     \fBFIELDTYPE *\fIfieldtype\fB,\fR
     \fBbool (* const \fInext_choice\fB)(FIELD *, const void *),\fR
     \fBbool (* const \fIprev_choice\fB)(FIELD *, const void *));\fR
-.sp
+.PP
 \fBFIELDTYPE *link_fieldtype(FIELDTYPE *\fItype1\fB,\fR
                           \fBFIELDTYPE *\fItype2\fB);\fR
+.fi
 .SH DESCRIPTION
 .SS new_fieldtype
 The function \fBnew_fieldtype\fP creates a new field type usable for data
@@ -82,11 +82,9 @@ 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
 The \fBfree_fieldtype\fP function
 frees the space allocated for a given validation type by \fBnew_fieldtype\fP.
 .SS set_fieldtype_arg
-.PP
 The function \fBset_fieldtype_arg\fP associates
 three storage-management functions with a field type:
 .TP 5
@@ -109,7 +107,6 @@ In this case, the form library assumes
 that \fImake_arg\fP does not allocate memory but simply loads the
 argument into a single scalar value.
 .SS set_fieldtype_choice
-.PP
 The form driver requests \fBREQ_NEXT_CHOICE\fP and \fBREQ_PREV_CHOICE\fP 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.
@@ -120,7 +117,6 @@ 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\fP creates
 a new field type from the two given types.
 They are connected by an logical 'OR'.
@@ -154,13 +150,6 @@ The field is the current field.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBform\fP(3X),
-\fBform_field_validation\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -168,3 +157,7 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X),
+\fB\%form_field_validation\fP(3X)
index b4f17ed19c819acd7824b27ee0e64e83950abcf7..d93d8d875cb0620da21d647621ca9412af1bb16c 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2007,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_hook.3x,v 1.19 2022/02/12 20:03:40 tom Exp $
-.TH form_hook 3X ""
+.\" $Id: form_hook.3x,v 1.37 2024/03/16 15:35:01 tom Exp $
+.TH form_hook 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBform_hook\fP \- set hooks for automatic invocation by applications
+\fBform_hook\fP \-
+set hooks for automatic invocation by applications
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_field_init(FORM *\fIform\fB, Form_Hook \fIfunc\fB);\fR
-.br
-\fBForm_Hook field_init(const FORM *\fIform\fB);\fR
-.sp
-\fBint set_field_term(FORM *\fIform\fB, Form_Hook \fIfunc\fB);\fR
-.br
-\fBForm_Hook field_term(const FORM *\fIform\fB);\fR
-.sp
-\fBint set_form_init(FORM *\fIform\fB, Form_Hook \fIfunc\fB);\fR
-.br
-\fBForm_Hook form_init(const FORM *\fIform\fB);\fR
-.sp
-\fBint set_form_term(FORM *\fIform\fB, Form_Hook \fIfunc\fB);\fR
-.br
-\fBForm_Hook form_term(const FORM *\fIform\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_field_init(FORM *\fIform\fP, Form_Hook \fIfunc\fP);
+\fBForm_Hook field_init(const FORM *\fIform\fP);
+.PP
+\fBint set_field_term(FORM *\fIform\fP, Form_Hook \fIfunc\fP);
+\fBForm_Hook field_term(const FORM *\fIform\fP);
+.PP
+\fBint set_form_init(FORM *\fIform\fP, Form_Hook \fIfunc\fP);
+\fBForm_Hook form_init(const FORM *\fIform\fP);
+.PP
+\fBint set_form_term(FORM *\fIform\fP, Form_Hook \fIfunc\fP);
+\fBForm_Hook form_term(const FORM *\fIform\fP);
+.fi
 .SH DESCRIPTION
 These functions make it possible to set hook functions to be called at various
 points in the automatic processing of input event codes by \fBform_driver\fP.
-.PP
-The function \fBset_field_init\fP sets a hook to be called at form-post time
+.SS set_field_init
+sets a hook to be called at form-post time
 and each time the selected field changes (after the change).
-\fBfield_init\fP
+.SS field_init
 returns the current field init hook, if any (\fBNULL\fP if there is no such
 hook).
-.PP
-The function \fBset_field_term\fP sets a hook to be called at form-unpost time
+.SS set_field_term
+sets a hook to be called at form-unpost time
 and each time the selected field changes (before the change).
-\fBfield_term\fP
+.SS field_term
 returns the current field term hook, if any (\fBNULL\fP if there is no such
 hook).
-.PP
-The function \fBset_form_init\fP sets a hook to be called at form-post time and
+.SS set_form_init
+sets a hook to be called at form-post time and
 just after a page change once it is posted.
-\fBform_init\fP returns the
-current form init hook, if any (\fBNULL\fP if there is no such hook).
-.PP
-The function \fBset_form_term\fP sets a hook to be called at form-unpost time
+.SS form_init
+returns the current form init hook,
+if any (\fBNULL\fP if there is no such hook).
+.SS set_form_term
+sets a hook to be called at form-unpost time
 and just before a page change once it is posted.
-\fBform_init\fP
+.SS form_term
 returns the current form term hook, if any (\fBNULL\fP if there is no such
 hook).
 .SH RETURN VALUE
@@ -87,11 +85,6 @@ The routine succeeded.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -99,3 +92,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index 901d94d58cec54d5486178fafb1d7fba5d69c473..dc45e183f8aa616497b9bc603385f05756ebc84d 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_new.3x,v 1.18 2022/02/12 20:03:40 tom Exp $
-.TH form_new 3X ""
+.\" $Id: form_new.3x,v 1.32 2024/03/16 15:35:01 tom Exp $
+.TH form_new 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBnew_form\fP,
-\fBfree_form\fP \- create and destroy forms
+\fBfree_form\fP \-
+create and destroy forms
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBFORM *new_form(FIELD **\fIfields\fB);\fR
-.br
-\fBint free_form(FORM *\fIform\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBFORM *new_form(FIELD **\fIfields\fP);
+\fBint free_form(FORM *\fIform\fP);
+.fi
 .SH DESCRIPTION
 The function \fBnew_form\fP creates a new form connected to a specified field
 pointer array (which must be \fBNULL\fP-terminated).
@@ -72,11 +72,6 @@ Routine detected an incorrect or out-of-range argument.
 .TP 5
 .B E_POSTED
 The form has already been posted.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -84,3 +79,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index fa1660a1ee44115c2b3e10f664908a5578bfd97e..c47a959d3b5a65f9918bc49283d0e6c55a9db09c 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_new_page.3x,v 1.20 2022/02/12 20:03:40 tom Exp $
-.TH form_new_page 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: form_new_page.3x,v 1.34 2024/03/16 15:35:01 tom Exp $
+.TH form_new_page 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
 \fBset_new_page\fP,
-\fBnew_page\fP \- form pagination functions
+\fBnew_page\fP \-
+form pagination functions
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_new_page(FIELD *\fIfield\fB, bool \fInew_page_flag\fB);\fR
-.br
-\fBbool new_page(const FIELD *\fIfield\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_new_page(FIELD *\fIfield\fP, bool \fInew_page_flag\fP);
+\fBbool new_page(const FIELD *\fIfield\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_new_page\fP sets or resets a flag marking the given field
 as the beginning of a new page on its form.
@@ -60,12 +66,6 @@ The routine succeeded.
 .TP 5
 .B E_CONNECTED
 The given field is already connected to a form.
-.SH SEE ALSO
-\fBcurses\fP(3X) and related pages whose names begin \*(``form_\*('' for detailed
-descriptions of the entry points.
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -73,3 +73,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X) and related pages whose names begin \*(``form_\*(''
+for detailed descriptions of the entry points.
index 75ee62a7d3526e2c3e15144988d33eff38a9d733..74a36d2b3d8e457623559306b44b8697185d9252 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_opts.3x,v 1.20 2022/02/12 20:03:40 tom Exp $
-.TH form_opts 3X ""
+.\" $Id: form_opts.3x,v 1.34 2024/03/16 15:35:01 tom Exp $
+.TH form_opts 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_form_opts\fP,
 \fBform_opts_on\fP,
 \fBform_opts_off\fP,
-\fBform_opts\fP \- set and get form options
+\fBform_opts\fP \-
+set and get form options
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_form_opts(FORM *\fIform\fB, Field_Options \fIopts\fB);\fR
-.br
-\fBField_Options form_opts(const FORM *\fIform\fB);\fR
-.sp
-\fBint form_opts_on(FORM *\fIform\fB, Field_Options \fIopts\fB);\fR
-.br
-\fBint form_opts_off(FORM *\fIform\fB, Field_Options \fIopts\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_form_opts(FORM *\fIform\fP, Field_Options \fIopts\fP);
+\fBField_Options form_opts(const FORM *\fIform\fP);
+.PP
+\fBint form_opts_on(FORM *\fIform\fP, Field_Options \fIopts\fP);
+\fBint form_opts_off(FORM *\fIform\fP, Field_Options \fIopts\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_form_opts\fP sets all the given form's option bits (form
 option bits may be logically-OR'ed together).
@@ -75,11 +74,6 @@ The routine succeeded.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -87,3 +81,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index 5205859ee4098e246e8fc718a70018f60a1ab121..fa538c620143a7a27146fc66b5b5dd00119a6a0f 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_page.3x,v 1.22 2022/02/12 20:03:40 tom Exp $
-.TH form_page 3X ""
+.\" $Id: form_page.3x,v 1.37 2024/03/16 15:35:01 tom Exp $
+.TH form_page 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBform_page\fP \- set and get form page number
+\fBform_page\fP \-
+set and get form page number
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_current_field(FORM *\fIform\fB, FIELD *\fIfield\fB);\fR
-.br
-\fBFIELD *current_field(const FORM *\fIform\fB);\fR
-.sp
-\fBint unfocus_current_field(FORM *\fIform\fB);\fR
-.sp
-\fBint set_form_page(FORM *\fIform\fB, int \fIn\fB);\fR
-.br
-\fBint form_page(const FORM *\fIform\fB);\fR
-.sp
-\fBint field_index(const FIELD *\fIfield\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_current_field(FORM *\fIform\fP, FIELD *\fIfield\fP);
+\fBFIELD *current_field(const FORM *\fIform\fP);
+.PP
+\fBint unfocus_current_field(FORM *\fIform\fP);
+.PP
+\fBint set_form_page(FORM *\fIform\fP, int \fIn\fP);
+\fBint form_page(const FORM *\fIform\fP);
+.PP
+\fBint field_index(const FIELD *\fIfield\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_current_field\fP sets the current field of the given
 form; \fBcurrent_field\fP returns the current field of the given form.
@@ -84,18 +83,16 @@ The form driver could not process the request.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
 Version 7 or BSD versions.
 .PP
-The \fBunfocus_current_field\fP function is an ncurses extension.
+The \fBunfocus_current_field\fP function is an \fI\%ncurses\fP
+extension.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index 689ab97590f01f65a6103641126c896b2bc9e424..77e086e4559d202be297a07624a921d7cc2975da 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_post.3x,v 1.19 2022/02/12 20:03:40 tom Exp $
-.TH form_post 3X ""
+.\" $Id: form_post.3x,v 1.33 2024/03/16 15:35:01 tom Exp $
+.TH form_post 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBpost_form\fP,
-\fBunpost_form\fP \- write or erase forms from associated subwindows
+\fBunpost_form\fP \-
+write or erase forms from associated subwindows
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint post_form(FORM *\fIform\fB);\fR
-.br
-\fBint unpost_form(FORM *\fIform\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint post_form(FORM *\fIform\fP);
+\fBint unpost_form(FORM *\fIform\fP);
+.fi
 .SH DESCRIPTION
 The function \fBpost_form\fP displays a form to its associated subwindow.
 To trigger physical display of the subwindow,
@@ -74,12 +74,6 @@ The form has already been posted.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -87,3 +81,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index e26dfd82de922563ec1fc8daa06ad122c7879fa5..4075ea73c75653ac157e9ce2addd117755904c78 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_requestname.3x,v 1.19 2022/02/12 20:03:40 tom Exp $
-.TH form_requestname 3X ""
+.\" $Id: form_requestname.3x,v 1.35 2024/03/16 15:35:01 tom Exp $
+.TH form_requestname 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBform_request_by_name\fP,
-\fBform_request_name\fP \- handle printable form request names
+\fBform_request_name\fP \-
+handle printable form request names
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBconst char *form_request_name(int \fIrequest\fB);\fR
-.br
-\fBint form_request_by_name(const char *\fIname\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBconst char *form_request_name(int \fIrequest\fP);
+\fBint form_request_by_name(const char *\fIname\fP);
+.fi
 .SH DESCRIPTION
-.SS form_request_name
 The function \fBform_request_name\fP returns the printable name of a form
 request code.
-.SS form_request_name_by_name
 The function \fBform_request_by_name\fP searches in the name-table for a request
 with the given name and returns its request code.
 Otherwise E_NO_MATCH is returned.
@@ -54,13 +52,8 @@ to \fBE_BAD_ARGUMENT\fP.
 .PP
 \fBform_request_by_name\fP returns \fBE_NO_MATCH\fP on error.
 It does not set \fBerrno\fP.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
-These routines are specific to ncurses.
+These routines are specific to \fI\%ncurses\fP.
 They were not supported on
 Version 7, BSD or System V implementations.
 It is recommended that
@@ -68,3 +61,6 @@ any code depending on them be conditioned using NCURSES_VERSION.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index 47fcc294362d518c401b90bc176bae3f1e23e69d..11c990c0030b4403819cc95c6bd02e2ae448cb5d 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_userptr.3x,v 1.22 2022/02/12 20:03:40 tom Exp $
-.TH form_userptr 3X ""
+.\" $Id: form_userptr.3x,v 1.36 2024/03/16 15:35:01 tom Exp $
+.TH form_userptr 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_form_userptr\fP,
-\fBform_userptr\fP \- associate application data with a form item
+\fBform_userptr\fP \-
+associate application data with a form item
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_form_userptr(FORM *\fIform\fB, void *\fIuserptr\fB);\fR
-.br
-\fBvoid* form_userptr(const FORM *\fIform\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_form_userptr(FORM *\fIform\fP, void *\fIuserptr\fP);
+\fBvoid* form_userptr(const FORM *\fIform\fP);
+.fi
 .SH DESCRIPTION
 Every form and every form item has a field that can be used to hold
 application-specific data (that is, the form-driver code leaves it alone).
@@ -49,11 +49,6 @@ The function \fBform_userptr\fP returns a pointer (which may be \fBNULL\fP).
 It does not set \fBerrno\fP.
 .PP
 The function \fBset_form_userptr\fP returns \fBE_OK\fP (success).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -64,3 +59,6 @@ We chose not to leave it as a char pointer for SVr4 compatibility.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%form\fP(3X)
index 5a1712d537b870ba49d5e4443fd83b4e8954fba7..7b11a1ab77e8172f6bf55ee9e3c1e96b6800c39e 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2020,2021 Thomas E. Dickey                                     *
+.\" Copyright 2020-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2010-2013,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_variables.3x,v 1.9 2021/12/25 21:50:36 tom Exp $
-.TH form_variables 3X ""
-.na
-.hy 0
+.\" $Id: form_variables.3x,v 1.18 2024/03/16 15:35:01 tom Exp $
+.TH form_variables 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBTYPE_ALNUM\fP,
-\fBTYPE_ALPHA\fP,
-\fBTYPE_ENUM\fP,
-\fBTYPE_INTEGER\fP,
-\fBTYPE_IPV4\fP,
-\fBTYPE_NUMERIC\fP,
-\fBTYPE_REGEXP\fP
-\- form system global variables
-.ad
-.hy
+\fB\%TYPE_ALNUM\fP,
+\fB\%TYPE_ALPHA\fP,
+\fB\%TYPE_ENUM\fP,
+\fB\%TYPE_INTEGER\fP,
+\fB\%TYPE_IPV4\fP,
+\fB\%TYPE_NUMERIC\fP,
+\fB\%TYPE_REGEXP\fP \-
+form system global variables
 .SH SYNOPSIS
 .nf
-\fB#include <form.h>\fP
+\fB#include <form.h>
 .PP
-\fBFIELDTYPE * TYPE_ALNUM;\fP
-\fBFIELDTYPE * TYPE_ALPHA;\fP
-\fBFIELDTYPE * TYPE_ENUM;\fP
-\fBFIELDTYPE * TYPE_INTEGER;\fP
-\fBFIELDTYPE * TYPE_IPV4;\fP
-\fBFIELDTYPE * TYPE_NUMERIC;\fP
-\fBFIELDTYPE * TYPE_REGEXP;\fP
+\fBFIELDTYPE * TYPE_ALNUM;
+\fBFIELDTYPE * TYPE_ALPHA;
+\fBFIELDTYPE * TYPE_ENUM;
+\fBFIELDTYPE * TYPE_INTEGER;
+\fBFIELDTYPE * TYPE_IPV4;
+\fBFIELDTYPE * TYPE_NUMERIC;
+\fBFIELDTYPE * TYPE_REGEXP;
 .fi
 .SH DESCRIPTION
 These are building blocks for the form library,
@@ -78,4 +74,4 @@ This holds a regular expression.
 The \fBTYPE_IPV4\fP variable is an extension not provided by older
 implementations of the form library.
 .SH SEE ALSO
-\fBform\fP(3X).
+\fB\%form\fP(3X)
index 49c007fc212e0bd74e4c2a583882f948b6af5338..4a75b294ce01c8cfa2fdc2be42ce23cc7d97c196 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: form_win.3x,v 1.21 2022/02/12 20:03:40 tom Exp $
-.TH form_win 3X ""
+.\" $Id: form_win.3x,v 1.35 2024/03/16 15:35:01 tom Exp $
+.TH form_win 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBform_win\fP \- make and break form window and subwindow associations
+\fBform_win\fP \-
+make and break form window and subwindow associations
 .SH SYNOPSIS
-\fB#include <form.h>\fP
-.sp
-\fBint set_form_win(FORM *\fIform\fB, WINDOW *\fIwin\fB);\fR
-.br
-\fBWINDOW *form_win(const FORM *\fIform\fB);\fR
-.sp
-\fBint set_form_sub(FORM *\fIform\fB, WINDOW *\fIsub\fB);\fR
-.br
-\fBWINDOW *form_sub(const FORM *\fIform\fB);\fR
-.sp
-\fBint scale_form(const FORM *\fIform\fB, int *\fIrows\fB, int *\fIcolumns\fB);\fR
-.br
+.nf
+\fB#include <form.h>
+.PP
+\fBint set_form_win(FORM *\fIform\fP, WINDOW *\fIwin\fP);
+\fBWINDOW *form_win(const FORM *\fIform\fP);
+.PP
+\fBint set_form_sub(FORM *\fIform\fP, WINDOW *\fIsub\fP);
+\fBWINDOW *form_sub(const FORM *\fIform\fP);
+.PP
+\fBint scale_form(const FORM *\fIform\fP, int *\fIrows\fP, int *\fIcolumns\fP);
+.fi
 .SH DESCRIPTION
 Every form has an associated pair of \fBcurses\fP windows.
 The form window
@@ -80,13 +79,6 @@ The form has already been posted.
 .TP 5
 .B E_NOT_CONNECTED
 No items are connected to the form.
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_variables\fP(3X),
-\fBform\fP(3X).
-.SH NOTES
-The header file \fB<form.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V forms library.
 They were not supported on
@@ -94,3 +86,7 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%form\fP(3X)
index 2b5d98e3b62fd05f01cc36841f9e9f5db0d3be95..5f92c96dd63b8663c588fd9ff49d0f33443709ae 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: infocmp.1m,v 1.81 2022/02/12 20:02:20 tom Exp $
-.TH @INFOCMP@ 1M ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.ds n 5
+.\" $Id: infocmp.1m,v 1.109 2024/03/16 15:35:01 tom Exp $
+.TH @INFOCMP@ 1M 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.ds '  \(aq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.ie t .ds '  \(aq
+.el   .ds '  '
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
+.
 .ds d @TERMINFO@
 .SH NAME
-\fB@INFOCMP@\fP \- compare or print out \fIterminfo\fP descriptions
+\fB@INFOCMP@\fP \-
+compare or print out \fIterminfo\fP descriptions
 .SH SYNOPSIS
 \fB@INFOCMP@\fP [\fB\-\
 1\
+c\
 C\
+d\
 D\
+e\
 E\
 F\
+g\
 G\
+i\
 I\
 K\
-L\
-T\
-U\
-V\
-W\
-c\
-d\
-e\
-g\
-i\
 l\
+L\
 n\
 p\
 q\
 r\
 t\
+T\
 u\
+U\
+V\
+W\
 x\
 \fP]
-.br
       [\fB\-v\fR \fIn\fR] [\fB\-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB\-Q\fR \fIn\fR] [\fB\-R \fBsubset\fR]
-.br
       [\fB\-w\fP\ \fIwidth\fP] [\fB\-A\fP\ \fIdirectory\fP] [\fB\-B\fP\ \fIdirectory\fP]
-.br
-      [\fItermname\fP...]
+      [\fIterminal-type\fP ...]
 .SH DESCRIPTION
 \fB@INFOCMP@\fP can be used to compare a binary \fBterminfo\fP entry with other
 terminfo entries, rewrite a \fBterminfo\fP description to take advantage of the
 \fBuse=\fP terminfo field, or print out a \fBterminfo\fP description from the
 binary file (\fBterm\fP) in a variety of formats.
-In all cases, the boolean
+In all cases, the Boolean
 fields will be printed first, followed by the numeric fields, followed by the
 string fields.
-.SS Default Options
-If no options are specified and zero or one \fItermnames\fP are specified, the
+.SS "Default Options"
+If no options are specified and zero or one \fIterminal-types\fP are
+specified,
+the
 \fB\-I\fP option will be assumed.
-If more than one \fItermname\fP is specified,
+If more than one \fIterminal-type\fP is specified,
 the \fB\-d\fP option will be assumed.
-.SS Comparison Options [\-d] [\-c] [\-n]
+.SS "Comparison Options [\-d] [\-c] [\-n]"
 \fB@INFOCMP@\fP compares the \fBterminfo\fP description of the first terminal
-\fItermname\fP with each of the descriptions given by the entries for the other
-terminal's \fItermnames\fP.
+\fIterminal-type\fP with each of the descriptions given by the entries
+for the other terminal's \fIterminal-types\fP.
 If a capability is defined for only one of the
 terminals, the value returned depends on the type of the capability:
 .bP
-\fBF\fP for missing boolean variables
+\fBF\fP for missing Boolean variables
 .bP
 \fBNULL\fP for missing integer or string variables
 .PP
@@ -146,25 +142,25 @@ Normally only the conventional capabilities are shown.
 Use the \fB\-x\fP option to add the BSD-compatibility
 capabilities (names prefixed with \*(``OT\*('').
 .IP
-If no \fItermnames\fP are given,
-\fB@INFOCMP@\fP uses the environment variable \fBTERM\fP
-for each of the \fItermnames\fP.
-.SS Source Listing Options [\-I] [\-L] [\-C] [\-r]
+If no \fIterminal-types\fP are given,
+\fB@INFOCMP@\fP uses the environment variable \fITERM\fP
+for each of the \fIterminal-types\fP.
+.SS "Source Listing Options [\-I] [\-L] [\-C] [\-r]"
 The \fB\-I\fP, \fB\-L\fP, and \fB\-C\fP options will produce
 a source listing for each terminal named.
-.
+.PP
 .TS
-center tab(/) ;
-l l .
-\fB\-I\fP/use the \fBterminfo\fP names
-\fB\-L\fP/use the long C variable name listed in <\fBterm.h\fP>
-\fB\-C\fP/use the \fBtermcap\fP names
-\fB\-r\fP/when using \fB\-C\fP, put out all capabilities in \fBtermcap\fP form
-\fB\-K\fP/modifies the \fB\-C\fP option, improving BSD-compatibility.
+center;
+Lb L.
+\-I    use \fIterminfo\fP capability codes
+\-L    use \*(``long\*('' capability names
+\-C    use \fItermcap\fP capability codes
+\-r    with \fB\-C\fP, include nonstandard capabilities
+\-K    with \fB\-C\fP, improve BSD compatibility
 .TE
 .PP
-If no \fItermnames\fP are given, the environment variable \fBTERM\fP will be
-used for the terminal name.
+If no \fIterminal-types\fP are given,
+the environment variable \fITERM\fP will be used for the terminal name.
 .PP
 The source produced by the \fB\-C\fP option may be used directly as a
 \fBtermcap\fP entry, but not all parameterized strings can be changed to
@@ -215,28 +211,34 @@ will not necessarily reproduce the original \fBterminfo\fP source.
 .PP
 Some common \fBterminfo\fP parameter sequences, their \fBtermcap\fP
 equivalents, and some terminal types which commonly have such sequences, are:
-.
+.PP
 .TS
-center tab(/) ;
-l c l
-l l l.
-\fBterminfo/termcap\fP/Representative Terminals
-=
-\fB%p1%c/%.\fP/adm
-\fB%p1%d/%d\fP/hp, ANSI standard, vt100
-\fB%p1%'x'%+%c/%+x\fP/concept
-\fB%i/%i\fPq/ANSI standard, vt100
-\fB%p1%?%'x'%>%t%p1%'y'%+%;/%>xy\fP/concept
-\fB%p2\fP is printed before \fB%p1/%r\fP/hp
+center;
+Lf(BI) Lf(BI) L
+Lb     Lb     L.
+terminfo       termcap Terminal Types
+_
+.\" ansi-m cup (adm3a has other stuff in between, more like concept)
+%p1%c  %.      ansi\-m
+.\" ansi cub, vt100 cub
+%p1%d  %d      ansi, vt100
+.\" vt52 cup (via vt52-basic)
+%p1%\*' \*'%+%c        %+x     vt52
+.\" ansi cup, vt100 cup
+%i     %iq     ansi, vt100
+.\" annarbor4080 cup
+%p1%?%\*'x\*'%>%t%p1%\*'y\*'%+%;       %>xy    annarbor4080
+.\" hpgeneric cup
+%p2\fR\|.\|.\|.\|\fP%p1        %r      hpgeneric
 .TE
-.SS Use= Option [\-u]
+.SS "Use= Option [\-u]"
 The \fB\-u\fP option produces a \fBterminfo\fP source description of the first
-terminal \fItermname\fP which is relative to the sum of the descriptions given
-by the entries for the other terminals \fItermnames\fP.
+terminal \fIterminal-type\fP which is relative to the sum of the
+descriptions given by the entries for the other \fIterminal-types\fP.
 It does this by
-analyzing the differences between the first \fItermname\fP and the other
-\fItermnames\fP and producing a description with \fBuse=\fP fields for the
-other terminals.
+analyzing the differences between the first \fIterminal-types\fP and the
+other \fIterminal-types\fP and producing a description with \fBuse=\fP
+fields for the other terminals.
 In this manner, it is possible to retrofit generic terminfo
 entries into a terminal's description.
 Or, if two similar terminals exist, but
@@ -246,21 +248,24 @@ will show what can be done to change
 one description to be relative to the other.
 .PP
 A capability will be printed with an at-sign (@) if it no longer exists in the
-first \fItermname\fP, but one of the other \fItermname\fP entries contains a
-value for it.
+first \fIterminal-type\fP,
+but one of the other \fIterminal-type\fP entries contains a value for
+it.
 A capability's value will be printed if the value in the first
-\fItermname\fP is not found in any of the other \fItermname\fP entries, or if
-the first of the other \fItermname\fP entries that has this capability gives a
-different value for the capability than that in the first \fItermname\fP.
+\fIterminal-type\fP is not found in any of the other \fIterminal-type\fP
+entries,
+or if the first of the other \fIterminal-type\fP entries that has this
+capability gives a different value for the capability than that in the
+first \fIterminal-type\fP.
 .PP
-The order of the other \fItermname\fP entries is significant.
+The order of the other \fIterminal-type\fP entries is significant.
 Since the
 terminfo compiler \fB@TIC@\fP does a left-to-right scan of the capabilities,
 specifying two \fBuse=\fP entries that contain differing entries for the same
 capabilities will produce different results depending on the order that the
 entries are given in.
 \fB@INFOCMP@\fP will flag any such inconsistencies between
-the other \fItermname\fP entries as they are found.
+the other \fIterminal-type\fP entries as they are found.
 .PP
 Alternatively, specifying a capability \fIafter\fP a \fBuse=\fP entry that
 contains that capability will cause the second specification to be ignored.
@@ -271,22 +276,24 @@ description.
 Another error that does not cause incorrect compiled files, but will slow down
 the compilation time, is specifying extra \fBuse=\fP fields that are
 superfluous.
-\fB@INFOCMP@\fP will flag any other \fItermname use=\fP fields that
+\fB@INFOCMP@\fP will flag any other \fIterminal-type use=\fP fields that
 were not needed.
-.SS Changing Databases [\-A \fIdirectory\fR] [\-B \fIdirectory\fR]
-Like other \fBncurses\fP utilities,
+.SS "Changing Databases [\-A \fIdirectory\fR] [\-B \fIdirectory\fR]"
+Like other \fI\%ncurses\fP utilities,
 \fB@INFOCMP@\fP looks for the terminal descriptions in several places.
-You can use the \fBTERMINFO\fP and \fBTERMINFO_DIRS\fP environment variables
-to override the compiled-in default list of places to search
-(see \fBcurses\fP(3X) for details).
+You can use the \fI\%TERMINFO\fP and \fI\%TERMINFO_DIRS\fP environment
+variables to override the compiled-in default list of places to search.
+See \fBcurses\fP(3X), as well as
+the \fIFetching Compiled Descriptions\fP section in \fBterminfo\fR(5).
 .PP
 You can also use the options \fB\-A\fP
 and \fB\-B\fP to override the list of places to search
 when comparing terminal descriptions:
 .bP
-The \fB\-A\fP option sets the location for the first \fItermname\fP
+The \fB\-A\fP option sets the location for the first \fIterminal-type\fP
 .bP
-The \fB\-B\fP option sets the location for the other \fItermnames\fP.
+The \fB\-B\fP option sets the location for the other
+\fIterminal-types\fP.
 .PP
 Using these options, it is possible to
 compare descriptions for a terminal with the same name located in two different
@@ -294,7 +301,7 @@ databases.
 For instance,
 you can use this feature for comparing descriptions for the same terminal
 created by different people.
-.SS Other Options
+.SS "Other Options"
 .TP 5
 \fB\-0\fP
 causes the fields to be printed on one line, without wrapping.
@@ -323,9 +330,10 @@ for a given terminal type.
 The tables are all declared static, and are named according to the type
 and the name of the corresponding terminal entry.
 .sp
-Before ncurses 5.0, the split between the \fB\-e\fP and \fB\-E\fP
-options was not needed; but support for extended names required making
-the arrays of terminal capabilities separate from the TERMTYPE structure.
+Before \fI\%ncurses\fP 5.0,
+the split between the \fB\-e\fP and \fB\-E\fP options was not needed;
+but support for extended names required making the arrays of terminal
+capabilities separate from the TERMTYPE structure.
 .TP 5
 \fB\-e\fP
 Dump the capabilities of the given terminal as a C initializer for a
@@ -378,45 +386,45 @@ translated into {}-bracketed descriptions.
 .IP
 Here is a list of the DEC/ANSI
 special sequences recognized:
+.PP
 .TS
-center tab(/) ;
-l l
-l l.
-Action/Meaning
-=
-RIS/full reset
-SC/save cursor
-RC/restore cursor
-LL/home-down
-RSR/reset scroll region
-=
-DECSTR/soft reset (VT320)
-S7C1T/7-bit controls (VT220)
-=
-ISO DEC G0/enable DEC graphics for G0
-ISO UK G0/enable UK chars for G0
-ISO US G0/enable US chars for G0
-ISO DEC G1/enable DEC graphics for G1
-ISO UK G1/enable UK chars for G1
-ISO US G1/enable US chars for G1
-=
-DECPAM/application keypad mode
-DECPNM/normal keypad mode
-DECANSI/enter ANSI mode
-=
-ECMA[+\-]AM/keyboard action mode
-ECMA[+\-]IRM/insert replace mode
-ECMA[+\-]SRM/send receive mode
-ECMA[+\-]LNM/linefeed mode
-=
-DEC[+\-]CKM/application cursor keys
-DEC[+\-]ANM/set VT52 mode
-DEC[+\-]COLM/132-column mode
-DEC[+\-]SCLM/smooth scroll
-DEC[+\-]SCNM/reverse video mode
-DEC[+\-]OM/origin mode
-DEC[+\-]AWM/wraparound mode
-DEC[+\-]ARM/auto-repeat mode
+center;
+L L.
+Action Meaning
+_
+RIS    full reset
+SC     save cursor
+RC     restore cursor
+LL     home-down
+RSR    reset scroll region
+_
+DECSTR soft reset (VT320)
+S7C1T  7-bit controls (VT220)
+_
+ISO DEC G0     enable DEC graphics for G0
+ISO UK G0      enable UK chars for G0
+ISO US G0      enable US chars for G0
+ISO DEC G1     enable DEC graphics for G1
+ISO UK G1      enable UK chars for G1
+ISO US G1      enable US chars for G1
+_
+DECPAM application keypad mode
+DECPNM normal keypad mode
+DECANSI        enter ANSI mode
+_
+ECMA[+\-]AM    keyboard action mode
+ECMA[+\-]IRM   insert replace mode
+ECMA[+\-]SRM   send receive mode
+ECMA[+\-]LNM   linefeed mode
+_
+DEC[+\-]CKM    application cursor keys
+DEC[+\-]ANM    set VT52 mode
+DEC[+\-]COLM   132-column mode
+DEC[+\-]SCLM   smooth scroll
+DEC[+\-]SCNM   reverse video mode
+DEC[+\-]OM     origin mode
+DEC[+\-]AWM    wraparound mode
+DEC[+\-]ARM    auto-repeat mode
 .TE
 .sp
 It also recognizes a SGR action corresponding to ANSI/ISO 6429/ECMA Set
@@ -455,10 +463,13 @@ hexadecimal and base64
 .RE
 .IP
 For example, this prints the compiled terminfo value as a string
-which could be assigned to the \fBTERMINFO\fP environment variable:
-.NS
-@INFOCMP@ -0 -q -Q2
-.NE
+which could be assigned to the \fI\%TERMINFO\fP environment variable:
+.PP
+.RS 9
+.EX
+@INFOCMP@ \-0 \-q \-Q2
+.EE
+.RE
 .TP 5
 \fB\-q\fP
 This makes the output a little shorter:
@@ -483,15 +494,27 @@ that have their own extensions incompatible with SVr4/XSI.
 .bP
 Available terminfo
 subsets are \*(``SVr1\*('', \*(``Ultrix\*('', \*(``HP\*('', and \*(``AIX\*('';
-see \fBterminfo\fP(\*n) for details.
+see \fBterminfo\fP(5) for details.
 .bP
 You can also choose the subset \*(``BSD\*('' which selects only capabilities
 with termcap equivalents recognized by 4.4BSD.
-The \fB\-C\fP option sets the \*(``BSD\*('' subset as a side-effect.
 .bP
 If you select any other value for \fB\-R\fP,
 it is the same as no subset, i.e., all capabilities are used.
-The \fB\-I\fP option likewise selects no subset as a side-effect.
+.RE
+.IP
+A few options override the subset selected with \fB\-R\fP,
+if they are processed later in the command parameters:
+.RS
+.TP 5
+\fB\-C\fP
+sets the \*(``BSD\*('' subset as a side-effect.
+.TP 5
+\fB\-I\fP
+sets the subset to all capabilities.
+.TP 5
+\fB\-r\fP
+sets the subset to all capabilities.
 .RE
 .TP
 \fB\-s \fI[d|i|l|c]\fR
@@ -537,14 +560,16 @@ since it excludes the inferences that \fB@INFOCMP@\fP makes to fill in missing
 data.
 .TP 5
 \fB\-V\fP
-reports the version of ncurses which was used in this program, and exits.
+reports the version of \fI\%ncurses\fP which was used in this program,
+and exits.
 .TP 5
 \fB\-v\fP \fIn\fP
 prints out tracing information on standard error as the program runs.
 .IP
 The optional parameter \fIn\fP 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 ignored.
+If \fI\%ncurses\fP is built without tracing support,
+the optional parameter is ignored.
 .TP
 \fB\-W\fP
 By itself, the \fB\-w\fP option will not force long strings to be wrapped.
@@ -554,41 +579,13 @@ Use the \fB\-W\fP option to do this.
 changes the output to \fIwidth\fP characters.
 .TP
 \fB\-x\fP
-print information for user-defined capabilities (see \fBuser_caps(\*n)\fP.
+print information for user-defined capabilities (see \fBuser_caps\fP(5).
 These are extensions to the terminfo repertoire which can be loaded
 using the \fB\-x\fP option of \fB@TIC@\fP.
 .SH FILES
-.TP 20
-\*d
-Compiled terminal description database.
-.SH HISTORY
-Although System V Release 2 provided a terminfo library,
-it had no documented tool for decompiling the terminal descriptions.
-Tony Hansen (AT&T) wrote the first \fBinfocmp\fP in early 1984,
-for System V Release 3.
-.PP
-Eric Raymond used the AT&T documentation in 1995 to provide an equivalent
-\fB@INFOCMP@\fP for ncurses.
-In addition, he added a few new features such as:
-.bP
-the \fB\-e\fP option, to support \fIfallback\fP
-(compiled-in) terminal descriptions
-.bP
-the \fB\-i\fP option, to help with analysis
-.PP
-Later, Thomas Dickey added the \fB\-x\fP (user-defined capabilities)
-option, and the \fB\-E\fP option to support fallback entries with
-user-defined capabilities.
-.PP
-For a complete list, see the \fIEXTENSIONS\fP section.
-.PP
-In 2010, Roy Marples provided an \fBinfocmp\fP program for NetBSD.
-It is less capable than the SVr4 or ncurses versions
-(e.g., it lacks the sorting options documented in X/Open),
-but does include the \fB\-x\fP option adapted from ncurses.
-.SH PORTABILITY
-X/Open Curses, Issue 7 (2009) provides a description of \fBinfocmp\fP.
-It does not mention the options used for converting to termcap format.
+.TP
+.I \*d
+compiled terminal description database
 .SH EXTENSIONS
 The
 \fB\-0\fP,
@@ -622,23 +619,49 @@ is System V Release 4's.
 Actual BSD curses versions will have a more restricted set.
 To see only the
 4.4BSD set, use \fB\-r\fP \fB\-RBSD\fP.
-.SH BUGS
-The \fB\-F\fP option of \fB@INFOCMP@\fP(1M) should be a \fB@TOE@\fP(1M) mode.
-.SH SEE ALSO
-\fB@CAPTOINFO@\fP(1M),
-\fB@INFOTOCAP@\fP(1M),
-\fB@TIC@\fP(1M),
-\fB@TOE@\fP(1M),
-\fBcurses\fP(3X),
-\fBterminfo\fP(\*n).
-\fBuser_caps\fP(\*n).
-.sp
-https://invisible-island.net/ncurses/tctest.html
+.SH PORTABILITY
+X/Open Curses, Issue 7 (2009) provides a description of \fBinfocmp\fP.
+It does not mention the options used for converting to termcap format.
+.SH HISTORY
+Although System V Release 2 provided a terminfo library,
+it had no documented tool for decompiling the terminal descriptions.
+Tony Hansen (AT&T) wrote the first \fBinfocmp\fP in early 1984,
+for System V Release 3.
+.PP
+Eric Raymond used the AT&T documentation in 1995 to provide an equivalent
+\fB@INFOCMP@\fP for \fI\%ncurses\fP.
+In addition, he added a few new features such as:
+.bP
+the \fB\-e\fP option, to support \fIfallback\fP
+(compiled-in) terminal descriptions
+.bP
+the \fB\-i\fP option, to help with analysis
+.PP
+Later, Thomas Dickey added the \fB\-x\fP (user-defined capabilities)
+option, and the \fB\-E\fP option to support fallback entries with
+user-defined capabilities.
+.PP
+For a complete list, see the \fIEXTENSIONS\fP section.
 .PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
-.SH AUTHOR
+In 2010, Roy Marples provided an \fBinfocmp\fP program for NetBSD.
+It is less capable than the SVr4 or \fI\%ncurses\fP versions
+(e.g., it lacks the sorting options documented in X/Open),
+but does include the \fB\-x\fP option adapted from \fI\%ncurses\fP.
+.SH BUGS
+The \fB\-F\fP option of \fB\%@INFOCMP@\fP(1M) should be a
+\fB\%@TOE@\fP(1M) mode.
+.SH AUTHORS
 Eric S. Raymond <esr@snark.thyrsus.com>
 and
 .br
-Thomas E. Dickey <dickey@invisible-island.net>
+Thomas E. Dickey <dickey@invisible\-island.net>
+.SH SEE ALSO
+\fB\%@CAPTOINFO@\fP(1M),
+\fB\%@INFOTOCAP@\fP(1M),
+\fB\%@TIC@\fP(1M),
+\fB\%@TOE@\fP(1M),
+\fB\%curses\fP(3X),
+\fB\%terminfo\fP(5),
+\fB\%user_caps\fP(5)
+.PP
+https://invisible\-island.net/ncurses/tctest.html
index 6fa0ad527d27fba763dcad7bc68c9903fd421d8f..0f0335d44603135360b59b1a050559e4f1f894c2 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1999-2010,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: infotocap.1m,v 1.20 2022/02/12 20:02:20 tom Exp $
-.TH @INFOTOCAP@ 1M ""
-.ds n 5
+.\" $Id: infotocap.1m,v 1.41 2024/03/16 15:35:01 tom Exp $
+.TH @INFOTOCAP@ 1M 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .ds d @TERMINFO@
 .SH NAME
-\fB@INFOTOCAP@\fP \- convert a \fIterminfo\fP description into a \fItermcap\fP description
+\fB\%@INFOTOCAP@\fP \-
+convert a \fI\%terminfo\fR description into a \fI\%termcap\fR description
 .SH SYNOPSIS
-\fB@INFOTOCAP@\fR [\fB\-v\fIn\fR \fIwidth\fR]  [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR ...
+.B @INFOTOCAP@
+.RI [ tic-option ]
+.I file
+\&.\|.\|.
+.P
+.B "@INFOTOCAP@ \-V"
 .SH DESCRIPTION
-\fB@INFOTOCAP@\fP looks in each given text
-\fIfile\fP for \fBterminfo\fP descriptions.
-For each terminfo description found,
-an equivalent \fBtermcap\fP description is written to standard output.
-Terminfo \fBuse\fP capabilities are translated directly to termcap
-\fBtc\fP capabilities.
-.TP 5
-\fB\-v\fP
-print out tracing information on standard error as the program runs.
-.TP 5
-\fB\-V\fP
-print out the version of the program in use on standard error and exit.
-.TP 5
-\fB\-1\fP
-cause the fields to print out one to a line.
-Otherwise, the fields
-will be printed several to a line to a maximum width of 60 characters.
-.TP 5
-\fB\-w\fP
-change the output to \fIwidth\fP characters.
+\fB\%@INFOTOCAP@\fP translates terminal descriptions.
+It looks in each given text \fIfile\fP for \fI\%terminfo\fP entries and,
+For each one found,
+it writes an analogous \fI\%termcap\fP description to the standard
+output stream.
+\fI\%terminfo\fP \*(``\fBuse\fP\*('' capabilities translate to
+\fI\%termcap\fP \fBtc\fP capabilities.
+Because \fI\%termcap\fP is a less expressive format than
+\fI\%terminfo\fP,
+some capabilities cannot be translated.
+.PP
+This utility is implemented as a link to \fB\%@TIC@\fP(1M),
+with the latter's
+.B \-C
+option implied.
+You can use other \fB\%@TIC@\fP options such as
+.BR \-1 ,
+.BR \-f ,
+.BR \-v ,
+.BR \-w ,
+and
+.BR \-x .
+The \fB\-V\fP option reports the version of \fI\%ncurses\fP associated
+with this program and exits with a successful status.
 .SH FILES
-.TP 20
-\*d
-Compiled terminal description database.
-.SH NOTES
-This utility is actually a link to \fB@TIC@\fP, running in \fI\-C\fP mode.
-You can use other \fB@TIC@\fP options such as \fB\-f\fP and  \fB\-x\fP.
+.TP
+.I \*d
+compiled terminal description database
 .SH PORTABILITY
-None of X/Open Curses, Issue 7 (2009), SVr4 or NetBSD document this application.
-.SH SEE ALSO
-\fB@INFOCMP@\fP(1M),
-\fB@TIC@\fP(1M),
-\fBcurses\fP(3X),
-\fBterminfo\fP(\*n)
-.PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
-.SH AUTHOR
+None of X/Open Curses,
+Issue 7 (2009),
+SVr4,
+or NetBSD document this application.
+.SH AUTHORS
 Eric S. Raymond <esr@snark.thyrsus.com>
 and
 .br
-Thomas E. Dickey <dickey@invisible-island.net>
+Thomas E. Dickey <dickey@invisible\-island.net>
+.SH SEE ALSO
+\fB\%@INFOCMP@\fP(1M),
+\fB\%@TIC@\fP(1M),
+\fB\%curses\fP(3X),
+\fB\%terminfo\fP(5)
index d190c7909931a7dc08b7adfef22cb1c318f8f3ef..f0184aa77df170411e248dceacdcefd17b478bb2 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2003-2006,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\"
 .\" Author: Thomas E. Dickey 2003
 .\"
-.\" $Id: key_defined.3x,v 1.13 2022/02/12 20:03:40 tom Exp $
-.TH key_defined 3X ""
+.\" $Id: key_defined.3x,v 1.34 2024/03/16 15:35:01 tom Exp $
+.TH key_defined 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBkey_defined\fP \- check if a keycode is defined
+\fB\%key_defined\fP \-
+test whether a \fIcurses\fR keycode is defined
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint key_defined(const char *\fIdefinition\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint key_defined(const char *\fIdefinition\fP);
+.fi
 .SH DESCRIPTION
-This is an extension to the curses library.
+This is an extension to the \fIcurses\fP library.
 It permits an application to determine if a string is currently bound
 to any keycode.
 .SH RETURN VALUE
@@ -47,12 +50,12 @@ If no keycode is bound, zero is returned.
 If the string conflicts with longer strings
 which are bound to keys, \-1 is returned.
 .SH PORTABILITY
-These routines are specific to ncurses.
-They were not supported on
+This routine is specific to \fI\%ncurses\fP.
+It was not supported on
 Version 7, BSD or System V implementations.
 It is recommended that
-any code depending on them be conditioned using NCURSES_VERSION.
+any code depending on them be conditioned using \fB\%NCURSES_VERSION\fP.
+.SH AUTHORS
+Thomas Dickey
 .SH SEE ALSO
-\fBdefine_key\fP(3X).
-.SH AUTHOR
-Thomas Dickey.
+\fB\%define_key\fP(3X)
index a49b9670e15d5fe05942b519f2336a7a18ff8cc0..bd8bb80f3c449875fbb07be4a5341244b991e57b 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1999-2008,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\"
 .\" Author: Thomas E. Dickey 1999
 .\"
-.\" $Id: keybound.3x,v 1.14 2022/02/12 20:03:40 tom Exp $
-.TH keybound 3X ""
+.\" $Id: keybound.3x,v 1.36 2024/03/16 15:35:01 tom Exp $
+.TH keybound 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBkeybound\fP \- return definition of keycode
+\fB\%keybound\fP \-
+get definition of \fIcurses\fR keycode
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBchar * keybound(int \fIkeycode\fB, int \fIcount);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBchar * keybound(int \fIkeycode\fP, int \fIcount\fP);
+.fi
 .SH DESCRIPTION
-This is an extension to the curses library.
+This is an extension to the \fIcurses\fP library.
 It permits an application to determine the string which is defined
 in the terminfo for specific keycodes.
 .SH RETURN VALUE
-The \fIkeycode\fP parameter must be greater than zero, else NULL is returned.
-If it does not correspond to a defined key, then NULL is returned.
+The \fIkeycode\fP parameter must be greater than zero,
+else \fBNULL\fP is returned.
+If it does not correspond to a defined key, then \fBNULL\fP is returned.
 The \fIcount\fP parameter is used to allow the application to iterate
 through multiple definitions, counting from zero.
 When successful,
 the function returns a string which must be freed by the caller.
 .SH PORTABILITY
-These routines are specific to ncurses.
-They were not supported on
+This routine is specific to \fI\%ncurses\fP.
+It was not supported on
 Version 7, BSD or System V implementations.
 It is recommended that
-any code depending on them be conditioned using NCURSES_VERSION.
+any code depending on them be conditioned using \fB\%NCURSES_VERSION\fP.
+.SH AUTHORS
+Thomas Dickey
 .SH SEE ALSO
-\fBdefine_key\fP(3X),
-\fBkeyok\fP(3X).
-.SH AUTHOR
-Thomas Dickey.
+\fB\%define_key\fP(3X),
+\fB\%keyok\fP(3X)
index d31d5b1f4fe14c4a5df58da23a596010a025e4e1..b4c7de2b49489de1afccd3c932074a67ec072c6c 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\"
 .\" Author: Thomas E. Dickey 1997
 .\"
-.\" $Id: keyok.3x,v 1.19 2022/02/12 20:03:40 tom Exp $
-.TH keyok 3X ""
+.\" $Id: keyok.3x,v 1.40 2024/03/16 15:35:01 tom Exp $
+.TH keyok 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBkeyok\fP \- enable or disable a keycode
+\fB\%keyok\fP \-
+enable or disable a \fIcurses\fR keycode
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint keyok(int \fIkeycode\fB, bool \fIenable\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint keyok(int \fIkeycode\fP, bool \fIenable\fP);
+.fi
 .SH DESCRIPTION
-This is an extension to the curses library.
+This is an extension to the \fIcurses\fP library.
 It permits an application to disable specific keycodes, rather than
-use the \fBkeypad\fP function to disable all keycodes.
+use the \fB\%keypad\fP function to disable all keycodes.
 Keys that have been disabled can be re-enabled.
 .SH RETURN VALUE
 The keycode must be greater than zero, else \fBERR\fP is returned.
@@ -49,12 +52,12 @@ If the \fIenable\fP parameter is true, then the key must have been disabled,
 and vice versa.
 Otherwise, the function returns \fBOK\fP.
 .SH PORTABILITY
-These routines are specific to ncurses.
-They were not supported on
+This routine is specific to \fI\%ncurses\fP.
+It was not supported on
 Version 7, BSD or System V implementations.
 It is recommended that
-any code depending on them be conditioned using NCURSES_VERSION.
+any code depending on them be conditioned using \fB\%NCURSES_VERSION\fP.
+.SH AUTHORS
+Thomas Dickey
 .SH SEE ALSO
-\fBdefine_key\fP(3X).
-.SH AUTHOR
-Thomas Dickey.
+\fB\%define_key\fP(3X)
index 0fbd5c96d99411968410350671a26f59cdc25506..ccfdd5564bb9cbbfd6dd4ce93a6a0e8c2713c195 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2020-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2020-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2005-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\"
 .\" Author: Thomas E. Dickey
 .\"
-.\" $Id: legacy_coding.3x,v 1.11 2022/02/12 20:07:56 tom Exp $
-.TH legacy_coding 3X ""
+.\" $Id: legacy_coding.3x,v 1.28 2024/04/20 19:13:50 tom Exp $
+.TH legacy_coding 3X 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBuse_legacy_coding\fP \- override locale-encoding checks
+\fB\%use_legacy_coding\fP \-
+override \fIcurses\fR locale encoding checks
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint use_legacy_coding(int \fIlevel\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint use_legacy_coding(int \fIlevel\fP);
+.fi
 .SH DESCRIPTION
-The \fBuse_legacy_coding\fP function is an extension to the curses library.
-It allows the caller to change the result of \fBunctrl\fP,
-and suppress related checks within the library that would normally
-cause nonprinting characters to be rendered in visible form.
-This affects only 8-bit characters.
+.B \%use_legacy_coding
+is an extension to the
+.I curses
+library.
+It allows the caller to change the result of \fB\%unctrl\fP(3X),
+suppressing \fI\%isprint\fP(3)-based checks within the library that
+would normally cause nonprinting characters to be rendered in visible
+form.
+The alteration affects only eight-bit characters.
 .PP
-The \fIlevel\fP parameter controls the result:
+The
+.I level
+parameter controls the result.
 .RS
 .TP 5
-0
-the library functions normally,
-rendering nonprinting characters as described in \fBunctrl\fP.
+.B 0
+The library functions normally,
+rendering nonprinting characters as described in \fB\%unctrl\fP(3X),
 .TP
-1
-the library ignores \fBisprintf\fP for codes in the range 160-255.
+.B 1
+the library ignores
+.I \%isprint
+for codes in the range 160-255.
 .TP
-2
-the library ignores \fBisprintf\fP for codes in the range 128-255.
-It also modifies the output of \fBunctrl\fP, showing codes in the
-range 128-159 as is.
+.B 2
+the library ignores
+.I \%isprint
+for codes in the range 128-255.
+It also modifies the output of \fB\%unctrl\fP(3X),
+showing codes in the range 128-159 as is.
 .RE
 .SH RETURN VALUE
 If the screen has not been initialized,
-or the \fIlevel\fP parameter is out of range,
-the function returns \fBERR\fP.
-Otherwise, it returns the previous level: \fB0\fP, \fB1\fP or \fB2\fP.
+or the
+.I level
+parameter is out of range,
+.B \%use_legacy_coding
+returns
+.BR ERR .
+Otherwise,
+it returns the previous level:
+.BR 0 ,
+.BR 1 ,
+or
+.BR 2 .
 .SH PORTABILITY
-This routine is specific to ncurses.
+.B \%use_legacy_coding
+is specific to
+.IR \%ncurses .
 It was not supported on Version 7, BSD or System V implementations.
-It is recommended that any code depending on ncurses extensions
-be conditioned using NCURSES_VERSION.
+Applications employing
+.I \%ncurses
+extensions should condition their use on the visibility of the
+.B \%NCURSES_VERSION
+preprocessor macro.
+.SH AUTHORS
+Thomas Dickey
+(to support \fI\%lynx\fP(1)'s font-switching feature).
 .SH SEE ALSO
-\fBunctrl\fP(3X).
-.SH AUTHOR
-Thomas Dickey (to support lynx's font-switching feature).
+\fB\%unctrl\fP(3X)
index 2a290f0b1d9f7e0e5752e1e2c7d737b4e86b16c7..ee7df41775e07086699b860674eb723f9c7851af 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
-# $Id: make_sed.sh,v 1.16 2022/10/01 13:14:07 tom Exp $
+# $Id: make_sed.sh,v 1.19 2023/12/07 01:16:43 tom Exp $
 ##############################################################################
-# Copyright 2020-2021,2022 Thomas E. Dickey                                  #
+# Copyright 2020-2022,2023 Thomas E. Dickey                                  #
 # Copyright 1998-2005,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -66,18 +66,20 @@ sed -e 's/^/s\/\\</' \
        -e 's/$/\//' >$UPPER
 
 {
+echo "# This script was generated from '$1' by man/make_sed.sh."
 echo "# Do the TH lines"
 sed    -e 's/\//\/TH /' \
        -e 's/  / /' \
-       -e 's/  / ""\/TH /' \
+       -e 's/  / \/TH /' \
        -e 's/  / /' \
-       -e 's/\/$/ ""\//' \
+       -e 's/\/$/ \//' \
        $UPPER
 
 echo "# Do the embedded references"
-sed    -e 's/</<fB/' \
+sed    -e 's/</<fB\\(\\\\%\\)\\?/' \
+       -e 's/\\%</\\%/' \
        -e 's/  /\\\\fP(/' \
-       -e 's/  /)\/fB/' \
+       -e 's/  /)\/fB\\\\%/' \
        -e 's/  /\\\\fP(/' \
        -e 's/\/$/)\//' \
        $UPPER
index fb306e06fee5a0101935559e439fc80443a41dbe..2b18a016eafc8a122fc071b02acdae74ab6c16c8 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright 2019-2020,2022 Thomas E. Dickey                                  #
+# Copyright 2019-2023,2024 Thomas E. Dickey                                  #
 # Copyright 1998-2015,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -26,7 +26,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: man_db.renames.in,v 1.59 2022/10/22 16:41:43 tom Exp $
+# $Id: man_db.renames.in,v 1.73 2024/04/13 23:39:11 tom Exp $
 # Manual-page renamings for the man_db program
 #
 # Files:
@@ -151,7 +151,7 @@ mitem_value.3x                      menu_value.3menu
 mitem_visible.3x               menu_visible.3menu
 ncurses.3x                     ncurses.3ncurses
 new_pair.3x                    new_pair.3ncurses
-panel.3x                       panel.3curses
+panel.3x                       panel.3ncurses
 printf.3s                      printf.3
 putc.3s                        putc.3
 resizeterm.3x                  resizeterm.3ncurses
@@ -163,7 +163,6 @@ term.5                              term.5
 term.7                         term.7
 term_variables.3x              terminfo_variables.3ncurses
 terminfo.5                     terminfo.5
-terminfo.\\\*n                 terminfo.5
 tic.1m                         tic.1
 toe.1m                         toe.1
 tput.1                         tput.1
@@ -171,10 +170,125 @@ tset.1                           tset.1
 user_caps.5                    user_caps.5
 wresize.3x                     wresize.3ncurses
 #
-# Other:
-tack.1m                                tack.1
+# Supplementary topics in the foregoing pages:
+add_wch.3x                     add_wch.3ncurses
+addch.3x                       addch.3ncurses
+assume_default_colors.3x       assume_default_colors.3ncurses
+attr_get.3x                    attr_get.3ncurses
+attr_on.3x                     attr_on.3ncurses
+attron.3x                      attron.3ncurses
+baudrate.3x                    baudrate.3ncurses
+bkgd.3x                                bkgd.3ncurses
+bkgrnd.3x                      bkgrnd.3ncurses
+cbreak.3x                      cbreak.3ncurses
+clearok.3x                     clearok.3ncurses
+clrtoeol.3x                    clrtoeol.3ncurses
+curs_set.3x                    curs_set.3ncurses
+curscr.3x                      curscr.3ncurses
+curses_trace.3x                        curses_trace.3ncurses
+def_prog_mode.3x               def_prog_mode.3ncurses
+def_shell_mode.3x              def_shell_mode.3ncurses
+del_curterm.3x                 del_curterm.3ncurses
+delay_output.3x                        delay_output.3ncurses
+delscreen.3x                   delscreen.3ncurses
+derwin.3x                      derwin.3ncurses
+doupdate.3x                    doupdate.3ncurses
+echo.3x                                echo.3ncurses
+endwin.3x                      endwin.3ncurses
+extended_slk_color.3x          extended_slk_color.3ncurses
+filter.3x                      filter.3ncurses
+flushinp.3x                    flushinp.3ncurses
+get_wch.3x                     get_wch.3ncurses
+getattr.3x                     getattr.3ncurses
+getcchar.3x                    getcchar.3ncurses
+getch.3x                       getch.3ncurses
+getwin.3x                      getwin.3ncurses
+halfdelay.3x                   halfdelay.3ncurses
+has_key.3x                     has_key.3ncurses
+idcok.3x                       idcok.3ncurses
+idlok.3x                       idlok.3ncurses
+immedok.3x                     immedok.3ncurses
+in_wch.3x                      in_wch.3ncurses
+inch.3x                                inch.3ncurses
+initscr.3x                     initscr.3ncurses
+is_scrollok.3x                 is_scrollok.3ncurses
+keyname.3x                     keyname.3ncurses
+keypad.3x                      keypad.3ncurses
+leaveok.3x                     leaveok.3ncurses
+longname.3x                    longname.3ncurses
+meta.3x                                meta.3ncurses
+move.3x                                move.3ncurses
+mvcur.3x                       mvcur.3ncurses
+mvwin.3x                       mvwin.3ncurses
+newpad.3x                      newpad.3ncurses
+newterm.3x                     newterm.3ncurses
+newwin.3x                      newwin.3ncurses
+nl.3x                          nl.3ncurses
+nocbreak.3x                    nocbreak.3ncurses
+nodelay.3x                     nodelay.3ncurses
+nonl.3x                                nonl.3ncurses
+notimeout.3x                   notimeout.3ncurses
+pnoutrefresh.3x                        pnoutrefresh.3ncurses
+prefresh.3x                    prefresh.3ncurses
+printw.3x                      printw.3ncurses
+putp.3x                        putp.3ncurses
+putwin.3x                      putwin.3ncurses
+raw.3x                         raw.3ncurses
+refresh.3x                     refresh.3ncurses
+reset_shell_mode.3x            reset_shell_mode.3ncurses
+restartterm.3x                 restartterm.3ncurses
+ripoffline.3x                  ripoffline.3ncurses
+scrollok.3x                    scrollok.3ncurses
+set_curterm.3x                 set_curterm.3ncurses
+set_term.3x                    set_term.3nses
+setcchar.3x                    setcchar.3ncurses
+setupterm.3x                   setupterm.3ncurses
+slk_attr.3x                    slk_attr.3ncurses
+slk_color.3x                   slk_color.3ncurses
+slk_init.3x                    slk_init.3ncurses
+slk_touch.3x                   slk_touch.3ncurses
+start_color.3x                 start_color.3ncurses
+subwin.3x                      subwin.3ncurses
+syncok.3x                      syncok.3ncurses
+terminfo.3x                    terminfo.3ncurses
+tigetstr.3x                    tigetstr.3ncurses
+touchline.3x                   touchline.3ncurses
+touchwin.3x                    touchwin.3ncurses
+tparm.3x                       tparm.3ncurses
+tputs.3x                       tputs.3ncurses
+trace.3x                       trace.3ncurses
+unctrl.3x                      unctrl.3ncurses
+use_default_colors.3x          use_default_colors.3ncurses
+use_env.3x                     use_env.3ncurses
+use_extended_names.3x          use_extended_names.3ncurses
+use_legacy_coding.3x           use_legacy_coding.3ncurses
+use_tioctl.3x                  use_tioctl.3ncurses
+vidputs.3x                     vidputs.3ncurses
+wadd_wch.3x                    wadd_wch.3ncurses
+waddch.3x                      waddch.3ncurses
+waddstr.3x                     waddstr.3ncurses
+waddwstr.3x                    waddwstr.3ncurses
+wattr_set.3x                   wattr_set.3ncurses
+wattrset.3x                    wattrset.3ncurses
+wbkgdset.3x                    wbkgdset.3ncurses
+wbkgrndset.3x                  wbkgrndset.3ncurses
+wdelch.3x                      wdelch.3ncurses
+wecho_wchar.3x                 wecho_wchar.3ncurses
+wechochar.3x                   wechochar.3ncurses
+wget_wch.3x                    wget_wch.3ncurses
+wgetch.3x                      wgetch.3ncurses
+wgetstr.3x                     wgetstr.3ncurses
+winch.3x                       winch.3ncurses
+wins_wch.3x                    wins_wch.3ncurses
+winsch.3x                      winsch.3ncurses
+wmove.3x                       wmove.3ncurses
+wnoutrefresh.3x                        wnoutrefresh.3ncurses
+wrefresh.3x                    wrefresh.3ncurses
+wsetscrreg.3x                  wsetscrreg.3ncurses
+wtimeout.3x                    wtimeout.3ncurses
 #
-getty.1                                getty.8
+# Other:
+getty.8                                getty.8
 scanf.3                                scanf.3
 ttys.5                         ttys.4
 system.3                       system.3
index 1f85bc5c411d2671c419459c86fe2c28ab47da9d..7599c74a8a27d069b5ed38401e89b810b1981d98 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: manhtml.aliases,v 1.21 2022/11/26 13:57:22 tom Exp $
+# $Id: manhtml.aliases,v 1.35 2024/04/14 00:36:21 tom Exp $
 #***************************************************************************
-# Copyright 2019-2020,2022 Thomas E. Dickey                                *
+# Copyright 2019-2023,2024 Thomas E. Dickey                                *
 # Copyright 2013,2017 Free Software Foundation, Inc.                       *
 #                                                                          *
 # Permission is hereby granted, free of charge, to any person obtaining a  *
 # authorization.                                                           *
 #***************************************************************************
 # Items in this list will be linked to the corresponding manpages by man2html
+add_wch(3X)            curs_add_wch(3X)
 addch(3X)              curs_addch(3X)
 assume_default_colors(3X)      default_colors(3X)
+attr_get(3X)           curs_attr(3X)
+attr_on(3X)            curs_attr(3X)
+attron(3X)             curs_attr(3X)
+baudrate(3X)           curs_termattrs(3X)
+bkgd(3X)               curs_bkgd(3X)
+bkgrnd(3X)             curs_bkgrnd(3X)
+cbreak(3X)             curs_inopts(3X)
 clearok(3X)            curs_outopts(3X)
+clrtoeol(3X)           curs_clear(3X)
 curs_set(3X)           curs_kernel(3X)
+curscr(3X)             curs_variables(3X)
+curses_trace(3X)       curs_trace(3X)
+def_prog_mode(3X)      curs_kernel(3X)
+def_shell_mode(3X)     curs_kernel(3X)
+del_curterm(3X)                curs_terminfo(3X)
+delay_output(3X)       curs_util(3X)
 delscreen(3X)          curs_initscr(3X)
 doupdate(3X)           curs_refresh(3X)
+echo(3X)               curs_inopts(3X)
 endwin(3X)             curs_initscr(3X)
+extended_slk_color(3X) curs_slk(3X)
 filter(3X)             curs_util(3X)
+flushinp(3X)           curs_util(3X)
 get_wch(3X)            curs_get_wch(3X)
 getcchar(3X)           curs_getcchar(3X)
 getch(3X)              curs_getch(3X)
+getwin(3X)             curs_util(3X)
+halfdelay(3X)          curs_inopts(3X)
+has_key(3X)            curs_getch(3X)
 immedok(3X)            curs_outopts(3X)
+in_wch(3X)             curs_in_wch(3X)
 inch(3X)               curs_inch(3X)
 infocmp(1)             infocmp(1M)
 initscr(3X)            curs_initscr(3X)
 is_scrollok(3X)                curs_opaque(3X)
+keyname(3X)            curs_util(3X)
 keypad(3X)             curs_inopts(3X)
 longname(3X)           curs_termattrs(3X)
 meta(3X)               curs_inopts(3X)
+move(3X)               curs_move(3X)
 mvcur(3X)              curs_terminfo(3X)
 mvwin(3X)              curs_window(3X)
 newterm(3X)            curs_initscr(3X)
+newwin(3X)             curs_window(3X)
+nl(3X)                 curs_inopts(3X)
+nocbreak(3X)           curs_inopts(3X)
+nonl(3X)               curs_inopts(3X)
+pnoutrefresh(3X)       curs_pad(3X)
+prefresh(3X)           curs_pad(3X)
+printw(3X)             curs_printw(3X)
+putp(3X)               curs_terminfo(3X)
+putwin(3X)             curs_util(3X)
+raw(3X)                        curs_inopts(3X)
 refresh(3X)            curs_refresh(3X)
 reset_shell_mode(3X)   curs_kernel(3X)
 restartterm(3X)                curs_terminfo(3X)
+ripoffline(3X)         curs_kernel(3X)
+set_curterm(3X)                curs_terminfo(3X)
 set_term(3X)           curs_initscr(3X)
 setcchar(3X)           curs_getcchar(3X)
 setupterm(3X)          curs_terminfo(3X)
+slk_attr(3X)           curs_slk(3X)
+slk_color(3X)          curs_slk(3X)
 slk_init(3X)           curs_slk(3X)
 slk_touch(3X)          curs_slk(3X)
+start_color(3X)                curs_color(3X)
+terminfo(3X)           curs_terminfo(3X)
 tic(1)                 tic(1M)
 tigetstr(3X)           curs_terminfo(3X)
+touchline(3X)          curs_touch(3X)
+touchwin(3X)           curs_touch(3X)
 tparm(3X)              curs_terminfo(3X)
 tputs(3X)              curs_terminfo(3X)
 use_default_colors(3X) default_colors(3X)
 use_env(3X)            curs_util(3X)
 use_extended_names(3X) curs_extend(3X)
 use_legacy_coding(3X)  legacy_coding(3X)
+use_tioctl(3X)         curs_util(3X)
 vidputs(3X)            curs_terminfo(3X)
+wadd_wch(3X)           curs_add_wch(3X)
+waddch(3X)             curs_addch(3X)
+waddstr(3X)            curs_addstr(3X)
+waddwstr(3X)           curs_addwstr(3X)
+wattr_set(3X)          curs_attr(3X)
+wattrset(3X)           curs_attr(3X)
 wbkgdset(3X)           curs_bkgd(3X)
+wbkgrndset(3X)         curs_bkgrnd(3X)
+wdelch(3X)             curs_delch(3X)
+wecho_wchar(3X)                curs_add_wch(3X)
+wechochar(3X)          curs_addch(3X)
+wget_wch(3X)           curs_get_wch(3X)
 wgetch(3X)             curs_getch(3X)
+wgetstr(3X)            curs_getstr(3X)
+winch(3X)              curs_inch(3X)
+wins_wch(3X)           curs_ins_wch(3X)
+winsch(3X)             curs_insch(3X)
+wmove(3X)              curs_move(3X)
 wnoutrefresh(3X)       curs_refresh(3X)
 wrefresh(3X)           curs_refresh(3X)
+wsetscrreg(3X)         curs_outopts(3X)
index 5874b27a560d28ee156104923305fb021d545ad5..41aa6359df10723d151b06710f90c4fc5870faca 100644 (file)
@@ -1,7 +1,7 @@
-# $Id: manhtml.externs,v 1.15 2021/12/26 00:02:52 tom Exp $
+# $Id: manhtml.externs,v 1.25 2024/04/20 19:26:05 tom Exp $
 # Items in this list will not be linked by man2html
 #***************************************************************************
-# Copyright 2019-2020,2021 Thomas E. Dickey                                *
+# Copyright 2019-2023,2024 Thomas E. Dickey                                *
 # Copyright 2013,2017 Free Software Foundation, Inc.                       *
 #                                                                          *
 # Permission is hereby granted, free of charge, to any person obtaining a  *
 # sale, use or other dealings in this Software without prior written       *
 # authorization.                                                           *
 #***************************************************************************
-ADACURSES(1)
 COLOR_PAIR(1)
 COLOR_PAIR(2)
-COLOR_PAIR(3)
+ascii(7)
 atoi(3)
+bash(1)
 conflict(1)
 cron(1)
 csh(1)
@@ -41,12 +41,14 @@ emacs(1)
 environ(7)
 errno(3)
 file(1)
-getty(1)
+getty(8)
 jove(1)
 lynx(1)
-nvi(1)
 mutt(1)
+nvi(1)
 od(1)
+ioctl(2)
+isprint(3)
 printf(3)
 profile(5)
 putc(3)
@@ -56,12 +58,17 @@ read(2)
 readline(3)
 resize(1)
 scanf(3)
+scanf(3S)
 screen(1)
+setbuf(3)
+setgid(2)
 setlocale(3)
+setuid(2)
 sh(1)
 sscanf(3)
 stdio(3)
 stty(1)
+swprintf(3)
 system(3)
 termios(3)
 tmux(1)
@@ -70,6 +77,7 @@ ttys(5)
 vi(1)
 vprintf(3)
 vscanf(3)
+vsscanf(3)
 wcwidth(3)
 write(2)
 xterm(1)
index 09b055f2fa04587dcb10dd2ada30595446961263..6e2d2b8699703b61b492e66c00a4bdff44ac7b46 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: manlinks.sed,v 1.15 2021/01/05 20:30:00 tom Exp $
+# $Id: manlinks.sed,v 1.21 2024/04/20 22:25:36 tom Exp $
 ##############################################################################
-# Copyright 2020,2021 Thomas E. Dickey                                       #
+# Copyright 2020-2023,2024 Thomas E. Dickey                                  #
 # Copyright 2000-2003,2008 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -31,6 +31,9 @@
 # listed in the "NAME" section, i.e., the names that we would like to use
 # as aliases for the manpage -T.Dickey
 #
+# workaround for manpages without a SYNOPSIS
+s/^\.\\"SH/.SH/
+#
 # eliminate formatting controls that get in the way
 /^'\\"/d
 /\.\\"/d
 /typedef/d
 s/^\.IX//
 s/\\f.//g
+s/\\%//g
 s/[:,]/ /g
 #
 # ignore C-style comments
 s%/\*.*\*/%%
 #
-# eliminate unnecessary whitespace, convert multiple blanks to single space
+# Eliminate unnecessary whitespace, convert multiple blanks to single space.
 s/^[   ][      ]*//
 s/[    ][      ]*$//
 s/[    ][      ]*/ /g
@@ -54,16 +58,16 @@ s/[         ][      ]*/ /g
 s/\.SH[        ][      ]*/.SH_(/
 #
 # in ".SH NAME"
-# change "\-" to "-", eliminate text after "-", and split the remaining lines
-# at each space, making a list of names:
-/^\.SH_(NAME/,/^\.SH_(SYNOPSIS/{
-s/\\-.*/ -/
-/ -/{
-s/ -.*//
-s/ /\
-/g
-}
-/^-/{
+# Convert a list of names separated from their description by " \-" to a list
+# of names on separate lines.  Normally the list is also comma-separated, but
+# we ignore that detail here.  The description is on a separate line to make
+# the nroff source more pleasing to some eyes.
+/^\.SH_(NAME/,/ \\-$/{
+s/\\-/-/g
+s/  / /g
+/ -$/{
+s/ -$//
+n
 d
 }
 s/ /\
@@ -71,10 +75,16 @@ s/ /\
 }
 #
 # in ".SH SYNOPSIS"
-# remove any line that does not contain a '(', since we only want functions.
+# For readability, the NAME section may not contain all function names, but we
+# still want to make aliases for those.  Do this by extracting names from the
+# list of function prototypes in the synopsis.
+#
+# Remove any line that does not contain a '(', since we only want functions. 
 # then strip off return-type of each function.
-# finally, remove the parameter list, which begins with a '('.
+#
+# Finally, remove the parameter list, which begins with a '('.
 /^\.SH_(SYNOPSIS/,/^\.SH_(DESCRIPTION/{
+/^\.ti/d
 /^[^(]*$/d
 # reduce
 #      .B "int add_wch( const cchar_t *\fIwch\fB );"
index ea16bf6f953bc0d48dd2ad12a4838c2698d68ddb..a833c3b55123587d63784bf4800b82f98b325aa4 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2014,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu.3x,v 1.29 2021/12/25 21:49:32 tom Exp $
-.TH menu 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: menu.3x,v 1.45 2024/03/16 15:35:01 tom Exp $
+.TH menu 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBmenu\fP \- curses extension for programming menus
+\fBmenu\fP \-
+curses extension for programming menus
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.br
+.nf
+\fB#include <menu.h>
+.fi
 .SH DESCRIPTION
 The \fBmenu\fP library provides terminal-independent facilities for composing
 menu systems on character-cell terminals.
@@ -56,7 +65,7 @@ these functions.
 To use the \fBmenu\fP library, link with the options
 \fB\-lmenu \-lcurses\fP.
 .
-.SS Current Default Values for Item Attributes
+.SS "Current Default Values for Item Attributes"
 .
 The \fBmenu\fP library maintains a default value for item attributes.
 You can
@@ -66,11 +75,11 @@ Changing this default with a
 \fBset_\fP function affects future item creations, but does not change the
 rendering of items already created.
 .
-.SS Routine Name Index
+.SS "Routine Name Index"
 .
 The following table lists each \fBmenu\fP routine and the name of
 the manual page on which it is described.
-.
+.PP
 .TS
 l l .
 \fBcurses\fP Routine Name      Manual Page Name
@@ -181,33 +190,26 @@ System error occurred (see \fBerrno\fP(3)).
 .B E_UNKNOWN_COMMAND
 The menu driver code saw an unknown request code.
 .SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header files
-\fB<curses.h>\fP and \fB<eti.h>\fP.
-.PP
-In your library list, libmenu.a should be before libncurses.a; that is,
-you should say \*(``\-lmenu \-lncurses\*('', not the other way around
-(which would give a link-error when using static libraries).
+The header file \fI\%menu.h\fP itself includes the header file
+\fI\%curses.h\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
 Version 7 or BSD versions.
 .PP
-The menu facility was documented in SVr4.2 in
-\fICharacter User Interface Programming (UNIX SVR4.2)\fP.
+A menu facility was documented in SVr4.2's
+\fICharacter User Interface Programming\fP document.
 .PP
 It is not part of X/Open Curses.
 .PP
-Aside from ncurses, there are few implementations:
+Aside from \fI\%ncurses\fP, there are few implementations:
 .bP
 systems based on SVr4 source code, e.g., Solaris.
 .bP
 NetBSD curses.
 .SH AUTHORS
 Juergen Pfeifer.
-Manual pages and adaptation for ncurses by Eric S. Raymond.
+Manual pages and adaptation for \fI\%ncurses\fP by Eric S. Raymond.
 .SH SEE ALSO
-\fBcurses\fP(3X) and related pages whose names begin \*(``menu_\*(''
+\fB\%curses\fP(3X) and related pages whose names begin \*(``menu_\*(''
 for detailed descriptions of the entry points.
-.PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
index 9193c19595fd9038a055409cf68337308b62b262..7bce42d24be28ee3626786430bfe640ed1f284f1 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_attributes.3x,v 1.22 2022/02/12 20:05:11 tom Exp $
-.TH menu_attributes 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: menu_attributes.3x,v 1.36 2024/03/16 15:35:01 tom Exp $
+.TH menu_attributes 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
 .SH NAME
 \fBmenu_back\fP,
 \fBmenu_fore\fP,
 \fBset_menu_back\fP,
 \fBset_menu_fore\fP,
 \fBset_menu_grey\fP,
-\fBset_menu_pad\fP \- color and attribute control for menus
+\fBset_menu_pad\fP \-
+color and attribute control for menus
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_menu_fore(MENU *\fImenu\fB, chtype \fIattr\fB);\fR
-.br
-\fBchtype menu_fore(const MENU *\fImenu\fB);\fR
-.sp
-\fBint set_menu_back(MENU *\fImenu\fB, chtype \fIattr\fB);\fR
-.br
-\fBchtype menu_back(const MENU *\fImenu\fB);\fR
-.sp
-\fBint set_menu_grey(MENU *\fImenu\fB, chtype \fIattr\fB);\fR
-.br
-\fBchtype menu_grey(const MENU *\fImenu\fB);\fR
-.sp
-\fBint set_menu_pad(MENU *\fImenu\fB, int \fIpad\fB);\fR
-.br
-\fBint menu_pad(const MENU *\fImenu\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_menu_fore(MENU *\fImenu\fP, chtype \fIattr\fP);
+\fBchtype menu_fore(const MENU *\fImenu\fP);
+.PP
+\fBint set_menu_back(MENU *\fImenu\fP, chtype \fIattr\fP);
+\fBchtype menu_back(const MENU *\fImenu\fP);
+.PP
+\fBint set_menu_grey(MENU *\fImenu\fP, chtype \fIattr\fP);
+\fBchtype menu_grey(const MENU *\fImenu\fP);
+.PP
+\fBint set_menu_pad(MENU *\fImenu\fP, int \fIpad\fP);
+\fBint menu_pad(const MENU *\fImenu\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_menu_fore\fP sets the foreground attribute of
 \fImenu\fP. This is the highlight used for selected menu items.
@@ -98,12 +101,6 @@ System error occurred (see \fBerrno\fP(3)).
 .TP 5
 .B E_BAD_ARGUMENT
 Routine detected an incorrect or out-of-range argument.
-.SH SEE ALSO
-\fBcurses\fP(3X) and related pages whose names begin \*(``menu_\*('' for detailed
-descriptions of the entry points.
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -111,3 +108,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X) and related pages whose names begin \*(``menu_\*(''
+for detailed descriptions of the entry points.
index 28b28408ec91c6b83ec7a617e1cda9aaf0780b09..d92d8c3ad4e0a088e945edb6e755d256799eef29 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_cursor.3x,v 1.16 2022/02/12 20:05:11 tom Exp $
-.TH menu_cursor 3X ""
+.\" $Id: menu_cursor.3x,v 1.30 2024/03/16 15:35:01 tom Exp $
+.TH menu_cursor 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBpos_menu_cursor\fP \- position a menu's cursor
+\fBpos_menu_cursor\fP \-
+position a menu's cursor
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint pos_menu_cursor(const MENU *\fImenu\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint pos_menu_cursor(const MENU *\fImenu\fP);
+.fi
 .SH DESCRIPTION
 The function \fBpos_menu_cursor\fP restores the cursor to the current position
 associated with the menu's selected item.
@@ -56,11 +57,6 @@ Routine detected an incorrect or out-of-range argument.
 .TP 5
 .B E_NOT_POSTED
 The menu has not been posted.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -68,3 +64,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 706005fa21649a4b28ef602d599d9ae088a3c554..6a117283705f138a3a95bbdf81ffaf47a82ce101 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_driver.3x,v 1.31 2022/02/12 20:05:11 tom Exp $
-.TH menu_driver 3X ""
+.\" $Id: menu_driver.3x,v 1.47 2024/03/16 15:35:01 tom Exp $
+.TH menu_driver 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBmenu_driver\fP \- command-processing loop of the menu system
+\fBmenu_driver\fP \-
+command-processing loop of the menu system
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint menu_driver(MENU *\fImenu\fB, int \fIc\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint menu_driver(MENU *\fImenu\fP, int \fIc\fP);
+.fi
 .SH DESCRIPTION
 Once a menu has been posted (displayed), you should funnel input events to it
 through \fBmenu_driver\fP.  This routine has three major input cases:
@@ -116,8 +118,7 @@ If there is no such match, \fBmenu_driver\fP returns
 .PP
 If the second argument is one of the above pre-defined requests, the
 corresponding action is performed.
-.SS MOUSE HANDLING
-.PP
+.SS "Mouse Handling"
 If the second argument is the KEY_MOUSE special key, the associated
 mouse event is translated into one of the above pre-defined requests.
 Currently only clicks in the user window (e.g., inside the menu display
@@ -157,8 +158,7 @@ into a request was done, \fBmenu_driver\fP returns the result of this request.
 If you clicked outside the user window
 or the mouse event could not be translated
 into a menu request an \fBE_REQUEST_DENIED\fP is returned.
-.SS APPLICATION-DEFINED COMMANDS
-.PP
+.SS "Application-defined Commands"
 If the second argument is neither printable nor one of the above
 pre-defined menu requests or KEY_MOUSE,
 the drive assumes it is an application-specific
@@ -191,18 +191,15 @@ Character failed to match.
 .TP 5
 .B E_REQUEST_DENIED
 The menu driver could not process the request.
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBgetch\fP(3X),
-\fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header files
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
 Version 7 or BSD versions.
-The support for mouse events is ncurses specific.
+The support for mouse events is \fI\%ncurses\fP specific.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%getch\fP(3X),
+\fB\%menu\fP(3X)
index 7abe94e664a295964a030dca745c48b6efbd9f7e..9781878f7aab0f64426c0837de25abbaf88360bb 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_format.3x,v 1.21 2022/02/12 20:05:11 tom Exp $
-.TH menu_format 3X ""
+.\" $Id: menu_format.3x,v 1.35 2024/03/16 15:35:01 tom Exp $
+.TH menu_format 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_menu_format\fP,
-\fBmenu_format\fP \- set and get menu sizes
+\fBmenu_format\fP \-
+set and get menu sizes
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_menu_format(MENU *\fImenu\fB, int \fIrows\fB, int \fIcols\fB);\fR
-.br
-\fBvoid menu_format(const MENU *\fImenu\fB, int *\fIrows\fB, int *\fIcols\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_menu_format(MENU *\fImenu\fP, int \fIrows\fP, int \fIcols\fP);
+\fBvoid menu_format(const MENU *\fImenu\fP, int *\fIrows\fP, int *\fIcols\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_menu_format\fP sets the maximum display size of the given
 menu.
@@ -74,11 +74,6 @@ The menu is already posted.
 .TP 5
 .B E_NOT_CONNECTED
 No items are connected to the menu.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -86,3 +81,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 661e20dcfd4cd6f0eed4e4a846ab9716bf07ce38..839e199b8c4faf6847c28e2a401f8012e43e2c7d 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2007,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_hook.3x,v 1.18 2022/02/12 20:05:11 tom Exp $
-.TH menu_hook 3X ""
+.\" $Id: menu_hook.3x,v 1.32 2024/03/16 15:35:01 tom Exp $
+.TH menu_hook 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBmenu_hook\fP \- set hooks for automatic invocation by applications
+\fBmenu_hook\fP \-
+set hooks for automatic invocation by applications
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_item_init(MENU *\fImenu\fB, Menu_Hook \fIfunc);\fR
-.br
-\fBMenu_Hook item_init(const MENU *\fImenu);\fR
-.sp
-\fBint set_item_term(MENU *\fImenu\fB, Menu_Hook \fIfunc);\fR
-.br
-\fBMenu_Hook item_term(const MENU *\fImenu);\fR
-.sp
-\fBint set_menu_init(MENU *\fImenu\fB, Menu_Hook \fIfunc);\fR
-.br
-\fBMenu_Hook menu_init(const MENU *\fImenu);\fR
-.sp
-\fBint set_menu_term(MENU *\fImenu\fB, Menu_Hook \fIfunc);\fR
-.br
-\fBMenu_Hook menu_term(const MENU *\fImenu);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_item_init(MENU *\fImenu\fP, Menu_Hook \fIfunc\fP);
+\fBMenu_Hook item_init(const MENU *\fImenu\fP);
+.PP
+\fBint set_item_term(MENU *\fImenu\fP, Menu_Hook \fIfunc\fP);
+\fBMenu_Hook item_term(const MENU *\fImenu\fP);
+.PP
+\fBint set_menu_init(MENU *\fImenu\fP, Menu_Hook \fIfunc\fP);
+\fBMenu_Hook menu_init(const MENU *\fImenu\fP);
+.PP
+\fBint set_menu_term(MENU *\fImenu\fP, Menu_Hook \fIfunc\fP);
+\fBMenu_Hook menu_term(const MENU *\fImenu\fP);
+.fi
 .SH DESCRIPTION
 These functions make it possible to set hook functions to be called at various
 points in the automatic processing of input event codes by \fBmenu_driver\fP.
@@ -87,11 +84,6 @@ The routine succeeded.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -100,3 +92,6 @@ Version 7 or BSD versions.
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric
 S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 555498e04034f93280e0d9cc709e3be1b639fffc..43409fef812b2faa7f49c5a3a71402b0ef7145fa 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2012,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_items.3x,v 1.20 2022/02/12 20:05:11 tom Exp $
-.TH menu_items 3X ""
+.\" $Id: menu_items.3x,v 1.34 2024/03/16 15:35:01 tom Exp $
+.TH menu_items 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_menu_items\fP,
 \fBmenu_items\fP,
-\fBitem_count\fP \- make and break connections between items and menus
+\fBitem_count\fP \-
+make and break connections between items and menus
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_menu_items(MENU *\fImenu\fB, ITEM **\fIitems\fB);\fR
-.br
-\fBITEM **menu_items(const MENU *\fImenu\fB);\fR
-.br
-\fBint item_count(const MENU *\fImenu\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_menu_items(MENU *\fImenu\fP, ITEM **\fIitems\fP);
+\fBITEM **menu_items(const MENU *\fImenu\fP);
+\fBint item_count(const MENU *\fImenu\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_menu_items\fP changes the item pointer array of the given
 \fImenu\fP.  The array must be terminated by a \fBNULL\fP.
@@ -73,12 +72,6 @@ The menu is already posted.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -89,3 +82,6 @@ as \-1 (which is the value of \fBERR\fP).
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index e69361291d7986f58bd367debbb1c91f00a7fd89..e3f3a92869d39716d3e5c8452a0a8d3972e60965 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_mark.3x,v 1.21 2022/02/12 20:02:20 tom Exp $
-.TH menu_mark 3X ""
+.\" $Id: menu_mark.3x,v 1.35 2024/03/16 15:35:01 tom Exp $
+.TH menu_mark 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_menu_mark\fP,
-\fBmenu_mark\fP \- get and set the menu mark string
+\fBmenu_mark\fP \-
+get and set the menu mark string
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_menu_mark(MENU *\fImenu\fB, const char *\fImark\fB);\fR
-.br
-\fBconst char *menu_mark(const MENU *\fImenu\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_menu_mark(MENU *\fImenu\fP, const char *\fImark\fP);
+\fBconst char *menu_mark(const MENU *\fImenu\fP);
+.fi
 .SH DESCRIPTION
 In order to make menu selections visible on older terminals without
 highlighting or color capability, the menu library marks selected items
@@ -70,11 +70,6 @@ Routine detected an incorrect or out-of-range argument.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -82,3 +77,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 00e2bc9c4aec90ffab2bbb8ff699f84dfbf36024..1a133745a9b72df5e0c9087c1b872f5666731fb5 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_new.3x,v 1.21 2022/02/12 20:02:20 tom Exp $
-.TH menu_new 3X ""
+.\" $Id: menu_new.3x,v 1.35 2024/03/16 15:35:01 tom Exp $
+.TH menu_new 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBnew_menu\fP,
-\fBfree_menu\fP \- create and destroy menus
+\fBfree_menu\fP \-
+create and destroy menus
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBMENU *new_menu(ITEM **\fIitems\fB);\fR
-.br
-\fBint free_menu(MENU *\fImenu\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBMENU *new_menu(ITEM **\fIitems\fP);
+\fBint free_menu(MENU *\fImenu\fP);
+.fi
 .SH DESCRIPTION
 The function \fBnew_menu\fP creates a new menu connected to a specified item
 pointer array (which must be \fBNULL\fP-terminated).
@@ -69,11 +69,6 @@ Routine detected an incorrect or out-of-range argument.
 .TP 5
 .B E_POSTED
 The menu has already been posted.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -81,3 +76,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index ca61f1bcf8af54004706199ccc27eabc3df22bec..ad7fe97f348f9a1dfce81b70e0b09f4b847f1052 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_opts.3x,v 1.21 2022/02/12 20:02:20 tom Exp $
-.TH menu_opts 3X ""
+.\" $Id: menu_opts.3x,v 1.35 2024/03/16 15:35:01 tom Exp $
+.TH menu_opts 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_menu_opts\fP,
 \fBmenu_opts_on\fP,
 \fBmenu_opts_off\fP,
-\fBmenu_opts\fP \- set and get menu options
+\fBmenu_opts\fP \-
+set and get menu options
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_menu_opts(MENU *\fImenu\fB, Menu_Options \fIopts\fB);\fR
-.br
-\fBMenu_Options menu_opts(const MENU *\fImenu\fB);\fR
-.sp
-\fBint menu_opts_on(MENU *\fImenu\fB, Menu_Options \fIopts\fB);\fR
-.br
-\fBint menu_opts_off(MENU *\fImenu\fB, Menu_Options \fIopts\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_menu_opts(MENU *\fImenu\fP, Menu_Options \fIopts\fP);
+\fBMenu_Options menu_opts(const MENU *\fImenu\fP);
+.PP
+\fBint menu_opts_on(MENU *\fImenu\fP, Menu_Options \fIopts\fP);
+\fBint menu_opts_off(MENU *\fImenu\fP, Menu_Options \fIopts\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_menu_opts\fP sets all the given menu's option bits (menu
 option bits may be logically-OR'ed together).
@@ -95,11 +94,6 @@ System error occurred (see \fBerrno\fP(3)).
 .TP 5
 .B E_POSTED
 The menu is already posted.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -107,3 +101,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index faaf6475a8deb4228c0ceb5d31114f34c2d64b61..a66a368dd0c9c3e51884332fa14cb404938af23d 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_pattern.3x,v 1.24 2022/02/12 20:02:20 tom Exp $
-.TH menu_pattern 3X ""
+.\" $Id: menu_pattern.3x,v 1.38 2024/03/16 15:35:01 tom Exp $
+.TH menu_pattern 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_menu_pattern\fP,
-\fBmenu_pattern\fP \- set and get a menu's pattern buffer
+\fBmenu_pattern\fP \-
+set and get a menu's pattern buffer
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_menu_pattern(MENU *\fImenu\fB, const char *\fIpattern\fB);\fR
-.br
-\fBchar *menu_pattern(const MENU *\fImenu\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_menu_pattern(MENU *\fImenu\fP, const char *\fIpattern\fP);
+\fBchar *menu_pattern(const MENU *\fImenu\fP);
+.fi
 .SH DESCRIPTION
 Every menu has an associated pattern match buffer.
 As input events that are
@@ -78,11 +79,6 @@ Character failed to match.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -90,3 +86,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 2d96b558882c3e5c0f827a1b0258fe9529340389..4a0827a16cf7910a083d1d6e6b26d3dceda35979 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_post.3x,v 1.22 2022/02/12 20:02:20 tom Exp $
-.TH menu_post 3X ""
+.\" $Id: menu_post.3x,v 1.36 2024/03/16 15:35:01 tom Exp $
+.TH menu_post 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBpost_menu\fP,
-\fBunpost_menu\fP \- write or erase menus from associated subwindows
+\fBunpost_menu\fP \-
+write or erase menus from associated subwindows
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint post_menu(MENU *\fImenu\fB);\fR
-.br
-\fBint unpost_menu(MENU *\fImenu\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint post_menu(MENU *\fImenu\fP);
+\fBint unpost_menu(MENU *\fImenu\fP);
+.fi
 .SH DESCRIPTION
 The function \fBpost_menu\fP displays a menu to its associated subwindow.
 To
@@ -77,11 +77,6 @@ The menu has not been posted.
 .TP 5
 .B E_NOT_CONNECTED
 No items are connected to the menu.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -89,3 +84,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 5c46f67d2d980a2deb5e87de1c1de25625a90544..a0363fb285855e3c2db2a29b65128480ee190b5c 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_requestname.3x,v 1.18 2022/02/12 20:02:20 tom Exp $
-.TH menu_requestname 3X ""
+.\" $Id: menu_requestname.3x,v 1.33 2024/03/16 15:35:01 tom Exp $
+.TH menu_requestname 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBmenu_request_by_name\fP,
-\fBmenu_request_name\fP \- handle printable menu request names
+\fBmenu_request_name\fP \-
+handle printable menu request names
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBconst char *menu_request_name(int \fIrequest\fB);\fR
-.br
-\fBint menu_request_by_name(const char *\fIname\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBconst char *menu_request_name(int \fIrequest\fP);
+\fBint menu_request_by_name(const char *\fIname\fP);
+.fi
 .SH DESCRIPTION
 The function \fBmenu_request_name\fP returns the printable name of a menu
 request code.
@@ -53,13 +53,8 @@ and sets \fBerrno\fP to \fBE_BAD_ARGUMENT\fP.
 .br
 \fBmenu_request_by_name\fP returns \fBE_NO_MATCH\fP on error.
 It does not set \fBerrno\fP.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
-These routines are specific to ncurses.
+These routines are specific to \fI\%ncurses\fP.
 They were not supported on
 Version 7, BSD or System V implementations.
 It is recommended that
@@ -67,3 +62,6 @@ any code depending on them be conditioned using NCURSES_VERSION.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index bc34806c55fa1ee7535679e56059a6e148cf05b4..d15e77d542a5cf2e5c908afab4cdaee5f7ca7e00 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_spacing.3x,v 1.20 2022/02/12 20:02:20 tom Exp $
-.TH menu_spacing 3X ""
+.\" $Id: menu_spacing.3x,v 1.37 2024/03/16 15:35:01 tom Exp $
+.TH menu_spacing 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_menu_spacing\fP,
-\fBmenu_spacing\fP \- set and get spacing between menu items.
+\fBmenu_spacing\fP \-
+set and get spacing between menu items.
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_menu_spacing(MENU *\fImenu\fB,\fR
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_menu_spacing(MENU *\fImenu\fP,
                      \fBint \fIspc_description\fB,\fR
                      \fBint \fIspc_rows\fB,\fR
                      \fBint \fIspc_columns\fB);\fR
-.br
 \fBint menu_spacing(const MENU *\fImenu\fB,\fR
                  \fBint* \fIspc_description\fB,\fR
                  \fBint* \fIspc_rows\fB,\fR
                  \fBint* \fIspc_columns\fB);\fR
-.br
+.fi
 .SH DESCRIPTION
 The function \fBset_menu_spacing\fP sets the spacing information for the menu.
-Its parameter \fBspc_description\fP controls the number of spaces
+Its parameters provide the description and the size (in rows and columns).
+.TP
+\fIspc_description\fP
+controls the number of spaces
 between an item name and an item description.
 It must not be larger than \fBTABSIZE\fP.
 The menu system puts in the
 middle of this spacing area the pad character.
 The remaining parts are filled with
 spaces.
-The \fBspc_rows\fP parameter controls the number of rows
+.TP
+\fIspc_rows\fP
+controls the number of rows
 that are used for an item.
 It must not be larger than 3.
 The menu system inserts the blank lines between item rows, these lines
 will contain the pad character in the appropriate positions.
-The \fBspc_columns\fP parameter controls
-the number of blanks between columns of items.
+.TP
+\fIspc_columns\fP
+controls the number of blanks between columns of items.
 It must not be larger than \fBTABSIZE\fP.
 A value of 0 for all the spacing values resets them to the default,
 which is 1 for all of them.
-.br
-The function \fBmenu_spacing\fP passes back the spacing info for the menu.
-If a
-pointer is NULL, this specific info is simply not returned.
+.PP
+The function \fBmenu_spacing\fP returns the spacing information for the menu.
+If a pointer is NULL, the corresponding information is simply not returned.
 .SH RETURN VALUE
 Both routines return \fBE_OK\fP on success.
 \fBset_menu_spacing\fP may return
 \fBE_POSTED\fP if the menu is posted, or \fBE_BAD_ARGUMENT\fP if one of the
 spacing values is out of range.
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_variables\fP(3X),
-\fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
-These routines are specific to ncurses.
+These routines are specific to \fI\%ncurses\fP.
 They were not supported on
 Version 7, BSD or System V implementations.
 It is recommended that
@@ -90,3 +88,7 @@ any code depending on them be conditioned using NCURSES_VERSION.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%menu\fP(3X)
index d0d30bf4cf8ea6e59ab473d5578328cc744c3ac4..292bbd6b85e8028a959f50e67ed02d50b2a66e56 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_userptr.3x,v 1.19 2022/02/12 20:02:20 tom Exp $
-.TH menu_userptr 3X ""
+.\" $Id: menu_userptr.3x,v 1.33 2024/03/16 15:35:01 tom Exp $
+.TH menu_userptr 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_menu_userptr\fP,
-\fBmenu_userptr\fP \- associate application data with a menu item
+\fBmenu_userptr\fP \-
+associate application data with a menu item
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_menu_userptr(MENU *\fImenu\fB, void *\fIuserptr\fB);\fR
-.br
-\fBvoid *menu_userptr(const MENU *\fImenu\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_menu_userptr(MENU *\fImenu\fP, void *\fIuserptr\fP);
+\fBvoid *menu_userptr(const MENU *\fImenu\fP);
+.fi
 .SH DESCRIPTION
 Every menu and every menu item has a field that can be used to hold
 application-specific data (that is, the menu-driver code leaves it alone).
@@ -49,11 +49,6 @@ These functions get and set the menu user pointer field.
 It does not set \fBerrno\fP.
 .PP
 \fBset_menu_userptr\fP returns \fBE_OK\fP (success).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -64,3 +59,6 @@ We chose not to leave it as a char pointer for SVr4 compatibility.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 7d88e518e9718a6b2fcd148a83887e09d5898015..36f6129dc2a869224312b5a59b51d08468bde871 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: menu_win.3x,v 1.18 2022/02/12 20:02:20 tom Exp $
-.TH menu_win 3X ""
+.\" $Id: menu_win.3x,v 1.32 2024/03/16 15:35:01 tom Exp $
+.TH menu_win 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBmenu_win\fP \- make and break menu window and subwindow associations
+\fBmenu_win\fP \-
+make and break menu window and subwindow associations
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_menu_win(MENU *\fImenu\fB, WINDOW *\fIwin\fB);\fR
-.br
-\fBWINDOW *menu_win(const MENU *\fImenu\fB);\fR
-.sp
-\fBint set_menu_sub(MENU *\fImenu\fB, WINDOW *\fIsub\fB);\fR
-.br
-\fBWINDOW *menu_sub(const MENU *\fImenu\fB);\fR
-.sp
-\fBint scale_menu(const MENU *\fImenu, int *\fIrows\fB, int *\fIcolumns);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_menu_win(MENU *\fImenu\fP, WINDOW *\fIwin\fP);
+\fBWINDOW *menu_win(const MENU *\fImenu\fP);
+.PP
+\fBint set_menu_sub(MENU *\fImenu\fP, WINDOW *\fIsub\fP);
+\fBWINDOW *menu_sub(const MENU *\fImenu\fP);
+.PP
+\fBint scale_menu(const MENU *\fImenu\fP, int *\fIrows\fP, int *\fIcolumns\fP);
+.fi
 .SH DESCRIPTION
 Every menu has an associated pair of \fBcurses\fP windows.
 The menu window
@@ -80,13 +79,6 @@ The menu has already been posted.
 .TP 5
 .B E_NOT_CONNECTED
 No items are connected to the menu.
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_variables\fP(3X),
-\fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -94,3 +86,7 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%menu\fP(3X)
index 0464042023cc9bb8e6f1fcea6249ab2d615067f9..42d36c39754bf08d44ee50b2d0dfc1101bac8ba2 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2006,2010 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: mitem_current.3x,v 1.23 2022/02/12 20:02:20 tom Exp $
-.TH mitem_current 3X ""
+.\" $Id: mitem_current.3x,v 1.37 2024/03/16 15:35:01 tom Exp $
+.TH mitem_current 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBmitem_current\fP \- set and get current_menu_item
+\fBmitem_current\fP \-
+set and get current_menu_item
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_current_item(MENU *\fImenu\fB, ITEM *\fIitem\fB);\fR
-.br
-\fBITEM *current_item(const MENU *\fImenu\fB);\fR
-.sp
-\fBint set_top_row(MENU *\fImenu\fB, int \fIrow\fB);\fR
-.br
-\fBint top_row(const MENU *\fImenu\fB);\fR
-.sp
-\fBint item_index(const ITEM *\fIitem\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_current_item(MENU *\fImenu\fP, ITEM *\fIitem\fP);
+\fBITEM *current_item(const MENU *\fImenu\fP);
+.PP
+\fBint set_top_row(MENU *\fImenu\fP, int \fIrow\fP);
+\fBint top_row(const MENU *\fImenu\fP);
+.PP
+\fBint item_index(const ITEM *\fIitem\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_current_item\fP sets the current item (the item on which
 the menu cursor is positioned).
@@ -84,11 +83,6 @@ No items are connected to the menu.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -99,3 +93,6 @@ The SVr4 menu library documentation specifies the \fBtop_row\fP and
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 7023b027797f8b658cade7285a6a6681d4f121b5..3606bb5d245521046e50dbe45f6ed781bc2c3a13 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: mitem_name.3x,v 1.17 2022/02/12 20:02:20 tom Exp $
-.TH mitem_name 3X ""
+.\" $Id: mitem_name.3x,v 1.31 2024/03/16 15:35:01 tom Exp $
+.TH mitem_name 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBitem_name\fP,
-\fBitem_description\fP \- get menu item name and description fields
+\fBitem_description\fP \-
+get menu item name and description fields
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBconst char *item_name(const ITEM *\fIitem\fB);\fR
-.br
-\fBconst char *item_description(const ITEM *\fIitem\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBconst char *item_name(const ITEM *\fIitem\fP);
+\fBconst char *item_description(const ITEM *\fIitem\fP);
+.fi
 .SH DESCRIPTION
 The function \fBitem_name\fP returns the name part of the given item.
 .br
@@ -48,14 +48,12 @@ item.
 .SH RETURN VALUE
 These routines return a pointer (which may be \fBNULL\fP).
 They do not set \fBerrno\fP.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 7a0178ac66c008f8c7dfd26de6d2ee12a6f9b951..66bd29bce3a8b12ca1c247dbe4f6c50c3acad36a 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: mitem_new.3x,v 1.22 2022/02/12 20:02:20 tom Exp $
-.TH mitem_new 3X ""
+.\" $Id: mitem_new.3x,v 1.36 2024/03/16 15:35:01 tom Exp $
+.TH mitem_new 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBnew_item\fP,
-\fBfree_item\fP \- create and destroy menu items
+\fBfree_item\fP \-
+create and destroy menu items
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBITEM *new_item(const char *\fIname\fB, const char *\fIdescription\fB);\fR
-.br
-\fBint free_item(ITEM *\fIitem\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBITEM *new_item(const char *\fIname\fP, const char *\fIdescription\fP);
+\fBint free_item(ITEM *\fIitem\fP);
+.fi
 .SH DESCRIPTION
 The function \fBnew_item\fP allocates a new item and initializes it from the
 \fBname\fP and \fBdescription\fP pointers.
@@ -77,11 +77,6 @@ Item is connected to a menu.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -89,3 +84,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 716584c899a410cdbbb9d3b3120df0fb0c967241..5a86516f5a2418c6f67beae75be20ab0b98994bf 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: mitem_opts.3x,v 1.19 2022/02/12 20:02:20 tom Exp $
-.TH mitem_opts 3X ""
+.\" $Id: mitem_opts.3x,v 1.33 2024/03/16 15:35:01 tom Exp $
+.TH mitem_opts 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_item_opts\fP,
 \fBitem_opts_on\fP,
 \fBitem_opts_off\fP,
-\fBitem_opts\fP \- set and get menu item options
+\fBitem_opts\fP \-
+set and get menu item options
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_item_opts(ITEM *\fIitem\fB, Item_Options \fIopts\fB);\fR
-.br
-\fBItem_Options item_opts(const ITEM *\fIitem\fB);\fR
-.sp
-\fBint item_opts_on(ITEM *\fIitem\fB, Item_Options \fIopts\fB);\fR
-.br
-\fBint item_opts_off(ITEM *\fIitem\fB, Item_Options \fIopts\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_item_opts(ITEM *\fIitem\fP, Item_Options \fIopts\fP);
+\fBItem_Options item_opts(const ITEM *\fIitem\fP);
+.PP
+\fBint item_opts_on(ITEM *\fIitem\fP, Item_Options \fIopts\fP);
+\fBint item_opts_off(ITEM *\fIitem\fP, Item_Options \fIopts\fP);
+.fi
 .SH DESCRIPTION
 The function \fBset_item_opts\fP sets all the given item's option bits (menu
 option bits may be logically-OR'ed together).
@@ -70,11 +69,6 @@ The routine succeeded.
 .TP 5
 .B E_SYSTEM_ERROR
 System error occurred (see \fBerrno\fP(3)).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -82,3 +76,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 1d492c51fccf63ed7d9c716e51b8c34d3618d664..f0eab8bd8058194e43c0dcd678b98c7ba1207fb1 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: mitem_userptr.3x,v 1.20 2022/02/12 20:02:20 tom Exp $
-.TH mitem_userptr 3X ""
+.\" $Id: mitem_userptr.3x,v 1.34 2024/03/16 15:35:01 tom Exp $
+.TH mitem_userptr 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_item_userptr\fP,
-\fBitem_userptr\fP \- associate application data with a menu item
+\fBitem_userptr\fP \-
+associate application data with a menu item
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_item_userptr(ITEM *\fIitem\fB, void *\fIuserptr\fB);\fR
-.br
-\fBvoid *item_userptr(const ITEM *\fIitem\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_item_userptr(ITEM *\fIitem\fP, void *\fIuserptr\fP);
+\fBvoid *item_userptr(const ITEM *\fIitem\fP);
+.fi
 .SH DESCRIPTION
 Every menu item has a field that can be used to hold application-specific data
 (that is, the menu-driver code leaves it alone).
@@ -50,12 +50,6 @@ The function \fBitem_userptr\fP returns a pointer (possibly \fBNULL\fP).
 It does not set \fBerrno\fP.
 .PP
 The \fBset_item_userptr\fP always returns \fBE_OK\fP (success).
-.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -66,3 +60,6 @@ We chose not to leave it as a char pointer for SVr4 compatibility.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 0677301f083373e9294296febc21dab65b553b8f..daa383dae6bdfe5d7ec2ac5fd97536a70473e70c 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: mitem_value.3x,v 1.18 2022/02/12 20:02:20 tom Exp $
-.TH mitem_value 3X ""
+.\" $Id: mitem_value.3x,v 1.32 2024/03/16 15:35:01 tom Exp $
+.TH mitem_value 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
 \fBset_item_value\fP,
-\fBitem_value\fP \- set and get menu item values
+\fBitem_value\fP \-
+set and get menu item values
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBint set_item_value(ITEM *\fIitem\fB, bool \fIvalue\fB);\fR
-.br
-\fBbool item_value(const ITEM *\fIitem\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBint set_item_value(ITEM *\fIitem\fP, bool \fIvalue\fP);
+\fBbool item_value(const ITEM *\fIitem\fP);
+.fi
 .SH DESCRIPTION
 If you turn off the menu option \fBO_ONEVALUE\fP (e.g., with
 \fBset_menu_opts\fP or \fBmenu_opts_off\fP; see \fBmenu_opts\fP(3X)), the menu
@@ -59,11 +60,6 @@ System error occurred (see \fBerrno\fP(3)).
 .TP 5
 .B E_REQUEST_DENIED
 The menu driver could not process the request.
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -71,3 +67,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 4fb4e3693535b6c2e55e44dc907ebf24a7e1120b..c28c603faeb05adf2be318f2772e2b2f953006e6 100644 (file)
@@ -1,6 +1,5 @@
-'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998,2010 Free Software Foundation, Inc.                       *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: mitem_visible.3x,v 1.13 2022/02/12 20:03:40 tom Exp $
-.TH mitem_visible 3X ""
+.\" $Id: mitem_visible.3x,v 1.27 2024/03/16 15:35:01 tom Exp $
+.TH mitem_visible 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBmitem_visible\fP \- check visibility of a menu item
+\fBitem_visible\fP \-
+check visibility of a menu item
 .SH SYNOPSIS
-\fB#include <menu.h>\fP
-.sp
-\fBbool item_visible(const ITEM *\fIitem\fB);\fR
-.br
+.nf
+\fB#include <menu.h>
+.PP
+\fBbool item_visible(const ITEM *\fIitem\fP);
+.fi
 .SH DESCRIPTION
 A menu item is visible when it is in the portion of a posted menu that
 is mapped onto the screen (if the menu is scrollable, in particular, this
 portion will be smaller than the whole menu).
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBmenu\fP(3X).
-.SH NOTES
-The header file \fB<menu.h>\fP automatically includes the header file
-\fB<curses.h>\fP.
 .SH PORTABILITY
 These routines emulate the System V menu library.
 They were not supported on
@@ -53,3 +49,6 @@ Version 7 or BSD versions.
 .SH AUTHORS
 Juergen Pfeifer.
 Manual pages and adaptation for new curses by Eric S. Raymond.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%menu\fP(3X)
index 5fc85a90ec68caacf99a53024471e6162dcd62c1..9aaa7adf54bf535f8d6865af8231ca7023c9ae1d 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: ncurses.3x,v 1.156 2021/12/25 21:19:26 tom Exp $
-.hy 0
-.TH ncurses 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: ncurses.3x,v 1.214 2024/04/27 17:55:43 tom Exp $
+.TH ncurses 3X 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
+.
+.\" Add supplementary paragraph tag on its own line after TP.
+.\" Adapted from TQ (which would produce mandoc warnings).
+.de tQ
+.  br
+.  ns
+.  TP
 ..
-.ds n 5
+.
 .ds d @TERMINFO@
 .SH NAME
-\fBncurses\fP \- CRT screen handling and optimization package
+\fB\%ncurses\fP \-
+character-cell terminal interface with optimized output
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.br
+.nf
+\fB#include <curses.h>
+.fi
 .SH DESCRIPTION
-The \fBncurses\fP library routines give the user a terminal-independent 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 \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
-.PP
-The \fBncurses\fP library emulates the curses library of
-System V Release 4 UNIX,
-and XPG4 (X/Open Portability Guide) curses (also known as XSI curses).
-XSI stands for X/Open System Interfaces Extension.
-The \fBncurses\fP library is freely redistributable in source form.
-Differences from the SVr4
-curses are summarized under the
-\fIEXTENSIONS\fP and \fIPORTABILITY\fP sections below and
-described in detail in the respective
-\fIEXTENSIONS\fP, \fIPORTABILITY\fP and \fIBUGS\fP sections
-of individual man pages.
-.PP
-The \fBncurses\fP library also provides many useful extensions,
-i.e., features which cannot be implemented by a simple add-on library
-but which require access to the internals of the library.
-.PP
-A program using these routines must be linked with the \fB\-lncurses\fP option,
-or (if it has been generated) with the debugging library \fB\-lncurses_g\fP.
-(Your system integrator may also have installed these libraries under
-the names \fB\-lcurses\fP and \fB\-lcurses_g\fP.)
-The ncurses_g library generates trace logs (in a file called \*(``trace\*('' in the
-current directory) that describe curses actions.
-See also the section on \fBALTERNATE CONFIGURATIONS\fP.
-.PP
-The \fBncurses\fP package supports: overall screen, window and pad
-manipulation; output to windows and pads; reading terminal input; control over
-terminal and \fBcurses\fP input and output options; environment query
-routines; color manipulation; use of soft label keys; terminfo capabilities;
-and access to low-level terminal-manipulation routines.
-.SS Initialization
-.PP
-The library uses the locale which the calling program has initialized.
-That is normally done with \fBsetlocale\fP(3):
-.NS
-\fBsetlocale(LC_ALL, "");\fP
-.NE
-.PP
-If the locale is not initialized,
-the library assumes that characters are printable as in ISO\-8859\-1,
+The \*(``new curses\*('' library offers the programmer a
+terminal-independent means of reading keyboard and mouse input and
+updating character-cell terminals with output optimized to minimize
+screen updates.
+.I \%ncurses
+replaces the
+.I curses
+libraries from
+System V Release 4 Unix (\*(``SVr4\*('')
+and
+4.4BSD Unix,
+the development of which ceased in the 1990s.
+This document describes
+.I \%ncurses
+version @NCURSES_MAJOR@.@NCURSES_MINOR@
+(patch @NCURSES_PATCH@).
+.PP
+.I \%ncurses
+permits control of the terminal screen's contents;
+abstraction and subdivision thereof with
+.I windows
+and
+.IR pads ;
+the reading of terminal input;
+control of terminal input and output options;
+environment query routines;
+color manipulation;
+the definition and use of
+.I "soft label"
+keys;
+.I \%term\%info
+capability access;
+a
+.I termcap
+compatibility interface;
+and an abstraction of the system's API for manipulating the terminal
+(such as \fI\%termios\fP(3)).
+.PP
+.I \%ncurses
+implements the standard interface described by
+X/Open Curses Issue\ 7.
+In many behavioral details not standardized by X/Open,
+.I \%ncurses
+emulates the
+.I curses
+library of SVr4 and provides numerous useful extensions.
+.PP
+.I \%ncurses
+man pages employ several sections to clarify matters of usage and
+interoperability with other
+.I curses
+implementations.
+.bP
+\*(``NOTES\*('' describes issues and caveats of which any user of the
+.I \%ncurses
+API should be aware,
+such as limitations on the size of an underlying integral type or the
+availability of a preprocessor macro exclusive of a function definition
+(which prevents its address from being taken).
+This section also describes implementation details that will be
+significant to the programmer but which are not standardized.
+.bP
+\*(``EXTENSIONS\*('' presents
+.I \%ncurses
+innovations beyond the X/Open Curses standard and/or the SVr4
+.I curses
+implementation.
+They are termed
+.I extensions
+to indicate that they cannot be implemented solely by using the library
+API,
+but require access to the library's internal state.
+.bP
+\*(``PORTABILITY\*('' discusses matters
+(beyond the exercise of extensions)
+that should be considered when writing to a
+.I curses
+standard,
+or for multiple implementations.
+.bP
+\*(``HISTORY\*('' examines points of detail in
+.I \%ncurses
+and other
+.I curses
+implementations over the decades of their development,
+particularly where precedent or inertia have frustrated better design
+(and,
+in a few cases,
+where such inertia has been overcome).
+.PP
+A
+.I curses
+application must be linked with the library;
+use the
+.B \-lncurses
+option to your compiler or linker.
+A debugging version of the library may be available;
+if so,
+link with it using
+.BR \-lncurses_g .
+(Your system integrator may have installed these libraries such that you
+can use the options
+.B \-lcurses
+and
+.BR \-lcurses_g ,
+respectively.)
+The
+.I \%ncurses_g
+library generates trace logs
+(in a file called
+.I \%trace
+in the current directory)
+that describe
+.I \%ncurses
+actions.
+See section \*(``ALTERNATE CONFIGURATIONS\*('' below.
+.SS "Application Structure"
+A
+.I curses
+application uses information from the system locale;
+\fI\%setlocale\fP(3) prepares it for
+.I curses
+library calls.
+.PP
+.RS 4
+.EX
+setlocale(LC_ALL, "");
+.EE
+.RE
+.PP
+If the locale is not thus initialized,
+the library assumes that characters are printable as in ISO\ 8859-1,
 to work with certain legacy programs.
-You should initialize the locale and not rely on specific details of
-the library when the locale has not been setup.
-.PP
-The function \fBinitscr\fP or \fBnewterm\fP
-must be called to initialize the library
-before any of the other routines that deal with windows
-and screens are used.
-The routine \fBendwin\fP(3X) must be called before exiting.
-.PP
-To get character-at-a-time input without echoing (most
-interactive, screen oriented programs want this), the following
-sequence should be used:
-.NS
-\fBinitscr(); cbreak(); noecho();\fP
-.NE
-.PP
-Most programs would additionally use the sequence:
-.NS
-\fBintrflush(stdscr, FALSE);\fP
-\fBkeypad(stdscr, TRUE);\fP
-.NE
-.PP
-Before a \fBcurses\fP program is run, the tab stops of the terminal
-should be set and its initialization strings, if defined, must be output.
-This can be done by executing the \fB@TPUT@ init\fP command
-after the shell environment variable \fBTERM\fP has been exported.
-\fB@TSET@(1)\fP is usually responsible for doing this.
-[See \fBterminfo\fP(\*n) for further details.]
-.SS Datatypes
-.PP
-The \fBncurses\fP library permits manipulation of data structures,
-called \fIwindows\fP, which can be thought of as two-dimensional
-arrays of characters representing all or part of a CRT screen.
-A default window called \fBstdscr\fP, which is the size of the terminal
-screen, is supplied.
-Others may be created with \fBnewwin\fP.
-.PP
-Note that \fBcurses\fP does not handle overlapping windows, that's done by
-the \fBpanel\fP(3X) library.
-This means that you can either use
-\fBstdscr\fP or divide the screen into tiled windows and not using
-\fBstdscr\fP at all.
-Mixing the two will result in unpredictable, and undesired, effects.
-.PP
-Windows are referred to by variables declared as \fBWINDOW *\fP.
-These data structures are manipulated with routines described here and
-elsewhere in the \fBncurses\fP manual pages.
-Among those, the most basic
-routines are \fBmove\fP and \fBaddch\fP.
-More general versions of
-these routines are included with names beginning with \fBw\fP,
-allowing the user to specify a window.
-The routines not beginning
-with \fBw\fP affect \fBstdscr\fP.
-.PP
-After using routines to manipulate a window, \fBrefresh\fP(3X) is called,
-telling \fBcurses\fP to make the user's CRT screen look like
-\fBstdscr\fP.
-The characters in a window are actually of type
-\fBchtype\fP, (character and attribute data) so that other information
-about the character may also be stored with each character.
-.PP
-Special windows called \fIpads\fP may also be manipulated.
-These are windows
-which are not constrained to the size of the screen and whose contents need not
-be completely displayed.
-See \fBcurs_pad\fP(3X) for more information.
-.PP
-In addition to drawing characters on the screen, video attributes and colors
-may be supported, causing the characters to show up in such modes as
-underlined, in reverse video, or in color on terminals that support such
-display enhancements.
-Line drawing characters may be specified to be output.
-On input, \fBcurses\fP is also able to translate arrow and function keys that
-transmit escape sequences into single values.
-The video attributes, line
-drawing characters, and input values use names, defined in \fB<curses.h>\fP,
-such as \fBA_REVERSE\fP, \fBACS_HLINE\fP, and \fBKEY_LEFT\fP.
-.SS Environment variables
-.PP
-If the environment variables \fBLINES\fP and \fBCOLUMNS\fP are set, or if the
-program is executing in a window environment, line and column information in
-the environment will override information read by \fIterminfo\fP.
-This would affect a program running in an AT&T 630 layer,
-for example, where the size of a
-screen is changeable (see \fBENVIRONMENT\fP).
-.PP
-If the environment variable \fBTERMINFO\fP is defined, any program using
-\fBcurses\fP checks for a local terminal definition before checking in the
-standard place.
-For example, if \fBTERM\fP is set to \fBatt4424\fP, then the
-compiled terminal definition is found in
-.NS
-\fB\*d/a/att4424\fP.
-.NE
-.PP
-(The \fBa\fP is copied from the first letter of \fBatt4424\fP to avoid
-creation of huge directories.)  However, if \fBTERMINFO\fP is set to
-\fB$HOME/myterms\fP, \fBcurses\fP first checks
-.NS
-\fB$HOME/myterms/a/att4424\fP,
-.NE
-.PP
-and if that fails, it then checks
-.NS
-\fB\*d/a/att4424\fP.
-.NE
-.PP
-This is useful for developing experimental definitions or when write
-permission in \fB\*d\fP is not available.
-.PP
-The integer variables \fBLINES\fP and \fBCOLS\fP are defined in
-\fB<curses.h>\fP and will be filled in by \fBinitscr\fP with the size of the
-screen.
-The constants \fBTRUE\fP and \fBFALSE\fP have the values \fB1\fP and
-\fB0\fP, respectively.
-.PP
-The \fBcurses\fP routines also define the \fBWINDOW *\fP variable \fBcurscr\fP
-which is used for certain low-level operations like clearing and redrawing a
-screen containing garbage.
-The \fBcurscr\fP can be used in only a few routines.
-.\"
-.SS Routine and Argument Names
-Many \fBcurses\fP routines have two or more versions.
-The routines prefixed with \fIw\fP require a window argument.
-The routines prefixed with \fIp\fP require a pad argument.
-Those without a prefix generally use \fBstdscr\fP.
-.PP
-The routines prefixed with \fBmv\fP require a \fIy\fP and \fIx\fP
-coordinate to move to before performing the appropriate action.
-The \fBmv\fP routines imply a call to \fBmove\fP before the call to the
-other routine.
-The coordinate \fIy\fP always refers to the row (of
-the window), and \fIx\fP always refers to the column.
-The upper left-hand corner is always (0,0), not (1,1).
-.PP
-The routines prefixed with \fBmvw\fP take both a window argument and
-\fIx\fP and \fIy\fP coordinates.
-The window argument is always specified before the coordinates.
-.PP
-In each case, \fIwin\fP is the window affected, and \fIpad\fP is the
-pad affected; \fIwin\fP and \fIpad\fP are always pointers to type
-\fBWINDOW\fP.
-.PP
-Option setting routines require a Boolean flag \fIbf\fP with the value
-\fBTRUE\fP or \fBFALSE\fP; \fIbf\fP is always of type \fBbool\fP.
-Most of the data types used in the library routines,
-such as \fBWINDOW\fP, \fBSCREEN\fP, \fBbool\fP, and \fBchtype\fP
-are defined in \fB<curses.h>\fP.
-Types used for the terminfo routines such as
-\fBTERMINAL\fP are defined in \fB<term.h>\fP.
-.PP
-This manual page describes functions which may appear in any configuration
+You should initialize the locale;
+do not expect consistent behavior from the library when the locale has
+not been set up.
+.PP
+\fB\%initscr\fP(3X) or \fB\%newterm\fP(3X)
+must be called to initialize
+.I curses
+before use of any functions that deal with windows and screens.
+.PP
+To get character-at-a-time input without echoing\(emmost interactive,
+screen-oriented programs want this\(emuse the following sequence.
+.PP
+.RS 4
+.EX
+initscr(); cbreak(); noecho();
+.EE
+.RE
+.PP
+Most applications perform further setup as follows.
+.PP
+.RS 4
+.EX
+intrflush(stdscr, FALSE);
+keypad(stdscr, TRUE);
+.EE
+.RE
+.PP
+A
+.I curses
+program then often enters an event loop of some sort.
+Call \fB\%endwin\fP(3X) before exiting.
+.SS Overview
+A
+.I curses
+library abstracts the terminal screen by representing all or part of it
+as a
+.I \%WINDOW
+data structure.
+A
+.I window
+is a rectangular grid of character cells,
+addressed by row and column coordinates
+.RI ( y ,
+.IR x ),
+with the upper left corner as (0, 0).
+A window called
+.BR \%stdscr ,
+the same size as the terminal screen,
+is always available.
+Create others with \fB\%newwin\fP(3X).
+.PP
+A
+.I curses
+library does not manage overlapping windows
+(but see below).
+You can either use
+.B \%stdscr
+to manage one screen-filling window,
+or tile the screen into non-overlapping windows and not use
+.B \%stdscr
+at all.
+Mixing the two approaches will result in unpredictable and undesired
+effects.
+.PP
+Functions permit manipulation of a window and the
+.I cursor
+identifying the cell within it at which the next output operation will
+occur.
+Among those,
+the most basic are \fB\%move\fP(3X) and \fB\%addch\fP(3X):
+these place the cursor and write a character to
+.BR \%stdscr ,
+respectively.
+.PP
+Frequent changes to the terminal screen can cause unpleasant flicker or
+inefficient use of the communication channel to the device,
+so the library does not generally update it automatically.
+Therefore,
+after using
+.I curses
+functions to accumulate a set of desired updates that make sense to
+present together,
+call \fB\%refresh\fP(3X) to tell the library to make the user's screen
+look like \fBstdscr\fP.
+The library
+.\" X/Open Curses Issue 7 assumes some optimization will be done, but
+.\" does not mandate it in any way.
+.I optimizes
+its output by computing a minimal number of operations to mutate the
+screen from its state at the previous refresh to the new one.
+Effective optimization demands accurate information about the terminal
+device:
+the management of such information is the province of the
+\fB\%terminfo\fP(3X) API,
+a feature of every standard
+.I curses
+implementation.
+.PP
+Special windows called
+.I pads
+may also be manipulated.
+These are windows that are not constrained to the size of the terminal
+screen and whose contents need not be completely displayed.
+See \fB\%curs_pad\fP(3X).
+.PP
+In addition to drawing characters on the screen,
+rendering attributes and colors may be supported,
+causing the characters to show up in such modes as underlined,
+in reverse video,
+or in color on terminals that support such display enhancements.
+See \fB\%curs_attr\fP(3X).
+.PP
+.I curses
+predefines constants for a small set of forms-drawing graphics
+corresponding to the DEC Alternate Character Set (ACS),
+a feature of VT100 and other terminals.
+See \fB\%waddch\fP(3X).
+.PP
+.I curses
+is implemented using the operating system's terminal driver;
+keystroke events are received not as scan codes but as byte sequences.
+Graphical keycaps
+(alphanumeric and punctuation keys,
+and the space)
+appear as-is.
+Everything else,
+including the tab,
+enter/return,
+keypad,
+arrow,
+and function keys,
+appears as a control character or a multibyte
+.I "escape sequence."
+.I curses
+translates these into unique
+.I "key codes."
+See \fB\%getch\fP(3X).
+.PP
+.I \%ncurses
+provides reimplementations of the SVr4 \fBpanel\fP(3X), \fBform\fP(3X),
+and \fBmenu\fP(3X) libraries to ease construction of user interfaces
+with
+.IR curses .
+.SS "Initialization"
+The selection of an appropriate value of
+.I TERM
+in the process environment is essential to correct
+.I curses
+and
+.I \%term\%info
+library operation.
+A well-configured system selects a correct
+.I TERM
+value automatically;
+\fB\%tset\fP(1) may assist with troubleshooting exotic situations.
+.PP
+If you change the terminal type,
+export the
+.I TERM
+environment variable in the shell,
+then run \fB\%tset\fP(1) or the
+.RB \*(`` "@TPUT@ init" \*(''
+command.
+See subsection \*(``Tabs and Initialization\*('' of \fB\%terminfo\fP(5).
+.PP
+If the environment variables
+.I \%LINES
+and
+.I \%COLUMNS
+are set,
+or if the
+.I curses
+program is executing in a graphical windowing environment,
+the information obtained thence overrides that obtained by
+.IR \%term\%info .
+An
+.I \%ncurses
+extension supports resizable terminals;
+see \fB\%wresize\fP(3X).
+.PP
+If the environment variable
+.I \%TERMINFO
+is defined,
+a
+.I curses
+program checks first for a terminal type description in the location it
+identifies.
+.I \%TERMINFO
+is useful for developing experimental type descriptions or when write
+permission to
+.I \%\*d
+is not available.
+.PP
+See section \*(``ENVIRONMENT\*('' below.
+.SS "Naming Conventions"
+.I curses
+offers many functions in variant forms using a regular set of
+alternatives to the name of an elemental one.
+Those prefixed with \*(``w\*('' require a
+.I \%WINDOW
+pointer argument;
+those with a \*(``mv\*('' prefix first perform cursor movement using
+\fB\%wmove\fP(3X);
+a \*(``mvw\*('' prefix indicates both.
+The \*(``w\*('' function is typically the elemental one;
+the removal of this prefix usually indicates operation on
+.BR \%stdscr .
+.PP
+Four functions prefixed with \*(``p\*('' require a pad argument.
+.PP
+In function synopses,
+.I \%ncurses
+man pages apply the following names to parameters.
+.PP
+.TS
+center;
+Li L.
+bf     \fIbool\fP (\fBTRUE\fP or \fBFALSE\fP)
+c      a \fIchar\fP or \fIint\fP
+ch     a \fIchtype\fP
+wc     a \fIwchar_t\fP or \fIwint_t\fP
+wch    a \fIcchar_t\fP
+win    pointer to a \fIWINDOW\fP
+pad    pointer to a \fIWINDOW\fP that is a pad
+.TE
+.SS "Wide and Non-wide Character Configurations"
+This manual page describes functions that appear in any configuration
 of the library.
-There are two common configurations of the library:
-.RS 3
-.TP 5
-.I ncurses
-the \*(``normal\*('' library, which handles 8-bit characters.
-The normal (8-bit) library stores characters combined with attributes
-in \fBchtype\fP data.
-.IP
-Attributes alone (no corresponding character) may be stored in \fBchtype\fP
-or the equivalent \fBattr_t\fP data.
-In either case, the data is stored in something like an integer.
+There are two common configurations;
+see section \*(``ALTERNATE CONFIGURATIONS\*('' below.
+.TP 10 \" "ncursesw" + 2n
+.I \%ncurses
+is the library in its \*(``non-wide\*('' configuration,
+handling only eight-bit characters.
+It stores a character combined with attributes in a
+.I \%chtype
+datum,
+which is often an alias of
+.IR int .
 .IP
-Each cell (row and column) in a \fBWINDOW\fP is stored as a \fBchtype\fP.
-.TP 5
-.I ncursesw
-the so-called \*(``wide\*('' library, which handles multibyte characters
-(see the section on \fBALTERNATE CONFIGURATIONS\fP).
-The \*(``wide\*('' library includes all of the calls
-from the \*(``normal\*('' library.
-It adds about one third more calls using data types which store
-multibyte characters:
-.RS 5
-.TP 5
-.B cchar_t
-corresponds to \fBchtype\fP.
-However it is a structure, because more data is stored than can fit into
-an integer.
-The characters are large enough to require a full integer value \- and there
-may be more than one character per cell.
-The video attributes and color are stored in separate fields of the structure.
+Attributes alone
+(with no corresponding character)
+can be stored in variables of
+.I \%chtype
+or
+.I \%attr_t
+type.
+In either case,
+they are represented as an integral bit mask.
 .IP
-Each cell (row and column) in a \fBWINDOW\fP is stored as a \fBcchar_t\fP.
-.IP
-The \fBsetcchar\fP(3X) and \fBgetcchar\fP(3X)
-functions store and retrieve the data from
-a \fBcchar_t\fP structure.
-.TP 5
-.B wchar_t
-stores a \*(``wide\*('' character.
-Like \fBchtype\fP, this may be an integer.
-.TP 5
-.B wint_t
-stores a \fBwchar_t\fP or \fBWEOF\fP \- not the same, though both may have
-the same size.
+Each cell of a
+.I \%WINDOW
+is stored as a
+.IR \%chtype .
+.TP 10
+.I \%ncursesw
+is the library in its \*(``wide\*('' configuration,
+which handles character encodings requiring a larger data type than
+.I \%char
+(a byte-sized type)
+can represent.
+It adds about one third more calls using additional data types that
+can store such
+.I multibyte
+characters.
+.RS 10 \" same as foregoing tag width
+.TP 9 \" "cchar_t" + 2n
+.I \%cchar_t
+corresponds to the non-wide configuration's
+.IR \%chtype .
+It always a structure type,
+because it stores more data than fit into a standard scalar type.
+A character code may not be representable as a
+.IR \%char ,
+and moreover more than one character may occupy a cell
+(as with accent marks and other diacritics).
+Each character is of type
+.IR \%wchar_t ;
+a complex character contains one spacing character and zero or more
+non-spacing characters
+(see below).
+Attributes and color data are stored in separate fields of the
+structure,
+not combined as in
+.IR \%chtype .
+.PP
+Each cell of a
+.I \%WINDOW
+is stored as a
+.IR \%cchar_t .
+.PP
+\fB\%setcchar\fP(3X) and \fB\%getcchar\fP(3X)
+store and retrieve
+.I \%cchar_t
+data.
+The wide library API of
+.I \%ncurses
+depends on two data types standardized by ISO C95.
+.TP 9
+.I \%wchar_t
+stores a wide character.
+Like
+.IR \%chtype ,
+it may be an alias of
+.IR int .
+Depending on the character encoding,
+a wide character may be
+.IR spacing ,
+meaning that it occupies a character cell by itself and typically
+accompanies cursor advancement,
+or
+.IR non-spacing ,
+meaning that it occupies the same cell as a spacing character,
+is often regarded as a \*(``modifier\*('' of the base glyph with which
+it combines,
+and typically does not advance the cursor.
+.TP 9
+.I \%wint_t
+can store a
+.I \%wchar_t
+or the constant
+.BR \%WEOF ,
+analogously to the
+.IR int -sized
+character manipulation functions of ISO C and its constant
+.BR \%EOF .
 .RE
 .IP
-The \*(``wide\*('' library provides new functions which are analogous to
-functions in the \*(``normal\*('' library.
-There is a naming convention which relates many of the normal/wide variants:
-a \*(``_w\*('' is inserted into the name.
-For example, \fBwaddch\fP becomes \fBwadd_wch\fP.
-.RE
-.PP
+The wide library provides additional functions that complement those in
+the non-wide library where the size of the underlying character type is
+significant.
+A somewhat regular naming convention relates many of the wide variants
+to their non-wide counterparts;
+where a non-wide function name contains \*(``ch\*('' or \*(``str\*('',
+prefix it with \*(``_w\*('' to obtain the wide counterpart.
+For example,
+\fB\%waddch\fP becomes \fB\%wadd_wch\fP.
+(Exceptions that add only \*(``w\*('' comprise
+.BR \%addwstr ,
+.BR \%inwstr ,
+and their variants.)
+.IP
+This convention is inapplicable to some non-wide function names,
+so other transformations are used for the wide configuration:
+the window background management function \*(``bkgd\*('' becomes
+\*(``bkgrnd\*('';
+the window border-drawing and -clearing functions are suffixed with
+\*(``_set\*('';
+and character attribute manipulation functions like
+\*(``attron\*('' become \*(``attr_on\*(''.
 .\"
-.SS Routine Name Index
-The following table lists the \fBcurses\fP routines provided in
-the \*(``normal\*('' and \*(``wide\*('' libraries and the names of
-the manual pages on which they are described.
-Routines flagged with \*(``*\*(''
-are ncurses-specific, not described by XPG4 or present in SVr4.
+.SS "Function Name Index"
+The following table lists the
+.I curses
+functions provided in the non-wide and wide APIs and the corresponding
+man pages that describe them.
+Those flagged with \*(``*\*(''
+are
+.IR \%ncurses "-specific,"
+neither described by X/Open Curses nor present in SVr4.
 .PP
 .TS
 center tab(/);
-l l
 l l .
-\fBcurses\fP Routine Name/Manual Page Name
-=
+\f(BIcurses\fP Function Name/Man Page
+_
 COLOR_PAIR/\fBcurs_color\fP(3X)
-PAIR_NUMBER/\fBcurs_attr\fP(3X)
+PAIR_NUMBER/\fBcurs_color\fP(3X)
 add_wch/\fBcurs_add_wch\fP(3X)
 add_wchnstr/\fBcurs_add_wchstr\fP(3X)
 add_wchstr/\fBcurs_add_wchstr\fP(3X)
@@ -403,6 +635,7 @@ find_pair/\fBnew_pair\fP(3X)*
 flash/\fBcurs_beep\fP(3X)
 flushinp/\fBcurs_util\fP(3X)
 free_pair/\fBnew_pair\fP(3X)*
+get_escdelay/\fBcurs_threads\fP(3X)*
 get_wch/\fBcurs_get_wch\fP(3X)
 get_wstr/\fBcurs_get_wstr\fP(3X)
 getattrs/\fBcurs_attr\fP(3X)
@@ -463,16 +696,20 @@ insstr/\fBcurs_insstr\fP(3X)
 instr/\fBcurs_instr\fP(3X)
 intrflush/\fBcurs_inopts\fP(3X)
 inwstr/\fBcurs_inwstr\fP(3X)
+is_cbreak/\fBcurs_inopts\fP(3X)*
 is_cleared/\fBcurs_opaque\fP(3X)*
+is_echo/\fBcurs_inopts\fP(3X)*
 is_idcok/\fBcurs_opaque\fP(3X)*
 is_idlok/\fBcurs_opaque\fP(3X)*
 is_immedok/\fBcurs_opaque\fP(3X)*
 is_keypad/\fBcurs_opaque\fP(3X)*
 is_leaveok/\fBcurs_opaque\fP(3X)*
 is_linetouched/\fBcurs_touch\fP(3X)
+is_nl/\fBcurs_inopts\fP(3X)*
 is_nodelay/\fBcurs_opaque\fP(3X)*
 is_notimeout/\fBcurs_opaque\fP(3X)*
 is_pad/\fBcurs_opaque\fP(3X)*
+is_raw/\fBcurs_inopts\fP(3X)*
 is_scrollok/\fBcurs_opaque\fP(3X)*
 is_subwin/\fBcurs_opaque\fP(3X)*
 is_syncok/\fBcurs_opaque\fP(3X)*
@@ -594,7 +831,7 @@ notimeout/\fBcurs_inopts\fP(3X)
 overlay/\fBcurs_overlay\fP(3X)
 overwrite/\fBcurs_overlay\fP(3X)
 pair_content/\fBcurs_color\fP(3X)
-pecho_wchar/\fBcurs_pad\fP(3X)*
+pecho_wchar/\fBcurs_pad\fP(3X)
 pechochar/\fBcurs_pad\fP(3X)
 pnoutrefresh/\fBcurs_pad\fP(3X)
 prefresh/\fBcurs_pad\fP(3X)
@@ -623,6 +860,8 @@ scrl/\fBcurs_scroll\fP(3X)
 scroll/\fBcurs_scroll\fP(3X)
 scrollok/\fBcurs_outopts\fP(3X)
 set_curterm/\fBcurs_terminfo\fP(3X)
+set_escdelay/\fBcurs_threads\fP(3X)*
+set_tabsize/\fBcurs_threads\fP(3X)*
 set_term/\fBcurs_initscr\fP(3X)
 setcchar/\fBcurs_getcchar\fP(3X)
 setscrreg/\fBcurs_outopts\fP(3X)
@@ -644,7 +883,7 @@ slk_refresh/\fBcurs_slk\fP(3X)
 slk_restore/\fBcurs_slk\fP(3X)
 slk_set/\fBcurs_slk\fP(3X)
 slk_touch/\fBcurs_slk\fP(3X)
-slk_wset/\fBcurs_slk\fP(3X)*
+slk_wset/\fBcurs_slk\fP(3X)
 standend/\fBcurs_attr\fP(3X)
 standout/\fBcurs_attr\fP(3X)
 start_color/\fBcurs_color\fP(3X)
@@ -663,7 +902,9 @@ tigetflag/\fBcurs_terminfo\fP(3X)
 tigetnum/\fBcurs_terminfo\fP(3X)
 tigetstr/\fBcurs_terminfo\fP(3X)
 timeout/\fBcurs_inopts\fP(3X)
-tiparm/\fBcurs_terminfo\fP(3X)*
+tiparm/\fBcurs_terminfo\fP(3X)
+tiparm_s/\fBcurs_terminfo\fP(3X)*
+tiscan_s/\fBcurs_terminfo\fP(3X)*
 touchline/\fBcurs_touch\fP(3X)
 touchwin/\fBcurs_touch\fP(3X)
 tparm/\fBcurs_terminfo\fP(3X)
@@ -680,7 +921,9 @@ use_default_colors/\fBdefault_colors\fP(3X)*
 use_env/\fBcurs_util\fP(3X)
 use_extended_names/\fBcurs_extend\fP(3X)*
 use_legacy_coding/\fBlegacy_coding\fP(3X)*
+use_screen/\fBcurs_threads\fP(3X)*
 use_tioctl/\fBcurs_util\fP(3X)*
+use_window/\fBcurs_threads\fP(3X)*
 vid_attr/\fBcurs_terminfo\fP(3X)
 vid_puts/\fBcurs_terminfo\fP(3X)
 vidattr/\fBcurs_terminfo\fP(3X)
@@ -777,483 +1020,699 @@ wvline/\fBcurs_border\fP(3X)
 wvline_set/\fBcurs_border_set\fP(3X)
 .TE
 .PP
-Depending on the configuration,
-additional sets of functions may be available:
-.RS 3
-.TP 5
-\fBcurs_memleaks\fP(3X) - curses memory-leak checking
-.TP 5
-\fBcurs_sp_funcs\fP(3X) - curses screen-pointer extension
-.TP 5
-\fBcurs_threads\fP(3X) - curses thread support
-.TP 5
-\fBcurs_trace\fP(3X) - curses debugging routines
-.RE
+.IR \%ncurses 's
+.I "screen-pointer extension"
+adds additional functions corresponding to many of the above,
+each with an \*(``_sp\*('' suffix;
+see \fBcurs_sp_funcs\fP(3X).
+.PP
+The availability of some extensions is configurable when
+.I \%ncurses
+is compiled;
+see sections \*(``ALTERNATE CONFIGURATIONS\*('' and \*(``EXTENSIONS\*(''
+below.
 .SH RETURN VALUE
-Routines that return an integer return \fBERR\fP upon failure and an
-integer value other than \fBERR\fP upon successful completion, unless
-otherwise noted in the routine descriptions.
-.PP
-As a general rule, routines check for null pointers passed as parameters,
-and handle this as an error.
-.PP
-All macros return the value of the \fBw\fP version, except \fBsetscrreg\fP,
-\fBwsetscrreg\fP, \fBgetyx\fP, \fBgetbegyx\fP, and \fBgetmaxyx\fP.
-The return values of
-\fBsetscrreg\fP,
-\fBwsetscrreg\fP,
-\fBgetyx\fP,
-\fBgetbegyx\fP, and
-\fBgetmaxyx\fP are undefined (i.e., these should not be used as the
-right-hand side of assignment statements).
-.PP
-Functions with a \*(``mv\*('' prefix first perform a cursor movement using
-\fBwmove\fP, and return an error if the position is outside the window,
-or if the window pointer is null.
-Most \*(``mv\*(''-prefixed functions
-(except variadic functions such as \fBmvprintw\fP)
-are provided both as macros and functions.
-.PP
-Routines that return pointers return \fBNULL\fP on error.
+Unless otherwise noted,
+functions that return an integer return
+.B OK
+on success and
+.B ERR
+on failure.
+Functions that return pointers return
+.B NULL
+on failure.
+Typically,
+.I \%ncurses
+treats a null pointer passed as a function parameter as a failure.
+Functions prefixed with \*(``mv\*('' first perform cursor movement and
+fail if the position
+.RI ( y ,
+.IR x )
+is outside the window boundaries.
 .SH ENVIRONMENT
-.PP
-The following environment symbols are useful for customizing the
-runtime behavior of the \fBncurses\fP library.
-The most important ones have been already discussed in detail.
-.SS CC command-character
-.PP
-When set, change occurrences of the command_character
-(i.e., the \fBcmdch\fP capability)
-of the loaded terminfo entries to the value of this variable.
-Very few terminfo entries provide this feature.
+The following symbols from the process environment customize the
+runtime behavior of
+.I \%ncurses
+applications.
+The library may be configured to disregard the variables
+.IR \%TERMINFO ,
+.IR \%TERMINFO_DIRS ,
+.IR \%TERMPATH ,
+and
+.IR HOME ,
+if the user is the superuser (root),
+or the application uses \fI\%setuid\fP(2) or \fI\%setgid\fP(2).
+.SS "\fIBAUDRATE\fP"
+The debugging library checks this variable when the application has
+redirected output to a file.
+Its integral value is used for the baud rate.
+If that value is absent or invalid,
+.I \%ncurses
+uses 9600.
+This feature allows testers to construct repeatable test cases
+that take into account optimization decisions that depend on baud rate.
+.SS "\fICC\fP (command character)"
+When set,
+the
+.B \%command_character
+.RB ( \%cmdch )
+capability value of loaded
+.I \%term\%info
+entries changes to the value of this variable.
+Very few
+.I \%term\%info
+entries provide this feature.
 .PP
 Because this name is also used in development environments to represent
-the C compiler's name, \fBncurses\fP ignores it if it does not happen to
-be a single character.
-.SS BAUDRATE
-.PP
-The debugging library checks this environment variable when the application
-has redirected output to a file.
-The variable's numeric value is used for the baudrate.
-If no value is found, \fBncurses\fP uses 9600.
-This allows testers to construct repeatable test-cases
-that take into account costs that depend on baudrate.
-.SS COLUMNS
-.PP
-Specify the width of the screen in characters.
+the C compiler's name,
+.I \%ncurses
+ignores its value if it is not one character in length.
+.SS "\fICOLUMNS\fP"
+This variable specifies the width of the screen in characters.
 Applications running in a windowing environment usually are able to
 obtain the width of the window in which they are executing.
-If neither the \fBCOLUMNS\fP value nor the terminal's screen size is available,
-\fBncurses\fP uses the size which may be specified in the terminfo database
-(i.e., the \fBcols\fP capability).
-.PP
-It is important that your application use a correct size for the screen.
-This is not always possible because your application may be
-running on a host which does not honor NAWS (Negotiations About Window
-Size), or because you are temporarily running as another user.
-However, setting \fBCOLUMNS\fP and/or \fBLINES\fP overrides the library's
-use of the screen size obtained from the operating system.
-.PP
-Either \fBCOLUMNS\fP or \fBLINES\fP symbols may be specified independently.
-This is mainly useful to circumvent legacy misfeatures of terminal descriptions,
-e.g., xterm which commonly specifies a 65 line screen.
-For best results, \fBlines\fP and \fBcols\fP should not be specified in
-a terminal description for terminals which are run as emulations.
-.PP
-Use the \fBuse_env\fP function to disable all use of external environment
-(but not including system calls) to determine the screen size.
-Use the \fBuse_tioctl\fP function to update \fBCOLUMNS\fP or \fBLINES\fP
-to match the screen size obtained from system calls or the terminal database.
-.SS ESCDELAY
-.PP
-Specifies the total time, in milliseconds, for which ncurses will
-await a character sequence, e.g., a function key.
-The default value, 1000 milliseconds, is enough for most uses.
-However, it is made a variable to accommodate unusual applications.
+If
+.I \%COLUMNS
+is not defined and the terminal's screen size is not available from the
+terminal driver,
+.I \%ncurses
+uses the size specified by the
+.B \%columns
+.RB ( \%cols )
+capability of the terminal type's entry in the
+.I \%term\%info
+database,
+if any.
+.PP
+It is important that your application use the correct screen size.
+Automatic detection thereof is not always possible because an
+application may be running on a host that does not honor NAWS
+(Negotiations About Window Size)
+or as a different user ID than the owner of the terminal device file.
+Setting
+.I \%COLUMNS
+and/or
+.I \%LINES
+overrides the library's use of the screen size obtained from the
+operating system.
+.PP
+The
+.I \%COLUMNS
+and
+.I \%LINES
+variables may be specified independently.
+This property is useful to circumvent misfeatures of legacy terminal
+type descriptions;
+\fI\%xterm\fP(1) descriptions specifying 65 lines were once notorious.
+For best results,
+avoid specifying
+.B cols
+and
+.B lines
+capability codes in
+.I \%term\%info
+descriptions of terminal emulators.
+.PP
+\fBuse_env\fP(3X) can disable use of the process environment
+in determining the screen size.
+\fBuse_tioctl\fP(3X) can update
+.I \%COLUMNS
+and
+.I \%LINES
+to match the screen size obtained from system calls or the terminal
+database.
+.SS "\fIESCDELAY\fP"
+For
+.I curses
+to distinguish the ESC character resulting from a user's press of the
+\*(``Escape\*('' key on the input device from one beginning an
+.I "escape sequence"
+(as commonly produced by function keys),
+it waits after receiving the escape character to see if further
+characters are available on the input stream within a short interval.
+A global variable
+.B \%ESCDELAY
+stores this interval in milliseconds.
+The default value of 1000
+(one second)
+is adequate for most uses.
+This environment variable overrides it.
 .PP
 The most common instance where you may wish to change this value
-is to work with slow hosts, e.g., running on a network.
-If the host cannot read characters rapidly enough, it will have the same
-effect as if the terminal did not send characters rapidly enough.
-The library will still see a timeout.
-.PP
-Note that xterm mouse events are built up from character sequences
-received from the xterm.
-If your application makes heavy use of multiple-clicking, you may
-wish to lengthen this default value because the timeout applies
-to the composed multi-click event as well as the individual clicks.
-.PP
-In addition to the environment variable,
-this implementation provides a global variable with the same name.
-Portable applications should not rely upon the presence of ESCDELAY
+is to work with a remote host over a slow communication channel.
+If the host running a
+.I curses
+application does not receive the characters of an escape sequence in a
+timely manner,
+the library can interpret them as multiple key stroke events.
+.PP
+\fI\%xterm\fP(1) mouse events are a form of escape sequence;
+therefore,
+if your application makes heavy use of multiple-clicking,
+you may wish to lengthen the default value because the delay applies
+to the composite multi-click event as well as the individual clicks.
+.PP
+Portable applications should not rely upon the presence of
+.B \%ESCDELAY
 in either form,
 but setting the environment variable rather than the global variable
 does not create problems when compiling an application.
-.SS HOME
-Tells \fBncurses\fP where your home directory is.
-That is where it may read and write auxiliary terminal descriptions:
-.NS
-$HOME/.termcap
-$HOME/.terminfo
-.NE
-.SS LINES
-.PP
-Like COLUMNS, specify the height of the screen in characters.
-See COLUMNS for a detailed description.
-.SS MOUSE_BUTTONS_123
-.PP
-This applies only to the OS/2 EMX port.
-It specifies the order of buttons on the mouse.
-OS/2 numbers a 3-button mouse inconsistently from other
-platforms:
-.NS
-1 = left
-.br
-2 = right
-.br
-3 = middle.
-.NE
-.PP
-This variable lets you customize the mouse.
-The variable must be three numeric digits 1\-3 in any order, e.g., 123 or 321.
-If it is not specified, \fBncurses\fP uses 132.
-.SS NCURSES_ASSUMED_COLORS
-.PP
-Override the compiled-in assumption that the
-terminal's default colors are white-on-black
-(see \fBdefault_colors\fP(3X)).
-You may set the foreground and background color values with this environment
-variable by proving a 2-element list: foreground,background.
-For example, to tell ncurses to not assume anything
-about the colors, set this to "\-1,\-1".
-To make it green-on-black, set it to "2,0".
-Any positive value from zero to the terminfo \fBmax_colors\fP value is allowed.
-.SS NCURSES_CONSOLE2
-This applies only to the MinGW port of ncurses.
-.PP
-The \fBConsole2\fP program's handling of the Microsoft Console API call
-\fBCreateConsoleScreenBuffer\fP is defective.
-Applications which use this will hang.
-However, it is possible to simulate the action of this call by
-mapping coordinates,
-explicitly saving and restoring the original screen contents.
-Setting the environment variable \fBNCGDB\fP has the same effect.
-.SS NCURSES_GPM_TERMS
-.PP
-This applies only to ncurses configured to use the GPM interface.
-.PP
-If present,
-the environment variable is a list of one or more terminal names
-against which the \fBTERM\fP environment variable is matched.
-Setting it to an empty value disables the GPM interface;
-using the built-in support for xterm, etc.
 .PP
-If the environment variable is absent,
-ncurses will attempt to open GPM if \fBTERM\fP contains \*(``linux\*(''.
-.SS NCURSES_NO_HARD_TABS
-.PP
-\fBNcurses\fP may use tabs as part of the cursor movement optimization.
+If \fB\%keypad\fP(3X) is disabled for the
+.I curses
+window receiving input,
+a program must disambiguate escape sequences itself.
+.SS "\fIHOME\fP"
+.I \%ncurses
+may read and write auxiliary terminal descriptions in
+.I \%.termcap
+and
+.I \%.terminfo
+files in the user's home directory.
+.SS "\fILINES\fP"
+This counterpart to
+.I \%COLUMNS
+specifies the height of the screen in characters.
+The corresponding
+.I \%term\%info
+capability and code is
+.BR \%lines .
+See the description of the
+.I \%COLUMNS
+variable above.
+.SS "\fIMOUSE_BUTTONS_123\fP"
+(OS/2 EMX port only)
+OS/2 numbers a three-button mouse inconsistently with other platforms,
+such that 1 is the left button,
+2 the right,
+and 3 the middle.
+This variable customizes the mouse button numbering.
+Its value must be three digits 1\-3 in any order.
+By default,
+.I \%ncurses
+assumes a numbering of \*(``132\*(''.
+.SS "\fINCURSES_ASSUMED_COLORS\fP"
+If set,
+this variable overrides the
+.I \%ncurses
+library's compiled-in assumption that the terminal's default colors are
+white on black;
+see \fB\%default_colors\fP(3X).
+Set the foreground and background color values with this environment
+variable by assigning it two integer values separated by a comma,
+indicating foregound and background color numbers,
+respectively.
+.PP
+For example,
+to tell
+.I \%ncurses
+not to assume anything about the colors,
+use a value of \*(``\-1,\-1\*(''.
+To make the default color scheme green on black,
+use \*(``2,0\*(''.
+.I \%ncurses
+accepts integral values from \-1 up to the value of the
+.I \%term\%info
+.B \%max_colors
+.RB ( colors )
+capability.
+.SS "\fINCURSES_CONSOLE2\fP"
+(MinGW port only)
+The
+.I \%Console2
+.\" https://www.hanselman.com/blog/console2-a-better-windows-command-prompt
+program defectively handles the Microsoft Console API call
+.IR \%Create\%Console\%Screen\%Buffer .
+Applications that use it will hang.
+However,
+it is possible to simulate the action of this call by mapping
+coordinates,
+explicitly saving and restoring the original screen contents.
+Setting the environment variable
+.I \%NCGDB
+has the same effect.
+.SS "\fINCURSES_GPM_TERMS\fP"
+(Linux only)
+When
+.I \%ncurses
+is configured to use the GPM interface,
+this variable may list one or more terminal names
+against which the
+.I TERM
+variable
+(see below)
+is matched.
+An empty value disables the GPM interface,
+using
+.IR \%ncurses 's
+built-in support for \fIxterm\fP(1) mouse protocols instead.
+If the variable is absent,
+.I \%ncurses
+attempts to open GPM if
+.I TERM
+contains \*(``linux\*(''.
+.SS "\fINCURSES_NO_HARD_TABS\fP"
+.I \%ncurses
+may use tab characters in cursor movement optimization.
 In some cases,
-your terminal driver may not handle these properly.
-Set this environment variable to disable the feature.
-You can also adjust your \fBstty\fP(1) settings to avoid the problem.
-.SS NCURSES_NO_MAGIC_COOKIE
-.PP
-Some terminals use a magic-cookie feature which requires special handling
-to make highlighting and other video attributes display properly.
-You can suppress the highlighting entirely for these terminals by
-setting this environment variable.
-.SS NCURSES_NO_PADDING
-.PP
-Most of the terminal descriptions in the terminfo database are written
-for real \*(``hardware\*('' terminals.
-Many people use terminal emulators
-which run in a windowing environment and use curses-based applications.
-Terminal emulators can duplicate
-all of the important aspects of a hardware terminal, but they do not
-have the same limitations.
-The chief limitation of a hardware terminal from the standpoint
-of your application is the management of dataflow, i.e., timing.
+your terminal driver may not handle them properly.
+Set this environment variable to any value to disable the feature.
+You can also adjust your \fI\%stty\fP(1) settings to avoid the problem.
+.SS "\fINCURSES_NO_MAGIC_COOKIE\fP"
+Many terminals store video attributes as a property of a character cell,
+as
+.I curses
+does.
+Historically,
+some recorded changes in video attributes as data that logically
+.I occupies
+character cells on the display,
+switching attributes on or off,
+similarly to tags in a markup language;
+these are termed \*(``magic cookies\*('',
+and must be subsequently overprinted.
+If the
+.I \%term\%info
+entry for your terminal type does not adequately describe its handling
+of magic cookies,
+set this variable to any value to instruct
+.I \%ncurses
+to disable attributes entirely.
+.SS "\fINCURSES_NO_PADDING\fP"
+Most terminal type descriptions in the
+.I \%term\%info
+database detail hardware devices.
+Many people use
+.IR curses -based
+applications in terminal emulator programs that run in a windowing
+environment.
+These programs can duplicate all of the important features of a hardware
+terminal,
+but often lack their limitations.
+Chief among these absent drawbacks is the problem of data flow
+management;
+that is,
+limiting the speed of communication to what the hardware could handle.
 Unless a hardware terminal is interfaced into a terminal concentrator
 (which does flow control),
-it (or your application) must manage dataflow, preventing overruns.
-The cheapest solution (no hardware cost)
-is for your program to do this by pausing after
-operations that the terminal does slowly, such as clearing the display.
-.PP
-As a result, many terminal descriptions (including the vt100)
-have delay times embedded.
-You may wish to use these descriptions,
-but not want to pay the performance penalty.
-.PP
-Set the NCURSES_NO_PADDING environment variable to disable all but mandatory
-padding.
-Mandatory padding is used as a part of special control
-sequences such as \fBflash\fP.
-.SS NCURSES_NO_SETBUF
-This setting is obsolete.
-Before changes
-.RS 3
-.bP
-started with 5.9 patch 20120825
-and
-.bP
-continued
-though 5.9 patch 20130126
-.RE
-.PP
-\fBncurses\fP enabled buffered output during terminal initialization.
-This was done (as in SVr4 curses) for performance reasons.
-For testing purposes, both of \fBncurses\fP and certain applications,
+an application must manage flow control itself to prevent overruns and
+data loss.
+.PP
+A solution that comes at no hardware cost is for an application to pause
+after directing a terminal to execute an operation that it performs
+slowly,
+such as clearing the display.
+Many terminal type descriptions,
+including that for the VT100,
+embed delay specifications in capabilities.
+You may wish to use these terminal descriptions without paying the
+performance penalty.
+Set
+.I \%NCURSES_NO_PADDING
+to any value to disable all but mandatory padding.
+Mandatory padding is used by such terminal capabilities as
+.B \%flash_screen
+.RB ( flash ).
+.SS "\fINCURSES_NO_SETBUF\fP"
+(Obsolete)
+Prior to internal changes developed in
+.I \%ncurses
+5.9
+(patches 20120825 through 20130126),
+the library used \fI\%setbuf\fP(3) to enable fully buffered output when
+initializing the terminal.
+This was done,
+as in SVr4
+.IR curses ,
+to increase performance.
+For testing purposes,
+both of
+.I \%ncurses
+and of certain applications,
 this feature was made optional.
-Setting the NCURSES_NO_SETBUF variable
-disabled output buffering, leaving the output in the original (usually
-line buffered) mode.
-.PP
-In the current implementation,
-ncurses performs its own buffering and does not require this workaround.
-It does not modify the buffering of the standard output.
-.PP
-The reason for the change was to make the behavior for interrupts and
-other signals more robust.
-One drawback is that certain nonconventional programs would mix
-ordinary stdio calls with ncurses calls and (usually) work.
-This is no longer possible since ncurses is not using
-the buffered standard output but its own output (to the same file descriptor).
-As a special case, the low-level calls such as \fBputp\fP still use the
-standard output.
-But high-level curses calls do not.
-.SS NCURSES_NO_UTF8_ACS
-.PP
-During initialization, the \fBncurses\fP library
-checks for special cases where VT100 line-drawing (and the corresponding
-alternate character set capabilities) described in the terminfo are known
-to be missing.
-Specifically, when running in a UTF\-8 locale,
-the Linux console emulator and the GNU screen program ignore these.
-Ncurses checks the \fBTERM\fP environment variable for these.
-For other special cases, you should set this environment variable.
-Doing this tells ncurses to use Unicode values which correspond to
-the VT100 line-drawing glyphs.
-That works for the special cases cited,
-and is likely to work for terminal emulators.
-.PP
-When setting this variable, you should set it to a nonzero value.
-Setting it to zero (or to a nonnumber)
-disables the special check for \*(``linux\*('' and \*(``screen\*(''.
-.PP
-As an alternative to the environment variable,
-ncurses checks for an extended terminfo capability \fBU8\fP.
-This is a numeric capability which can be compiled using \fB@TIC@\ \-x\fP.
-For example
+Setting this variable disabled output buffering,
+leaving the output stream in the original
+(usually line-buffered)
+mode.
+.PP
+Nowadays,
+.I \%ncurses
+performs its own buffering and does not require this workaround;
+it does not modify the buffering of the standard output stream.
+This approach makes signal handling,
+as for interrupts,
+more robust.
+A drawback is that certain unconventional programs mixed
+\fI\%stdio\fP(3) calls with
+.I \%ncurses
+calls and (usually)
+got the behavior they expected.
+This is no longer the case;
+.I \%ncurses
+does not write to the standard output file descriptor through a
+.IR stdio -buffered
+stream.
+.PP
+As a special case,
+low-level API calls such as \fB\%putp\fP(3X) still use the
+standard output stream.
+High-level
+.I curses
+calls such as \fB\%printw\fP(3X) do not.
+.SS "\fINCURSES_NO_UTF8_ACS\fP"
+At initialization,
+.I \%ncurses
+inspects the
+.I TERM
+environment variable for special cases where VT100 forms-drawing
+characters
+(and the corresponding alternate character set
+.I \%term\%info
+capabilities)
+are known to be unsupported by terminal types that otherwise claim VT100
+compatibility.
+Specifically,
+when running in a UTF-8 locale,
+the Linux virtual console device and the GNU \fI\%screen\fP(1)
+program ignore them.
+Set this variable to a nonzero value to instruct
+.I \%ncurses
+that the terminal's ACS support is broken;
+the library then outputs Unicode code points that correspond to the
+forms-drawing
+characters.
+Set it to zero
+(or a non-integer)
+to disable the special check for terminal type names matching
+\*(``linux\*('' or \*(``screen\*('',
+directing
+.I \%ncurses
+to assume that the ACS feature works if the terminal type description
+advertises it.
+.PP
+As an alternative to use of this variable,
+.I \%ncurses
+checks for an extended
+.I \%term\%info
+numeric capability \fBU8\fP
+that can be compiled using
+.RB \*(`` "@TIC@ \-x" \*(''.
+Examples follow.
+.PP
 .RS 3
-.ft CW
-.sp
-.nf
+.EX
 # linux console, if patched to provide working
-# VT100 shift-in/shift-out, with corresponding font.
-linux-vt100|linux console with VT100 line-graphics,
+# VT100 shift\-in/shift\-out, with corresponding font.
+linux\-vt100|linux console with VT100 line\-graphics,
         U8#0, use=linux,
-.sp
+\&
 # uxterm with vt100Graphics resource set to false
-xterm-utf8|xterm relying on UTF-8 line-graphics,
+xterm\-utf8|xterm relying on UTF\-8 line\-graphics,
         U8#1, use=xterm,
-.fi
-.ft
+.EE
 .RE
 .PP
-The name \*(``U8\*('' is chosen to be two characters,
-to permit it to be used by applications that use ncurses'
-termcap interface.
-.SS NCURSES_TRACE
-.PP
-During initialization, the \fBncurses\fP debugging library
-checks the NCURSES_TRACE environment variable.
-If it is defined, to a numeric value, \fBncurses\fP calls the \fBtrace\fP
-function, using that value as the argument.
-.PP
-The argument values, which are defined in \fBcurses.h\fP, provide several
-types of information.
-When running with traces enabled, your application will write the
-file \fBtrace\fP to the current directory.
-.PP
-See \fBcurs_trace\fP(3X) for more information.
-.SS TERM
-.PP
-Denotes your terminal type.
-Each terminal type is distinct, though many are similar.
-.PP
-\fBTERM\fP is commonly set by terminal emulators to help
-applications find a workable terminal description.
-Some of those choose a popular approximation, e.g.,
-\*(``ansi\*('', \*(``vt100\*('', \*(``xterm\*('' rather than an exact fit.
-Not infrequently, your application will have problems with that approach,
-e.g., incorrect function-key definitions.
-.PP
-If you set \fBTERM\fP in your environment,
-it has no effect on the operation of the terminal emulator.
-It only affects the way applications work within the terminal.
-Likewise, as a general rule (\fBxterm\fP(1) being a rare exception),
-terminal emulators which allow you to
-specify \fBTERM\fP as a parameter or configuration value do
-not change their behavior to match that setting.
-.SS TERMCAP
-If the \fBncurses\fP library has been configured with \fItermcap\fP
-support, \fBncurses\fP will check for a terminal's description in
-termcap form if it is not available in the terminfo database.
-.PP
-The \fBTERMCAP\fP environment variable contains
-either a terminal description (with newlines stripped out),
-or a file name telling where the information denoted by
-the \fBTERM\fP environment variable exists.
-In either case, setting it directs \fBncurses\fP to ignore
-the usual place for this information, e.g., /etc/termcap.
-.SS TERMINFO
-.PP
-\fBncurses\fP can be configured to read from multiple terminal databases.
-The \fBTERMINFO\fP variable overrides the location for
-the default terminal database.
-Terminal descriptions (in terminal format) are stored in terminal databases:
+The two-character name \*(``U8\*('' was chosen to permit its use via
+.IR \%ncurses 's
+.I termcap
+interface.
+.SS "\fINCURSES_TRACE\fP"
+At initialization,
+.I \%ncurses
+(in its debugging configuration)
+checks for this variable's presence.
+If defined with an integral value,
+the library calls \fB\%curses_trace\fP(3X) with that value as the
+argument.
+.SS "\fITERM\fP"
+The
+.I TERM
+variable denotes the terminal type.
+Each is distinct,
+though many are similar.
+It is commonly set by terminal emulators to help applications find a
+workable terminal description.
+Some choose a popular approximation such as \*(``ansi\*('',
+\*(``vt100\*('', or \*(``xterm\*('' rather than an exact fit to their
+capabilities.
+Not infrequently,
+an application will have problems with that approach;
+for example,
+a key stroke may not operate correctly,
+or produce no effect but seeming garbage characters on the screen.
+.PP
+Setting
+.I TERM
+has no effect on hardware operation;
+it affects the way applications communicate with the terminal.
+Likewise,
+as a general rule
+(\fIxterm\fP(1) being a rare exception),
+terminal emulators that allow you to specify
+.I TERM
+as a parameter or configuration value do not change their behavior to
+match that setting.
+.SS "\fITERMCAP\fP"
+If
+.I \%ncurses
+is configured with
+.I termcap
+support,
+it checks for a terminal type description in
+.I termcap
+format if one in
+.I \%term\%info
+format is not available.
+Setting this variable directs
+.I \%ncurses
+to ignore the usual
+.I termcap
+database location,
+.IR \%/etc/termcap ;
+see
+.I \%TERMPATH
+below.
+.I \%TERMCAP
+should contain either a terminal description
+(with newlines stripped out),
+or a file name indicating where the information required by the
+.I TERM
+environment variable is stored.
+.SS "\fITERMINFO\fP"
+.I \%ncurses
+can be configured to read terminal type description databases in various
+locations using different formats.
+This variable overrides the default location.
 .bP
-Normally these are stored in a directory tree,
-using subdirectories named by the first letter of the terminal names therein.
-.IP
-This is the scheme used in System V, which legacy Unix systems use,
-and the \fBTERMINFO\fP variable is used by \fIcurses\fP applications on those
-systems to override the default location of the terminal database.
+Descriptions in
+.I \%term\%info
+format are normally stored in a directory tree using subdirectories
+named by the common first letters of the terminal types named therein.
+This is the scheme used in System\ V.
 .bP
-If \fBncurses\fP is built to use hashed databases,
-then each entry in this list may be the path of a hashed database file, e.g.,
-.NS
-/usr/share/terminfo.db
-.NE
-.IP
+If
+.I \%ncurses
+is configured to use hashed databases,
+then
+.I \%TERM\%INFO
+may name its location,
+such as
+.IR \%/usr/share/terminfo.db ,
 rather than
-.NS
-/usr/share/terminfo/
-.NE
-.IP
-The hashed database uses less disk-space and is a little faster than the
+.IR \%/usr/share/terminfo/ .
+.PP
+The hashed database uses less disk space and is a little faster than the
 directory tree.
 However,
 some applications assume the existence of the directory tree,
-reading it directly
-rather than using the terminfo library calls.
+and read it directly
+rather than using the
+.I \%term\%info
+API.
 .bP
-If \fBncurses\fP is built with a support for reading termcap files
-directly, then an entry in this list may be the path of a termcap file.
+If
+.I \%ncurses
+is configured with
+.I termcap
+support,
+this variable may contain the location of a
+.I \%termcap
+file.
 .bP
-If the \fBTERMINFO\fP variable begins with
-\*(``hex:\*('' or \*(``b64:\*('',
-\fBncurses\fP uses the remainder of that variable as a compiled terminal
+If the value of
+.I \%TERM\%INFO
+begins with \*(``hex:\*('' or \*(``b64:\*('',
+.I \%ncurses
+uses the remainder of the value as a compiled
+.I \%term\%info
 description.
-You might produce the base64 format using \fBinfocmp\fP(1M):
-.NS
-TERMINFO="$(infocmp -0 -Q2 -q)"
+You might produce the base64 format using \fB\%infocmp\fP(1M).
+.RS 4
+.IP
+.EX
+TERMINFO=$(infocmp \-0 \-Q2 \-q)
 export TERMINFO
-.NE
+.EE
+.RE
 .IP
-The compiled description is used if it corresponds to the terminal identified
-by the \fBTERM\fP variable.
-.PP
-Setting \fBTERMINFO\fP is the simplest,
-but not the only way to set location of the default terminal database.
-The complete list of database locations in order follows:
-.RS 3
+The compiled description is used only if it corresponds to the terminal
+type identified by
+.IR TERM .
+.PP
+Setting
+.I \%TERM\%INFO
+is the simplest,
+but not the only,
+way to direct
+.I \%ncurses
+to a terminal database.
+The search path is as follows.
 .bP
-the last terminal database to which \fBncurses\fP wrote,
-if any, is searched first
+the last terminal database to which the running
+.I \%ncurses
+application wrote,
+if any
 .bP
-the location specified by the TERMINFO environment variable
+the location specified by the
+.I \%TERM\%INFO
+environment variable
 .bP
-$HOME/.terminfo
+.I $HOME/.terminfo
 .bP
-locations listed in the TERMINFO_DIRS environment variable
+locations listed in the
+.I \%TERMINFO_DIRS
+environment variable
+.ds td \" empty
+.if !'@TERMINFO_DIRS@'no default value' .as td @TERMINFO_DIRS@
+.if !'@TERMINFO@\*(td'' \{\
 .bP
-one or more locations whose names are configured and compiled into the
-ncurses library, i.e.,
+location(s) configured and compiled into
+.I \%ncurses
 .RS 3
+.if !'\*(td'' \{\
 .bP
-@TERMINFO_DIRS@ (corresponding to the TERMINFO_DIRS variable)
+.I \%@TERMINFO_DIRS@
+.\}
+.if !'@TERMINFO'' .if !'\*(td'@TERMINFO@' \{\
 .bP
-@TERMINFO@ (corresponding to the TERMINFO variable)
+.I \%@TERMINFO@
+.\}
+.\}
 .RE
-.RE
-.PP
-.SS TERMINFO_DIRS
-.PP
-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 \fBTERMINFO\fP variable.
-The list is separated by colons (i.e., ":") on Unix, semicolons on OS/2 EMX.
-.PP
-There is no corresponding feature in System V terminfo;
-it is an extension developed for \fBncurses\fP.
-.SS TERMPATH
-.PP
-If \fBTERMCAP\fP does not hold a file name then \fBncurses\fP checks
-the \fBTERMPATH\fP environment variable.
-This is a list of filenames separated by spaces or colons (i.e., ":") on Unix,
-semicolons on OS/2 EMX.
-.PP
-If the \fBTERMPATH\fP environment variable is not set,
-\fBncurses\fP looks in the files
-.NS
-/etc/termcap, /usr/share/misc/termcap and $HOME/.termcap,
-.NE
-.PP
+.SS "\fITERMINFO_DIRS\fP"
+This variable specifies a list of locations,
+akin to
+.IR PATH ,
+in which
+.I \%ncurses
+searches for the terminal type descriptions described by
+.I \%TERMINFO
+above.
+The list items are separated by colons on Unix
+and semicolons on OS/2 EMX.
+System\ V
+.I \%term\%info
+lacks a corresponding feature;
+.I \%TERMINFO_DIRS
+is an
+.I \%ncurses
+extension.
+.SS "\fITERMPATH\fP"
+If
+.I \%TERMCAP
+does not hold a terminal type description or file name,
+then
+.I \%ncurses
+checks the contents of
+.IR \%TERMPATH ,
+a list of locations,
+akin to
+.IR PATH ,
+in which it searches for
+.I termcap
+terminal type descriptions.
+The list items are separated by colons on Unix
+and semicolons on OS/2 EMX.
+.PP
+If both
+.I \%TERMCAP
+and
+.I \%TERMPATH
+are unset or invalid,
+.I \%ncurses
+searches for the files
+.IR \%/etc/termcap ,
+.IR \%/usr/share/misc/termcap ,
+and
+.IR \%$HOME/.termcap ,
 in that order.
-.PP
-The library may be configured to disregard the following variables when the
-current user is the superuser (root), or if the application uses setuid or
-setgid permissions:
-.NS
-$TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
-.NE
-.SH ALTERNATE CONFIGURATIONS
-.PP
-Several different configurations are possible,
-depending on the configure script options used when building \fBncurses\fP.
-There are a few main options whose effects are visible to the applications
-developer using \fBncurses\fP:
+.SH "ALTERNATE CONFIGURATIONS"
+Many different
+.I \%ncurses
+configurations are possible,
+determined by the options given to the
+.I \%configure
+script when building the library.
+Run the script with the
+.B \-\-help
+option to peruse them all.
+A few are of particular significance to the application developer
+employing
+.IR \%ncurses .
 .TP 5
-\-\-disable\-overwrite
-The standard include for \fBncurses\fP is as noted in \fBSYNOPSIS\fP:
-.NS
+.B \-\-disable\-overwrite
+The standard include for \fI\%ncurses\fP is as noted in \fBSYNOPSIS\fP:
+.RS 5
+.PP
+.RS 4
+.EX
 \fB#include <curses.h>\fP
-.NE
-.IP
-This option is used to avoid filename conflicts when \fBncurses\fP
+.EE
+.RE
+.PP
+This option is used to avoid filename conflicts when \fI\%ncurses\fP
 is not the main implementation of curses of the computer.
-If \fBncurses\fP is installed disabling overwrite, it puts its headers in
-a subdirectory, e.g.,
-.NS
+If \fI\%ncurses\fP is installed disabling overwrite,
+it puts its headers in a subdirectory,
+e.g.,
+.PP
+.RS 4
+.EX
 \fB#include <ncurses/curses.h>\fP
-.NE
-.IP
+.EE
+.RE
+.PP
 It also omits a symbolic link which would allow you to use \fB\-lcurses\fP
 to build executables.
+.RE
 .TP 5
-\-\-enable\-widec
+.B \-\-enable\-widec
 The configure script renames the library and
 (if the \fB\-\-disable\-overwrite\fP option is used)
 puts the header files in a different subdirectory.
 All of the library names have a \*(``w\*('' appended to them,
 i.e., instead of
-.NS
+.RS 5
+.PP
+.RS 4
+.EX
 \fB\-lncurses\fP
-.NE
-.IP
+.EE
+.RE
+.PP
 you link with
-.NS
+.PP
+.RS 4
+.EX
 \fB\-lncursesw\fP
-.NE
-.IP
+.EE
+.RE
+.PP
 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:
-.RS
+The symbol which enables these features has changed
+since X/Open Curses, Issue 4:
 .bP
 Originally, the wide-character feature required the symbol
 \fB_XOPEN_SOURCE_EXTENDED\fP
@@ -1270,19 +1729,19 @@ Alternatively, you can enable the feature by defining \fBNCURSES_WIDECHAR\fP
 with the caveat that some other header file than \fBcurses.h\fP
 may require a specific value for \fB_XOPEN_SOURCE\fP
 (or a system-specific symbol).
-.RE
-.IP
-The \fBcurses.h\fP 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 \fBWINDOW\fP structure differs, and very few
-applications require more than a pointer to \fBWINDOW\fPs.
-.IP
+.PP
+The \fI\%curses.h\fP header file installed for the wide-character
+library is designed to be compatible with the non-wide library's header.
+Only the size of the \fI\%WINDOW\fP structure differs;
+few applications require more than pointers to \fI\%WINDOW\fPs.
+.PP
 If the headers are installed allowing overwrite,
 the wide-character library's headers should be installed last,
 to allow applications to be built using either library
 from the same set of headers.
+.RE
 .TP 5
-\-\-with\-pthread
+.B \-\-with\-pthread
 The configure script renames the library.
 All of the library names have a \*(``t\*('' appended to them
 (before any \*(``w\*('' added by \fB\-\-enable\-widec\fP).
@@ -1292,20 +1751,20 @@ allow read-only access.
 At the same time, setter-functions are provided to set these values.
 Some applications (very few) may require changes to work with this convention.
 .TP 5
-\-\-with\-shared
-.TP
-\-\-with\-normal
-.TP
-\-\-with\-debug
-.TP
-\-\-with\-profile
+.B \-\-with\-shared
+.tQ
+.B \-\-with\-normal
+.tQ
+.B \-\-with\-debug
+.tQ
+.B \-\-with\-profile
 The shared and normal (static) library names differ by their suffixes,
 e.g., \fBlibncurses.so\fP and \fBlibncurses.a\fP.
 The debug and profiling libraries add a \*(``_g\*(''
 and a \*(``_p\*('' to the root names respectively,
 e.g., \fBlibncurses_g.a\fP and \fBlibncurses_p.a\fP.
 .TP 5
-\-\-with\-termlib
+.B \-\-with\-termlib
 Low-level functions which do not depend upon whether the library
 supports wide-characters, are provided in the tinfo library.
 .IP
@@ -1316,242 +1775,487 @@ when only low-level functions are needed.
 Those functions are described in these pages:
 .RS
 .bP
-\fBcurs_extend\fP(3X) \- miscellaneous curses extensions
+\fB\%curs_extend\fP(3X) \- miscellaneous \fIcurses\fP extensions
 .bP
-\fBcurs_inopts\fP(3X) \- \fBcurses\fP input options
+\fB\%curs_inopts\fP(3X) \- \fIcurses\fP input options
 .bP
-\fBcurs_kernel\fP(3X) \- low-level \fBcurses\fP routines
+\fB\%curs_kernel\fP(3X) \- low-level \fIcurses\fP routines
 .bP
-\fBcurs_termattrs\fP(3X) \- \fBcurses\fP environment query routines
+\fB\%curs_termattrs\fP(3X) \- \fIcurses\fP environment query routines
 .bP
-\fBcurs_termcap\fP(3X) \- \fBcurses\fP emulation of termcap
+\fB\%curs_termcap\fP(3X) \- \fIcurses\fP emulation of \fItermcap\fP
 .bP
-\fBcurs_terminfo\fP(3X) \- \fBcurses\fP interfaces to terminfo database
+\fB\%curs_terminfo\fP(3X) \- \fIcurses\fP interface to \fIterminfo\fP
+database
 .bP
-\fBcurs_util\fP(3X) \- miscellaneous \fBcurses\fP utility routines
+\fB\%curs_util\fP(3X) \- miscellaneous \fIcurses\fP utility routines
 .RE
 .TP 5
-\-\-with\-trace
+.B \-\-with\-trace
 The \fBtrace\fP function normally resides in the debug library,
 but it is sometimes useful to configure this in the shared library.
 Configure scripts should check for the function's existence rather
 than assuming it is always in the debug library.
 .SH FILES
-.TP 5
-@DATADIR@/tabset
-directory containing initialization files for the terminal capability database
-@TERMINFO@
-terminal capability database
-.SH SEE ALSO
-\fBterminfo\fP(\*n) and related pages whose names begin
-\*(``curs_\*('' for detailed routine descriptions.
-.br
-\fBcurs_variables\fP(3X)
-.br
-\fBuser_caps\fP(5) for user-defined capabilities
-.SH EXTENSIONS
-The \fBncurses\fP library can be compiled with an option (\fB\-DUSE_GETCAP\fP)
-that falls back to the old-style /etc/termcap file if the terminal setup code
-cannot find a terminfo entry corresponding to \fBTERM\fP.
-Use of this feature
-is not recommended, as it essentially includes an entire termcap compiler in
-the \fBncurses\fP startup code, at significant cost in core and startup cycles.
-.PP
-The \fBncurses\fP library includes facilities for capturing mouse events on
-certain terminals (including xterm).
-See the \fBcurs_mouse\fP(3X)
-manual page for details.
-.PP
-The \fBncurses\fP library includes facilities for responding to window
-resizing events, e.g., when running in an xterm.
-See the \fBresizeterm\fP(3X)
-and \fBwresize\fP(3X) manual pages for details.
-In addition, the library may be configured with a \fBSIGWINCH\fP handler.
-.PP
-The \fBncurses\fP library extends the fixed set of function key capabilities
-of terminals by allowing the application designer to define additional
-key sequences at runtime.
-See the \fBdefine_key\fP(3X)
-\fBkey_defined\fP(3X),
-and \fBkeyok\fP(3X) manual pages for details.
-.PP
-The \fBncurses\fP library can exploit the capabilities of terminals which
-implement the ISO\-6429 SGR 39 and SGR 49 controls, which allow an application
-to reset the terminal to its original foreground and background colors.
-From the users' perspective, the application is able to draw colored
-text on a background whose color is set independently, providing better
-control over color contrasts.
-See the \fBdefault_colors\fP(3X) manual page for details.
-.PP
-The \fBncurses\fP library includes a function for directing application output
-to a printer attached to the terminal device.
-See the \fBcurs_print\fP(3X) manual page for details.
-.SH PORTABILITY
-The \fBncurses\fP library is intended to be BASE-level conformant with XSI
-Curses.
-The EXTENDED XSI Curses functionality
-(including color support) is supported.
-.PP
-A small number of local differences (that is, individual differences between
-the XSI Curses and \fBncurses\fP calls) are described in \fBPORTABILITY\fP
-sections of the library man pages.
-.SS Error checking
-.PP
-In many cases, X/Open Curses is vague about error conditions,
-omitting some of the SVr4 documentation.
-.PP
-Unlike other implementations, this one checks parameters such as pointers
-to WINDOW structures to ensure they are not null.
-The main reason for providing this behavior is to guard against programmer
-error.
-The standard interface does not provide a way for the library
-to tell an application which of several possible errors were detected.
-Relying on this (or some other) extension will adversely affect the
-portability of curses applications.
-.SS Extensions versus portability
-.PP
-Most of the extensions provided by ncurses have not been standardized.
-Some have been incorporated into other implementations, such as
-PDCurses or NetBSD curses.
-Here are a few to consider:
+.TP
+.I @DATADIR@/tabset
+tab stop initialization database
+.TP
+.I \*d
+compiled terminal capability database
+.SH NOTES
+X/Open Curses permits most functions it specifies to be made available
+as macros as well.
+.\" See X/Open Curses Issue 4, Version 2, pp. 227-234.
+.\" See X/Open Curses Issue 7, pp. 311-318.
+\fI\%ncurses\fP does so
 .bP
-The routine \fBhas_key\fP is not part of XPG4, nor is it present in SVr4.
-See the \fBcurs_getch\fP(3X) manual page for details.
+for functions that return values via their parameters,
 .bP
-The routine \fBslk_attr\fP is not part of XPG4, nor is it present in SVr4.
-See the \fBcurs_slk\fP(3X) manual page for details.
+to support obsolete features,
+.bP
+to reuse functions
+(for example,
+those that move the cursor before another operation),
+and
 .bP
-The routines \fBgetmouse\fP, \fBmousemask\fP, \fBungetmouse\fP,
-\fBmouseinterval\fP, and \fBwenclose\fP relating to mouse interfacing are not
-part of XPG4, nor are they present in SVr4.
-See the \fBcurs_mouse\fP(3X) manual page for details.
+a few special cases.
+.PP
+If the standard output file descriptor of an
+.I \%ncurses
+program is redirected to something that is not a terminal device,
+the library writes screen updates to the standard error file descriptor.
+This was an undocumented feature of SVr3
+.IR curses .
+.PP
+See subsection \*(``Header Files\*('' below regarding symbols exposed by
+inclusion of \fI\%curses.h\fP.
+.SH EXTENSIONS
+.I \%ncurses
+enables an application to capture mouse events on certain terminals,
+including \fI\%xterm\fP(1);
+see \fB\%curs_mouse\fP(3X).
+.PP
+.I \%ncurses
+provides a means of responding to window resizing events,
+as when running in a GUI terminal emulator application such as
+.IR \%xterm ;
+see \fB\%resizeterm\fP(3X) and \fB\%wresize\fP(3X).
+.PP
+.I \%ncurses
+allows an application to query the terminal for the presence of a wide
+variety of special keys;
+see \fB\%has_key\fP(3X).
+.PP
+.I \%ncurses
+extends the fixed set of function key capabilities specified by X/Open
+Curses by allowing the application programmer to define additional key
+events at runtime;
+see
+\fB\%define_key\fP(3X),
+\fB\%key_defined\fP(3X),
+\fB\%keybound\fP(3X),
+and
+\fB\%keyok\fP(3X).
+.PP
+.I \%ncurses
+can exploit the capabilities of terminals implementing ISO\ 6429/ECMA-48
+SGR\ 39 and SGR\ 49 sequences,
+which allow an application to reset the terminal to its original
+foreground and background colors.
+From a user's perspective,
+the application is able to draw colored text on a background whose color
+is set independently,
+providing better control over color contrasts.
+See \fB\%default_colors\fP(3X).
+.PP
+An
+.I \%ncurses
+application can eschew knowledge of
+.I \%WINDOW
+structure internals,
+instead using accessor functions such as
+\fB\%is_scrollok\fP(3X).
+.PP
+.I \%ncurses
+enables an application to direct application output to a printer
+attached to the terminal device;
+see \fB\%curs_print\fP(3X).
+.PP
+.I \%ncurses
+offers \fB\%slk_attr\fP(3X) as a counterpart of \fB\%attr_get\fP(3X) for
+soft-label key lines,
+and \fB\%extended_slk_color\fP(3X) as a form of \fB\%slk_color\fP(3X)
+that can gather color information from them when many colors are
+supported.
+.PP
+Some extensions are available only if
+.I \%ncurses
+permits modification of \fB\%unctrl\fP(3X)'s behavior;
+see \fB\%use_legacy_coding\fP(3X).
+.I \%ncurses
+is compiled to support them;
+section \*(``ALTERNATE CONFIGURATIONS\*('' describes how.
 .bP
-The routine \fBmcprint\fP was not present in any previous curses implementation.
-See the \fBcurs_print\fP(3X) manual page for details.
+Rudimentary support for multi-threaded applications may be available;
+see \fBcurs_threads\fP(3X).
 .bP
-The routine \fBwresize\fP is not part of XPG4, nor is it present in SVr4.
-See the \fBwresize\fP(3X) manual page for details.
+Functions that ease the management of multiple screens can be exposed;
+see \fBcurs_sp_funcs\fP(3X).
 .bP
-The WINDOW structure's internal details can be hidden from application
-programs.
-See \fBcurs_opaque\fP(3X) for the discussion of \fBis_scrollok\fP, etc.
+To aid applications to debug their memory usage,
+.I ncurses
+optionally offers functions to more aggressively free memory it
+dynamically allocates itself;
+see \fBcurs_memleaks\fP(3X).
 .bP
-This implementation can be configured to provide rudimentary support
-for multi-threaded applications.
-See \fBcurs_threads\fP(3X) for details.
+The library facilitates auditing and troubleshooting of its behavior;
+see \fBcurs_trace\fP(3X).
 .bP
-This implementation can also be configured to provide a set of functions which
-improve the ability to manage multiple screens.
-See \fBcurs_sp_funcs\fP(3X) for details.
-.SS Padding differences
-.PP
-In historic curses versions, delays embedded in the capabilities \fBcr\fP,
-\fBind\fP, \fBcub1\fP, \fBff\fP and \fBtab\fP activated corresponding delay
-bits in the UNIX tty driver.
-In this implementation, all padding is done by sending NUL bytes.
-This method is slightly more expensive, but narrows the interface
-to the UNIX kernel significantly and increases the package's portability
-correspondingly.
-.SS Header files
-The header file \fB<curses.h>\fP automatically includes the header files
-\fB<stdio.h>\fP and \fB<unctrl.h>\fP.
+The compiler option
+.B \%\-DUSE_GETCAP
+causes the library to fall back to reading
+.I \%/etc/termcap
+if the terminal setup code cannot find a
+.I \%term\%info
+entry corresponding to
+.IR TERM .
+Use of this feature is not recommended,
+as it essentially includes an entire
+.I termcap
+compiler in the
+.I \%ncurses
+startup code,
+at a cost in memory usage and application launch latency.
+.PP
+.I \%PDCurses
+and NetBSD
+.I curses
+incorporate some
+.I \%ncurses
+extensions.
+Individual man pages indicate where this is the case.
+.SH PORTABILITY
+X/Open Curses defines two levels of conformance,
+\*(``base\*('' and \*(``enhanced\*(''.
+The latter includes several additional features,
+such as wide-character and color support.
+.I \%ncurses
+intends base-level conformance with X/Open Curses,
+and supports all features of its enhanced level
+except the \fB\%untic\fP utility.
+.PP
+Differences between X/Open Curses and
+.I \%ncurses
+are documented in the \*(``PORTABILITY\*('' sections of applicable man
+pages.
+.SS "Error Checking"
+In many cases, X/Open Curses is vague about error conditions,
+omitting some of the SVr4 documentation.
+.PP
+Unlike other implementations,
+.I \%ncurses
+checks pointer parameters,
+such as those to
+.I \%WINDOW
+structures,
+to ensure that they are not null.
+This is done primarily to guard against programmer error.
+The standard interface does not provide a way for the library
+to tell an application which of several possible errors occurred.
+Relying on this
+(or some other)
+extension adversely affects the portability of
+.I curses
+applications.
+.SS "Padding Differences"
+In historical
+.I curses
+implementations,
+delays embedded in the
+.I \%term\%info
+capabilities
+.B \%carriage_return
+.RB ( cr ),
+.B \%scroll_forward
+.RB ( ind ),
+.B \%cursor_left
+.RB ( cub1 ),
+.B \%form_feed
+.RB ( ff ),
+and
+.B \%tab
+.RB ( ht )
+activated corresponding delay bits in the Unix terminal driver.
+.I \%ncurses
+performs all padding by sending NUL bytes to the device.
+This method is slightly more expensive,
+but narrows the interface to the Unix kernel significantly and
+correspondingly increases the package's portability.
+.SS "Header Files"
+The header file
+.I \%curses.h
+itself includes the header files
+.I \%stdio.h
+and
+.IR \%unctrl.h .
 .PP
 X/Open Curses has more to say,
-but does not finish the story:
 .RS 4
 .PP
-The inclusion of <curses.h> may make visible all symbols
-from the headers <stdio.h>, <term.h>, <termios.h>, and <wchar.h>.
+The inclusion of
+.I \%curses.h
+may make visible all symbols from the headers
+.IR \%stdio.h ,
+.IR \%term.h ,
+.IR \%termios.h ,
+and
+.IR \%wchar.h .
 .RE
 .PP
-Here is a more complete story:
+but does not finish the story.
+A more complete account follows.
 .bP
-Starting with BSD curses, all implementations have included <stdio.h>.
+Starting with 4BSD
+.I curses
+(1980)
+all implementations have provided a
+.I \%curses.h
+file.
 .IP
-BSD curses included <curses.h> and <unctrl.h> from an internal header
-"curses.ext" ("ext" was a short name for \fIexterns\fP).
+BSD
+.I curses
+code included
+.I \%curses.h
+and
+.I \%unctrl.h
+from an internal header file
+.IR \%curses.ext ,
+where
+\*(``ext\*('' abbreviated \*(``externs\*(''.
 .IP
-BSD curses used <stdio.h> internally (for \fBprintw\fP and \fBscanw\fP),
-but nothing in <curses.h> itself relied upon <stdio.h>.
+The implementations of
+.I \%printw
+and
+.I \%scanw
+used undocumented internal functions of the standard I/O library
+.RI ( _doprnt
+and
+.IR _doscan ),
+but nothing in
+.I \%curses.h
+itself relied upon
+.IR \%stdio.h .
 .bP
-SVr2 curses added \fBnewterm\fP(3X), which relies upon <stdio.h>.
-That is, the function prototype uses \fBFILE\fP.
+SVr2
+.I curses
+added
+.IR \%newterm ,
+which relies upon
+.I \%stdio.h
+because its function prototype employs the
+.I FILE
+type.
 .IP
-SVr4 curses added \fBputwin\fP and \fBgetwin\fP, which also use <stdio.h>.
+SVr4
+.I curses
+added
+.I \%putwin
+and
+.IR \%getwin ,
+which also use
+.IR \%stdio.h .
 .IP
-X/Open Curses documents all three of these functions.
+X/Open Curses specifies all three of these functions.
 .IP
-SVr4 curses and X/Open Curses do not require the developer to
-include <stdio.h> before including <curses.h>.
-Both document curses showing <curses.h> as the only required header.
+SVr4
+.I curses
+and X/Open Curses do not require the developer to include
+.I \%stdio.h
+before
+.IR \%curses.h .
+Both document use of
+.I curses
+as requiring only
+.IR \%curses.h .
 .IP
-As a result, standard <curses.h> will always include <stdio.h>.
+As a result,
+standard
+.I \%curses.h
+always includes
+.IR \%stdio.h .
 .bP
-X/Open Curses is inconsistent with respect to SVr4 regarding <unctrl.h>.
+X/Open Curses and SVr4
+.I curses
+are inconsistent with respect to
+.IR \%unctrl.h .
 .IP
-As noted in \fBcurs_util\fP(3X), ncurses includes <unctrl.h> from
-<curses.h> (like SVr4).
+As noted in \fBcurs_util\fP(3X),
+.I \%ncurses
+includes
+.I \%unctrl.h
+from
+.I \%curses.h
+(as SVr4 does).
 .bP
-X/Open's comments about <term.h> and <termios.h> may refer to HP-UX and AIX:
+X/Open Curses's comments about
+.I \%term.h
+and
+.I \%termios.h
+may refer to HP-UX and AIX.
 .IP
-HP-UX curses includes <term.h> from <curses.h>
-to declare \fBsetupterm\fP in curses.h,
-but ncurses (and Solaris curses) do not.
+HP-UX
+.I curses
+includes
+.I \%term.h
+from
+.I \%curses.h
+to declare
+.I \%setupterm
+in
+.IR \%curses.h ,
+but
+.I \%ncurses
+and Solaris
+.I curses
+do not.
 .IP
-AIX curses includes <term.h> and <termios.h>.
-Again, ncurses (and Solaris curses) do not.
+AIX
+.I curses
+includes
+.I \%term.h
+and
+.IR \% termios.h .
+Again,
+.I \%ncurses
+and Solaris
+.I curses
+do not.
 .bP
-X/Open says that <curses.h> \fImay\fP include <term.h>,
-but there is no requirement that it do that.
+X/Open Curses says that
+.I \%curses.h
+.B may
+include
+.IR \%term.h ,
+but does not require it to do so.
 .IP
-Some programs use functions declared in both <curses.h> and <term.h>,
-and must include both headers in the same module.
-Very old versions of AIX curses required including <curses.h>
-before including <term.h>.
+Some programs use functions declared in both
+.I \%curses.h
+and
+.IR \%term.h ,
+and must include both header files in the same module.
+Very old versions of AIX
+.I curses
+required inclusion of
+.I \%curses.h
+before
+.IR \%term.h .
 .IP
-Because ncurses header files include the headers needed to
-define datatypes used in the headers,
-ncurses header files can be included in any order.
-But for portability, you should include <curses.h> before <term.h>.
+The header files supplied by
+.I \%ncurses
+include the standard library headers required for its declarations,
+so
+.IR \%ncurses 's
+own header files can be included in any order.
+But for portability,
+you should include
+.I \%curses.h
+before
+.IR \%term.h .
 .bP
-X/Open Curses says \fI"may make visible"\fP
-because including a header file does not necessarily make all symbols
-in it visible (there are ifdef's to consider).
+X/Open Curses says \*(``may make visible\*('' because including a header
+file does not necessarily make visible all of the symbols in it
+(consider
+.B \%#ifdef
+and similar).
 .IP
-For instance, in ncurses <wchar.h> \fImay\fP be included if
-the proper symbol is defined, and if ncurses is configured for
-wide-character support.
-If the header is included, its symbols may be made visible.
-That depends on the value used for \fB_XOPEN_SOURCE\fP
+For instance,
+.IR \%ncurses 's
+.I \%curses.h
+.B may \" bold to contrast with preceding italic
+include
+.I \%wchar.h
+if the proper symbol is defined,
+and if
+.I \%ncurses
+is configured for wide-character support.
+If
+.I \%wchar.h
+is included,
+its symbols
+.B may \" bold for consistency in this paragraph
+be made visible depending on the value of the
+.B _XOPEN_SOURCE
 feature test macro.
 .bP
-X/Open Curses documents one required header,
-in a special case: <stdarg.h> before <curses.h> to prototype
-the \fBvw_printw\fP and \fBvw_scanw\fP functions
+X/Open Curses mandates an application's inclusion of one standard C
+library header in a special case:
+.I \%stdarg.h
+before
+.I \%curses.h
+to prototype the functions
+.I \%vw_printw
+and
+.I \%vw_scanw
 (as well as the obsolete
-the \fBvwprintw\fP and \fBvwscanw\fP functions).
-Each of those uses a \fBva_list\fP parameter.
+.I \%vwprintw
+and
+.IR \%vwscanw ).
+Each of these takes a variadic argument list,
+a
+.I \%va_list
+parameter,
+like that of \fI\%printf\fP(3).
 .IP
-The two obsolete functions were introduced in SVr3.
-The other functions were introduced in X/Open Curses.
-In between, SVr4 curses provided for the possibility that
-an application might include either <varargs.h> or <stdarg.h>.
-Initially, that was done by using \fBvoid*\fP for the \fBva_list\fP
+SVr3
+.I curses
+introduced
+the two obsolete functions,
+and X/Open Curses the others.
+In between,
+SVr4
+.I curses
+provided for the possibility that an application might include either
+.I \%varargs.h
+or
+.IR \%stdarg.h .
+These represented contrasting approaches to handling variadic
+argument lists.
+The older interface,
+.IR \%varargs.h ,
+used a pointer to
+.I char \" V7, 32V, System III, 3BSD
+for variadic functions'
+.I \%va_list
 parameter.
-Later, a special type (defined in <stdio.h>) was introduced,
-to allow for compiler type-checking.
-That special type is always available,
-because <stdio.h> is always included by <curses.h>.
+Later,
+the list acquired its own standard data type,
+.IR \%va_list ,
+defined in
+.IR \%stdarg.h ,
+empowering the compiler to check the types of a function call's actual
+parameters against the formal ones declared in its prototype.
 .IP
-None of the X/Open Curses implementations require an application
-to include <stdarg.h> before <curses.h> because they either
-have allowed for a special type, or (like ncurses) include <stdarg.h>
-directly to provide a portable interface.
-.SH NOTES
-.PP
-If standard output from a \fBncurses\fP program is re-directed to something
-which is not a tty, screen updates will be directed to standard error.
-This was an undocumented feature of AT&T System V Release 3 curses.
+No conforming implementations of X/Open Curses require an application
+to include
+.I \%stdarg.h
+before
+.I \%curses.h
+because they either have allowed for a special type,
+or,
+like
+.IR \%ncurses ,
+they include
+.I \%stdarg.h
+themselves to provide a portable interface.
 .SH AUTHORS
-Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
-Based on \fIpcurses\fP by Pavel Curtis.
+Zeyd M. Ben-Halim,
+Eric S. Raymond,
+Thomas E. Dickey.
+Based on
+.I \%pcurses
+by Pavel Curtis.
+.SH SEE ALSO
+\fB\%curs_variables\fP(3X),
+\fB\%terminfo\fP(5),
+\fB\%user_caps\fP(5)
index ae20dd4450c9a018762e5837edc4c4946bffa8f3..5e844bf8fc25c7c437bbae4cc0871efb89e5c1fe 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2017 Free Software Foundation, Inc.                            *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\"
 .\" Author: Thomas E. Dickey
 .\"
-.\" $Id: new_pair.3x,v 1.19 2022/02/12 20:03:40 tom Exp $
-.TH new_pair 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: new_pair.3x,v 1.46 2024/03/16 15:35:01 tom Exp $
+.TH new_pair 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
 .SH NAME
-\fBalloc_pair\fP,
-\fBfind_pair\fP,
-\fBfree_pair\fP \- new curses color-pair functions
+\fB\%alloc_pair\fP,
+\fB\%find_pair\fP,
+\fB\%free_pair\fP \-
+dynamically allocate \fIcurses\fR color pairs
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint alloc_pair(int \fIfg\fB, int \fIbg\fB);\fR
-.br
-\fBint find_pair(int \fIfg\fB, int \fIbg\fB);\fR
-.br
-\fBint free_pair(int \fIpair\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint alloc_pair(int \fIfg\fP, int \fIbg\fP);
+\fBint find_pair(int \fIfg\fP, int \fIbg\fP);
+\fBint free_pair(int \fIpair\fP);
+.fi
 .SH DESCRIPTION
-These functions are an extension to the curses library.
+These functions are an extension to the \fIcurses\fP library.
 They permit an application to dynamically allocate a color pair using
 the foreground/background colors rather than assign a fixed color pair number,
 and return an unused pair to the pool.
@@ -80,25 +74,31 @@ it is unlikely that your terminal allows you to modify the attributes
 of a given character cell without rewriting it.
 That is, the foreground and background colors are applied as a pair.
 .bP
-Color pairs are the curses library's way of managing a color palette
+Color pairs are the \fIcurses\fP library's way of managing a color palette
 on a terminal.
 If the library does not keep track of the \fIcombinations\fP of
 colors which are displayed, it will be inefficient.
-.bP
+.IP \(bu 4
 For simple terminal emulators
 with only a few dozen color combinations,
 it is convenient to use the maximum number of combinations
 as the limit on color pairs:
-.NS
+.PP
+.RS 8
+.EX
 \fBCOLORS\fI * \fBCOLORS\fR
-.NE
-.bP
+.EE
+.RE
+.IP \(bu 4
 Terminals which support \fIdefault colors\fP distinct
 from \*(``ANSI colors\*(''
 add to the possible combinations, producing this total:
-.NS
+.PP
+.RS 8
+.EX
 \fI( \fBCOLORS\fI + 1 ) * ( \fBCOLORS\fI + 1 )\fR
-.NE
+.EE
+.RE
 .bP
 An application might use up to a few dozen color pairs to
 implement a predefined color scheme.
@@ -130,7 +130,8 @@ All of the color pairs are allocated from a table of possible color pairs.
 The size of the table is determined by the terminfo \fBpairs\fP capability.
 The table is shared with \fBinit_pair\fP;
 in fact \fBalloc_pair\fP calls \fBinit_pair\fP after
-updating the ncurses library's fast index to the colors versus color pairs.
+updating the \fI\%ncurses\fP library's fast index
+to the colors versus color pairs.
 .SS find_pair
 The \fBfind_pair\fP function accepts parameters for
 foreground and background color, and
@@ -141,7 +142,6 @@ Otherwise it returns \-1.
 Marks the given color pair as unused,
 i.e., like color pair 0.
 .SH RETURN VALUE
-.PP
 The \fBalloc_pair\fP function returns a color pair number in the range
 1 through \fBCOLOR_PAIRS\fP\-1, unless it encounters an error updating
 its fast index to the color pair values, preventing it from allocating
@@ -155,12 +155,12 @@ or \-1 if not.
 Likewise, \fBfree_pair\fP returns \fBOK\fP unless it encounters an
 error updating the fast index or if no such color pair is in use.
 .SH PORTABILITY
-These routines are specific to ncurses.
+These routines are specific to \fI\%ncurses\fP.
 They were not supported on
 Version 7, BSD or System V implementations.
 It is recommended that
-any code depending on them be conditioned using NCURSES_VERSION.
+any code depending on them be conditioned using \fB\%NCURSES_VERSION\fP.
+.SH AUTHORS
+Thomas Dickey
 .SH SEE ALSO
-\fBcurs_color\fP(3X).
-.SH AUTHOR
-Thomas Dickey.
+\fB\%curs_color\fP(3X)
index f16931ce3ec268f18c6ce4f21f455848d435e55f..c63b4315699ba988f7d6313390025cf07ca20576 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: panel.3x,v 1.42 2022/02/12 20:03:40 tom Exp $
-.TH panel 3X ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: panel.3x,v 1.63 2024/03/16 15:35:01 tom Exp $
+.TH panel 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-panel \- panel stack extension for curses
+panel \-
+panel stack extension for \fIcurses\fP
 .SH SYNOPSIS
-\fB#include <panel.h>\fP
-.P
-\fBcc [flags] sourcefiles \-lpanel \-lncurses\fP
-.P
-\fBPANEL *new_panel(WINDOW *\fIwin\fB);\fR
-.sp
-\fBint bottom_panel(PANEL *\fIpan\fB);\fR
-.br
-\fBint top_panel(PANEL *\fIpan\fB);\fR
-.br
-\fBint show_panel(PANEL *\fIpan\fB);\fR
-.br
-\fBvoid update_panels(void);\fP
-.br
-\fBint hide_panel(PANEL *\fIpan\fB);\fR
-.sp
-\fBWINDOW *panel_window(const PANEL *\fIpan\fB);\fR
-.br
-\fBint replace_panel(PANEL *\fIpan\fB, WINDOW *\fIwindow\fB);\fR
-.br
-\fBint move_panel(PANEL *\fIpan\fB, int \fIstarty\fB, int \fIstartx\fB);\fR
-.br
-\fBint panel_hidden(const PANEL *\fIpan\fB);\fR
-.sp
-\fBPANEL *panel_above(const PANEL *\fIpan\fB);\fR
-.br
-\fBPANEL *panel_below(const PANEL *\fIpan\fB);\fR
-.sp
-\fBint set_panel_userptr(PANEL *\fIpan\fB, const void *\fIptr\fB);\fR
-.br
-\fBconst void *panel_userptr(const PANEL *\fIpan\fB);\fR
-.sp
-\fBint del_panel(PANEL *\fIpan\fB);\fR
-.sp
-\fR/* ncurses-extensions */\fP
-.br
-\fBPANEL *ground_panel(SCREEN *\fIsp\fB);\fR
-.br
-\fBPANEL *ceiling_panel(SCREEN *\fIsp\fB);\fR
-.br
+.nf
+\fB#include <panel.h>
+.PP
+\fBPANEL *new_panel(WINDOW *\fIwin\fP);
+.PP
+\fBint bottom_panel(PANEL *\fIpan\fP);
+\fBint top_panel(PANEL *\fIpan\fP);
+\fBint show_panel(PANEL *\fIpan\fP);
+\fBvoid update_panels(void);
+\fBint hide_panel(PANEL *\fIpan\fP);
+.PP
+\fBWINDOW *panel_window(const PANEL *\fIpan\fP);
+\fBint replace_panel(PANEL *\fIpan\fP, WINDOW *\fIwindow\fP);
+\fBint move_panel(PANEL *\fIpan\fP, int \fIstarty\fP, int \fIstartx\fP);
+\fBint panel_hidden(const PANEL *\fIpan\fP);
+.PP
+\fBPANEL *panel_above(const PANEL *\fIpan\fP);
+\fBPANEL *panel_below(const PANEL *\fIpan\fP);
+.PP
+\fBint set_panel_userptr(PANEL *\fIpan\fP, const void *\fIptr\fP);
+\fBconst void *panel_userptr(const PANEL *\fIpan\fP);
+.PP
+\fBint del_panel(PANEL *\fIpan\fP);
+.PP
+\fI/* ncurses extensions */\fP
+\fBPANEL *ground_panel(SCREEN *\fIsp\fP);
+\fBPANEL *ceiling_panel(SCREEN *\fIsp\fP);
+.fi
 .SH DESCRIPTION
-Panels are \fBcurses\fP(3X) windows with the added feature of
+Panels are \fBcurses\fP(3X) windows with the added property of
 depth.
-Panel functions allow the use of stacked windows and ensure
-the proper portions of each window and the curses \fBstdscr\fP window are
-hidden or displayed when panels are added, moved, modified or removed.
+Panel functions allow the use of stacked windows and ensure that the
+proper portions of each window and the \fIcurses\fP \fB\%stdscr\fP
+window are hidden or displayed when panels are added,
+moved,
+modified,
+or removed.
 The set of currently visible panels is the stack of panels.
 The
-\fBstdscr\fP window is beneath all panels, and is not considered part
-of the stack.
-.P
-A window is associated with every panel.
-The panel routines enable
-you to create, move, hide, and show panels, as well as position a
-panel at any desired location in the stack.
-.P
-Panel routines are a functional layer added to \fBcurses\fP(3X), make only
-high-level curses calls, and work anywhere terminfo curses does.
+\fB\%stdscr\fP window is beneath all panels,
+and is not considered part of the stack.
+.PP
+A window is associated with each panel.
+The panel routines enable you to create,
+move,
+hide,
+and show panels.
+You can relocate a panel to any desired position in the stack.
+.PP
+Panel routines are a functional layer added to \fIcurses\fP,
+make only high-level \fIcurses\fP calls,
+and work anywhere \fIcurses\fP does.
 .SH FUNCTIONS
 .\" ---------
 .SS bottom_panel
-\fBbottom_panel(\fIpan\fB)\fR
+\fB\%bottom_panel(\fIpan\fB)\fR
 puts panel \fIpan\fP at the bottom of all panels.
 .\" ---------
 .SS ceiling_panel
-\fBceiling_panel(\fIsp\fB)\fR
-acts like \fBpanel_below(NULL)\fP, for the given \fBSCREEN\fP \fIsp\fP.
+\fB\%ceiling_panel(\fIsp\fB)\fR
+acts like \fB\%panel_below(NULL)\fP
+for the given \fISCREEN\fP \fIsp\fP.
 .\" ---------
 .SS del_panel
-\fBdel_panel(\fIpan\fB)\fR
-removes the given panel \fIpan\fP from the  stack and deallocates the
-\fBPANEL\fP structure (but not its associated window).
+\fB\%del_panel(\fIpan\fB)\fR
+removes the given panel \fIpan\fP from the stack and deallocates the
+\fI\%PANEL\fP structure (but not its associated window).
 .\" ---------
 .SS ground_panel
-\fBground_panel(\fIsp\fB)\fR
-acts like \fBpanel_above(NULL)\fP, for the given \fBSCREEN\fP \fIsp\fP.
+\fB\%ground_panel(\fIsp\fB)\fR
+acts like \fB\%panel_above(NULL)\fP
+for the given \fISCREEN\fP \fIsp\fP.
 .\" ---------
 .SS hide_panel
-\fBhide_panel(\fIpan\fB)\fR
+\fB\%hide_panel(\fIpan\fB)\fR
 removes the given panel \fIpan\fP from the panel stack
 and thus hides it from view.
-The \fBPANEL\fP structure is not lost, merely removed from the stack.
+The \fI\%PANEL\fP structure is not lost,
+merely removed from the stack.
 .\" ---------
 .SS move_panel
-\fBmove_panel(\fIpan\fB,\fIstarty\fB,\fIstartx\fB)\fR
-moves the given panel \fIpan\fP's window so that its upper-left corner is at
-\fIstarty\fP, \fIstartx\fP.
+\fB\%move_panel(\fIpan\fB, \fIstarty\fB, \fIstartx\fB)\fR
+moves the given panel \fIpan\fP's window so that its upper-left corner
+is at
+\fIstarty\fP,
+\fIstartx\fP.
 It does not change the position of the panel in the stack.
-Be sure to use this function, not \fBmvwin\fP(3X), to move a panel window.
+Be sure to use this function,
+not \fB\%mvwin\fP(3X),
+to move a panel window.
 .\" ---------
 .SS new_panel
-\fBnew_panel(\fIwin\fB)\fR allocates a \fBPANEL\fR structure,
-associates it with \fIwin\fP, places the panel on the top of the stack
-(causes  it to  be  displayed above any other panel) and returns a
-pointer to the new panel.
+\fB\%new_panel(\fIwin\fB)\fR allocates a \fI\%PANEL\fR structure,
+associates it with \fIwin\fP,
+places the panel on the top of the stack
+(causes it to be displayed above any other panel)
+and returns a pointer to the new panel.
 .\" ---------
 .SS panel_above
-\fBpanel_above(\fIpan\fB)\fR
+\fB\%panel_above(\fIpan\fB)\fR
 returns a pointer to the panel above \fIpan\fP.
 If the panel argument is
-\fB(PANEL *)0\fP, it returns a pointer to the bottom panel in the stack.
+\*(``\fB(PANEL *)0\fP\*('',
+it returns a pointer to the bottom panel in the stack.
 .\" ---------
 .SS panel_below
-\fBpanel_below(\fIpan\fB)\fR
+\fB\%panel_below(\fIpan\fB)\fR
 returns a pointer to the panel just below \fIpan\fP.
-If the panel argument
-is \fB(PANEL *)0\fP, it returns a pointer to the top panel in the stack.
+If the panel argument is
+\*(``\fB(PANEL *)0\fP\*('',
+it returns a pointer to the top panel in the stack.
 .\" ---------
 .SS panel_hidden
-\fBpanel_hidden(\fIpan\fB)\fR
-returns \fBTRUE\fP if the panel \fIpan\fP is in the panel stack,
-\fBFALSE\fP if it is not.
-If the panel is a null pointer, return \fBERR\fP.
+\fB\%panel_hidden(\fIpan\fB)\fR
+returns \fBFALSE\fP if the panel \fIpan\fP is in the panel stack,
+and \fBTRUE\fP if it is not.
+If the panel is a null pointer,
+it returns \fBERR\fP.
 .\" ---------
 .SS panel_userptr
-\fBpanel_userptr(\fIpan\fB)\fR
+\fB\%panel_userptr(\fIpan\fB)\fR
 returns the user pointer for a given panel \fIpan\fP.
 .\" ---------
 .SS panel_window
-\fBpanel_window(\fIpan\fB)\fR
+\fB\%panel_window(\fIpan\fB)\fR
 returns a pointer to the window of the given panel \fIpan\fP.
 .\" ---------
 .SS replace_panel
-\fBreplace_panel(\fIpan\fB,\fIwindow\fB)\fR
+\fB\%replace_panel(\fIpan\fB, \fIwindow\fB)\fR
 replaces the current window of panel \fIpan\fP with \fIwindow\fP
-This is useful, for example if you want to resize a panel.
-In \fBncurses\fP, you can call \fBreplace_panel\fP
-to resize a panel using a window resized with \fBwresize\fP(3X).
+This is useful if,
+for example,
+you want to resize a panel.
+In \fI\%ncurses\fP,
+you can call \fB\%replace_panel\fP
+to resize a panel using a window resized with \fB\%wresize\fP(3X).
 It does not change the position of the panel in the stack.
 .\" ---------
 .SS set_panel_userptr
-\fBset_panel_userptr(\fIpan\fB,\fIptr\fB)\fR
+\fB\%set_panel_userptr(\fIpan\fB, \fIptr\fB)\fR
 sets the panel's user pointer.
 .\" ---------
 .SS show_panel
-\fBshow_panel(\fIpan\fB)\fR
+\fB\%show_panel(\fIpan\fB)\fR
 makes a hidden panel visible by placing it on top of the panels in the
 panel stack.
-See \fBCOMPATIBILITY\fP below.
+See \*(``PORTABILITY\*('' below.
 .\" ---------
 .SS top_panel
-\fBtop_panel(\fIpan\fB)\fR
-puts the given visible panel \fIpan\fP on top of all panels in the stack.
-See \fBCOMPATIBILITY\fP below.
+\fB\%top_panel(\fIpan\fB)\fR
+puts the given visible panel \fIpan\fP on top of all panels in the
+stack.
+See \*(``PORTABILITY\*('' below.
 .\" ---------
 .SS update_panels
-\fBupdate_panels()\fR
-refreshes the \fIvirtual screen\fP to reflect the relations between the
-panels in the stack, but does not call \fBdoupdate\fP(3X) to refresh the
-\fIphysical screen\fP.
-Use this function and not \fBwrefresh\fP(3X) or \fBwnoutrefresh\fP(3X).
+\fB\%update_panels()\fR
+refreshes the virtual screen to reflect the relations between the panels
+in the stack,
+but does not call \fB\%doupdate\fP(3X) to refresh the physical screen.
+Use this function and not \fB\%wrefresh\fP(3X) or
+\fB\%wnoutrefresh\fP(3X).
 .PP
-\fBupdate_panels\fP may be called more than once before a call to
-\fBdoupdate\fP, but \fBdoupdate\fP is the function responsible for updating
-the \fIphysical screen\fP.
-.SH DIAGNOSTICS
+\fB\%update_panels\fP may be called more than once before a call to
+\fB\%doupdate\fP,
+but \fB\%doupdate\fP is the function responsible for updating
+the physical screen.
+.SH "RETURN VALUE"
 Each routine that returns a pointer returns \fBNULL\fP if an error
 occurs.
 Each routine that returns an int value returns \fBOK\fP if it
 executes successfully and \fBERR\fP if not.
 .PP
-Except as noted, the \fIpan\fP and \fIwindow\fP parameters must be non-null.
-If those are null, an error is returned.
+Except as noted,
+the \fIpan\fP and \fIwindow\fP parameters must be non-null.
+If either is null,
+an error is returned.
 .PP
-The \fBmove_panel\fP function uses \fBmvwin\fP(3X),
-and will return an error if \fBmvwin\fP returns an error.
-.SH COMPATIBILITY
-Reasonable care has been taken to  ensure  compatibility
-with  the  native  panel facility introduced in System V (inspection of
-the SVr4 manual pages suggests the programming interface is unchanged).
-The \fBPANEL\fP data structures are merely  similar.
-The  programmer
-is cautioned not to directly use \fBPANEL\fP fields.
-.P
-The functions \fBshow_panel\fP and \fBtop_panel\fP are identical
-in this implementation, and work equally well with displayed or hidden
-panels.
-In the native System V implementation, \fBshow_panel\fP is
-intended for making a hidden panel visible (at the top of the stack)
-and \fBtop_panel\fP is intended for making an already-visible panel
-move to the top of the stack.
-You are cautioned to use the correct
-function to ensure compatibility with native panel libraries.
-.SH NOTE
-In your library list, libpanel.a should be before libncurses.a; that is,
-you should say \*(``\-lpanel \-lncurses\*('', not the other way around
-(which would give a link-error with static libraries).
+The \fB\%move_panel\fP function uses \fBmvwin\fP(3X),
+and returns an error if \fB\%mvwin\fP returns an error.
+.SH NOTES
+The header file \fI\%panel.h\fP itself includes the header file
+\fI\%curses.h\fP.
 .SH PORTABILITY
+Reasonable care has been taken to ensure compatibility
+with the native panel facility introduced in System\ V;
+inspection of the SVr4 manual pages suggests the programming interface
+never changed.
+The \fI\%PANEL\fP data structures are merely similar.
+The programmer is cautioned not to directly use \fI\%PANEL\fP fields.
 .PP
-The panel facility was documented in SVr4.2 in
-\fICharacter User Interface Programming (UNIX SVR4.2)\fP.
+The functions \fB\%show_panel\fP and \fB\%top_panel\fP are identical
+in this implementation,
+and work equally well with displayed or hidden panels.
+In the System\ V implementation,
+\fB\%show_panel\fP is intended for making a hidden panel visible
+(at the top of the stack)
+and \fB\%top_panel\fP is intended for making an already-visible panel
+move to the top of the stack.
+You are cautioned to use the correct
+function to ensure compatibility with System\ V panel libraries.
+.SH HISTORY
+A panel facility was documented in SVr4.2's
+\fICharacter User Interface Programming\fP document.
 .PP
 It is not part of X/Open Curses.
 .PP
 A few implementations exist:
 .bP
 Systems based on SVr4 source code,
-e.g., Solaris, provide this library.
+such as Solaris,
+provide this library.
 .bP
-\fBncurses\fP (since version 0.6 in 1993)
-and \fBPDCurses\fP (since version 2.2 in 1995)
+\fI\%ncurses\fP (since version 0.6 in 1993)
+and \fIPDCurses\fP (since version 2.2 in 1995)
 provide a panel library whose common ancestor
-was a public domain implementation by Warren Tucker
+is a public domain implementation by Warren Tucker
 published in \fIu386mon\fP 2.20 (1990).
 .IP
-According to Tucker, the SystemV panel library
-was first released in SVr3.2 (1988),
+According to Tucker,
+the System\ V panel library was first released in SVr3.2 (1988),
 and his implementation helped with a port to SVr3.1 (1987).
 .IP
 Several developers have improved each of these;
 they are no longer the same as Tucker's implementation.
 .bP
 NetBSD 8 (2018)
-has a panel library begun by Valery Ushakov in 2015.
-This is based on the AT&T documentation.
-.SH FILES
-.P
-panel.h
-interface for the panels library
-.P
-libpanel.a
-the panels library itself
-.SH SEE ALSO
-\fBcurses\fP(3X),
-\fBcurs_variables\fP(3X),
-.PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
-.SH AUTHOR
+has a panel library begun by Valery Ushakov in 2015,
+based on the System\ V documentation.
+.SH AUTHORS
+Warren Tucker <wht@n4hgf.mt\-park.ga.us> originally wrote this
+implementation,
+primarily to assist in porting \fI\%u386mon\fP to systems without a
+native panel library.
 .PP
-Originally written by Warren Tucker <wht@n4hgf.mt-park.ga.us>,
-primarily to assist in porting \fIu386mon\fP to systems without a native
-panels library.
+Zeyd ben-Halim repackaged it for \fI\%ncurses\fP.
 .PP
-Repackaged for ncurses by Zeyd ben-Halim.
-.PP
-Juergen Pfeifer and Thomas E. Dickey revised/improved the library.
+Juergen Pfeifer and Thomas E. Dickey revised and improved the library.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%curs_variables\fP(3X)
index 37094d80cac3bfbeda78f1855c20ca228b6a29f6..5e23d9fb37bb91123e4c2967f92d61536114986e 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\"
 .\" Author: Thomas E. Dickey 1996-on
 .\"
-.\" $Id: resizeterm.3x,v 1.32 2022/02/20 00:32:18 tom Exp $
-.TH resizeterm 3X ""
+.\" $Id: resizeterm.3x,v 1.56 2024/03/16 15:35:01 tom Exp $
+.TH resizeterm 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-\fBis_term_resized\fP,
-\fBresize_term\fP,
-\fBresizeterm\fP \- change the curses terminal size
+\fB\%is_term_resized\fP,
+\fB\%resize_term\fP,
+\fB\%resizeterm\fP \-
+manage the terminal dimensions understood by \fIcurses\fR
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBbool is_term_resized(int \fIlines\fB, int \fIcolumns\fB);\fR
-.br
-\fBint resize_term(int \fIlines\fB, int \fIcolumns\fB);\fR
-.br
-\fBint resizeterm(int \fIlines\fB, int \fIcolumns\fB);\fR
-.SH DESCRIPTION
+.nf
+\fB#include <curses.h>
 .PP
-This is an extension to the curses library.
-It provides callers with a hook into the \fBncurses\fP data to resize windows,
+\fBbool is_term_resized(int \fIlines\fP, int \fIcolumns\fP);
+\fBint resize_term(int \fIlines\fP, int \fIcolumns\fP);
+\fBint resizeterm(int \fIlines\fP, int \fIcolumns\fP);
+.fi
+.SH DESCRIPTION
+This is an extension to the \fIcurses\fP library.
+It provides callers with a hook into the \fI\%ncurses\fP data to resize
+windows,
 primarily for use by programs running in an X Window terminal (e.g., xterm)
 when the terminal's screen size is changed by the user:
 .bP
-Curses windows cannot extend outside the screen.
-If the terminal is shrunk, curses windows must be shrunk to fit.
+\fIcurses\fP windows cannot extend outside the screen.
+If the terminal is shrunk, \fIcurses\fP windows must be shrunk to fit.
 .bP
 If the terminal is stretched,
 rows and/or columns can be added to existing windows.
 The added cells should match the current attributes of the windows.
 .PP
-If the calling program has not set up a handler for \fBSIGWINCH\fP
-when it initializes \fBncurses\fP
-(e.g., using \fBinitscr\fP(3X) or \fBnewterm\fP(3X)),
-then \fBncurses\fP sets a handler for \fBSIGWINCH\fP which notifies
+If the calling program has not set up a handler for \fB\%SIGWINCH\fP
+when it initializes \fI\%ncurses\fP
+(e.g., using \fB\%initscr\fP(3X) or \fB\%newterm\fP(3X)),
+then \fI\%ncurses\fP sets a handler for \fB\%SIGWINCH\fP which notifies
 the library when a window-size event has occurred.
 The library checks for this notification
 .bP
 when reading input data,
 .bP
 when implicitly resuming program mode
-(e.g., between \fBendwin\fP(3X) and \fBwrefresh\fP(3X)),
+(e.g., between \fB\%endwin\fP(3X) and \fB\%wrefresh\fP(3X)),
 and
 .bP
-when explicitly resuming program mode in \fBrestartterm\fP(3X).
+when explicitly resuming program mode in \fB\%restartterm\fP(3X).
 .PP
 When the library has found that the terminal's window-size has
-changed, it calls \fBresizeterm\fP to update its data structures.
+changed, it calls \fB\%resizeterm\fP to update its data structures.
 .PP
-An application which establishes its own \fBSIGWINCH\fP handler
-can call \fBresizeterm\fP, but in that case, the library will not
-see \fBSIGWINCH\fP, and proper layout will rely upon the application.
+An application which establishes its own \fB\%SIGWINCH\fP handler
+can call \fB\%resizeterm\fP, but in that case, the library will not
+see \fB\%SIGWINCH\fP, and proper layout will rely upon the application.
 .SH FUNCTIONS
 .SS resizeterm
-.PP
-The function \fBresizeterm\fP resizes the standard and current windows
-(i.e., \fBstdscr\fP and \fBcurscr\fP)
+The function \fB\%resizeterm\fP resizes the standard and current windows
+(i.e., \fB\%stdscr\fP and \fB\%curscr\fP)
 to the specified dimensions, and adjusts other bookkeeping data used by
-the \fBncurses\fP library that record the window dimensions
-such as the \fBLINES\fP and \fBCOLS\fP variables.
+the \fI\%ncurses\fP library that record the window dimensions
+such as the \fB\%LINES\fP and \fB\%COLS\fP variables.
 .SS resize_term
+Most of the work for \fB\%resizeterm\fP is
+done by the inner function \fB\%resize_term\fP.
+The outer function \fB\%resizeterm\fP adds bookkeeping
+for the \fB\%SIGWINCH\fP handler,
+as well as repainting the soft-key area (see \fB\%slk_touch\fP(3X)).
 .PP
-Most of the work for \fBresizeterm\fP is
-done by the inner function \fBresize_term\fP.
-The outer function \fBresizeterm\fP adds bookkeeping
-for the \fBSIGWINCH\fP handler,
-as well as repainting the soft-key area (see \fBslk_touch\fP(3X)).
-.PP
-The \fBresize_term\fP function attempts to resize all windows.
+The \fB\%resize_term\fP function attempts to resize all windows.
 This helps with simple applications.
 However:
 .bP
 It is not possible to automatically resize pads.
 .bP
 Applications which have complicated layouts should check for
-\fBKEY_RESIZE\fP returned from \fBwgetch\fP,
-and adjust their layout, e.g., using \fBwresize\fP and \fBmvwin\fP,
+\fB\%KEY_RESIZE\fP returned from \fB\%wgetch\fP,
+and adjust their layout, e.g., using \fB\%wresize\fP and \fB\%mvwin\fP,
 or by recreating the windows.
 .PP
-When resizing windows, \fBresize_term\fP recursively adjusts subwindows,
+When resizing windows, \fB\%resize_term\fP recursively adjusts subwindows,
 keeping them within the updated parent window's limits.
 If a top-level window happens to extend to the screen's limits,
-then on resizing the window, \fBresize_term\fP will keep the window
+then on resizing the window, \fB\%resize_term\fP will keep the window
 extending to the corresponding limit, regardless of whether the
 screen has shrunk or grown.
 .SS is_term_resized
-.PP
-A support function \fBis_term_resized\fP is provided so that applications
-can check if the \fBresize_term\fP function would modify the window structures.
+A support function \fB\%is_term_resized\fP is provided so that applications
+can check if the \fB\%resize_term\fP function would modify
+the window structures.
 It returns \fBTRUE\fP if the windows would be modified,
 and \fBFALSE\fP otherwise.
 .SH RETURN VALUE
@@ -128,54 +127,54 @@ They will fail if either of the dimensions are less than or equal to zero,
 or if an error occurs while (re)allocating memory for the windows.
 .SH NOTES
 While these functions are intended to be used to support a signal handler
-(i.e., for \fBSIGWINCH\fP), care should be taken to avoid invoking them in a
-context where \fBmalloc\fP or \fBrealloc\fP may have been interrupted,
+(i.e., for \fB\%SIGWINCH\fP), care should be taken to avoid invoking them in a
+context where \fB\%malloc\fP or \fB\%realloc\fP may have been interrupted,
 since it uses those functions.
 .PP
-If ncurses is configured to supply its own \fBSIGWINCH\fP handler,
+If \fI\%ncurses\fP is configured to supply its own \fB\%SIGWINCH\fP
+handler,
 .bP
-on receipt of a \fBSIGWINCH\fP, the handler sets a flag
+on receipt of a \fB\%SIGWINCH\fP, the handler sets a flag
 .bP
 which is tested in
-\fBwgetch\fP(3X),
-\fBdoupdate\fP(3X) and
-\fBrestartterm\fP(3X),
+\fB\%wgetch\fP(3X),
+\fB\%doupdate\fP(3X) and
+\fB\%restartterm\fP(3X),
 .bP
-in turn, calling the \fBresizeterm\fP function,
+in turn, calling the \fB\%resizeterm\fP function,
 .bP
-which \fBungetch\fP's a \fBKEY_RESIZE\fP which
-will be read on the next call to \fBwgetch\fP.
+which \fB\%ungetch\fP's a \fB\%KEY_RESIZE\fP which
+will be read on the next call to \fB\%wgetch\fP.
 .IP
-The \fBKEY_RESIZE\fP alerts an application that the screen size has changed,
+The \fB\%KEY_RESIZE\fP alerts an application that the screen size has changed,
 and that it should repaint special features such as pads that cannot
 be done automatically.
 .IP
-Calling \fBresizeterm\fP or \fBresize_term\fP
+Calling \fB\%resizeterm\fP or \fB\%resize_term\fP
 directly from a signal handler is unsafe.
-This indirect method is used to provide a safe way to resize the ncurses
-data structures.
+This indirect method is used to provide a safe way to resize the
+\fI\%ncurses\fP data structures.
 .PP
-If the environment variables \fBLINES\fP or \fBCOLUMNS\fP are set,
+If the environment variables \fILINES\fP or \fI\%COLUMNS\fP are set,
 this overrides the library's use of the window size obtained from
 the operating system.
-Thus, even if a \fBSIGWINCH\fP is received,
+Thus, even if a \fB\%SIGWINCH\fP is received,
 no screen size change may be recorded.
 .SH PORTABILITY
-.PP
-It is possible to resize the screen with SVr4 curses,
+It is possible to resize the screen with SVr4 \fIcurses\fP,
 by
 .bP
-exiting curses with \fBendwin\fP(3X) and
+exiting \fIcurses\fP with \fB\%endwin\fP(3X) and
 .bP
-resuming using \fBrefresh\fP(3X).
+resuming using \fB\%refresh\fP(3X).
 .PP
 Doing that clears the screen and is visually distracting.
 .PP
-This extension of ncurses was introduced in mid-1995.
-It was adopted in NetBSD curses (2001) and PDCurses (2003).
+This extension of \fI\%ncurses\fP was introduced in mid-1995.
+It was adopted in NetBSD \fIcurses\fP (2001) and PDCurses (2003).
+.SH AUTHORS
+Thomas Dickey (from an equivalent function written in 1988 for BSD \fIcurses\fP)
 .SH SEE ALSO
-\fBcurs_getch\fP(3X),
-\fBcurs_variables\fP(3X),
-\fBwresize\fP(3X).
-.SH AUTHOR
-Thomas Dickey (from an equivalent function written in 1988 for BSD curses).
+\fB\%curs_getch\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%wresize\fP(3X)
index fd2e1a07e52fb7ddd9bff6ab9c7fce02283d8a43..95b2142ee6af005e24d725b645456b61d241475d 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2017 Free Software Foundation, Inc.                            *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: scr_dump.5,v 1.20 2021/12/25 21:13:38 tom Exp $
-.TH scr_dump 5
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
+.\" $Id: scr_dump.5,v 1.46 2024/03/23 20:42:29 tom Exp $
+.TH scr_dump 5 2024-03-23 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-scr_dump \- format of curses screen-dumps.
-.SH SYNOPSIS
-.B scr_dump
+scr_dump \-
+\fIcurses\fR screen dump
+.\"SH SYNOPSIS
 .SH DESCRIPTION
-.PP
 The curses library provides applications with the ability to write the
 contents of a window to an external file using \fBscr_dump\fP or \fBputwin\fP,
 and read it back using \fBscr_restore\fP or \fBgetwin\fP.
@@ -65,10 +57,9 @@ The \fBputwin\fP and \fBgetwin\fP functions do the work;
 while \fBscr_dump\fP and \fBscr_restore\fP conveniently save and restore
 the whole screen, i.e., \fBstdscr\fP.
 .SS ncurses6
-.PP
 A longstanding implementation of screen-dump was
 revised with ncurses6 to remedy problems with the earlier approach:
-.bP
+.IP \(bu 4
 A \*(``magic number\*('' is written to the beginning of the dump file,
 allowing applications (such as \fBfile\fP(1)) to recognize curses dump files.
 .IP
@@ -76,25 +67,36 @@ Because ncurses6 uses a new format,
 that requires a new magic number
 was unused by other applications.
 This 16-bit number was unused:
-.NS
-0x8888 (octal \*(``\\210\\210\*('')
-.NE
-.IP
+.RS 4
+.PP
+.RS 4
+.EX
+0x8888 (octal \*(``\e210\e210\*('')
+.EE
+.RE
+.PP
 but to be more certain, this 32-bit number was chosen:
-.NS
-0x88888888 (octal \*(``\\210\\210\\210\\210\*('')
-.NE
-.IP
+.PP
+.RS 4
+.EX
+0x88888888 (octal \*(``\e210\e210\e210\e210\*('')
+.EE
+.RE
+.PP
 This is the pattern submitted to the maintainers of the \fBfile\fP program:
-.NS
+.PP
+.RS 4
+.EX
 #
 # ncurses5 (and before) did not use a magic number,
 # making screen dumps "data".
 #
 # ncurses6 (2015) uses this format, ignoring byte-order
-0    string    \\210\\210\\210\\210ncurses    ncurses6 screen image
+0    string    \e210\e210\e210\e210ncurses    ncurses6 screen image
 #
-.NE
+.EE
+.RE
+.RE
 .bP
 The screen dumps are written in textual form,
 so that internal data sizes are not directly related to the dump-format, and
@@ -111,171 +113,208 @@ screen-size,
 because the library truncates or fills the screen as necessary.
 .bP
 The ncurses6 \fBgetwin\fP reads the legacy screen dumps from ncurses5.
-.SS ncurses5 (legacy)
-.PP
-The screen-dump feature was added to ncurses in June 1995.
+.SS "ncurses5 (Legacy)"
+The screen-dump feature was added to \fI\%ncurses\fP in June 1995.
 While there were fixes and improvements in succeeding years,
 the basic scheme was unchanged:
 .bP
-The \fBWINDOW\fP structure was written in binary form.
+The \fI\%WINDOW\fP structure was written in binary form.
 .bP
-The \fBWINDOW\fP structure refers to lines of data,
-which were written as an array of binary data following the \fBWINDOW\fP.
+The \fI\%WINDOW\fP structure refers to lines of data,
+which were written as an array of binary data following the \fI\%WINDOW\fP.
 .bP
 When \fBgetwin\fP restored the window,
 it would keep track of offsets into the array of line-data
-and adjust the \fBWINDOW\fP structure which was read back into memory.
+and adjust the \fI\%WINDOW\fP structure which was read back into memory.
 .PP
-This is similar to Unix SystemV,
+This is similar to Unix SystemV,
 but does not write a \*(``magic number\*('' to identify the file format.
 .SH PORTABILITY
-.PP
-There is no standard format for \fBputwin\fP.
-This section gives a brief description of the existing formats.
-.SS X/Open Curses
-.PP
-Refer to \fIX/Open Curses, Issue 7\fP (2009).
-.PP
-X/Open's documentation for \fIenhanced curses\fP says only:
+There is no standard format for
+.I curses
+screen dumps.
+A brief survey of the existing implementations follows.
+.SS "X/Open Curses"
+X/Open Curses, Issue 7 specifies little.
+It says
+(boldface emphasis added)
 .RS 3
 .PP
-The \fBgetwin(\ ) \fPfunction reads window-related data
-stored in the file by \fIputwin(\ )\fP.
-The function
-then creates and initializes a new window using that data.
+\*(``[t]he \fI\%getwin()\fP function reads window-related data stored in
+the file by \fI\%putwin()\fP.
+The function then creates and initializes a new window using that data.
 .PP
-The \fBputwin(\ )\fP function writes all data associated
-with \fIwin\fP into the \fBstdio\fP(3) stream to which \fIfilep\fP
-points, using an \fBunspecified format\fP.
-This information can be retrieved later using \fBgetwin(\ )\fP.
+The \fI\%putwin()\fP function writes all data associated with \fIwin\fP
+into the \fI\%stdio\fP stream to which \fIfilep\fP points,
+using an \fBunspecified format\fP.
+This information can be retrieved later using \fI\%getwin()\fP.\*(''
 .RE
 .PP
 In the mid-1990s when the X/Open Curses document was written,
-there were still systems using older, less capable curses libraries
-(aside from the BSD curses library which was not relevant to X/Open
-because it did not meet the criteria for \fIbase curses\fP).
-The document explained the term \*(``enhanced\*('' as follows:
-.RS 3
-.bP
-Shading is used to identify \fIX/Open Enhanced Curses\fP material,
-relating to interfaces included to provide enhanced capabilities
-for applications originally written to be compiled on systems
-based on the UNIX operating system.
-Therefore, the features described may not be present on systems
-that conform to \fBXPG4 or to earlier XPG releases\fP.
-The relevant reference pages may provide additional
-or more specific portability warnings about use of the material.
-.RE
-.PP
-In the foregoing, emphasis was added to \fBunspecified format\fP
-and to \fBXPG4 or to earlier XPG releases\fP,
-for clarity.
-.SS Unix SystemV
+there were still System\ V systems using older,
+less capable
+.I curses
+libraries.
+BSD
+.I curses
+was not relevant to X/Open because it did not meet the criteria
+for base-level conformance;
+see \fB\%ncurses\fP(3X).
+.SS "System V"
+System\ V
+.I curses
+identified the file format by writing a \*(``magic number\*('' at the
+beginning of the dump.
+The \fI\%WINDOW\fP data and the lines of text follow, all in binary form.
 .PP
-Unix SystemV curses identified the file format by writing a
-\*(``magic number\*('' at the beginning of the dump.
-The \fBWINDOW\fP data and the lines of text follow, all in binary form.
+Solaris
+.I curses
+has the following definitions.
 .PP
-The Solaris curses source has these definitions:
-.NS
+.RS 4
+.EX
 /* terminfo magic number */
 #define MAGNUM  0432
 
 /* curses screen dump magic number */
 #define SVR2_DUMP_MAGIC_NUMBER  0433
 #define SVR3_DUMP_MAGIC_NUMBER  0434
-.NE
+.EE
+.RE
 .PP
 That is, the feature was likely introduced in SVr2 (1984),
 and improved in SVr3 (1987).
-The Solaris curses source has no magic number for SVr4 (1989).
-Other operating systems (AIX and HPUX) use a magic number which would
-correspond to this definition:
-.NS
+Solaris
+.I curses
+has no magic number for SVr4 (1989).
+Other System\ V operating systems
+(AIX and HP-UX)
+use a magic number that would correspond to the following.
+.PP
+.RS 4
+.EX
 /* curses screen dump magic number */
 #define SVR4_DUMP_MAGIC_NUMBER  0435
-.NE
+.EE
+.RE
 .PP
 That octal number in bytes is 001, 035.
-Because most Unix vendors use big-endian hardware,
-the magic number is written with the high-order byte first, e.g.,
-.NS
-\001\035
-.NE
+Because most Unix vendors at the time used big-endian hardware,
+the magic number is written with the high-order byte first.
 .PP
-After the magic number, the \fBWINDOW\fP structure and line-data are
-written in binary format.
-While the magic number used by the Unix systems can be seen using \fBod\fP(1),
-none of the Unix systems documents the format used for screen-dumps.
+.RS 4
+.EX
+\e001\e035
+.EE
+.RE
+.PP
+After the magic number,
+the \fI\%WINDOW\fP structure and line data are written in binary format.
+While the magic number used by these systems can be observed with
+\fIod\fP(1),
+none of them documents the format used for screen dumps.
 .PP
-The Unix systems do not use identical formats.
-While collecting information for for this manual page,
-the \fIsavescreen\fP test-program
-produced dumps of different size
-(all on 64-bit hardware, on 40x80 screens):
+Nor do they use an identical format,
+even with the System\ V family.
+The
+.I \%ncurses
+.I \%savescreen
+test program was used to collect information for this manual page.
+It produced dumps of different size
+(all on 64-bit hardware,
+on 40x80 screens):
 .bP
 AIX (51817 bytes)
 .bP
-HPUX (90093 bytes)
+HP-UX (90093 bytes)
 .bP
 Solaris 10 (13273 bytes)
 .bP
-ncurses5 (12888 bytes)
+\fI\%ncurses\fP5 (12888 bytes)
 .SS Solaris
-.PP
-As noted above, Solaris curses has no magic number corresponding
-to SVr4 curses.
-This is odd since Solaris was the first operating system
-to pass the SVr4 guidelines.
-Solaris has two versions of curses:
+As noted above,
+Solaris
+.I curses
+has no magic number corresponding to SVr4
+.IR curses .
+This is odd,
+since Solaris was the first operating system to meet the SVr4
+guidelines.
+Solaris furthermore supplies two versions of
+.IR curses .
 .bP
-The default curses library uses the SVr3 magic number.
+The default
+.I curses
+library uses the SVr3 magic number.
 .bP
-There is an alternate curses library in \fB/usr/xpg4\fP.
-This uses a textual format with no magic number.
+An alternate
+.I curses
+library
+(which we term
+.I \%xcurses),
+available in
+.IR /usr/xpg4 ,
+uses a textual format with no magic number.
 .IP
-According to the copyright notice, the \fIxpg4\fP Solaris curses library was
-developed by MKS (Mortice Kern Systems) from 1990 to 1995.
+According to its copyright notice,
+this
+.I \%xcurses
+library was developed by MKS
+(Mortice Kern Systems) from 1990 to 1995.
 .IP
-Like ncurses6, there is a file-header with parameters.
-Unlike ncurses6, the contents of the window are written piecemeal,
-with coordinates and attributes for each chunk of text rather
-than writing the whole window from top to bottom.
+Like ncurses6,
+it includes a header with parameters.
+Unlike ncurses6,
+the contents of the window are written piecemeal,
+with coordinates and attributes for each chunk of text rather than
+writing the whole window from top to bottom.
 .SS PDCurses
-.PP
-PDCurses added support for screen dumps in version 2.7 (2005).
-Like Unix SystemV and ncurses5,
-it writes the \fBWINDOW\fP structure in binary,
+.I \%PDCurses
+added support for screen dumps in version 2.7 (2005).
+Like System\ V and ncurses5,
+it writes the \fI\%WINDOW\fP structure in binary,
 but begins the file with its three-byte identifier \*(``PDC\*('',
-followed by a one-byte version,
-e.g.,
-.NS
-       \*(``PDC\\001\*(''
-.NE
-.SS NetBSD
+followed by a single-byte version number.
 .PP
-As of April 2017, NetBSD curses does
-not support \fBscr_dump\fP and \fBscr_restore\fP
-(or \fBscr_init\fP, \fBscr_set\fP),
-although it has \fBputwin\fP and \fBgetwin\fP.
+.RS 4
+.EX
+       \*(``PDC\e001\*(''
+.EE
+.RE
+.SS NetBSD
+As of April 2017,
+NetBSD
+.I curses
+does not support \fB\%scr_dump\fP and \fB\%scr_restore\fP
+(or \fB\%scr_init\fP,
+\fB\%scr_set\fP),
+although it has \fB\%putwin\fP and \fB\%getwin\fP.
 .PP
-Like ncurses5, NetBSD \fBputwin\fP does not identify its dumps with a
-useful magic number.
+Like ncurses5,
+NetBSD \fB\%putwin\fP does not identify its dumps with a useful magic
+number.
 It writes
 .bP
-the curses shared library major and minor versions
-as the first two bytes (e.g., 7 and 1),
+the
+.I curses
+shared library major and minor versions as the first two bytes
+(for example,
+7 and 1),
 .bP
-followed by a binary dump of the \fBWINDOW\fP,
+followed by a binary dump of the \fI\%WINDOW\fP,
 .bP
-some data for wide-characters referenced by the \fBWINDOW\fP structure, and
+some data for wide characters referenced by the \fI\%WINDOW\fP
+structure,
+and
 .bP
-finally, lines as done by other implementations.
-.SH EXAMPLE
-.PP
+finally,
+lines as done by other implementations.
+.SH EXAMPLES
 Given a simple program which writes text to the screen
 (and for the sake of example, limiting the screen-size to 10x20):
-.NS
+.PP
+.RS 4
+.EX
 #include <curses.h>
 
 int
@@ -300,33 +339,37 @@ main(void)
     endwin();
     return 0;
 }
-.NE
+.EE
+.RE
 .PP
 When run using ncurses6, the output looks like this:
-.NS
-\\210\\210\\210\\210ncurses 6.0.20170415
+.PP
+.RS 4
+.EX
+\e210\e210\e210\e210ncurses 6.0.20170415
 _cury=5
 _curx=11
 _maxy=9
 _maxx=19
 _flags=14
-_attrs=\\{REVERSE|C2}
+_attrs=\e{REVERSE|C2}
 flag=_idcok
 _delay=-1
 _regbottom=9
-_bkgrnd=\\{NORMAL|C1}\\s
+_bkgrnd=\e{NORMAL|C1}\es
 rows:
-1:\\{NORMAL|C1}\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
-2:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
-3:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
-4:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
-5:\\s\\s\\s\\s\\s\\{BOLD}Hello\\{NORMAL}\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
-6:\\s\\s\\s\\s\\s\\{REVERSE|C2}World!\\{NORMAL|C1}\\s\\s\\s\\s\\s\\s\\s\\s\\s
-7:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
-8:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
-9:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
-10:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s
-.NE
+1:\e{NORMAL|C1}\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es
+2:\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es
+3:\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es
+4:\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es
+5:\es\es\es\es\es\e{BOLD}Hello\e{NORMAL}\es\es\es\es\es\es\es\es\es\es
+6:\es\es\es\es\es\e{REVERSE|C2}World!\e{NORMAL|C1}\es\es\es\es\es\es\es\es\es
+7:\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es
+8:\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es
+9:\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es
+10:\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es\es
+.EE
+.RE
 .PP
 The first four octal escapes are actually nonprinting characters,
 while the remainder of the file is printable text.
@@ -334,18 +377,20 @@ You may notice:
 .bP
 The actual color pair values are not written to the file.
 .bP
-All characters are shown in printable form; spaces are \*(``\\s\*('' to
+All characters are shown in printable form; spaces are \*(``\es\*('' to
 ensure they are not overlooked.
 .bP
-Attributes are written in escaped curly braces, e.g., \*(``\\{BOLD}\*('',
-and may include a color-pair (C1 or C2 in this example).
+Attributes are written in escaped curly braces, e.g., \*(``\e{BOLD}\*('',
+and may include a color pair (C1 or C2 in this example).
 .bP
 The parameters in the header are written out only if they are nonzero.
 When reading back, order does not matter.
 .ne 10
 .PP
 Running the same program with Solaris \fIxpg4\fP curses gives this dump:
-.NS
+.PP
+.RS 4
+.EX
 MAX=10,20
 BEG=0,0
 SCROLL=0,10
@@ -379,7 +424,8 @@ BG=0,0,
 9,0,0,1,
 9,19,0,0,
 CUR=11,5
-.NE
+.EE
+.RE
 .PP
 Solaris \fBgetwin\fP requires that all parameters are present, and
 in the same order.
@@ -389,8 +435,10 @@ The \fIxpg4\fP curses library does not know about the \fBbce\fP
 .PP
 On the other hand, the SVr4 curses library does know about the background color.
 However, its screen dumps are in binary.
-Here is the corresponding dump (using \*(``od -t x1\*(''):
-.NS
+Here is the corresponding dump (using \*(``od \-t x1\*(''):
+.PP
+.RS 4
+.EX
 0000000 1c 01 c3 d6 f3 58 05 00 0b 00 0a 00 14 00 00 00
 0000020 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00
 0000040 00 00 b8 1a 06 08 cc 1a 06 08 00 00 09 00 10 00
@@ -413,17 +461,16 @@ Here is the corresponding dump (using \*(``od -t x1\*(''):
 0001620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 *
 0002371
-.NE
-.SH SEE ALSO
-.PP
-\fBcurs_scr_dump\fP(3X),
-\fBcurs_util\fP(3X).
+.EE
+.RE
 .SH AUTHORS
-.PP
 Thomas E. Dickey
 .br
-extended screen-dump format for ncurses 6.0 (2015)
+extended screen-dump format for \fI\%ncurses\fP 6.0 (2015)
 .sp
 Eric S. Raymond
 .br
-screen dump feature in ncurses 1.9.2d (1995)
+screen dump feature in \fI\%ncurses\fP 1.9.2d (1995)
+.SH SEE ALSO
+\fB\%curs_scr_dump\fP(3X),
+\fB\%curs_util\fP(3X)
index 84c6b22e880c2d0b24f8d249d441bed34772619c..059bc1ec66fcf7fdbbca52895bb0ae547eaf479f 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: tabs.1,v 1.35 2021/12/25 19:04:39 tom Exp $
-.TH @TABS@ 1 ""
-.ds n 5
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: tabs.1,v 1.59 2024/04/20 19:08:15 tom Exp $
+.TH @TABS@ 1 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
+.
 .SH NAME
-\fB@TABS@\fP \- set tabs on a terminal
+\fB\%@TABS@\fP \-
+set terminal tab stops
 .SH SYNOPSIS
-\fB@TABS@\fP [\fIoptions\fP]] \fI[tabstop-list]\fP
+\fB@TABS@\fP [\fIoptions\fP] [\fItabstop-list\fP]
 .SH DESCRIPTION
-.PP
 The \fB@TABS@\fP program clears and sets tab-stops on the terminal.
 This uses the terminfo \fBclear_all_tabs\fP and \fBset_tab\fP capabilities.
 If either is absent, \fB@TABS@\fP is unable to clear/set tab-stops.
 The terminal should be configured to use hard tabs, e.g.,
-.NS
+.PP
+.RS 4
+.EX
 stty tab0
-.NE
+.EE
+.RE
 .PP
 Like \fB@CLEAR@\fP(1), \fB@TABS@\fP writes to the standard output.
 You can redirect the standard output to a file (which prevents
@@ -79,15 +75,18 @@ If the hardware tabstops differ from the information in the terminal
 database, the result is unpredictable.
 Before running curses programs,
 you should either reset tab-stops to the standard interval
-.NS
-tabs -8
-.NE
+.PP
+.RS 4
+.EX
+tabs \-8
+.EE
+.RE
 .PP
 or use the \fB@RESET@\fP program,
 since the normal initialization sequences do not ensure that tab-stops
 are reset.
 .SH OPTIONS
-.SS General Options
+.SS "General Options"
 .TP 5
 .BI \-T "name"
 Tell \fB@TABS@\fP which terminal type to use.
@@ -105,12 +104,13 @@ This option tells \fB@TABS@\fP to check the options and run any debugging
 option, but not to modify the terminal settings.
 .TP
 \fB\-V\fP
-reports the version of ncurses which was used in this program, and exits.
+reports the version of \fI\%ncurses\fP which was used in this program,
+and exits.
 .PP
 The \fB@TABS@\fP program processes a single list of tab stops.
 The last option to be processed which defines a list is the one that
 determines the list to be processed.
-.SS Implicit Lists
+.SS "Implicit Lists"
 Use a single number as an option,
 e.g., \*(``\fB\-5\fP\*('' to set tabs at the given
 interval (in this case 1, 6, 11, 16, 21, etc.).
@@ -119,27 +119,32 @@ Tabs are repeated up to the right margin of the screen.
 Use \*(``\fB\-0\fP\*('' to clear all tabs.
 .PP
 Use \*(``\fB\-8\fP\*('' to set tabs to the standard interval.
-.SS Explicit Lists
+.SS "Explicit Lists"
 An explicit list can be defined after the options
 (this does not use a \*(``\-\*('').
 The values in the list must be in increasing numeric order,
 and greater than zero.
 They are separated by a comma or a blank, for example,
-.NS
+.PP
+.RS 4
+.EX
 tabs 1,6,11,16,21
-.br
 tabs 1 6 11 16 21
-.NE
+.EE
+.RE
 .PP
 Use a \*(``+\*('' to treat a number
 as an increment relative to the previous value,
 e.g.,
-.NS
+.PP
+.RS 4
+.EX
 tabs 1,+5,+5,+5,+5
-.NE
+.EE
+.RE
 .PP
 which is equivalent to the 1,6,11,16,21 example.
-.SS Predefined Tab-Stops
+.SS "Predefined Tab Stops"
 POSIX defines several predefined lists of tab stops.
 .TP 5
 .B \-a
@@ -187,107 +192,166 @@ UNIVAC 1100 Assembler
 .br
 1,12,20,44
 .SS Margins
-A few terminals provide the capability for changing their left/right margins.
-The @TABS@ program has an option to use this feature:
+A few terminals expose a means of changing their left and right margins.
+\fB@TABS@\fP supports this feature with an option.
 .TP 5
 .BI +m \ margin
 The effect depends on whether the terminal has the margin capabilities:
 .RS
 .bP
 If the terminal provides the capability for setting the left margin,
-@TABS@ uses this, and adjusts the available width for tab-stops.
+\fB@TABS@\fP uses this,
+and adjusts the available tab stop widths.
 .bP
 If the terminal does not provide the margin capabilities,
-@TABS@ imitates the effect, putting the tab stops at the appropriate
-place on each line.
-The terminal's left-margin is not modified.
+\fB@TABS@\fP imitates their effect,
+putting tab stops at appropriate places on each line.
+The terminal's left margin is not modified.
 .RE
 .IP
-If the \fImargin\fP parameter is omitted, the default is 10.
-Use \fB+m0\fP to reset the left margin,
-i.e., to the left edge of the terminal's display.
-Before setting a left-margin,
-@TABS@ resets the margin to reduce problems which might arise
-on moving the cursor before the current left-margin.
+If the
+.I margin
+parameter is omitted,
+the default is 10.
+Use
+.B +m0
+to reset the left margin,
+that is,
+to make it the left edge of the terminal's display.
+Before setting a left margin,
+\fB@TABS@\fP resets the margin to reduce problems that might arise
+from moving the cursor to the left of the current left margin.
 .PP
-When setting or resetting the left-margin,
-@TABS@ may reset the right-margin.
+When setting or resetting the left margin,
+\fB@TABS@\fP may also reset the right margin.
+.SH FILES
+.TP
+.I @DATADIR@/tabset
+tab stop initialization database
 .SH PORTABILITY
-.PP
-\fIIEEE Std 1003.1/The Open Group Base Specifications Issue 7\fP (POSIX.1-2008)
-describes a \fBtabs\fP utility.
-However
+IEEE Std 1003.1/The Open Group Base Specifications Issue 7
+(POSIX.1-2008)
+describes a
+.B tabs
+utility.
+However,
 .bP
-This standard describes a \fB+m\fP option, to set a terminal's left-margin.
+this standard describes a
+.B +m
+option to set a terminal's left margin.
 Very few of the entries in the terminal database provide the
-\fBsmgl\fP (\fBset_left_margin\fP) or
-\fBsmglp\fP (\fBset_left_margin_parm\fP)
-capability needed to support the feature.
+.B \%set_left_margin
+.RB ( smgl )
+or
+.B \%set_left_margin_parm
+.RB \%( smglp )
+capabilities needed to support the feature.
 .bP
 There is no counterpart in X/Open Curses Issue 7 for this utility,
 unlike \fB@TPUT@\fP(1).
 .PP
-The \fB\-d\fP (debug) and \fB\-n\fP (no-op) options are extensions not provided
-by other implementations.
-.PP
-A \fBtabs\fP utility appeared in PWB/Unix 1.0 (1977).
-There was a reduced version of the \fBtabs\fP utility
-in Unix 7th edition and in 3BSD (1979).
-The latter supported a single \*(``\-n\*('' option
-(to cause the first tab stop to be set on the left margin).
-That option is not documented by POSIX.
+The
+.B \-d
+(debug) and
+.B \-n
+(no-op) options are
+.I \%ncurses
+extensions not provided by other implementations.
+.SH HISTORY
+A
+.B tabs
+utility appeared in PWB/Unix 1.0 (1977).
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=PWB1/sys/source/s2/\
+.\"   tabs.c
+A reduced version shipped in Seventh Edition Unix
+(early 1979)
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/tabs.c
+and in 3BSD
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/src/cmd/\
+.\"   tabs.c
+(later the same year);
+it supported a \*(``\-n\*('' option to set the first tab stop at the
+left margin.
+That option is not specified by POSIX.
 .PP
-The PWB/Unix \fBtabs\fP utility, which was included in System III (1980),
-used built-in tables rather than the terminal database,
+The PWB/Unix
+.B tabs
+utility returned in System III (1980),
+and used built-in tables
 to support a half-dozen hardcopy terminal (printer) types.
-It also had built-in logic to support the left-margin,
+It also had logic to support setting the left margin,
 as well as a feature for copying the tab settings from a file.
 .PP
-Later versions of Unix, e.g., SVr4,
+Versions of the program in later releases of AT&T Unix,
+such as SVr4,
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=SysVR4/cmd/tabs/tabs.c
 added support for the terminal database,
-but kept the tables to support the printers.
-In an earlier development effort,
-the tab-stop initialization provided by \fBtset\fP (1982)
-and incorporated into \fBtput\fP uses the terminal database,
+but retained the tables to support the printers.
+By this time,
+System\ V
+.B tput
+had incorporated the tab stop initialization feature of BSD's
+.B tset
+from 1982,
+but employed the
+.I \%term\%info
+database to do so.
 .PP
-The \fB+m\fP option was documented
-in the Base Specifications Issue 5 (Unix98, 1997),
-and omitted in Issue 6 (Unix03, 2004) without documenting the rationale,
+The
+.B +m
+option was documented in the POSIX Base Specifications Issue 5
+(Unix98, 1997),
+then omitted in Issue 6
+(Unix03, 2004)
+without express motivation,
 though an introductory comment
-\fI\*(``and optionally adjusts the margin\*(''\fP remains,
+\*(``and optionally adjusts the margin\*('' remains,
 overlooked in the removal.
-The documented \fBtabs\fP utility in Issues 6 and later has no mechanism
-for setting margins.
-The \fB+m\fP option in this implementation differs from the feature
-in SVr4 by using terminal capabilities rather than built-in tables.
+The
+.B tabs
+utility documented in Issues 6 and later has no mechanism for setting
+margins.
+The
+.B +m
+option in
+.I \%ncurses
+\fB\%@TABS@\fP differs from the SVr4 feature by using terminal
+capabilities rather than built-in tables.
 .PP
-POSIX documents no limits on the number of tab stops.
-Documentation for other implementations states that there is a limit on the
-number of tab stops
-(e.g., 20 in PWB/Unix's \fBtabs\fP utility).
-While some terminals may not accept an arbitrary number
-of tab stops, this implementation will attempt to set tab stops up to the
-right margin of the screen, if the given list happens to be that long.
+POSIX documents no limit on the number of tab stops.
+Other implementations impose one;
+the limit is 20 in PWB/Unix's
+.B tabs
+utility.
+While some terminals may not accept an arbitrary number of tab stops,
+.I \%ncurses
+\fB\%@TABS@\fP attempts to set tab stops up to the right margin if the
+list thereof is sufficiently long.
 .PP
-The \fIRationale\fP section of the POSIX documentation goes into some
-detail about the ways the committee considered redesigning the
-\fBtabs\fP and \fBtput\fP utilities,
-without proposing an improved solution.
-It comments that
-.RS 5
+The \*(``Rationale\*('' section of the Issue 6
+.B tabs
+reference page
+.\" https://pubs.opengroup.org/onlinepubs/009604499/utilities/tabs.html
+details how the committee considered redesigning the
+.B tabs
+and
+.B tput
+utilities,
+without settling on an improved solution.
+It claims that
 .PP
-no known historical version of tabs supports the capability of setting
-arbitrary tab stops.
+.RS 4
+\*(``no known historical version of
+.I tabs
+supports the capability of setting arbitrary tab stops.\*(''
 .RE
 .PP
-However, the \fIExplicit Lists\fP described in this manual page
-were implemented in PWB/Unix.
-Those provide the capability of setting abitrary tab stops.
+The feature described in subsection \*(``Explicit Lists\*('' above was
+implemented in PWB/Unix,
+.\" see URL above
+and permitted the setting of abitrary tab stops nevertheless.
 .SH SEE ALSO
-\fB@INFOCMP@\fP(1M),
-\fB@TSET@\fP(1),
-\fBcurses\fP(3X),
-\fBterminfo\fP(\*n).
-.PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+\fB\%@INFOCMP@\fP(1M),
+\fB\%@TSET@\fP(1),
+\fB\%curses\fP(3X),
+\fB\%terminfo\fP(5)
index b21e90f8ffa669277448b372c66983e663beb48d..cec231f551a3ab29a12063f410dca7dca2354752 100644 (file)
@@ -1,5 +1,6 @@
+'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: term.5,v 1.43 2021/12/25 21:28:59 tom Exp $
-.TH term 5
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
+.\" $Id: term.5,v 1.77 2024/04/20 21:24:19 tom Exp $
+.TH term 5 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.ds '  \(aq
+.ds ^  \(ha
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.ds       '  '
+.ds       ^  ^
+.\}
+.ie n .ds CW R
+.el   \{
+.ie \n(.g .ds CW CR
+.el       .ds CW CW
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.ds n 5
+.
 .ds d @TERMINFO@
 .SH NAME
-term \- format of compiled term file.
+term \-
+compiled \fIterminfo\fR terminal description
 .SH SYNOPSIS
 .B term
 .SH DESCRIPTION
-.SS STORAGE LOCATION
+.SS "Storage Location"
 Compiled terminfo descriptions are placed under the directory \fB\*d\fP.
-Two configurations are supported (when building the \fBncurses\fP libraries):
+Two configurations are supported
+(when building the \fI\%ncurses\fP libraries):
 .TP 5
 .B directory tree
 A two-level scheme is used to avoid a linear search
-of a huge \s-1UNIX\s+1 system directory: \fB\*d/c/name\fP where
+of a huge Unix system directory: \fB\*d/c/name\fP where
 .I name
 is the name of the terminal, and
 .I c
@@ -83,15 +88,16 @@ the terminfo's primary name as a key,
 and records containing only aliases pointing to the primary name.
 .IP
 If built to write hashed databases,
-\fBncurses\fP can still read terminfo databases organized as a directory tree,
+\fI\%ncurses\fP can still read terminfo databases organized as a
+directory tree,
 but cannot write entries into the directory tree.
 It can write (or rewrite) entries in the hashed database.
 .IP
-\fBncurses\fP distinguishes the two cases in the TERMINFO and TERMINFO_DIRS
-environment variable by assuming a directory tree for entries that
-correspond to an existing directory,
+\fI\%ncurses\fP distinguishes the two cases in the \fI\%TERMINFO\fP and
+\fI\%TERMINFO_DIRS\fP environment variable by assuming a directory tree
+for entries that correspond to an existing directory,
 and hashed database otherwise.
-.SS LEGACY STORAGE FORMAT
+.SS "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 ordering
 or sign extension are made.
@@ -105,7 +111,7 @@ a) \fIheader\fP,
 .TP 3
 b) \fIterminal names\fP,
 .TP 3
-c) \fIboolean flags\fP,
+c) \fIBoolean flags\fP,
 .TP 3
 d) \fInumbers\fP,
 .TP 3
@@ -124,7 +130,7 @@ These integers are
 .TP 5
 (2) the size, in bytes, of the \fIterminal names\fP section;
 .TP 5
-(3) the number of bytes in the \fIboolean flags\fP section;
+(3) the number of bytes in the \fIBoolean flags\fP section;
 .TP 5
 (4) the number of short integers in the \fInumbers\fP section;
 .TP 5
@@ -134,7 +140,7 @@ These integers are
 .RE
 .PP
 The capabilities in the
-\fIboolean flags\fP,
+\fIBoolean flags\fP,
 \fInumbers\fP, and
 \fIstrings\fP
 sections are in the same order as the file <term.h>.
@@ -162,14 +168,14 @@ If a capability is absent from this terminal,
 .IP
 The integer value \-1 is represented by two bytes 0377, 0377.
 .br
-Absent boolean values are represented by the byte 0 (false).
+Absent Boolean values are represented by the byte 0 (false).
 .bP
 If a capability has been canceled from this terminal,
 @TIC@ stores a \-2 in the corresponding table.
 .IP
 The integer value \-2 is represented by two bytes 0377, 0376.
 .br
-The boolean value \-2 is represented by the byte 0376.
+The Boolean value \-2 is represented by the byte 0376.
 .br
 .bP
 Other negative values are illegal.
@@ -181,11 +187,11 @@ separated by the \*(``|\*('' character.
 The \fIterminal names\fP section is terminated
 with an \s-1ASCII NUL\s+1 character.
 .PP
-The \fIboolean flags\fP section has one byte for each flag.
+The \fIBoolean flags\fP section has one byte for each flag.
 Boolean capabilities are either 1 or 0 (true or false)
 according to whether the terminal supports the given capability or not.
 .PP
-Between the \fIboolean flags\fP section and the \fInumber\fP section,
+Between the \fIBoolean flags\fP section and the \fInumber\fP section,
 a null byte will be inserted, if necessary,
 to ensure that the \fInumber\fP section begins on an even byte
 This is a relic of the PDP\-11's word-addressed architecture,
@@ -193,7 +199,7 @@ 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.
 .PP
-The \fInumbers\fP section is similar to the \fIboolean flags\fP section.
+The \fInumbers\fP section is similar to the \fIBoolean flags\fP section.
 Each capability takes up two bytes,
 and is stored as a little-endian short integer.
 .PP
@@ -205,24 +211,24 @@ The \fIstring table\fP is the last section.
 It contains all of the values of string capabilities referenced in
 the \fIstrings\fP section.
 Each string is null-terminated.
-Special characters in ^X or \ec notation are stored in their
+Special characters in \*^X or \ec notation are stored in their
 interpreted form, not the printing representation.
 Padding information $<nn> and parameter information %x are
 stored intact in uninterpreted form.
-.SS EXTENDED STORAGE FORMAT
+.SS "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 predefined set of boolean, number or string capabilities.
+the same binary format is used in all modern Unix systems.
+Each system uses a predefined set of Boolean, number or string capabilities.
 .PP
-The \fBncurses\fP libraries and applications support
+The \fI\%ncurses\fP libraries and applications support
 extended terminfo binary format,
 allowing users to define capabilities which are loaded at runtime.
 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.
-\fBncurses\fP checks the size,
+\fI\%ncurses\fP checks the size,
 and if it exceeds that due to the predefined data,
 continues to parse according to its own scheme.
 .PP
@@ -230,7 +236,7 @@ First, it reads the extended header (5 short integers):
 .RS 5
 .TP 5
 (1)
-count of extended boolean capabilities
+count of extended Boolean capabilities
 .TP 5
 (2)
 count of extended numeric capabilities
@@ -249,22 +255,31 @@ The count- and size-values for the extended string table
 include the extended capability \fInames\fP as well as
 extended capability \fIvalues\fP.
 .PP
-Using the counts and sizes, \fBncurses\fP allocates arrays and reads data
-for the extended capabilities in the same order as the header information.
+Using the counts and sizes,
+\fI\%ncurses\fP allocates arrays and reads data for the extended
+capabilities in the same order as the header information.
 .PP
 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 capabilities in order, e.g., Booleans, then numbers and
 finally strings.
 .PP
+By storing terminal descriptions in this way,
+\fI\%ncurses\fP is able to provide a database useful with legacy
+applications,
+as well as providing data for applications which need more than the
+predefined capabilities.
+See \fBuser_caps\fP(5) for an overview
+of the way \fI\%ncurses\fP uses this extended information.
+.PP
 Applications which manipulate terminal data can use the definitions
 described in \fBterm_variables\fP(3X) which associate the long capability
 names with members of a \fBTERMTYPE\fP structure.
 .
-.SS EXTENDED NUMBER FORMAT
-.PP
+.SS "Extended Number Format"
 On occasion, 16-bit signed integers are not large enough.
-With \fBncurses\fP 6.1, a new format was introduced by making a few changes
+With \fI\%ncurses\fP 6.1,
+a new format was introduced by making a few changes
 to the legacy format:
 .bP
 a different magic number (octal 01036)
@@ -277,9 +292,12 @@ to direct users of the \fBTERMTYPE\fP structure as in previous formats.
 However, that cannot provide callers with the extended numbers.
 The library uses a similar but hidden data structure \fBTERMTYPE2\fP
 to provide data for the terminfo functions.
+.SH FILES
+.TP
+.I \*d
+compiled terminal description database
 .SH PORTABILITY
 .SS setupterm
-.PP
 Note that it is possible for
 .B setupterm
 to expect a different set of capabilities
@@ -296,22 +314,21 @@ The routine
 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 boolean, number, and string capabilities.
-.SS Binary format
-.PP
+of Boolean, number, and string capabilities.
+.SS "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,
+System V curses used a directory-tree of binary files,
 one per terminal description.
 .PP
 Despite the consistent use of little-endian for numbers and the otherwise
 self-describing format, it is not wise to count on portability of binary
-terminfo entries between commercial UNIX versions.
+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 \fBterminfo\fP(\*n) for detailed
+System V and X/Open Curses extensions.
+See \fBterminfo\fP(5) for detailed
 discussion of terminfo source compatibility issues.
 .PP
 This implementation is by default compatible with the binary
@@ -319,10 +336,9 @@ 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
+can be matched by building \fI\%ncurses\fP
 with different configuration options.
-.SS Magic codes
-.PP
+.SS "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,
@@ -331,41 +347,72 @@ System V defined more than one magic number,
 with 0433, 0435 as screen-dumps (see \fBscr_dump\fP(5)).
 This implementation uses 01036 as a continuation of that sequence,
 but with a different high-order byte to avoid confusion.
-.SS The TERMTYPE structure
-.PP
+.SS "The \fITERMTYPE\fP Structure"
 Direct access to the \fBTERMTYPE\fP structure is provided for legacy
 applications.
 Portable applications should use the \fBtigetflag\fP and related functions
 described in \fBcurs_terminfo\fP(3X) for reading terminal capabilities.
-.SS Mixed-case terminal names
-.PP
+.SS "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,
-\fBncurses\fP represents the \*(``first character\*(''
+\fI\%ncurses\fP represents the \*(``first character\*(''
 of the terminal name used as
 the intermediate level of a directory tree in (two-character) hexadecimal form.
-.SH EXAMPLE
+.SS Limits
+\fI\%ncurses\fP stores compiled terminal descriptions
+in three related formats,
+described in the sections
+.bP
+\fBLEGACY STORAGE FORMAT\fP, and
+.bP
+\fBEXTENDED STORAGE FORMAT\fP, and
+.bP
+\fBEXTENDED NUMBER FORMAT\fP.
+.PP
+The legacy storage format and the extended number format differ by
+the types of numeric capability which they can store
+(i.e., 16-bit versus 32-bit integers).
+The extended storage format introduced by \fI\%ncurses\fP 5.0 adds data
+to either of these formats.
+.PP
+Some limitations apply:
+.bP
+total compiled entries cannot exceed 4096 bytes in the legacy format.
+.bP
+total compiled entries cannot exceed 32768 bytes in the extended format.
+.bP
+the name field cannot exceed 128 bytes.
+.PP
+Compiled entries are limited to 32768 bytes because offsets into the
+\fIstrings table\fP use two-byte integers.
+The legacy format could have supported 32768-byte entries,
+but was limited to a virtual memory page's 4096 bytes.
+.SH EXAMPLES
 As an example, here is a description for the Lear-Siegler
 ADM\-3, a popular though rather stupid early terminal:
-.NS
+.PP
+.EX
 adm3a|lsi adm3a,
         am,
         cols#80, lines#24,
-        bel=^G, clear=\032$<1>, cr=^M, cub1=^H, cud1=^J,
-        cuf1=^L, cup=\\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
-        home=^^, ind=^J,
-.NS
+        bel=\*^G, clear=\e032$<1>, cr=\*^M, cub1=\*^H, cud1=\*^J,
+        cuf1=\*^L, cup=\eE=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\*^K,
+        home=\*^\*^, ind=\*^J,
+.EE
 .PP
 and a hexadecimal dump of the compiled terminal description:
-.NS
-.ft CW
-\s-20000  1a 01 10 00 02 00 03 00  82 00 31 00 61 64 6d 33  ........ ..1.adm3
+.PP
+.if t .in +4n
+.ft \*(CW
+.TS
+Lp-1.
+0000  1a 01 10 00 02 00 03 00  82 00 31 00 61 64 6d 33  ........ ..1.adm3
 0010  61 7c 6c 73 69 20 61 64  6d 33 61 00 00 01 50 00  a|lsi ad m3a...P.
 0020  ff ff 18 00 ff ff 00 00  02 00 ff ff ff ff 04 00  ........ ........
-0030  ff ff ff ff ff ff ff ff  0a 00 25 00 27 00 ff ff  ........ ..%.'...
-0040  29 00 ff ff ff ff 2b 00  ff ff 2d 00 ff ff ff ff  ).....+. ..-.....
+0030  ff ff ff ff ff ff ff ff  0a 00 25 00 27 00 ff ff  ........ ..%.\*'...
+0040  29 00 ff ff ff ff 2b 00  ff ff 2d 00 ff ff ff ff  ).....+. ..\-.....
 0050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
 0060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
 0070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
@@ -382,36 +429,24 @@ and a hexadecimal dump of the compiled terminal description:
 0120  ff ff ff ff ff ff 2f 00  07 00 0d 00 1a 24 3c 31  ....../. .....$<1
 0130  3e 00 1b 3d 25 70 31 25  7b 33 32 7d 25 2b 25 63  >..=%p1% {32}%+%c
 0140  25 70 32 25 7b 33 32 7d  25 2b 25 63 00 0a 00 1e  %p2%{32} %+%c....
-0150  00 08 00 0c 00 0b 00 0a  00                       ........ .\s+2
-.ft R
-.NE
-.sp
-.SH LIMITS
-Some limitations:
-.bP
-total compiled entries cannot exceed 4096 bytes in the legacy format.
-.bP
-total compiled entries cannot exceed 32768 bytes in the extended format.
-.bP
-the name field cannot exceed 128 bytes.
-.PP
-Compiled entries are limited to 32768 bytes because offsets into the
-\fIstrings table\fP use two-byte integers.
-The legacy format could have supported 32768-byte entries,
-but was limited a virtual memory page's 4096 bytes.
-.SH FILES
-\*d/*/*        compiled terminal capability database
-.SH SEE ALSO
-\fBcurses\fP(3X), \fBterminfo\fP(\*n).
+0150  00 08 00 0c 00 0b 00 0a  00                       ........ .
+.TE
+.ft
+.in
 .SH AUTHORS
 Thomas E. Dickey
 .br
-extended terminfo format for ncurses 5.0
+extended terminfo format for \fI\%ncurses\fP 5.0
 .br
-hashed database support for ncurses 5.6
+hashed database support for \fI\%ncurses\fP 5.6
 .br
-extended number support for ncurses 6.1
+extended number support for \fI\%ncurses\fP 6.1
 .sp
 Eric S. Raymond
 .br
 documented legacy terminfo format, e.g., from \fIpcurses\fP.
+.SH SEE ALSO
+\fB\%curses\fP(3X),
+\fB\%curs_terminfo\fP(3X),
+\fB\%terminfo\fP(5),
+\fB\%user_caps\fP(5)
index f3a0e756b229cc00b090ee6b84856fa42d762bb3..84d100d840ca448e08f5debd49ee51b8b5b97b91 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2011,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: term.7,v 1.31 2021/12/25 17:39:16 tom Exp $
-.TH term 7
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.ds n 5
+.\" $Id: term.7,v 1.48 2024/03/16 15:35:01 tom Exp $
+.TH term 7 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" Miscellaneous
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .ds d @TERMINFO@
 .SH NAME
-term \- conventions for naming terminal types
+term \-
+conventions for naming terminal types
+.\"SH SYNOPSIS
 .SH DESCRIPTION
-.PP
-The environment variable \fBTERM\fP should normally contain the type name of
-the terminal, console or display-device type you are using.
+The environment variable \fITERM\fP should normally contain the type
+name of the terminal,
+console or display-device type you are using.
 This information
 is critical for all screen-oriented programs, including your editor and mailer.
 .PP
-A default \fBTERM\fP value will be set on a per-line basis by either
-\fB/etc/inittab\fP (e.g., System\-V-like UNIXes)
-or \fB/etc/ttys\fP (BSD UNIXes).
+A default \fITERM\fP value will be set on a per-line basis by either
+\fB/etc/inittab\fP (e.g., System\-V-like Unices)
+or \fB/etc/ttys\fP (BSD Unices).
 This will nearly always suffice for workstation and microcomputer consoles.
 .PP
 If you use a dialup line, the type of device attached to it may vary.
-Older UNIX systems pre-set a very dumb terminal type
+Older Unix systems pre-set a very dumb terminal type
 like \*(``dumb\*('' or \*(``dialup\*('' on dialup lines.
 Newer ones may pre-set \*(``vt100\*('', reflecting the prevalence of DEC
 VT100-compatible terminals and personal-computer emulators.
 .PP
-Modern telnets pass your \fBTERM\fP environment variable from the local side to
-the remote one.
+Modern telnets pass your \fITERM\fP environment variable from the local
+side to the remote one.
 There can be problems if the remote terminfo or termcap entry
 for your type is not compatible with yours, but this situation is rare and
 can almost always be avoided by explicitly exporting \*(``vt100\*(''
 (assuming you are in fact using a VT100-superset console,
 terminal, or terminal emulator).
 .PP
-In any case, you are free to override the system \fBTERM\fP setting to your
-taste in your shell profile.
+In any case, you are free to override the system \fITERM\fP setting to
+your taste in your shell profile.
 The \fB@TSET@\fP(1) utility may be of assistance;
 you can give it a set of rules for deducing or requesting a terminal type based
 on the tty device and baud rate.
 .PP
-Setting your own \fBTERM\fP value may also be useful if you have created a
-custom entry incorporating options (such as visual bell or reverse-video)
+Setting your own \fITERM\fP value may also be useful if you have created
+a custom entry incorporating options
+(such as visual bell or reverse-video)
 which you wish to override the system default type for your line.
 .PP
 Terminal type descriptions are stored as files of capability data underneath
 \*d.
 To browse a list of all terminal names recognized by the system, do
 .sp
-       @TOE@ | more
+        @TOE@ | more
 .sp
 from your shell.
 These capability files are in a binary format optimized for
@@ -85,21 +94,24 @@ retrieval speed (unlike the old text-based \fBtermcap\fP format they replace);
 to examine an entry, you must use the \fB@INFOCMP@\fP(1M) command.
 Invoke it as follows:
 .sp
-       @INFOCMP@ \fIentry_name\fP
+        @INFOCMP@ \fIentry_name\fP
 .sp
 where \fIentry_name\fP is the name of the type you wish to examine (and the
 name of its capability file the subdirectory of \*d named for its first
 letter).
 This command dumps a capability file in the text format described by
-\fBterminfo\fP(\*n).
+\fBterminfo\fP(5).
 .PP
-The first line of a \fBterminfo\fP(\*n) description gives the names by which
+The first line of a \fBterminfo\fP(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
-\fIprimary name\fP, and is the one to use when setting \fBTERM\fP.  The last
-name field (if distinct from the first) is actually a description of the
+\fIprimary name\fP,
+and is the one to use when setting \fITERM\fP.
+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 aliases for the terminal,
@@ -206,19 +218,21 @@ 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 \fBTERM\fP environment variable when no \-T option is specified.
+on the \fITERM\fP environment variable when no \-T option is specified.
+.SH FILES
+.TP
+.I \*d
+compiled terminal description database
+.TP
+.I /etc/inittab
+tty line initialization (AT&T-like Unices)
+.TP
+.I /etc/ttys
+tty line initialization (BSD-like Unices)
 .SH PORTABILITY
-For maximum compatibility with older System V UNIXes, names and aliases
+For maximum compatibility with older System V Unices, names and aliases
 should be unique within the first 14 characters.
-.SH FILES
-.TP 5
-\*d/?/*
-compiled terminal capability database
-.TP 5
-/etc/inittab
-tty line initialization (AT&T-like UNIXes)
-.TP 5
-/etc/ttys
-tty line initialization (BSD-like UNIXes)
 .SH SEE ALSO
-\fBcurses\fP(3X), \fBterminfo\fP(\*n), \fBterm\fP(\*n).
+\fB\%curses\fP(3X),
+\fB\%term\fP(5),
+\fB\%terminfo\fP(5)
index ccf441358681500cdb31d84601ca49760118523a..6aee63f487ed2ae0596ced4180069bbc79b3fe2c 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2010-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: term_variables.3x,v 1.16 2023/01/02 12:17:34 tom Exp $
-.TH term_variables 3X ""
-.ds n 5
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.na
-.hy 0
+.\" $Id: term_variables.3x,v 1.36 2024/03/16 15:35:01 tom Exp $
+.TH term_variables 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .SH NAME
-\fBSP\fP,
-\fBacs_map\fP,
-\fBboolcodes\fP,
-\fBboolfnames\fP,
-\fBboolnames\fP,
-\fBcur_term\fP,
-\fBnumcodes\fP,
-\fBnumfnames\fP,
-\fBnumnames\fP,
-\fBstrcodes\fP,
-\fBstrfnames\fP,
-\fBstrnames\fP,
-\fBttytype\fP
-\- \fBcurses\fP terminfo global variables
-.ad
-.hy
+\fB\%SP\fP,
+\fB\%acs_map\fP,
+\fB\%boolcodes\fP,
+\fB\%boolfnames\fP,
+\fB\%boolnames\fP,
+\fB\%cur_term\fP,
+\fB\%numcodes\fP,
+\fB\%numfnames\fP,
+\fB\%numnames\fP,
+\fB\%strcodes\fP,
+\fB\%strfnames\fP,
+\fB\%strnames\fP,
+\fB\%ttytype\fP \-
+\fIterminfo\fR global variables
 .SH SYNOPSIS
 .nf
-\fB#include <curses.h>\fP
-.br
-\fB#include <term.h>\fP
-.PP
-\fBchtype acs_map[];\fP
-.sp
-\fBSCREEN * SP;\fP
-.sp
-\fBTERMINAL * cur_term;\fP
-.sp
-\fBchar ttytype[];\fP
-.sp
-\fBNCURSES_CONST char * const boolcodes[];\fP
-.br
-\fBNCURSES_CONST char * const boolfnames[];\fP
-.br
-\fBNCURSES_CONST char * const boolnames[];\fP
-.sp
-\fBNCURSES_CONST char * const numcodes[];\fP
-.br
-\fBNCURSES_CONST char * const numfnames[];\fP
-.br
-\fBNCURSES_CONST char * const numnames[];\fP
-.sp
-\fBNCURSES_CONST char * const strcodes[];\fP
-.br
-\fBNCURSES_CONST char * const strfnames[];\fP
-.br
-\fBNCURSES_CONST char * const strnames[];\fP
-.br
+\fB#include <curses.h>
+\fB#include <term.h>
+.PP
+\fBchtype acs_map[];
+.PP
+\fBSCREEN * SP;
+.PP
+\fBTERMINAL * cur_term;
+.PP
+\fBchar ttytype[];
+.PP
+\fBNCURSES_CONST char * const boolcodes[];
+\fBNCURSES_CONST char * const boolfnames[];
+\fBNCURSES_CONST char * const boolnames[];
+.PP
+\fBNCURSES_CONST char * const numcodes[];
+\fBNCURSES_CONST char * const numfnames[];
+\fBNCURSES_CONST char * const numnames[];
+.PP
+\fBNCURSES_CONST char * const strcodes[];
+\fBNCURSES_CONST char * const strfnames[];
+\fBNCURSES_CONST char * const strnames[];
 .fi
 .SH DESCRIPTION
 This page summarizes variables provided by the \fBcurses\fP library's
@@ -96,7 +90,7 @@ or macros (see \fBcurs_threads\fP(3X))
 which provide read-only access to \fIcurses\fP's state.
 In either case, applications should treat them as read-only to avoid
 confusing the library.
-.SS Alternate Character Set Mapping
+.SS "Alternate Character Set Mapping"
 After initializing the curses or terminfo interfaces,
 the \fBacs_map\fP array holds information used to translate cells
 with the \fBA_ALTCHARSET\fP video attribute into line-drawing characters.
@@ -106,7 +100,7 @@ Application developers need only know that it is used for the \*(``ACS_\*(''
 constants in <curses.h>.
 .PP
 The comparable data for the wide-character library is a private variable.
-.SS Current Terminal Data
+.SS "Current Terminal Data"
 After initializing the curses or terminfo interfaces,
 the \fBcur_term\fP contains data describing the current terminal.
 This variable is also set as a side-effect of \fBset_term\fP(3X)
@@ -116,7 +110,7 @@ It is possible to save a value of \fBcur_term\fP for subsequent
 use as a parameter to \fBset_term\fP, for switching between screens.
 Alternatively, one can save the return value from \fBnewterm\fP
 or \fBsetupterm\fP(3X) to reuse in \fBset_term\fP.
-.SS Terminfo Lookup Tables
+.SS "\fIterminfo\fP Lookup Tables"
 The \fB@TIC@\fP(1) and \fB@INFOCMP@\fP(1) programs use lookup tables for
 the long and short names of terminfo capabilities,
 as well as the corresponding names for termcap capabilities.
@@ -139,24 +133,21 @@ These are the corresponding names used for termcap descriptions:
 \fBnumcodes\fP, and
 \fBstrcodes\fP.
 .\"
-.SS Terminal Type
+.SS "Terminal Type"
 A terminal description begins with one or more terminal names
 separated by \*(``|\*('' (vertical bars).
 On initialization of the curses or terminfo interfaces,
 \fBsetupterm\fP(3X) copies the terminal names to the array \fBttytype\fP.
 .\"
-.SS Terminfo Names
-.PP
+.SS "\fIterminfo\fP Names"
 In addition to the variables, \fB<term.h>\fP also defines a symbol for each
 terminfo capability \fIlong name\fP.
 These are in terms of the symbol \fBCUR\fP,
 which is defined
 .PP
-.nf
-.ft CW
-#define CUR ((TERMTYPE *)(cur_term))->
-.fi
-.ft R
+.EX
+#define CUR ((TERMTYPE *)(cur_term))\->
+.EE
 .PP
 These symbols provide a faster method of accessing terminfo capabilities
 than using \fBtigetstr\fP(3X), etc.
@@ -167,9 +158,7 @@ into the current terminal description loaded into memory.
 .\"
 .SH NOTES
 The low-level terminfo interface is initialized using
-.hy 0
-\fBsetupterm\fP(3X).
-.hy
+\fB\%setupterm\fP(3X).
 The upper-level curses interface uses the low-level terminfo interface,
 internally.
 .\"
@@ -186,9 +175,7 @@ All implementations which provide terminfo interfaces add definitions
 as described in the \fBTerminfo Names\fP section.
 Most, but not all, base the definition upon the \fBcur_term\fP variable.
 .SH SEE ALSO
-.hy 0
-\fBcurses\fP(3X),
-\fBcurs_terminfo\fP(3X),
-\fBcurs_threads\fP(3X),
-\fBterminfo\fP(\*n).
-.hy
+\fB\%curses\fP(3X),
+\fB\%curs_terminfo\fP(3X),
+\fB\%curs_threads\fP(3X),
+\fB\%terminfo\fP(5)
index a17fa7828c6565a504f03e568e0172af1abecb25..717f849e25fb6837b6001d31c4f7cb904702e162 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2020,2021 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: terminfo.head,v 1.42 2021/12/25 17:39:16 tom Exp $
-.TH terminfo 5 "" "" "File Formats"
-.ds n 5
-.ds d @TERMINFO@
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: terminfo.head,v 1.65 2024/04/20 21:14:00 tom Exp $
+.TH terminfo 5 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.ds '  \(aq
+.ds ^  \(ha
+.ds ~  \(ti
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.ds       '  '
+.ds       ^  ^
+.ds       ~  ~
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
+.
+.ds d @TERMINFO@
 .SH NAME
-terminfo \- terminal capability database
+\fB\%terminfo\fP \-
+terminal capability database
 .SH SYNOPSIS
 \*d/*/*
 .SH DESCRIPTION
@@ -75,17 +75,18 @@ describes terminals by giving a set of capabilities which they
 have, by specifying how to perform screen operations, and by
 specifying padding requirements and initialization sequences.
 .PP
-This manual describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
-.SS Terminfo Entry Syntax
-.PP
+This document describes
+.I \%ncurses
+version @NCURSES_MAJOR@.@NCURSES_MINOR@
+(patch @NCURSES_PATCH@).
+.SS "\fIterminfo\fP Entry Syntax"
 Entries in
 .I terminfo
 consist of a sequence of fields:
 .bP
 Each field ends with a comma \*(``,\*(''
 (embedded commas may be
-escaped with a backslash or written as \*(``\\054\*('').
+escaped with a backslash or written as \*(``\e054\*('').
 .bP
 White space between fields is ignored.
 .bP
@@ -121,7 +122,7 @@ it allows that to be both an alias and a verbose name
 .bP
 Lines beginning with a \*(``#\*('' in the first column are treated as comments.
 .IP
-While comment lines are legal at any point, the output of \fB@CAPTOINFO@\fP
+While comment lines are valid at any point, the output of \fB@CAPTOINFO@\fP
 and \fB@INFOTOCAP@\fP (aliases for \fB@TIC@\fP)
 will move comments so they occur only between entries.
 .PP
@@ -136,38 +137,38 @@ Thus, a vt100 in 132-column mode would be vt100\-w.
 The following suffixes should be used where possible:
 .PP
 .TS
-center ;
-l c l
-l l l.
-\fBSuffix      Meaning Example\fP
-\-\fInn\fP     Number of lines on the screen   aaa\-60
-\-\fIn\fPp     Number of pages of memory       c100\-4p
-\-am   With automargins (usually the default)  vt100\-am
-\-m    Mono mode; suppress color               ansi\-m
-\-mc   Magic cookie; spaces when highlighting  wy30\-mc
-\-na   No arrow keys (leave them in local)     c100\-na
-\-nam  Without automatic margins               vt100\-nam
-\-nl   No status line                          att4415\-nl
-\-ns   No status line                          hp2626\-ns
-\-rv   Reverse video                           c100\-rv
-\-s    Enable status line                      vt100\-s
-\-vb   Use visible bell instead of beep        wy370\-vb
-\-w    Wide mode (> 80 columns, usually 132)   vt100\-w
+center;
+Lb Lb Lb
+L  L  Lx.
+Suffix Example Meaning
+_
+\-\fInn\fP     aaa\-60 Number of lines on the screen
+\-\fIn\fPp     c100\-4p        Number of pages of memory
+\-am   vt100\-am       With automargins (usually the default)
+\-m    ansi\-m Mono mode; suppress color
+\-mc   wy30\-mc        Magic cookie; spaces when highlighting
+\-na   c100\-na        No arrow keys (leave them in local)
+\-nam  vt100\-nam      Without automatic margins
+\-nl   hp2621\-nl      No status line
+\-ns   hp2626\-ns      No status line
+\-rv   c100\-rv        Reverse video
+\-s    vt100\-s        Enable status line
+\-vb   wy370\-vb       Use visible bell instead of beep
+\-w    vt100\-w        Wide mode (> 80 columns, usually 132)
 .TE
 .PP
 For more on terminal naming conventions, see the \fBterm\fP(7) manual page.
-.SS Terminfo Capabilities Syntax
-.PP
+.SS "\fIterminfo\fP Capabilities Syntax"
 The terminfo entry consists of several \fIcapabilities\fP,
 i.e., features that the terminal has,
 or methods for exercising the terminal's features.
 .PP
 After the first field (giving the name(s) of the terminal entry),
 there should be one or more \fIcapability\fP fields.
-These are boolean, numeric or string names with corresponding values:
+These are Boolean, numeric or string names with corresponding values:
 .bP
 Boolean capabilities are true when present, false when absent.
-There is no explicit value for boolean capabilities.
+There is no explicit value for Boolean capabilities.
 .bP
 Numeric capabilities have a \*(``#\*('' following the name,
 then an unsigned decimal integer value.
@@ -186,8 +187,7 @@ Any capability can be \fIcanceled\fP,
 i.e., suppressed from the terminal entry,
 by following its name with \*(``@\*(''
 rather than a capability value.
-.SS Similar Terminals
-.PP
+.SS "Similar Terminals"
 If there are two very similar terminals, one (the variant) can be defined as
 being just like the other (the base) with certain exceptions.
 In the
@@ -222,6 +222,6 @@ user preferences.
 An entry included via \fBuse\fP can contain canceled capabilities,
 which have the same effect as if those cancels were inline in the
 using terminal entry.
-.SS Predefined Capabilities
+.SS "Predefined Capabilities"
 .\" Head of terminfo man page ends here
 .ps -1
index 6abfda92b9b1d7142dab36f6889f032deae5cc24..4d6daa38b6921905a721f0ee26daa52a97009616 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,9 +27,9 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: terminfo.tail,v 1.113 2022/12/10 19:51:10 tom Exp $
+.\" $Id: terminfo.tail,v 1.148 2024/04/20 21:24:19 tom Exp $
 .ps +1
-.SS User-Defined Capabilities
+.SS "User-Defined Capabilities"
 .
 The preceding section listed the \fIpredefined\fP capabilities.
 They deal with some special features for terminals no longer
@@ -38,24 +38,25 @@ Occasionally there are special features of newer terminals which
 are awkward or impossible to represent by reusing the predefined
 capabilities.
 .PP
-\fBncurses\fP addresses this limitation by allowing user-defined capabilities.
+\fI\%ncurses\fP addresses this limitation by allowing user-defined
+capabilities.
 The \fB@TIC@\fP and \fB@INFOCMP@\fP programs provide
 the \fB\-x\fP option for this purpose.
 When \fB\-x\fP is set,
 \fB@TIC@\fP treats unknown capabilities as user-defined.
 That is, if \fB@TIC@\fP encounters a capability name
 which it does not recognize,
-it infers its type (boolean, number or string) from the syntax
+it infers its type (Boolean, number or string) from the syntax
 and makes an extended table entry for that capability.
 The \fBuse_extended_names\fP(3X) function makes this information
 conditionally available to applications.
-The ncurses library provides the data leaving most of the behavior
-to applications:
+The \fI\%ncurses\fP library provides the data leaving most of the
+behavior to applications:
 .bP
 User-defined capability strings whose name begins
 with \*(``k\*('' are treated as function keys.
 .bP
-The types (boolean, number, string) determined by \fB@TIC@\fP
+The types (Boolean, number, string) determined by \fB@TIC@\fP
 can be inferred by successful calls on \fBtigetflag\fP, etc.
 .bP
 If the capability name happens to be two characters,
@@ -67,51 +68,56 @@ in practice it has been limited to the capabilities defined by
 terminfo implementations.
 As a rule,
 user-defined capabilities intended for use by termcap applications should
-be limited to booleans and numbers to avoid running past the 1023 byte
+be limited to Booleans and numbers to avoid running past the 1023 byte
 limit assumed by termcap implementations and their applications.
 In particular, providing extended sets of function keys (past the 60
 numbered keys and the handful of special named keys) is best done using
 the longer names available using terminfo.
+.PP
+The \fI\%ncurses\fP library uses a few of these user-defined
+capabilities,
+as described in \fBuser_caps\fR(5).
+Other user-defined capabilities (including function keys) are
+described in the terminal database, in the section on
+.I "NCURSES USER-DEFINABLE CAPABILITIES"
 .
-.SS A Sample Entry
+.SS "A Sample Entry"
 .
 The following entry, describing an ANSI-standard terminal, is representative
 of what a \fBterminfo\fP entry for a modern terminal typically looks like.
 .PP
-.nf
-.ft CW
-\s-2ansi|ansi/pc-term compatible with color,
+.EX
+\s-2ansi|ansi/pc\-term compatible with color,
         am, mc5i, mir, msgr,
         colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
-        acsc=+\\020\\,\\021-\\030.^Y0\\333`\\004a\\261f\\370g\\361h\\260
-             j\\331k\\277l\\332m\\300n\\305o~p\\304q\\304r\\304s_t\\303
-             u\\264v\\301w\\302x\\263y\\363z\\362{\\343|\\330}\\234~\\376,
-        bel=^G, blink=\\E[5m, bold=\\E[1m, cbt=\\E[Z, clear=\\E[H\\E[J,
-        cr=^M, cub=\\E[%p1%dD, cub1=\\E[D, cud=\\E[%p1%dB, cud1=\\E[B,
-        cuf=\\E[%p1%dC, cuf1=\\E[C, cup=\\E[%i%p1%d;%p2%dH,
-        cuu=\\E[%p1%dA, cuu1=\\E[A, dch=\\E[%p1%dP, dch1=\\E[P,
-        dl=\\E[%p1%dM, dl1=\\E[M, ech=\\E[%p1%dX, ed=\\E[J, el=\\E[K,
-        el1=\\E[1K, home=\\E[H, hpa=\\E[%i%p1%dG, ht=\\E[I, hts=\\EH,
-        ich=\\E[%p1%d@, il=\\E[%p1%dL, il1=\\E[L, ind=^J,
-        indn=\\E[%p1%dS, invis=\\E[8m, kbs=^H, kcbt=\\E[Z, kcub1=\\E[D,
-        kcud1=\\E[B, kcuf1=\\E[C, kcuu1=\\E[A, khome=\\E[H, kich1=\\E[L,
-        mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S, op=\\E[39;49m,
-        rep=%p1%c\\E[%p2%{1}%-%db, rev=\\E[7m, rin=\\E[%p1%dT,
-        rmacs=\\E[10m, rmpch=\\E[10m, rmso=\\E[m, rmul=\\E[m,
-        s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B, s3ds=\\E+B,
-        setab=\\E[4%p1%dm, setaf=\\E[3%p1%dm,
-        sgr=\\E[0;10%?%p1%t;7%;
+        acsc=+\e020\e,\e021\-\e030.\*^Y0\e333\(ga\e004a\e261f\e370g\e361h\e260
+             j\e331k\e277l\e332m\e300n\e305o\*~p\e304q\e304r\e304s_t\e303
+             u\e264v\e301w\e302x\e263y\e363z\e362{\e343|\e330}\e234\*~\e376,
+        bel=\*^G, blink=\eE[5m, bold=\eE[1m, cbt=\eE[Z, clear=\eE[H\eE[J,
+        cr=\*^M, cub=\eE[%p1%dD, cub1=\eE[D, cud=\eE[%p1%dB, cud1=\eE[B,
+        cuf=\eE[%p1%dC, cuf1=\eE[C, cup=\eE[%i%p1%d;%p2%dH,
+        cuu=\eE[%p1%dA, cuu1=\eE[A, dch=\eE[%p1%dP, dch1=\eE[P,
+        dl=\eE[%p1%dM, dl1=\eE[M, ech=\eE[%p1%dX, ed=\eE[J, el=\eE[K,
+        el1=\eE[1K, home=\eE[H, hpa=\eE[%i%p1%dG, ht=\eE[I, hts=\eEH,
+        ich=\eE[%p1%d@, il=\eE[%p1%dL, il1=\eE[L, ind=\*^J,
+        indn=\eE[%p1%dS, invis=\eE[8m, kbs=\*^H, kcbt=\eE[Z, kcub1=\eE[D,
+        kcud1=\eE[B, kcuf1=\eE[C, kcuu1=\eE[A, khome=\eE[H, kich1=\eE[L,
+        mc4=\eE[4i, mc5=\eE[5i, nel=\er\eE[S, op=\eE[39;49m,
+        rep=%p1%c\eE[%p2%{1}%\-%db, rev=\eE[7m, rin=\eE[%p1%dT,
+        rmacs=\eE[10m, rmpch=\eE[10m, rmso=\eE[m, rmul=\eE[m,
+        s0ds=\eE(B, s1ds=\eE)B, s2ds=\eE*B, s3ds=\eE+B,
+        setab=\eE[4%p1%dm, setaf=\eE[3%p1%dm,
+        sgr=\eE[0;10%?%p1%t;7%;
                    %?%p2%t;4%;
                    %?%p3%t;7%;
                    %?%p4%t;5%;
                    %?%p6%t;1%;
                    %?%p7%t;8%;
                    %?%p9%t;11%;m,
-        sgr0=\\E[0;10m, smacs=\\E[11m, smpch=\\E[11m, smso=\\E[7m,
-        smul=\\E[4m, tbc=\\E[3g, u6=\\E[%i%d;%dR, u7=\\E[6n,
-        u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%i%p1%dd,
-.fi
-.ft R
+        sgr0=\eE[0;10m, smacs=\eE[11m, smpch=\eE[11m, smso=\eE[7m,
+        smul=\eE[4m, tbc=\eE[3g, u6=\eE[%i%d;%dR, u7=\eE[6n,
+        u8=\eE[?%[;0123456789]c, u9=\eE[c, vpa=\eE[%i%p1%dd,
+.EE
 .PP
 Entries may continue onto multiple lines by placing white space at
 the beginning of each line except the first.
@@ -129,9 +135,7 @@ or the size of particular delays, and
 string
 capabilities, which give a sequence which can be used to perform particular
 terminal operations.
-.PP
-.SS Types of Capabilities
-.PP
+.SS "Types of Capabilities"
 All capabilities have names.
 For instance, the fact that
 ANSI-standard terminals have
@@ -139,15 +143,22 @@ ANSI-standard terminals have
 (i.e., an automatic return and line-feed
 when the end of a line is reached) is indicated by the capability \fBam\fP.
 Hence the description of ansi includes \fBam\fP.
-Numeric capabilities are followed by the character \*(``#\*('' and then a positive value.
+Numeric capabilities are followed by the character \*(``#\*(''
+and then a positive value.
 Thus \fBcols\fP, which indicates the number of columns the terminal has,
 gives the value \*(``80\*('' for ansi.
-Values for numeric capabilities may be specified in decimal, octal or hexadecimal,
-using the C programming language conventions (e.g., 255, 0377 and 0xff or 0xFF).
-.PP
-Finally, string valued capabilities, such as \fBel\fP (clear to end of line
-sequence) are given by the two-character code, an \*(``=\*('', and then a string
-ending at the next following \*(``,\*(''.
+Values for numeric capabilities may be specified in
+decimal,
+octal, or
+hexadecimal,
+using the C programming language conventions
+(e.g., 255, 0377 and 0xff or 0xFF).
+.PP
+Finally, string valued capabilities,
+such as \fBel\fP (clear to end of line sequence)
+are given by the two-character code,
+an \*(``=\*('', and then
+a string ending at the next following \*(``,\*(''.
 .PP
 A number of escape sequences are provided in the string valued capabilities
 for easy encoding of characters there:
@@ -155,7 +166,8 @@ for easy encoding of characters there:
 Both \fB\eE\fP and \fB\ee\fP
 map to an \s-1ESCAPE\s0 character,
 .bP
-\fB^x\fP maps to a control-x for any appropriate \fIx\fP, and
+\fB\*^\f(BIx\fR maps to a control-\fIx\fP for any appropriate \fIx\fP,
+and
 .bP
 the sequences
 .RS 6
@@ -173,13 +185,13 @@ respectively.
 .PP
 X/Open Curses does not say what \*(``appropriate \fIx\fP\*('' might be.
 In practice, that is a printable ASCII graphic character.
-The special case \*(``^?\*('' is interpreted as DEL (127).
+The special case \*(``\*^?\*('' is interpreted as DEL (127).
 In all other cases, the character value is AND'd with 0x1f,
 mapping to ASCII control codes in the range 0 through 31.
 .PP
 Other escapes include
 .bP
-\fB\e^\fP for \fB^\fP,
+\fB\e\*^\fP for \fB\*^\fP,
 .bP
 \fB\e\e\fP for \fB\e\fP,
 .bP
@@ -208,7 +220,8 @@ and padding characters are supplied by \fBtputs\fP(3X)
 to provide this delay.
 .bP
 The delay must be a number with at most one decimal
-place of precision; it may be followed by suffixes \*(``*\*('' or \*(``/\*('' or both.
+place of precision;
+it may be followed by suffixes \*(``*\*('' or \*(``/\*('' or both.
 .bP
 A \*(``*\*(''
 indicates that the padding required is proportional to the number of lines
@@ -232,41 +245,68 @@ For example, see the second
 in the example above.
 .br
 .ne 5
-.PP
-.SS Fetching Compiled Descriptions
-.PP
-The \fBncurses\fP library searches for terminal descriptions in several places.
-It uses only the first description found.
-The library has a compiled-in list of places to search
+.SS "Fetching Compiled Descriptions"
+Terminal descriptions in \fI\%ncurses\fP are stored in terminal
+databases.
+These databases, which are found by their pathname,
+may be configured either as directory trees or hashed databases
+(see \fBterm\fR(5)),
+.PP
+The library uses a compiled-in list of pathnames,
 which can be overridden by environment variables.
 Before starting to search,
-\fBncurses\fP eliminates duplicates in its search list.
+\fI\%ncurses\fP checks the search list,
+eliminating duplicates and pathnames where no terminal database is found.
+The \fI\%ncurses\fP library reads the first description
+which passes its consistency checks.
 .bP
-If the environment variable TERMINFO is set, it is interpreted as the pathname
-of a directory containing the compiled description you are working on.
-Only that directory is searched.
+The environment variable \fBTERMINFO\fR is checked first, for
+a terminal database containing the terminal description.
 .bP
-If TERMINFO is not set,
-\fBncurses\fP will instead look in the directory \fB$HOME/.terminfo\fP
+Next,
+\fI\%ncurses\fP looks in \fI$HOME/.terminfo\fP
 for a compiled description.
+.IP
+This is an optional feature which may be omitted entirely from
+the library, or limited to prevent accidental use by privileged applications.
 .bP
-Next, if the environment variable TERMINFO_DIRS is set,
-\fBncurses\fP will interpret the contents of that variable
-as a list of colon-separated directories (or database files) to be searched.
+Next,
+if the environment variable \fI\%TERMINFO_DIRS\fP is set,
+\fI\%ncurses\fP interprets the contents of that variable
+as a list of colon-separated pathnames of terminal databases to be searched.
 .IP
-An empty directory name (i.e., if the variable begins or ends
+An empty pathname (i.e., if the variable begins or ends
 with a colon, or contains adjacent colons)
 is interpreted as the system location \fI\*d\fP.
 .bP
-Finally, \fBncurses\fP searches these compiled-in locations:
+Finally, \fI\%ncurses\fP searches these compiled-in locations:
 .RS
 .bP
 a list of directories (@TERMINFO_DIRS@), and
 .bP
-the system terminfo directory, \fI\*d\fP (the compiled-in default).
+the system terminfo directory, \fI\*d\fP
 .RE
-.SS Preparing Descriptions
 .PP
+The \fBTERMINFO\fP variable can contain a terminal description instead
+of the pathname of a terminal database.
+If this variable begins with \*(``hex:\*('' or \*(``b64:\*(''
+then \fI\%ncurses\fP reads a terminal description from
+hexadecimal- or base64-encoded data,
+and if that description matches the name sought, will use that.
+This encoded data can be set using the \*(``\-Q\*('' option of
+\fB@TIC@\fR or \fB@INFOCMP@\fR.
+.PP
+The preceding addresses the usual configuration of \fI\%ncurses\fP,
+which uses terminal descriptions prepared in \fIterminfo\fP format.
+While \fItermcap\fP is less expressive,
+\fI\%ncurses\fP can also be configured to read \fItermcap\fP
+descriptions.
+In that configuration,
+it checks the \fI\%TERMCAP\fP and \fI\%TERMPATH\fP variables
+(for content and search path,
+respectively)
+after the system terminal database.
+.SS "Preparing Descriptions"
 We now outline how to prepare descriptions of terminals.
 The most effective way to prepare a terminal description is by imitating
 the description of a similar terminal in
@@ -287,9 +327,7 @@ delete 16 or so lines from the middle of the screen, then hit the \*(``u\*(''
 key several times quickly.
 If the terminal messes up, more padding is usually needed.
 A similar test can be used for insert character.
-.PP
-.SS Basic Capabilities
-.PP
+.SS "Basic Capabilities"
 The number of columns on each line for the terminal is given by the
 \fBcols\fP numeric capability.
 If the terminal is a \s-1CRT\s0, then the
@@ -396,34 +434,27 @@ it may still be possible to craft a working
 .B nel
 out of one or both of them.
 .PP
-These capabilities suffice to describe hard-copy and \*(``glass-tty\*('' terminals.
+These capabilities suffice to describe
+hard-copy and \*(``glass-tty\*('' terminals.
 Thus the model 33 teletype is described as
 .PP
-.DT
-.nf
-.ft CW
+.EX
 .\".in -2
 \s-133\||\|tty33\||\|tty\||\|model 33 teletype,
-        bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1
+        bel=\*^G, cols#72, cr=\*^M, cud1=\*^J, hc, ind=\*^J, os,\s+1
 .\".in +2
-.ft R
-.fi
+.EE
 .PP
 while the Lear Siegler \s-1ADM-3\s0 is described as
 .PP
-.DT
-.nf
-.ft CW
+.EX
 .\".in -2
 \s-1adm3\||\|3\||\|lsi adm3,
-        am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
-        ind=^J, lines#24,\s+1
+        am, bel=\*^G, clear=\*^Z, cols#80, cr=\*^M, cub1=\*^H, cud1=\*^J,
+        ind=\*^J, lines#24,\s+1
 .\".in +2
-.ft R
-.fi
-.PP
-.SS Parameterized Strings
-.PP
+.EE
+.SS "Parameterized Strings"
 Cursor addressing and other strings requiring parameters
 in the terminal are described by a
 parameterized string capability,
@@ -448,35 +479,34 @@ It is noted that more complex operations are often necessary,
 e.g., in the \fBsgr\fP string.
 .PP
 The \fB%\fP encodings have the following meanings:
-.PP
 .TP 5
 \fB%%\fP
 outputs \*(``%\*(''
 .TP
-\fB%\fP\fI[[\fP:\fI]flags][width[.precision]][\fP\fBdoxXs\fP\fI]\fP
+\fB%\fI[[\fR:\fI]flags][width[.precision]][\fBdoxXs\fI]\fR
 as in \fBprintf\fP(3), flags are \fI[\-+#]\fP and \fIspace\fP.
 Use a \*(``:\*('' to allow the next character to be a \*(``\-\*('' flag,
 avoiding interpreting \*(``%\-\*('' as an operator.
 .TP
-\f(CW%c\fP
+\fB%c\fP
 print \fIpop()\fP like %c in \fBprintf\fP
 .TP
 \fB%s\fP
 print \fIpop()\fP like %s in \fBprintf\fP
 .TP
-\fB%p\fP\fI[1\-9]\fP
+\fB%p\fI[1\-9]\fR
 push \fIi\fP'th parameter
 .TP
-\fB%P\fP\fI[a\-z]\fP
+\fB%P\fI[a\-z]\fR
 set dynamic variable \fI[a\-z]\fP to \fIpop()\fP
 .TP
-\fB%g\fP\fI[a\-z]\fP
+\fB%g\fI[a\-z]\fR
 get dynamic variable \fI[a\-z]\fP and push it
 .TP
-\fB%P\fP\fI[A\-Z]\fP
+\fB%P\fI[A\-Z]\fR
 set static variable \fI[a\-z]\fP to \fIpop()\fP
 .TP
-\fB%g\fP\fI[A\-Z]\fP
+\fB%g\fI[A\-Z]\fR
 get static variable \fI[a\-z]\fP and push it
 .IP
 The terms \*(``static\*('' and \*(``dynamic\*('' are misleading.
@@ -493,7 +523,7 @@ will give unpredictable results, because dynamic variables are
 an uninitialized local array on the stack in the \fBtparm\fP function.
 .bP
 SVr3.2 curses supported \fIstatic\fP variables.
-Those are an array in the \fBTERMINAL\fP
+Those are an array in the \fI\%TERMINAL\fP
 structure (declared in \fBterm.h\fP),
 and are zeroed automatically when the \fBsetupterm\fP function
 allocates the data.
@@ -506,28 +536,30 @@ Solaris XPG4 curses does not distinguish between \fIdynamic\fP and
 They are the same.
 Like SVr4 curses, XPG4 curses does not initialize these explicitly.
 .bP
-Before version 6.3, ncurses stores both \fIdynamic\fP and \fIstatic\fP
+Before version 6.3,
+\fI\%ncurses\fP stores both \fIdynamic\fP and \fIstatic\fP
 variables in persistent storage, initialized to zeros.
 .bP
-Beginning with version 6.3, ncurses stores \fIstatic\fP and \fIdynamic\fP
+Beginning with version 6.3,
+\fI\%ncurses\fP stores \fIstatic\fP and \fIdynamic\fP
 variables in the same manner as SVr4.
 .RS
 .bP
-Unlike other implementations, ncurses zeros dynamic variables 
+Unlike other implementations, \fI\%ncurses\fP zeros dynamic variables
 before the first \fB%g\fP or \fB%P\fP operator.
 .bP
 Like SVr2,
-the scope of dynamic variables in ncurses
+the scope of dynamic variables in \fI\%ncurses\fP
 is within the current call to
 \fBtparm\fP.
 Use static variables if persistent storage is needed.
 .RE
 .RE
 .TP
-\fB%\(aq\fP\fIc\fP\fB\(aq\fP
+\fB%\*'\fIc\fB\*'\fR
 char constant \fIc\fP
 .TP
-\fB%{\fP\fInn\fP\fB}\fP
+\fB%{\fInn\fB}\fR
 integer constant \fInn\fP
 .TP
 \fB%l\fP
@@ -536,7 +568,7 @@ push strlen(pop)
 \fB%+\fP, \fB%\-\fP, \fB%*\fP, \fB%/\fP, \fB%m\fP
 arithmetic (%m is \fImod\fP): \fIpush(pop() op pop())\fP
 .TP
-\fB%&\fP, \fB%|\fP, \fB%^\fP
+\fB%&\fP, \fB%|\fP, \fB%\*^\fP
 bit operations (AND, OR and exclusive-OR): \fIpush(pop() op pop())\fP
 .TP
 \fB%=\fP, \fB%>\fP, \fB%<\fP
@@ -545,7 +577,7 @@ logical operations: \fIpush(pop() op pop())\fP
 \fB%A\fP, \fB%O\fP
 logical AND and OR operations (for conditionals)
 .TP
-\fB%!\fP, \fB%~\fP
+\fB%!\fP, \fB%\*~\fP
 unary operations (logical and bit complement): \fIpush(op pop())\fP
 .TP
 \fB%i\fP
@@ -578,33 +610,40 @@ persistent across escape-string evaluations.
 .PP
 Consider the HP2645, which, to get to row 3 and column 12, needs
 to be sent \eE&a12c03Y padded for 6 milliseconds.
-Note that the order
-of the rows and columns is inverted here, and that the row and column
-are printed as two digits.
-Thus its \fBcup\fP capability is \*(``cup=6\eE&%p2%2dc%p1%2dY\*(''.
+The order of the rows and columns is inverted here,
+and the row and column are printed as two digits.
+The corresponding terminal description is expressed thus:
+.RS
+cup=\eE&a%p2%dc%p1%dY$<6>,
+.RE
 .PP
 The Microterm \s-1ACT-IV\s0 needs the current row and column sent
-preceded by a \fB^T\fP, with the row and column simply encoded in binary,
-\*(``cup=^T%p1%c%p2%c\*(''.
+preceded by a \fB\*^T\fP, with the row and column simply encoded in binary,
+.RS
+cup=\*^T%p1%c%p2%c
+.RE
+.PP
 Terminals which use \*(``%c\*('' need to be able to
 backspace the cursor (\fBcub1\fP),
 and to move the cursor up one line on the screen (\fBcuu1\fP).
 This is necessary because it is not always safe to transmit \fB\en\fP
-\fB^D\fP and \fB\er\fP, as the system may change or discard them.
+\fB\*^D\fP and \fB\er\fP, as the system may change or discard them.
 (The library routines dealing with terminfo set tty modes so that
 tabs are never expanded, so \et is safe to send.
 This turns out to be essential for the Ann Arbor 4080.)
 .PP
 A final example is the \s-1LSI ADM\s0-3a, which uses row and column
-offset by a blank character, thus \*(``cup=\eE=%p1%\(aq \(aq%+%c%p2%\(aq \(aq%+%c\*(''.
+offset by a blank character, thus
+.RS
+cup=\eE=%p1%\*' \*'%+%c%p2%\*' \*'%+%c
+.RE
+.PP
 After sending \*(``\eE=\*('', this pushes the first parameter, pushes the
 ASCII value for a space (32), adds them (pushing the sum on the stack
 in place of the two previous values) and outputs that value as a character.
 Then the same is done for the second parameter.
 More complex arithmetic is possible using the stack.
-.PP
-.SS Cursor Motions
-.PP
+.SS "Cursor Motions"
 If the terminal has a fast way to home the cursor
 (to very upper left corner of screen) then this can be given as
 \fBhome\fP; similarly a fast way of getting to the lower left-hand corner
@@ -642,7 +681,8 @@ such as the \s-1TEKTRONIX\s+1 4025.
 .PP
 If the terminal needs to be in a special mode when running
 a program that uses these capabilities,
-the codes to enter and exit this mode can be given as \fBsmcup\fP and \fBrmcup\fP.
+the codes to enter and exit this mode can be given
+as \fBsmcup\fP and \fBrmcup\fP.
 This arises, for example, from terminals like the Concept with more than
 one page of memory.
 If the terminal has only memory relative cursor addressing and not screen
@@ -655,7 +695,6 @@ sets the command character to be the one used by terminfo.
 If the \fBsmcup\fP sequence will not restore the screen after an
 \fBrmcup\fP sequence is output (to the state prior to outputting
 \fBrmcup\fP), specify \fBnrrmc\fP.
-.PP
 .SS Margins
 SVr4 (and X/Open Curses)
 list several string capabilities for setting margins.
@@ -676,7 +715,6 @@ line position, and
 parameterized capabilities for setting the top, bottom, left, right margins
 given the number of rows or columns.
 .RE
-.RE
 .PP
 In practice, the categorization into \*(``terminal\*('' and \*(``printer\*(''
 is not suitable:
@@ -703,12 +741,13 @@ If either is omitted, the corresponding margin is set to the left or
 right edge of the display (rather than leaving the margin unmodified).
 .PP
 These are the margin-related capabilities:
+.PP
 .TS
 center;
-l l
-_ _
-lw8 lw18.
-\fBName        Description\fP
+lb lb
+lb l .
+Name   Description
+_
 smgl   Set left margin at current column
 smgr   Set right margin at current column
 smgb   Set bottom margin at current line
@@ -753,7 +792,7 @@ When developing an application that uses \fBsmgbp\fP to set the bottom margin,
 both arguments must be given.
 .PP
 Conversely, when only one capability in the pair is set:
-.bP 
+.bP
 If only one of \fBsmglp\fP and \fBsmgrp\fP is set,
 then it is used with two arguments,
 the column number of the left and right margins, in that order.
@@ -781,8 +820,7 @@ When setting margins, the line- and column-values are zero-based.
 The \fBmgc\fP string capability should be defined.
 Applications such as \fBtabs\fP(1) rely upon this to reset all margins.
 .\"
-.SS Area Clears
-.PP
+.SS "Area Clears"
 If the terminal can clear from the current position to the end of the
 line, leaving the cursor where it is, this should be given as \fBel\fP.
 If the terminal can clear from the beginning of the line to the current
@@ -795,10 +833,8 @@ display, then this should be given as \fBed\fP.
 if a true
 .B ed
 is not available.)
-.PP
 .\"
-.SS Insert/delete line and vertical motions
-.PP
+.SS "Insert/Delete Line and Vertical Motions"
 If the terminal can open a new blank line before the line where the cursor
 is, this should be given as \fBil1\fP; this is done only from the first
 position of a line.
@@ -831,12 +867,12 @@ and
 .B rc
 (save and restore cursor) commands may be useful for ensuring that
 your synthesized insert/delete string does not move the cursor.
-(Note that the \fBncurses\fP(3X) library does this synthesis
+(Note that the \fB\%ncurses\fP(3X) library does this synthesis
 automatically, so you need not compose insert/delete strings for
 an entry with \fBcsr\fP).
 .PP
 Yet another way to construct insert and delete might be to use a combination of
-index with the memory-lock feature found on some terminals (like the HP\-700/90
+index with the memory-lock feature found on some terminals (like the HP-700/90
 series, which however also has insert/delete).
 .PP
 Inserting lines at the top or bottom of the screen can also be
@@ -847,7 +883,7 @@ or
 on many terminals without a true insert/delete line,
 and is often faster even on terminals with those features.
 .PP
-The boolean \fBnon_dest_scroll_region\fP should be set if each scrolling
+The Boolean \fBnon_dest_scroll_region\fP should be set if each scrolling
 window is effectively a view port on a screen-sized canvas.
 To test for
 this capability, create a scrolling region in the middle of the screen,
@@ -856,7 +892,7 @@ and do \fBri\fP followed by \fBdl1\fP or \fBind\fP.
 If the data scrolled
 off the bottom of the region by the \fBri\fP re-appears, then scrolling
 is non-destructive.
-System V and XSI Curses expect that \fBind\fP, \fBri\fP,
+System V and X/Open Curses expect that \fBind\fP, \fBri\fP,
 \fBindn\fP, and \fBrin\fP will simulate destructive scrolling; their
 documentation cautions you not to define \fBcsr\fP unless this is true.
 This \fBcurses\fP implementation is more liberal and will do explicit erases
@@ -875,12 +911,10 @@ below, then \fBdb\fP should be given.
 These indicate
 that deleting a line or scrolling may bring non-blank lines up from below
 or that scrolling back with \fBri\fP may bring down non-blank lines.
-.PP
-.SS Insert/Delete Character
-.PP
+.SS "Insert/Delete Character"
 There are two basic kinds of intelligent terminals with respect to
 insert/delete character which can be described using
-.I terminfo.
+.IR terminfo .
 The most common insert/delete character operations affect only the characters
 on the current line and shift characters off the end of the line rigidly.
 Other terminals, such as the Concept 100 and the Perkin Elmer Owl, make
@@ -974,7 +1008,7 @@ to delete a single character,
 with one parameter,
 .IR n ,
 to delete
-.I n characters,
+.IR n "characters,"
 and delete mode by giving \fBsmdc\fP and \fBrmdc\fP
 to enter and exit delete mode (any mode the terminal needs to be placed
 in for
@@ -989,9 +1023,7 @@ blanks without moving the cursor)
 can be given as
 .B ech
 with one parameter.
-.PP
 .SS "Highlighting, Underlining, and Visible Bells"
-.PP
 If your terminal has one or more kinds of display attributes,
 these can be represented in a number of different ways.
 You should choose one display form as
@@ -1043,7 +1075,8 @@ this should be given as
 .B sgr
 (set attributes),
 taking 9 parameters.
-Each parameter is either 0 or nonzero, as the corresponding attribute is on or off.
+Each parameter is either zero (0) or nonzero,
+as the corresponding attribute is on or off.
 The 9 parameters are, in order:
 standout, underline, reverse, blink, dim, bold, blank, protect, alternate
 character set.
@@ -1055,21 +1088,20 @@ For example, the DEC vt220 supports most of the modes:
 .PP
 .TS
 center;
-l l l
-l l l
-lw18 lw14 lw18.
-\fBtparm parameter     attribute       escape sequence\fP
-
-none   none    \\E[0m
-p1     standout        \\E[0;1;7m
-p2     underline       \\E[0;4m
-p3     reverse \\E[0;7m
-p4     blink   \\E[0;5m
+lb lb lb
+l  l  l .
+tparm Parameter        Attribute       Escape Sequence
+_
+none   none    \eE[0m
+p1     standout        \eE[0;1;7m
+p2     underline       \eE[0;4m
+p3     reverse \eE[0;7m
+p4     blink   \eE[0;5m
 p5     dim     not available
-p6     bold    \\E[0;1m
-p7     invis   \\E[0;8m
+p6     bold    \eE[0;1m
+p7     invis   \eE[0;8m
 p8     protect not used
-p9     altcharset      ^O (off) ^N (on)
+p9     altcharset      \*^O (off) \*^N (on)
 .TE
 .PP
 We begin each escape sequence by turning off any existing modes, since
@@ -1078,9 +1110,9 @@ Standout is set up to be the combination of reverse and bold.
 The vt220 terminal has a protect mode,
 though it is not commonly used in sgr
 because it protects characters on the screen from the host's erasures.
-The altcharset mode also is different in that it is either ^O or ^N,
+The altcharset mode also is different in that it is either \*^O or \*^N,
 depending on whether it is off or on.
-If all modes are turned on, the resulting sequence is \\E[0;1;4;5;7;8m^N.
+If all modes are turned on, the resulting sequence is \eE[0;1;4;5;7;8m\*^N.
 .PP
 Some sequences are common to different modes.
 For example, ;7 is output when either p1 or p3 is true, that is, if
@@ -1091,31 +1123,26 @@ Writing out the above sequences, along with their dependencies yields
 .ne 11
 .TS
 center;
-l l l
-l l l
-lw18 lw14 lw18.
-\fBsequence    when to output  terminfo translation\fP
-
-.ft CW
-\\E[0  always  \\E[0
+lb lb lb
+l  l  l .
+Sequence       When to Output  terminfo Translation
+_
+\eE[0  always  \eE[0
 ;1     if p1 or p6     %?%p1%p6%|%t;1%;
 ;4     if p2   %?%p2%|%t;4%;
 ;5     if p4   %?%p4%|%t;5%;
 ;7     if p1 or p3     %?%p1%p3%|%t;7%;
 ;8     if p7   %?%p7%|%t;8%;
 m      always  m
-^N or ^O       if p9 ^N, else ^O       %?%p9%t^N%e^O%;
-.ft R
+\*^N or \*^O   if p9 \*^N, else \*^O   %?%p9%t\*^N%e\*^O%;
 .TE
 .PP
 Putting this all together into the sgr sequence gives:
 .PP
-.ft CW
-.nf
-    sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%;
-        %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;,
-.fi
-.ft R
+.EX
+    sgr=\eE[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%;
+        %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\e016%e\e017%;,
+.EE
 .PP
 Remember that if you specify sgr, you must also specify sgr0.
 Also, some implementations rely on sgr being given if sgr0 is,
@@ -1161,9 +1188,7 @@ If a character overstriking another leaves both characters on the screen,
 specify the capability \fBos\fP.
 If overstrikes are erasable with a blank,
 then this should be indicated by giving \fBeo\fP.
-.PP
-.SS Keypad and Function Keys
-.PP
+.SS "Keypad and Function Keys"
 If the terminal has a keypad that transmits codes when the keys are pressed,
 this information can be given.
 Note that it is not possible to handle
@@ -1270,9 +1295,7 @@ If there are commands to turn the labels on and off,
 give them in \fBsmln\fP and \fBrmln\fP.
 \fBsmln\fP is normally output after one or more pln
 sequences to make sure that the change becomes visible.
-.PP
-.SS Tabs and Initialization
-.PP
+.SS "Tabs and Initialization"
 A few capabilities are used only for tabs:
 .bP
 If the terminal has hardware tabs, the command to advance to the next
@@ -1456,8 +1479,7 @@ use the
 \fBhts\fP (\fBset_tab\fP) capabilities directly
 only when the \fBit\fP (\fBinit_tabs\fP) capability
 is set to a value other than \fIeight\fP.
-.SS Delays and Padding
-.PP
+.SS "Delays and Padding"
 Many older and slower terminals do not support either XON/XOFF or DTR
 handshaking, including hard copy terminals and some very archaic CRTs
 (including, for example, DEC VT100s).
@@ -1465,7 +1487,7 @@ These may require padding characters
 after certain cursor motions and screen changes.
 .PP
 If the terminal uses xon/xoff handshaking for flow control (that is,
-it automatically emits ^S back to the host when its input buffers are
+it automatically emits \*^S back to the host when its input buffers are
 close to full), set
 .BR xon .
 This capability suppresses the emission of padding.
@@ -1485,8 +1507,7 @@ then this can be given as \fBpad\fP.
 Only the first character of the
 .B pad
 string is used.
-.PP
-.SS Status Lines
+.SS "Status Lines"
 Some terminals have an extra \*(``status line\*('' which is not normally used by
 software (and thus not counted in the terminal's \fBlines\fP capability).
 .PP
@@ -1515,61 +1536,59 @@ capability \fBwsl\fP.
 .PP
 A command to erase or blank the status line may be specified as \fBdsl\fP.
 .PP
-The boolean capability \fBeslok\fP specifies that escape sequences, tabs,
+The Boolean capability \fBeslok\fP specifies that escape sequences, tabs,
 etc., work ordinarily in the status line.
 .PP
-The \fBncurses\fP implementation does not yet use any of these capabilities.
+The \fI\%ncurses\fP implementation does not yet use any of these
+capabilities.
 They are documented here in case they ever become important.
-.PP
-.SS Line Graphics
-.PP
+.SS "Line Graphics"
 Many terminals have alternate character sets useful for forms-drawing.
 Terminfo and \fBcurses\fP have built-in support
 for most of the drawing characters
 supported by the VT100, with some characters from the AT&T 4410v1 added.
 This alternate character set may be specified by the \fBacsc\fP capability.
 .PP
-.TS H
-center expand;
-l l l l l
-l l l l l
-_ _ _ _ _
-lw25 lw10 lw6 lw6 lw6.
-.\".TH
-\fBGlyph       ACS     Ascii   acsc    acsc\fP
-\fBName        Name    Default Char    Value\fP
-arrow pointing right   ACS_RARROW      >       +       0x2b
-arrow pointing left    ACS_LARROW      <       ,       0x2c
-arrow pointing up      ACS_UARROW      ^       \-      0x2d
-arrow pointing down    ACS_DARROW      v       .       0x2e
-solid square block     ACS_BLOCK       #       0       0x30
-diamond                ACS_DIAMOND     +       `       0x60
-checker board (stipple)        ACS_CKBOARD     :       a       0x61
-degree symbol          ACS_DEGREE      \e      f       0x66
-plus/minus             ACS_PLMINUS     #       g       0x67
-board of squares       ACS_BOARD       #       h       0x68
-lantern symbol         ACS_LANTERN     #       i       0x69
-lower right corner     ACS_LRCORNER    +       j       0x6a
-upper right corner     ACS_URCORNER    +       k       0x6b
-upper left corner      ACS_ULCORNER    +       l       0x6c
-lower left corner      ACS_LLCORNER    +       m       0x6d
-large plus or crossover        ACS_PLUS        +       n       0x6e
-scan line 1            ACS_S1          ~       o       0x6f
-scan line 3            ACS_S3          \-      p       0x70
-horizontal line        ACS_HLINE       \-      q       0x71
-scan line 7            ACS_S7          \-      r       0x72
-scan line 9            ACS_S9          \&_     s       0x73
-tee pointing right     ACS_LTEE        +       t       0x74
-tee pointing left      ACS_RTEE        +       u       0x75
-tee pointing up        ACS_BTEE        +       v       0x76
-tee pointing down      ACS_TTEE        +       w       0x77
-vertical line          ACS_VLINE       |       x       0x78
-less-than-or-equal-to  ACS_LEQUAL      <       y       0x79
-greater-than-or-equal-to       ACS_GEQUAL      >       z       0x7a
-greek pi               ACS_PI  *       {       0x7b
-not-equal              ACS_NEQUAL      !       |       0x7c
-UK pound sign          ACS_STERLING    f       }       0x7d
-bullet                 ACS_BULLET      o       ~       0x7e
+.TS
+center;
+Lb  Cb  S  L   Lb
+Lb2 Lb2 Lb Lb1 S
+Lb  L   C  Lb  Lx.
+\&     acsc    \&      \&
+ACS Name       Value   Symbol  ASCII Fallback / Glyph Name
+_
+ACS_RARROW     0x2b    +       >       arrow pointing right
+ACS_LARROW     0x2c    ,       <       arrow pointing left
+ACS_UARROW     0x2d    \-      \*^     arrow pointing up
+ACS_DARROW     0x2e    .       v       arrow pointing down
+ACS_BLOCK      0x30    0       #       solid square block
+ACS_DIAMOND    0x60    \(ga    +       diamond
+ACS_CKBOARD    0x61    a       :       checker board (stipple)
+ACS_DEGREE     0x66    f       \e      degree symbol
+ACS_PLMINUS    0x67    g       #       plus/minus
+ACS_BOARD      0x68    h       #       board of squares
+ACS_LANTERN    0x69    i       #       lantern symbol
+ACS_LRCORNER   0x6a    j       +       lower right corner
+ACS_URCORNER   0x6b    k       +       upper right corner
+ACS_ULCORNER   0x6c    l       +       upper left corner
+ACS_LLCORNER   0x6d    m       +       lower left corner
+ACS_PLUS       0x6e    n       +       large plus or crossover
+ACS_S1 0x6f    o       \*~     scan line 1
+ACS_S3 0x70    p       \-      scan line 3
+ACS_HLINE      0x71    q       \-      horizontal line
+ACS_S7 0x72    r       \-      scan line 7
+ACS_S9 0x73    s       \&_     scan line 9
+ACS_LTEE       0x74    t       +       tee pointing right
+ACS_RTEE       0x75    u       +       tee pointing left
+ACS_BTEE       0x76    v       +       tee pointing up
+ACS_TTEE       0x77    w       +       tee pointing down
+ACS_VLINE      0x78    x       |       vertical line
+ACS_LEQUAL     0x79    y       <       less-than-or-equal-to
+ACS_GEQUAL     0x7a    z       >       greater-than-or-equal-to
+ACS_PI 0x7b    {       *       greek pi
+ACS_NEQUAL     0x7c    |       !       not-equal
+ACS_STERLING   0x7d    }       f       UK pound sign
+ACS_BULLET     0x7e    \*~     o       bullet
 .TE
 .PP
 A few notes apply to the table itself:
@@ -1598,9 +1617,7 @@ to a copy of this table for your terminal, giving the character which
 as the corresponding graphic.
 Then read off the VT100/your terminal
 character pairs right to left in sequence; these become the ACSC string.
-.PP
-.SS Color Handling
-.PP
+.SS "Color Handling"
 The curses library functions \fBinit_pair\fP and \fBinit_color\fP
 manipulate the \fIcolor pairs\fP and \fIcolor values\fP discussed in this
 section
@@ -1613,25 +1630,25 @@ terminals have a predefined set of \fIN\fP colors
 (where \fIN\fP is usually 8),
 and can set
 character-cell foreground and background characters independently, mixing them
-into \fIN\fP\ *\ \fIN\fP color-pairs.
+into \fIN\fP\ *\ \fIN\fP color pairs.
 .bP
 On HP-like terminals, the user must set each color
 pair up separately (foreground and background are not independently settable).
-Up to \fIM\fP color-pairs may be set up from 2*\fIM\fP different colors.
+Up to \fIM\fP color pairs may be set up from 2*\fIM\fP different colors.
 ANSI-compatible terminals are Tektronix-like.
 .PP
 Some basic color capabilities are independent of the color method.
 The numeric
 capabilities \fBcolors\fP and \fBpairs\fP specify the maximum numbers of colors
-and color-pairs that can be displayed simultaneously.
+and color pairs that can be displayed simultaneously.
 The \fBop\fP (original
 pair) string resets foreground and background colors to their default values
 for the terminal.
-The \fBoc\fP string resets all colors or color-pairs to
+The \fBoc\fP string resets all colors or color pairs to
 their default values for the terminal.
 Some terminals (including many PC
 terminal emulators) erase screen areas with the current background color rather
-than the power-up default background; these should have the boolean capability
+than the power-up default background; these should have the Boolean capability
 \fBbce\fP.
 .PP
 While the curses library works with \fIcolor pairs\fP
@@ -1658,47 +1675,52 @@ The \fBsetaf\fP/\fBsetab\fP and \fBsetf\fP/\fBsetb\fP capabilities take a
 single numeric argument each.
 Argument values 0-7 of \fBsetaf\fP/\fBsetab\fP are portably defined as
 follows (the middle column is the symbolic #define available in the header for
-the \fBcurses\fP or \fBncurses\fP libraries).
+the \fBcurses\fP or \fI\%ncurses\fP libraries).
 The terminal hardware is free to
 map these as it likes, but the RGB values indicate normal locations in color
 space.
 .PP
-.TS H
+.TS
 center;
-l c c c
-l l n l.
-\fBColor       #define         Value   RGB\fP
-black  \fBCOLOR_BLACK\fP       0       0, 0, 0
-red    \fBCOLOR_RED\ \fP       1       max,0,0
-green  \fBCOLOR_GREEN\fP       2       0,max,0
-yellow \fBCOLOR_YELLOW\fP      3       max,max,0
-blue   \fBCOLOR_BLUE\fP        4       0,0,max
-magenta        \fBCOLOR_MAGENTA\fP     5       max,0,max
-cyan   \fBCOLOR_CYAN\fP        6       0,max,max
-white  \fBCOLOR_WHITE\fP       7       max,max,max
+cb cb cb cb s  s
+l  lb c  l1 l1 l .
+Color  #define         Value   RGB
+_
+black  COLOR_BLACK     0       0,      0,      0
+red    COLOR_RED       1       max,    0,      0
+green  COLOR_GREEN     2       0,      max,    0
+yellow COLOR_YELLOW    3       max,    max,    0
+blue   COLOR_BLUE      4       0,      0,      max
+magenta        COLOR_MAGENTA   5       max,    0,      max
+cyan   COLOR_CYAN      6       0,      max,    max
+white  COLOR_WHITE     7       max,    max,    max
 .TE
+.br
+.if t .ne 6v
 .PP
 The argument values of \fBsetf\fP/\fBsetb\fP historically correspond to
 a different mapping, i.e.,
-.TS H
+.PP
+.TS
 center;
-l c c c
-l l n l.
-\fBColor       #define         Value   RGB\fP
-black  \fBCOLOR_BLACK\fP       0       0, 0, 0
-blue   \fBCOLOR_BLUE\fP        1       0,0,max
-green  \fBCOLOR_GREEN\fP       2       0,max,0
-cyan   \fBCOLOR_CYAN\fP        3       0,max,max
-red    \fBCOLOR_RED\ \fP       4       max,0,0
-magenta        \fBCOLOR_MAGENTA\fP     5       max,0,max
-yellow \fBCOLOR_YELLOW\fP      6       max,max,0
-white  \fBCOLOR_WHITE\fP       7       max,max,max
+cb cb cb cb s  s
+l  lb c  l1 l1 l .
+Color  #define         Value   RGB
+_
+black  COLOR_BLACK     0       0,      0,      0
+blue   COLOR_BLUE      1       0,      0,      max
+green  COLOR_GREEN     2       0,      max,    0
+cyan   COLOR_CYAN      3       0,      max,    max
+red    COLOR_RED       4       max,    0,      0
+magenta        COLOR_MAGENTA   5       max,    0,      max
+yellow COLOR_YELLOW    6       max,    max,    0
+white  COLOR_WHITE     7       max,    max,    max
 .TE
 .PP
 It is important to not confuse the two sets of color capabilities;
 otherwise red/blue will be interchanged on the display.
 .PP
-On an HP-like terminal, use \fBscp\fP with a color-pair number parameter to set
+On an HP-like terminal, use \fBscp\fP with a color pair number parameter to set
 which color pair is current.
 .PP
 Some terminals allow the \fIcolor values\fP to be modified:
@@ -1710,14 +1732,14 @@ take a color number (0 to \fBcolors\fP \- 1)and three more parameters which
 describe the color.
 These three parameters default to being interpreted as RGB
 (Red, Green, Blue) values.
-If the boolean capability \fBhls\fP is present,
+If the Boolean capability \fBhls\fP is present,
 they are instead as HLS (Hue, Lightness, Saturation) indices.
 The ranges are
 terminal-dependent.
 .bP
 On an HP-like terminal, \fBinitp\fP may give a capability for changing a
-color-pair value.
-It will take seven parameters; a color-pair number (0 to
+color pair value.
+It will take seven parameters; a color pair number (0 to
 \fBmax_pairs\fP \- 1), and two triples describing first background and then
 foreground colors.
 These parameters must be (Red, Green, Blue) or
@@ -1726,23 +1748,24 @@ These parameters must be (Red, Green, Blue) or
 On some color terminals, colors collide with highlights.
 You can register
 these collisions with the \fBncv\fP capability.
-This is a bit-mask of
+This is a bit mask of
 attributes not to be used when colors are enabled.
 The correspondence with the
 attributes understood by \fBcurses\fP is as follows:
 .PP
 .TS
 center;
-l l l l
-lw20 lw2 lw10 lw10.
-\fBAttribute   Bit     Decimal Set by\fP
+cb cb cb cb
+lb n  n  lb.
+Attribute      Bit     Decimal Set by
+_
 A_STANDOUT     0       1       sgr
 A_UNDERLINE    1       2       sgr
 A_REVERSE      2       4       sgr
-A_BLINK        3       8       sgr
-A_DIM          4       16      sgr
-A_BOLD         5       32      sgr
-A_INVIS        6       64      sgr
+A_BLINK        3       8       sgr
+A_DIM  4       16      sgr
+A_BOLD 5       32      sgr
+A_INVIS        6       64      sgr
 A_PROTECT      7       128     sgr
 A_ALTCHARSET   8       256     sgr
 A_HORIZONTAL   9       512     sgr1
@@ -1759,17 +1782,19 @@ foreground color blue and is not available in color mode.
 These should have
 an \fBncv\fP capability of 2.
 .PP
-SVr4 curses does nothing with \fBncv\fP, ncurses recognizes it and optimizes
+SVr4 curses does nothing with \fBncv\fP,
+\fI\%ncurses\fP recognizes it and optimizes
 the output in favor of colors.
-.PP
 .SS Miscellaneous
 If the terminal requires other than a null (zero) character as a pad, then this
 can be given as pad.
 Only the first character of the pad string is used.
 If the terminal does not have a pad character, specify npc.
-Note that ncurses implements the termcap-compatible \fBPC\fP variable;
+Note that \fI\%ncurses\fP implements the termcap-compatible \fBPC\fP
+variable;
 though the application may set this value to something other than
-a null, ncurses will test \fBnpc\fP first and use napms if the terminal
+a null,
+\fI\%ncurses\fP will test \fBnpc\fP first and use napms if the terminal
 has no pad character.
 .PP
 If the terminal can move up or down half a line,
@@ -1790,16 +1815,17 @@ this can be indicated with the parameterized string
 .BR rep .
 The first parameter is the character to be repeated and the second
 is the number of times to repeat it.
-Thus, tparm(repeat_char, \(aqx\(aq, 10) is the same as \*(``xxxxxxxxxx\*(''.
+Thus, tparm(repeat_char, \*'x\*', 10) is the same as \*(``xxxxxxxxxx\*(''.
 .PP
-If the terminal has a settable command character, such as the \s-1TEKTRONIX\s+1 4025,
+If the terminal has a settable command character,
+such as the \s-1TEKTRONIX\s+1 4025,
 this can be indicated with
 .BR cmdch .
 A prototype command character is chosen which is used in all capabilities.
 This character is given in the
 .B cmdch
 capability to identify it.
-The following convention is supported on some UNIX systems:
+The following convention is supported on some Unix systems:
 The environment is to be searched for a
 .B CC
 variable, and if found, all
@@ -1841,7 +1867,7 @@ A value of
 indicates that the number of lines is not fixed,
 but that there is still more memory than fits on the screen.
 .PP
-If the terminal is one of those supported by the \s-1UNIX\s+1 virtual
+If the terminal is one of those supported by the Unix virtual
 terminal protocol, the terminal number can be given as
 .BR vt .
 .PP
@@ -1868,10 +1894,9 @@ All text, including
 is transparently passed to the printer while an
 .B mc5p
 is in effect.
-.PP
-.SS Glitches and Braindamage
-.PP
-Hazeltine terminals, which do not allow \*(``~\*('' characters to be displayed should
+.SS "Glitches and Brain Damage"
+Hazeltine terminals,
+which do not allow \*(``\*~\*('' characters to be displayed should
 indicate \fBhz\fP.
 .PP
 Terminals which ignore a line-feed immediately after an \fBam\fP wrap,
@@ -1892,7 +1917,7 @@ This glitch is also taken to mean that it is not possible to position
 the cursor on top of a \*(``magic cookie\*('',
 that to erase standout mode it is instead necessary to use
 delete and insert line.
-The ncurses implementation ignores this glitch.
+The \fI\%ncurses\fP implementation ignores this glitch.
 .PP
 The Beehive Superbee, which is unable to correctly transmit the escape
 or control/C characters, has
@@ -1903,28 +1928,32 @@ Note that in older terminfo versions, this capability was called
 \*(``beehive_glitch\*(''; it is now \*(``no_esc_ctl_c\*(''.
 .PP
 Other specific terminal problems may be corrected by adding more
-capabilities of the form \fBx\fP\fIx\fP.
-.PP
-.SS Pitfalls of Long Entries
-.PP
+capabilities of the form \fBx\fIx\fR.
+.SS "Pitfalls of Long Entries"
 Long terminfo entries are unlikely to be a problem; to date, no entry has even
 approached terminfo's 4096-byte string-table maximum.
 Unfortunately, the termcap
-translations are much more strictly limited (to 1023 bytes), thus termcap translations
-of long terminfo entries can cause problems.
+translations are much more strictly limited (to 1023 bytes),
+thus termcap translations of long terminfo entries can cause problems.
 .PP
-The man pages for 4.3BSD and older versions of \fBtgetent\fP instruct the user to
+The man pages for 4.3BSD
+and older versions of \fBtgetent\fP instruct the user to
 allocate a 1024-byte buffer for the termcap entry.
 The entry gets null-terminated by
 the termcap library, so that makes the maximum safe length for a termcap entry
 1k\-1 (1023) bytes.
-Depending on what the application and the termcap library
-being used does, and where in the termcap file the terminal type that \fBtgetent\fP
-is searching for is, several bad things can happen.
+Depending on what the application and the termcap library being used does,
+and where in the termcap file the terminal type that \fBtgetent\fP
+is searching for is, several bad things can happen:
+.bP
+some termcap libraries print a warning message,
+.bP
+some exit if they find an entry that's longer than 1023 bytes,
+.bP
+some neither exit nor warn, doing nothing useful, and
+.bP
+some simply truncate the entries to 1023 bytes.
 .PP
-Some termcap libraries print a warning message or exit if they find an
-entry that's longer than 1023 bytes; others do not; others truncate the
-entries to 1023 bytes.
 Some application programs allocate more than
 the recommended 1K for the termcap entry; others do not.
 .PP
@@ -1957,8 +1986,9 @@ long entry, appears in the termcap file after the long entry, or
 does not appear in the file at all (so that \fBtgetent\fP has to search
 the whole termcap file).
 .PP
-Then \fBtgetent\fP will overwrite memory, perhaps its stack, and probably core dump
-the program.
+Then \fBtgetent\fP will overwrite memory,
+perhaps its stack,
+and probably core dump the program.
 Programs like telnet are particularly vulnerable; modern telnets
 pass along values like the terminal type automatically.
 The results are almost
@@ -1969,7 +1999,7 @@ termcap library truncates long entries, like OSF/1 3.0, it is immune to dying
 here but will return incorrect data for the terminal.
 .PP
 The \*(``after tc expansion\*('' length will have a similar effect to the
-above, but only for people who actually set TERM to that terminal
+above, but only for people who actually set \fITERM\fP to that terminal
 type, since \fBtgetent\fP only does \*(``tc\*('' expansion once it is found the
 terminal type it was looking for, not while searching.
 .PP
@@ -1978,25 +2008,22 @@ on various combinations of termcap libraries and applications, a core
 dump, warnings, or incorrect operation.
 If it is too long even before
 \*(``tc\*('' expansion, it will have this effect even for users of some other
-terminal types and users whose TERM variable does not have a termcap
+terminal types and users whose \fITERM\fP variable does not have a termcap
 entry.
 .PP
-When in \-C (translate to termcap) mode, the \fBncurses\fP implementation of
+When in \-C (translate to termcap) mode,
+the \fI\%ncurses\fP implementation of
 \fB@TIC@\fP(1M) issues warning messages when the pre-tc length of a termcap
 translation is too long.
 The \-c (check) option also checks resolved (after tc
 expansion) lengths.
-.SS Binary Compatibility
-It is not wise to count on portability of binary terminfo entries between
-commercial UNIX versions.
-The problem is that there are at least two versions
-of terminfo (under HP\-UX and AIX) 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.
+.SH FILES
+.TP
+.I \*d
+compiled terminal description database directory
 .SH EXTENSIONS
-.PP
 Searching for terminal descriptions in
-\fB$HOME/.terminfo\fP and TERMINFO_DIRS
+\fI$HOME/.terminfo\fP and \fI\%TERMINFO_DIRS\fP
 is not supported by older implementations.
 .PP
 Some SVr4 \fBcurses\fP implementations, and all previous to SVr4, do not
@@ -2005,81 +2032,97 @@ interpret the %A and %O operators in parameter strings.
 SVr4/XPG4 do not specify whether \fBmsgr\fP licenses movement while in
 an alternate-character-set mode (such modes may, among other things, map
 CR and NL to characters that do not trigger local motions).
-The \fBncurses\fP implementation ignores \fBmsgr\fP in \fBALTCHARSET\fP
-mode.
+The \fI\%ncurses\fP implementation ignores \fBmsgr\fP in
+\fBALTCHARSET\fP mode.
 This raises the possibility that an XPG4
 implementation making the opposite interpretation may need terminfo
-entries made for \fBncurses\fP to have \fBmsgr\fP turned off.
+entries made for \fI\%ncurses\fP to have \fBmsgr\fP turned off.
 .PP
-The \fBncurses\fP library handles insert-character and insert-character modes
-in a slightly non-standard way to get better update efficiency.
+The \fI\%ncurses\fP library handles insert-character and
+insert-character modes in a slightly non-standard way to get better
+update efficiency.
 See
 the \fBInsert/Delete Character\fP subsection above.
 .PP
 The parameter substitutions for \fBset_clock\fP and \fBdisplay_clock\fP are
-not documented in SVr4 or the XSI Curses standard.
+not documented in SVr4 or X/Open Curses.
 They are deduced from the
 documentation for the AT&T 505 terminal.
 .PP
 Be careful assigning the \fBkmous\fP capability.
-The \fBncurses\fP library wants to interpret it as \fBKEY_MOUSE\fP,
+The \fI\%ncurses\fP library wants to interpret it as \fBKEY_MOUSE\fP,
 for use by terminals and emulators like xterm
 that can return mouse-tracking information in the keyboard-input stream.
 .PP
 X/Open Curses does not mention italics.
 Portable applications must assume that numeric capabilities are
 signed 16-bit values.
-This includes the \fIno_color_video\fP (ncv) capability.
-The 32768 mask value used for italics with ncv can be confused with
-an absent or cancelled ncv.
+This includes the \fIno_color_video\fP (\fBncv\fP) capability.
+The 32768 mask value used for italics with \fBncv\fP can be confused with
+an absent or cancelled \fBncv\fP.
 If italics should work with colors,
-then the ncv value must be specified, even if it is zero.
-.PP
-Different commercial ports of terminfo and curses support different subsets of
-the XSI Curses standard and (in some cases) different extension sets.
-Here
-is a summary, accurate as of October 1995:
-.bP
-\fBSVR4, Solaris, ncurses\fP \-\-
-These support all SVr4 capabilities.
-.bP
-\fBSGI\fP \-\-
-Supports the SVr4 set, adds one undocumented extended string
-capability (\fBset_pglen\fP).
-.bP
-\fBSVr1, Ultrix\fP \-\-
-These support a restricted subset of terminfo capabilities.
-The booleans end with \fBxon_xoff\fP;
-the numerics with \fBwidth_status_line\fP;
-and the strings with \fBprtr_non\fP.
-.bP
-\fBHP/UX\fP \-\-
-Supports the SVr1 subset, plus the SVr[234] numerics \fBnum_labels\fP,
-\fBlabel_height\fP, \fBlabel_width\fP, plus function keys 11 through 63, plus
-\fBplab_norm\fP, \fBlabel_on\fP, and \fBlabel_off\fP, plus some incompatible
-extensions in the string table.
-.bP
-\fBAIX\fP \-\-
-Supports the SVr1 subset, plus function keys 11 through 63, plus a number
-of incompatible string table extensions.
-.bP
-\fBOSF\fP \-\-
-Supports both the SVr4 set and the AIX extensions.
-.SH FILES
-.TP 25
-\*d/?/*
-files containing terminal descriptions
-.SH SEE ALSO
-\fB@INFOCMP@\fP(1M),
-\fB@TABS@\fP(1),
-\fB@TIC@\fP(1M),
-\fBcurses\fP(3X),
-\fBcurs_color\fP(3X),
-\fBcurs_variables\fP(3X),
-\fBprintf\fP(3),
-\fBterm_variables\fP(3X).
-\fBterm\fP(\*n).
-\fBuser_caps\fP(5).
+then the \fBncv\fP value must be specified, even if it is zero.
+.PP
+Different commercial ports of \fI\%terminfo\fP and \fIcurses\fP support
+different subsets of X/Open Curses and
+(in some cases)
+different extensions.
+Here is a summary,
+accurate as of October 1995,
+after which the commercial Unix market contracted and lost diversity.
+.bP
+SVr4,
+Solaris,
+and \fI\%ncurses\fP support all SVr4 capabilities.
+.bP
+IRIX supports the SVr4 set and adds one undocumented extended string
+capability (\fB\%set_pglen\fP).
+.bP
+SVr1 and Ultrix support a restricted subset of \fI\%terminfo\fP
+capabilities.
+The Booleans end with \fB\%xon_xoff\fP;
+the numerics with \fB\%width_status_line\fP;
+and the strings with \fB\%prtr_non\fP.
+.bP
+HP/UX supports the SVr1 subset,
+plus the SVr[234] numerics
+\fB\%num_labels\fP,
+\fB\%label_height\fP,
+\fB\%label_width\fP,
+plus function keys 11 through 63,
+plus
+\fB\%plab_norm\fP,
+\fB\%label_on\fP,
+and
+\fB\%label_off\fP,
+plus a number of incompatible string table extensions.
+.bP
+AIX supports the SVr1 subset,
+plus function keys 11 through 63,
+plus a number of incompatible string table extensions.
+.bP
+OSF/1 supports both the SVr4 set and the AIX extensions.
+.SH PORTABILITY
+Do not count on compiled (binary) \fI\%terminfo\fP entries being
+portable between commercial Unix systems.
+At least two implementations of \fI\%terminfo\fP
+(those of HP-UX and AIX)
+diverged from those of other System V Unices after SVr1,
+adding extension capabilities to the string table that
+(in the binary format)
+collide with subsequent System V and X/Open Curses extensions.
 .SH AUTHORS
 Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
 Based on \fIpcurses\fP by Pavel Curtis.
+.SH SEE ALSO
+\fB\%@INFOCMP@\fP(1M),
+\fB\%@TABS@\fP(1),
+\fB\%@TIC@\fP(1M),
+\fB\%curses\fP(3X),
+\fB\%curs_color\fP(3X),
+\fB\%curs_terminfo\fP(3X),
+\fB\%curs_variables\fP(3X),
+\fB\%printf\fP(3),
+\fB\%term_variables\fP(3X),
+\fB\%term\fP(5),
+\fB\%user_caps\fP(5)
index 17f576fd8024eb226c406347f4a9d3c5384f4be2..9c3181ed5c7dffa037d654b672168b663783222a 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: tic.1m,v 1.84 2022/09/17 19:01:24 tom Exp $
-.TH @TIC@ 1M ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.ds n 5
-.ds d @TERMINFO@
+.\" $Id: tic.1m,v 1.110 2024/04/27 17:57:06 tom Exp $
+.TH @TIC@ 1M 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
+.
+.ds d @TERMINFO@
 .SH NAME
-\fB@TIC@\fP \- the \fIterminfo\fP entry-description compiler
+\fB\%@TIC@\fP \-
+compile terminal descriptions for \fIterminfo\fR or \fItermcap\fR
 .SH SYNOPSIS
 \fB@TIC@\fP
 [\fB\-\
 0\
 1\
+a\
+c\
 C\
 D\
+f\
+g\
 G\
 I\
 K\
 L\
 N\
-T\
-U\
-V\
-W\
-a\
-c\
-f\
-g\
 q\
 r\
 s\
 t\
+T\
+U\
+V\
+W\
 x\
 \fP]
-[\fB\-e\fP \fInames\fP]
+[\fB\-e\fP \fIterminal-type-list\fP]
 [\fB\-o\fP \fIdir\fP]
 [\fB\-Q\fP[\fIn\fP]]
 [\fB\-R\fP \fIsubset\fP]
 [\fB\-v\fP[\fIn\fP]]
 [\fB\-w\fP[\fIn\fP]]
 \fIfile\fP
-.br
 .SH DESCRIPTION
 The \fB@TIC@\fP command translates a \fBterminfo\fP file from source
 format into compiled format.
 The compiled format is necessary for use with
-the library routines in \fBncurses\fP(3X).
+the library routines in \fB\%ncurses\fP(3X).
 .PP
-As described in \fBterm\fP(\*n), the database may be either a directory
+As described in \fBterm\fP(5), the database may be either a directory
 tree (one file per terminal entry) or a hashed database (one record per entry).
 The \fB@TIC@\fP command writes only one type of entry,
 depending on how it was built:
@@ -109,35 +116,37 @@ There are two ways to achieve this:
 .bP
 First, you may override the system default either by
 using the \fB\-o\fP option,
-or by setting the variable \fBTERMINFO\fP
+or by setting the variable \fI\%TERMINFO\fP
 in your shell environment to a valid database location.
 .bP
 Secondly, if \fB@TIC@\fP cannot write in \fI\*d\fP
-or the location specified using your TERMINFO variable,
+or the location specified using your \fI\%TERMINFO\fP variable,
 it looks for the directory \fI$HOME/.terminfo\fP
 (or hashed database \fI$HOME/.terminfo.db)\fP;
 if that location exists, the entry is placed there.
 .PP
 Libraries that read terminfo entries are expected to check in succession
 .bP
-a location specified with the TERMINFO environment variable,
+a location specified with the \fI\%TERMINFO\fP environment variable,
 .bP
 \fI$HOME/.terminfo\fP,
 .bP
-directories listed in the TERMINFO_DIRS environment variable,
+directories listed in the \fI\%TERMINFO_DIRS\fP environment variable,
 .bP
 a compiled-in list of directories (@TERMINFO_DIRS@), and
 .bP
 the system terminfo database (\fI\*d\fP).
-.SS ALIASES
 .PP
+The \fIFetching Compiled Descriptions\fP section in the \fBterminfo\fR(5)
+manual goes into further detail.
+.SS Aliases
 This is the same program as @INFOTOCAP@ and @CAPTOINFO@;
 usually those are linked to, or copied from this program:
 .bP
 When invoked as @INFOTOCAP@, @TIC@ sets the \fB\-I\fP option.
 .bP
 When invoked as @CAPTOINFO@, @TIC@ sets the \fB\-C\fP option.
-.SS OPTIONS
+.SH OPTIONS
 .TP
 \fB\-0\fP
 restricts the output to a single line
@@ -206,9 +215,9 @@ according to the rules summarized above,
 it will print a diagnostic and exit with an error rather than
 printing a list of database locations.
 .TP
-\fB\-e \fInames\fR
-Limit writes and translations to the following comma-separated list of
-terminals.
+\fB\-e \fIlist\fR
+Limit writes and translations to the comma-separated \fIlist\fP of
+terminal types.
 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.
@@ -233,8 +242,8 @@ rather than their decimal equivalents.
 Force source translation to terminfo format.
 .TP
 \fB\-K\fP
-Suppress some longstanding ncurses extensions to termcap format,
-e.g., "\\s" for space.
+Suppress some longstanding \fI\%ncurses\fP extensions to termcap format,
+e.g., "\es" for space.
 .TP
 \fB\-L\fP
 Force source translation to terminfo format
@@ -255,7 +264,7 @@ obsolete capabilities.
 .TP
 \fB\-o\fIdir\fR
 Write compiled entries to given database location.
-Overrides the TERMINFO environment variable.
+Overrides the \fI\%TERMINFO\fP environment variable.
 .TP
 \fB\-Q\fIn\fR
 Rather than show source in terminfo (text) format,
@@ -282,9 +291,17 @@ 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 terminfo; 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 \fBterminfo\fP(\*n) for details.
+.IP
+Available subsets are
+.RS
+\*(``SVr1\*('',
+\*(``Ultrix\*('',
+\*(``HP\*('',
+\*(``BSD\*('', and
+\*(``AIX\*(''
+.RE
+.IP
+See \fBterminfo\fP(5) for details.
 .TP
 \fB\-r\fP
 Force entry resolution (so there are no remaining tc capabilities) even
@@ -307,14 +324,15 @@ descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
 tells \fB@TIC@\fP to discard commented-out capabilities.
 Normally when translating from terminfo to termcap,
 untranslatable capabilities are commented-out.
-.TP 5
+.TP
 \fB\-U\fP
 tells \fB@TIC@\fP 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.
 .TP
 \fB\-V\fP
-reports the version of ncurses which was used in this program, and exits.
+reports the version of \fI\%ncurses\fP which was used in this program,
+and exits.
 .TP
 \fB\-v\fIn\fR
 specifies that (verbose) output be written to standard error trace
@@ -324,7 +342,8 @@ The optional parameter \fIn\fP is a number from 1 to 9, inclusive,
 indicating the desired level of detail of information.
 .RS
 .bP
-If ncurses is built without tracing support, the optional parameter is ignored.
+If \fI\%ncurses\fP is built without tracing support,
+the optional parameter is ignored.
 .bP
 If \fIn\fP is omitted, the default level is 1.
 .bP
@@ -377,26 +396,25 @@ The parameter is optional.
 If it is omitted, it defaults to 60.
 .TP
 \fB\-x\fP
-Treat unknown capabilities as user-defined (see \fBuser_caps(\*n)\fP).
+Treat unknown capabilities as user-defined (see \fBuser_caps\fP(5)).
 That is, if you supply a capability name which \fB@TIC@\fP does not recognize,
-it will infer its type (boolean, number or string) from the syntax and
+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 function keys.
-.SS PARAMETERS
+.SS Parameters
 .TP
 \fIfile\fP
 contains one or more \fBterminfo\fP terminal descriptions in source
-format [see \fBterminfo\fP(\*n)].
+format [see \fBterminfo\fP(5)].
 Each description in the file
 describes the capabilities of a particular terminal.
 .IP
 If \fIfile\fP is \*(``-\*('', then the data is read from the standard input.
 The \fIfile\fP parameter may also be the path of a character-device.
-.SS PROCESSING
-.PP
+.SS Processing
 All but one of the capabilities recognized by \fB@TIC@\fP are documented
-in \fBterminfo\fP(\*n).
+in \fBterminfo\fP(5).
 The exception is the \fBuse\fP capability.
 .PP
 When a \fBuse\fP=\fIentry\fP\-\fIname\fP field is discovered in a
@@ -414,120 +432,42 @@ capabilities in \fIentry\fR_\fIname\fR_\fI2\fP must also appear in
 \fBentry_name_1\fP before \fBuse=\fP for these capabilities to be
 canceled in \fBentry_name_1\fP.
 .PP
-Total compiled entries cannot exceed 4096 bytes.
+Total compiled entries cannot exceed
+4096 bytes in the legacy storage format, or
+32768 using the extended number format.
 The name field cannot
 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 printed.
-.SH HISTORY
-.PP
-System V Release 2 provided a \fBtic\fP utility.
-It accepted a single option: \fB\-v\fP (optionally followed by a number).
-According to Ross Ridge's comment in \fImytinfo\fP,
-this version of \fBtic\fP was
-unable to represent cancelled capabilities.
-.PP
-System V Release 3 provided a different \fBtic\fP utility,
-written by Pavel Curtis,
-(originally named \*(``compile\*('' in \fIpcurses\fP).
-This added an option \fB\-c\fP 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 warning messages which
-did not appear in \fIpcurses\fP.
-While the program itself was changed little as development
-continued with System V Release 4,
-the table of capabilities grew from 180 (\fIpcurses\fP) to 464 (Solaris).
-.PP
-In early development of ncurses (1993),
-Zeyd Ben-Halim used the table from \fImytinfo\fP to
-extend the \fIpcurses\fP 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
-\fBmemory_lock_above\fP and
-\fBmemory_unlock\fP (see \fBuser_caps\fP(5)).
-.PP
-Eric Raymond incorporated parts of \fImytinfo\fP 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 years.
-.PP
-In 1999, Thomas Dickey added the \fB\-x\fP option
-to support user-defined capabilities.
-.PP
-In 2010, Roy Marples provided a \fBtic\fP program
-and terminfo library for NetBSD.
-That implementation adapts several features from ncurses,
-including \fB@TIC@\fP's \fB\-x\fP option.
-.PP
-The \fB\-c\fP option tells \fB@TIC@\fP to check for problems in the
-terminfo source file.
-Continued development provides additional checks:
-.bP
-\fIpcurses\fP had 8 warnings
-.bP
-ncurses in 1996 had 16 warnings
-.bP
-Solaris (SVr4) curses has 28 warnings
-.bP
-NetBSD tic in 2019 has 19 warnings.
-.bP
-ncurses in 2019 has 96 warnings
-.PP
-The checking done in ncurses' \fB@TIC@\fP 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 user-defined.
-.SH PORTABILITY
-.PP
-X/Open Curses, Issue 7 (2009) provides a brief description of \fBtic\fP.
-It lists one option: \fB\-c\fP.
-The omission of \fB\-v\fP is unexpected.
-The change history states that the description is derived from True64 UNIX.
-According to its manual pages, that system also supported the \fB\-v\fP option.
-.PP
-Shortly after Issue 7 was released, Tru64 was discontinued.
-As of 2019, the surviving implementations of \fBtic\fP
-are SVr4 (AIX, HP-UX and Solaris),
-ncurses
-and NetBSD curses.
-The SVr4 \fBtic\fP programs all support the \fB\-v\fP option.
-The NetBSD \fBtic\fP program follows X/Open's documentation,
-omitting the \fB\-v\fP option.
-.PP
-The X/Open rationale states that some implementations of \fBtic\fP
-read terminal descriptions from the standard input if the \fIfile\fP
-parameter is omitted.
-None of these implementations do that.
-Further, it comments that some may choose to read from \*(''./terminfo.src\*(''
-but that is obsolescent behavior from SVr2,
-and is not (for example) a documented feature of SVr3.
-.SS COMPATIBILITY
+.SH FILES
+.TP
+.I \*d
+compiled terminal description database
+.SH NOTES
 There is some evidence that historic \fB@TIC@\fP implementations treated
 description fields with no whitespace in them as additional aliases or
 short names.
 This \fB@TIC@\fP does not do that, but it does warn when
 description fields may be treated that way and check them for dangerous
 characters.
-.SS EXTENSIONS
+.SH EXTENSIONS
 Unlike the SVr4 \fB@TIC@\fP 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 \fBterminfo\fP(\*n) for the list of
+See \fBterminfo\fP(5) for the list of
 termcap names taken to be equivalent to terminfo names.
 .PP
 The SVr4 manual pages are not clear on the resolution rules for \fBuse\fP
 capabilities.
 This implementation of \fB@TIC@\fP will find \fBuse\fP targets anywhere
-in the source file, or anywhere in the file tree rooted at \fBTERMINFO\fP (if
-\fBTERMINFO\fP is defined),
+in the source file,
+or anywhere in the file tree rooted at
+\fI\%TERMINFO\fP
+(if
+\fI\%TERMINFO\fP is defined),
 or in the user's \fI$HOME/.terminfo\fP database
 (if it exists),
 or (finally) anywhere in the system's file tree of
@@ -562,7 +502,7 @@ are not supported by SVr4 \fBtic\fP:
 \fB\-x\fP
 .RE
 .bP
-The NetBSD \fBtic\fP  supports a few of the ncurses options
+The NetBSD \fBtic\fP supports a few of the \fI\%ncurses\fP options
 .sp
 .RS
 \fB\-a\fP
@@ -577,25 +517,106 @@ as @INFOCMP@'s \fB\-e\fP and \fB\-E\fP options).
 The SVr4 \fB\-c\fP mode does not report bad \*(``use=\*('' links.
 .PP
 System V does not compile entries to or read entries from your
-\fI$HOME/.terminfo\fP database unless TERMINFO is explicitly set to it.
-.SH FILES
-.TP 5
-\fB\*d/?/*\fP
-Compiled terminal description database.
-.SH SEE ALSO
-\fB@CAPTOINFO@\fP(1M),
-\fB@INFOCMP@\fP(1M),
-\fB@INFOTOCAP@\fP(1M),
-\fB@TOE@\fP(1M),
-\fBcurses\fP(3X),
-\fBterm\fP(\*n).
-\fBterminfo\fP(\*n).
-\fBuser_caps\fP(\*n).
+\fI$HOME/.terminfo\fP database unless \fI\%TERMINFO\fP is explicitly set
+to it.
+.SH PORTABILITY
+X/Open Curses, Issue 7 (2009) provides a brief description of \fBtic\fP.
+It lists one option: \fB\-c\fP.
+The omission of \fB\-v\fP is unexpected.
+The change history states that the description is derived from Tru64.
+According to its manual pages, that system also supported the \fB\-v\fP option.
+.PP
+Shortly after Issue 7 was released, Tru64 was discontinued.
+As of 2019, the surviving implementations of \fBtic\fP
+are SVr4 (AIX, HP-UX and Solaris),
+\fI\%ncurses\fP
+and NetBSD curses.
+The SVr4 \fBtic\fP programs all support the \fB\-v\fP option.
+The NetBSD \fBtic\fP program follows X/Open's documentation,
+omitting the \fB\-v\fP option.
+.PP
+The X/Open rationale states that some implementations of \fBtic\fP
+read terminal descriptions from the standard input if the \fIfile\fP
+parameter is omitted.
+None of these implementations do that.
+Further, it comments that some may choose to read from \*(''./terminfo.src\*(''
+but that is obsolescent behavior from SVr2,
+and is not (for example) a documented feature of SVr3.
+.SH HISTORY
+System V Release 2 provided a \fBtic\fP utility.
+It accepted a single option: \fB\-v\fP (optionally followed by a number).
+According to Ross Ridge's comment in \fImytinfo\fP,
+this version of \fBtic\fP was
+unable to represent cancelled capabilities.
+.PP
+System V Release 3 provided a different \fBtic\fP utility,
+written by Pavel Curtis,
+(originally named \*(``compile\*('' in \fIpcurses\fP).
+This added an option \fB\-c\fP 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 warning messages which
+did not appear in \fIpcurses\fP.
+While the program itself was changed little as development
+continued with System V Release 4,
+the table of capabilities grew from 180 (\fIpcurses\fP) to 464 (Solaris).
+.PP
+In early development of \fI\%ncurses\fP (1993),
+Zeyd Ben-Halim used the table from \fImytinfo\fP to
+extend the \fIpcurses\fP 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
+\fB\%memory_lock_above\fP and
+\fB\%memory_unlock\fP (see \fB\%user_caps\fP(5)).
+.PP
+Eric Raymond incorporated parts of \fImytinfo\fP into \fI\%ncurses\fP
+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 years.
 .PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
-.SH AUTHOR
+In 1999, Thomas Dickey added the \fB\-x\fP option
+to support user-defined capabilities.
+.PP
+In 2010, Roy Marples provided a \fBtic\fP program
+and terminfo library for NetBSD.
+That implementation adapts several features from \fI\%ncurses\fP,
+including \fB@TIC@\fP's \fB\-x\fP option.
+.PP
+The \fB\-c\fP option tells \fB@TIC@\fP to check for problems in the
+terminfo source file.
+Continued development provides additional checks:
+.bP
+\fIpcurses\fP had 8 warnings
+.bP
+\fI\%ncurses\fP in 1996 had 16 warnings
+.bP
+Solaris (SVr4) curses has 28 warnings
+.bP
+NetBSD tic in 2019 has 19 warnings.
+.bP
+\fI\%ncurses\fP in 2019 has 96 warnings
+.PP
+The checking done in \fI\%ncurses\fP' \fB@TIC@\fP 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 \fI\%ncurses\fP' terminal
+database;
+128 of those are user-defined.
+.SH AUTHORS
 Eric S. Raymond <esr@snark.thyrsus.com>
 and
 .br
-Thomas E. Dickey <dickey@invisible-island.net>
+Thomas E. Dickey <dickey@invisible\-island.net>
+.SH SEE ALSO
+\fB\%@CAPTOINFO@\fP(1M),
+\fB\%@INFOCMP@\fP(1M),
+\fB\%@INFOTOCAP@\fP(1M),
+\fB\%@TOE@\fP(1M),
+\fB\%curses\fP(3X),
+\fB\%term\fP(5),
+\fB\%terminfo\fP(5),
+\fB\%user_caps\fP(5)
index d2c4eb73a2715cb213991275290a53acab9324b1..c4eba848e06b668465ad366ec33836a27d746dfd 100644 (file)
@@ -1,5 +1,6 @@
+'\" t
 .\"***************************************************************************
-.\" Copyright 2019-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2019-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: toe.1m,v 1.36 2022/02/12 20:02:20 tom Exp $
-.TH @TOE@ 1M ""
+.\" $Id: toe.1m,v 1.68 2024/04/20 18:59:26 tom Exp $
+.TH @TOE@ 1M 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.ie n .ds CW R
+.el   \{
+.ie \n(.g .ds CW CR
+.el       .ds CW CW
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
-.ds n 5
 .ds d @TERMINFO@
 .SH NAME
-\fB@TOE@\fP \- table of (terminfo) entries
+\fB\%@TOE@\fP \-
+list table of entries of \fIterminfo\fR terminal types
 .SH SYNOPSIS
-\fB@TOE@\fP [\fB\-v\fP[\fIn\fP]] [\fB\-ahsuUV\fP] \fIfile...\fP
-.br
-.SH DESCRIPTION
+.B @TOE@
+.RB [ \-ahs ]
+.RB [ \-v\ \c
+.RI [ n ]]
+.RI [ directory
+\&.\|.\|.]
 .PP
-With no options,
-\fB@TOE@\fP lists all available terminal types by primary name
-with descriptions.
-File arguments specify the directories to be scanned; if no
-such arguments are given,
-your default terminfo directory is scanned.
-If you also specify the \fB\-h\fP option,
-a directory header will be issued as each
-directory is entered.
+.B @TOE@
+.RB [ \-u | \-U ]
+.I file
 .PP
-There are other options intended for use by terminfo file maintainers:
-.TP
-\fB\-a\fP
-report on all of the terminal databases which ncurses would search,
-rather than only the first one that it finds.
+.B "@TOE@ \-V"
+.SH DESCRIPTION
+\fB\%@TOE@\fP reports to the standard output stream the (primary) names
+and descriptions of the terminal types available to the \fIterminfo\fP
+library.
+Each \fIdirectory\fP is scanned;
+if none are given,
+\fB\%@TOE@\fP scans the default \fIterminfo\fP directory.
+.SH OPTIONS
+The \fB\-h\fP option can be helpful to observe where \fB\%@TOE@\fP is
+looking for terminal descriptions.
+Other options support maintainers of \fIterminfo\fP terminal
+descriptions.
+.TP 9 \" "-u file" + 2n
+.B \-a
+lists entries from all terminal database directories that \fIterminfo\fP
+would search,
+instead of only the first that it finds.
 .IP
-If the \fB\-s\fP is also given, \fB@TOE@\fP
-adds a column to the report,
-showing (like \fBconflict\fP(1)) which entries which
-belong to a given terminal database.
-An "*" marks entries which differ, and "+" marks equivalent entries.
+If
+.B \-s
+is also given,
+\fB\%@TOE@\fP
+additionally reports,
+like \fI\%conflict\fP(1),
+which entries correspond to a given terminal database.
+An \*(``*\*('' marks entries that differ,
+and \*(``+\*('' marks equivalent entries.
 .IP
-Without the \fB\-s\fP option, \fB@TOE@\fP does not attempt to merge
-duplicates in its report
+Without the \fB\-s\fP option,
+\fB\%@TOE@\fP does not attempt to merge duplicates in its report.
+.TP
+.B \-h
+writes a heading naming each each directory as it is accessed.
 .TP
-\fB\-s\fP
-sort the output by the entry names.
+.B \-s
+sorts the output by the entry names.
 .TP
-\fB\-u\fP \fIfile\fP
-says to write a report to the standard output,
-listing dependencies in the given terminfo/termcap source file.
-The report condenses the \*(``use\*('' relation:
-each line consists of the primary name of a terminal that
-has use capabilities,
-followed by a colon,
-followed by the
-whitespace-separated primary names of all terminals which occur in those use
-capabilities,
-followed by a newline
+.BI \-u\  file
+lists terminal type dependencies in \fIfile\fP,
+a \fIterminfo\fP entry source or \fItermcap\fP database file.
+The report summarizes the \*(``\fBuse\fP\*('' (\fIterminfo\fP) and
+\fBtc\fP (\fItermcap\fP) relations:
+each line comprises the primary name of a terminal type employing
+\fBuse\fP/\fBtc\fP capabilities,
+a colon,
+a space- and tab-separated list of primary names of terminal types thus
+named,
+and a newline.
 .TP
-\fB\-U\fP \fIfile\fP
-says to write a report to the standard output,
-listing reverse dependencies in the given terminfo/termcap source file.
-The report reverses the \*(``use\*('' relation:
-each line consists of the primary name of a
-terminal that occurs in use capabilities,
-followed by a colon,
-followed by the
-whitespace-separated primary names of all terminals which depend on it,
-followed by a newline.
+.BI \-U\  file
+lists terminal type reverse dependencies in \fIfile\fP,
+a \fIterminfo\fP entry source or \fItermcap\fP database file.
+The report summarizes the \*(``\fBuse\fP\*('' (\fIterminfo\fP) and
+\fBtc\fP (\fItermcap\fP) reverse relations:
+each line comprises the primary name of a terminal type occurring in
+\fBuse\fP/\fBtc\fP capabilities,
+a colon,
+a space- and tab-separated list of primary names of terminal types
+naming them thus,
+and a newline.
 .TP
-\fB\-v\fIn\fR
-specifies that (verbose) output be written to standard error,
-showing \fB@TOE@\fP's progress.
+.BR \-v\  [\c
+.IR n ]
+reports verbose status information to the standard error stream,
+showing \fB\%@TOE@\fP's progress.
 .IP
-The optional parameter \fIn\fP is a number from 1 to 10,
-interpreted as for \fB@TIC@\fP(1M).
-If ncurses is built without tracing support, the optional parameter is ignored.
+The optional parameter \fIn\fP is an integer between 1 and 10 inclusive,
+interpreted as for \fB\%@TIC@\fP(1M).
+If \fI\%ncurses\fP is built without tracing support,
+\fIn\fP is ignored.
 .TP
 \fB\-V\fP
-reports the version of ncurses which was used in this program,
-and exits.
-.SH EXAMPLES
-.PP
-Without sorting, the \fB\-a\fP option reports all of the names found
-in all of the terminal databases found by the \fBTERMINFO\fP and
-\fBTERMINFO_DIRS\fP environment variables:
-.NS
-MtxOrb162      16x2 Matrix Orbital LCD display
-MtxOrb204      20x4 Matrix Orbital LCD display
-MtxOrb         Generic Matrix Orbital LCD display
-qvt101+        qume qvt 101 PLUS product
-qvt119+-25     QVT 119 PLUS with 25 data lines
-qansi-g        QNX ANSI
-qvt103         qume qvt 103
-qnxw           QNX4 windows
-qansi-w        QNX ansi for windows
-qnxm           QNX4 with mouse events
-qvt203-25-w    QVT 203 PLUS with 25 by 132 columns
-qansi-t        QNX ansi without console writes
-\&.\ .\ .
-.NE
-.PP
-Use the \fB\-a\fP and \fB\-s\fP options together to show where each terminal
-description was found:
-.NS
---> /usr/local/ncurses/share/terminfo
-----> /usr/share/terminfo
-*-+-:  9term           Plan9 terminal emulator for X
-*---:  Eterm           Eterm with xterm-style color support (X Window System)
-*-*-:  Eterm-256color  Eterm with xterm 256-colors
-*-*-:  Eterm-88color   Eterm with 88 colors
-*-+-:  MtxOrb          Generic Matrix Orbital LCD display
-*-+-:  MtxOrb162       16x2 Matrix Orbital LCD display
-*-+-:  MtxOrb204       20x4 Matrix Orbital LCD display
-*-*-:  NCR260VT300WPP  NCR 2900_260 vt300 wide mode pc+  kybd
-*-+-:  aaa             ann arbor ambassador/30 lines
-*-+-:  aaa+dec         ann arbor ambassador in dec vt100 mode
-*-+-:  aaa+rv          ann arbor ambassador in reverse video
-\&.\ .\ .
-.NE
+reports the version of \fI\%ncurses\fP associated
+with this program and exits with a successful status.
 .SH FILES
-.TP 5
-\fB\*d/?/*\fP
-Compiled terminal description database.
+.TP
+.I \*d
+compiled terminal description database
+.SH PORTABILITY
+\fB\%@TOE@\fP is not provided by other implementations.
+There is no applicable X/Open or POSIX standard for it.
 .SH HISTORY
-This utility is not provided by other implementations.
-There is no relevant X/Open or POSIX standard for \fB@TOE@\fP.
+\fB\%@TOE@\fP replaces a \fB\-T\fP option that was briefly supported by
+the \fI\%ncurses\fP \fB\%infocmp\fP utility in 1995.
+.PP
+The \fB\-a\fP and \fB\-s\fP options were added in 2006 and 2011,
+respectively.
 .PP
-The program name refers to a developer's pun:
+The program's name originates with a developer's pun:
 .bP
 \fBtic\fP,
 .bP
 \fBtac\fP (now \fBtack\fP),
 .bP
 \fBtoe\fP.
+.SH EXAMPLES
+When not sorting with the \fB\-s\fP option,
+the \fB\-a\fP option reports all of the names found in all of the
+terminal database directories named in the \fI\%TERMINFO\fP and
+\fI\%TERMINFO_DIRS\fP environment variables.
+.RS 4
 .PP
-It replaced a \fB\-T\fP option which was briefly supported by
-the ncurses \fBinfocmp\fP utility in 1995.
+.\" toe -a | grep -E '^(xterm|vt)'
+.ft \*(CW
+.TS
+L2 Lx.
+xterm\-color   generic color xterm
+xterm\-xfree86 xterm terminal emulator (XFree86)
+xterm\-vt220   xterm emulating vt220
+xterm\-256color        xterm with 256 colors
+xterm\-r6      xterm X11R6 version
+xterm\-r5      xterm R5 version
+xterm\-mono    monochrome xterm
+xterm  T{
+.ad l
+xterm terminal emulator (X Window System)
+T}
+vt220  dec vt220
+vt102  dec vt102
+vt100  dec vt100 (w/advanced video)
+vt52   dec vt52
+.T&
+L.
+\&.\|.\|.
+.TE
+.ft
+.RE
 .PP
-The \fB\-a\fP and \fB\-s\fP options were added to
-\fB@TOE@\fP several years later (2006 and 2011, respectively).
-.SH SEE ALSO
-\fB@CAPTOINFO@\fP(1M),
-\fB@INFOCMP@\fP(1M),
-\fB@INFOTOCAP@\fP(1M),
-\fB@TIC@\fP(1M),
-\fBcurses\fP(3X),
-\fBterminfo\fP(\*n).
+Use the \fB\-a\fP and \fB\-s\fP options together to show where each
+terminal description was found.
+.RS 4
 .PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+.\" toe -as | grep -E '(^-+>|:.(xterm|vt))'
+.ft \*(CW
+.TS
+Lx.
+\-\-> /etc/terminfo
+\-\-\-\-> /lib/terminfo
+\-\-\-\-\-\-> /usr/share/terminfo
+.TE
+.TS
+L1 L2 Lx.
+\-\-*\-\-\-:   vt100   dec vt100 (w/advanced video)
+\-\-*\-\-\-:   vt102   dec vt102
+\-\-*\-\-\-:   vt220   dec vt220
+\-\-*\-\-\-:   vt52    dec vt52
+\-\-*\-\-\-:   xterm   T{
+.ad l
+xterm terminal emulator (X Window System)
+T}
+\-\-*\-\-\-:   xterm\-256color xterm with 256 colors
+\-\-*\-\-\-:   xterm\-color    generic color xterm
+\-\-*\-\-\-:   xterm\-mono     monochrome xterm
+\-\-*\-\-\-:   xterm\-r5       xterm R5 version
+\-\-*\-\-\-:   xterm\-r6       xterm X11R6 version
+\-\-*\-\-\-:   xterm\-vt220    xterm emulating vt220
+\-\-*\-\-\-:   xterm\-xfree86  T{
+.ad l
+xterm terminal emulator (XFree86)
+T}
+.T&
+L.
+\&.\|.\|.
+.TE
+.ft
+.RE
+.SH SEE ALSO
+\fB\%@CAPTOINFO@\fP(1M),
+\fB\%@INFOCMP@\fP(1M),
+\fB\%@INFOTOCAP@\fP(1M),
+\fB\%@TIC@\fP(1M),
+\fB\%curses\fP(3X),
+\fB\%terminfo\fP(5)
index 5d61230db10ec9af79cb2d000eda794a6f38f3b3..eba073390df5cb1db27379170de0e232b0279c0c 100644 (file)
@@ -1,6 +1,6 @@
 '\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: tput.1,v 1.76 2022/02/12 20:02:20 tom Exp $
-.TH @TPUT@ 1 ""
-.ds d @TERMINFO@
-.ds n 1
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: tput.1,v 1.113 2024/04/20 19:58:50 tom Exp $
+.TH @TPUT@ 1 2024-04-20 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
+.ds d @TERMINFO@
 .SH NAME
-\fB@TPUT@\fP, \fBreset\fP \- initialize a terminal or query terminfo database
+\fB\%@TPUT@\fP \-
+initialize a terminal, exercise its capabilities, or query \fI\%term\%info\fP database
 .SH SYNOPSIS
-\fB@TPUT@\fR [\fB\-T\fItype\fR] \fIcapname\fR [\fIparameters\fR]
-.br
-\fB@TPUT@\fR [\fB\-T\fItype\fR] [\fB\-x\fR] \fBclear\fR
-.br
-\fB@TPUT@\fR [\fB\-T\fItype\fR] \fBinit\fR
-.br
-\fB@TPUT@\fR [\fB\-T\fItype\fR] \fBreset\fR
-.br
-\fB@TPUT@\fR [\fB\-T\fItype\fR] \fBlongname\fR
-.br
-\fB@TPUT@ \-S\fP  \fB<<\fP
-.br
+\fB@TPUT@\fP [\fB\-T\fP \fIterminal-type\fP]
+{\fIcap-code\fP [\fIparameter\fP .\|.\|.\&]} .\|.\|.
+.PP
+\fB@TPUT@\fP [\fB\-T\fP \fIterminal-type\fP] [\fB\-x\fP] \fBclear\fP
+.PP
+\fB@TPUT@\fP [\fB\-T\fP \fIterminal-type\fP] \fBinit\fP
+.PP
+\fB@TPUT@\fP [\fB\-T\fP \fIterminal-type\fP] \fB\%reset\fP
+.PP
+\fB@TPUT@\fP [\fB\-T\fP \fIterminal-type\fP] \fB\%longname\fP
+.PP
+\fB@TPUT@ \-S\fP
+.PP
 \fB@TPUT@ \-V\fP
-.br
 .SH DESCRIPTION
-The \fB@TPUT@\fP utility uses the \fBterminfo\fP database to make the
-values of terminal-dependent capabilities and information available to
-the shell (see \fBsh\fP(1)), to initialize or reset the terminal, or
-return the long name of the requested terminal type.
-The result depends upon the capability's type:
-.RS 3
-.TP 5
-string
-\fB@TPUT@\fP writes the string to the standard output.
-No trailing newline is supplied.
+\fB\%@TPUT@\fP uses the
+.I \%term\%info
+library and database to make terminal-specific capabilities and
+information available to the shell,
+to initialize or reset the terminal,
+or
+to report a description of the current
+(or specified)
+terminal type.
+Terminal capabilities are accessed by
+.IR cap-code .
+.PP
+\fB\%terminfo\fP(5) discusses terminal capabilities at length
+and presents a complete list of
+.IR cap-codes .
+.PP
+When retrieving capability values,
+the result depends upon the capability's type.
+.TP 9 \" "Boolean" + 2n
+Boolean
+\fB\%@TPUT@\fP sets its exit status to
+.B 0
+if the terminal possesses
+.IR cap-code ,
+and
+.B 1
+if it does not.
 .TP
-integer
-\fB@TPUT@\fP writes the decimal value to the standard output,
-with a trailing newline.
+numeric
+\fB\%@TPUT@\fP writes
+.IR cap-code 's
+decimal value to the standard output stream if defined
+.RB ( \-1
+if it is not)
+followed by a newline.
 .TP
-boolean
-\fB@TPUT@\fP simply sets the exit code
-(\fB0\fP for TRUE if the terminal has the capability,
-\fB1\fP for FALSE if it does not),
-and writes nothing to the standard output.
-.RE
+string
+\fB\%@TPUT@\fP writes
+.IR cap-code 's
+value to the standard output stream if defined,
+without a trailing newline.
 .PP
 Before using a value returned on the standard output,
-the application should test the exit code
-(e.g., \fB$?\fP, see \fBsh\fP(1)) to be sure it is \fB0\fP.
-(See the \fBEXIT CODES\fP and \fBDIAGNOSTICS\fP sections.)
-For a complete list of capabilities
-and the \fIcapname\fP associated with each, see \fBterminfo\fP(5).
-.SS Options
-.TP
-\fB\-S\fP
-allows more than one capability per invocation of \fB@TPUT@\fP.  The
-capabilities must be passed to \fB@TPUT@\fP from the standard input
-instead of from the command line (see example).
-Only one \fIcapname\fP is allowed per line.
-The \fB\-S\fP option changes the
-meaning of the \fB0\fP and \fB1\fP boolean and string exit codes (see the
-EXIT CODES section).
+the application should test \fB\%@TPUT@\fP's exit status
+to be sure it is 0;
+see section \*(``EXIT STATUS\*('' below.
+.SS Operands
+Generally,
+an operand is a
+.IR cap-code ,
+a capability code from the terminal database,
+or a parameter thereto.
+Three others are specially recognized by \fB\%@TPUT@\fP:
+.BR init ,
+.BR \%reset ,
+and
+.BR \%longname .
+Although these resemble capability codes,
+they in fact receive special handling;
+we term them \*(``pseudo-capabilities\*(''.
+.TP 11n \" "longname" + 2n + adjustment for PDF
+.I cap-code
+indicates a capability from the terminal database.
 .IP
-Because some capabilities may use
-\fIstring\fP parameters rather than \fInumbers\fP,
-\fB@TPUT@\fP uses a table and the presence of parameters in its input
-to decide whether to use \fBtparm\fP(3X),
-and how to interpret the parameters.
-.TP
-\fB\-T\fItype\fR
-indicates the \fItype\fP of terminal.
-Normally this option is
-unnecessary, because the default is taken from the environment
-variable \fBTERM\fP.
-If \fB\-T\fP is specified, then the shell
-variables \fBLINES\fP and \fBCOLUMNS\fP will also be ignored.
-.TP
-\fB\-V\fP
-reports the version of ncurses which was used in this program, and exits.
-.TP
-.B \-x
-do not attempt to clear the terminal's scrollback buffer
-using the extended \*(``E3\*('' capability.
-.SS Commands
-A few commands (\fBinit\fP, \fBreset\fP and \fBlongname\fP) are
-special; they are defined by the \fB@TPUT@\fP program.
-The others are the names of \fIcapabilities\fP from the terminal database
-(see \fBterminfo\fP(5) for a list).
-Although \fBinit\fP and \fBreset\fP resemble capability names,
-\fB@TPUT@\fP uses several capabilities to perform these special functions.
-.TP
-\fIcapname\fP
-indicates the capability from the terminal database.
-.IP
-If the capability is a string that takes parameters, the arguments
-following the capability will be used as parameters for the string.
+If
+.I cap-code
+is of string type and takes parameters,
+\fB\%@TPUT@\fP interprets arguments following
+.I cap-code
+as the parameters,
+up to the (fixed) quantity the capability requires.
 .IP
-Most parameters are numbers.
+Most parameters are numeric.
 Only a few terminal capabilities require string parameters;
-\fB@TPUT@\fP uses a table to decide which to pass as strings.
-Normally \fB@TPUT@\fP uses \fBtparm\fP(3X) to perform the substitution.
+\fB\%@TPUT@\fP uses a table to decide which to pass as strings.
+Normally \fB\%@TPUT@\fP uses \fB\%tparm\fP(3X) to perform the
+substitution.
 If no parameters are given for the capability,
-\fB@TPUT@\fP writes the string without performing the substitution.
+\fB\%@TPUT@\fP writes the string without performing the substitution.
 .TP
-\fBinit\fP
-If the terminal database is present and an entry for the user's
-terminal exists (see \fB\-T\fItype\fR, above), the following will
-occur:
+.B init
+initializes the terminal.
+If the terminal database is present
+and an entry for the user's terminal type exists,
+the following occur.
 .RS
 .TP 5
 (1)
-first, \fB@TPUT@\fP retrieves the current terminal mode settings
-for your terminal.
-It does this by successively testing
+\fB\%@TPUT@\fP retrieves the terminal's mode settings.
+It successively tests the file descriptors corresponding to
 .RS
 .bP
-the standard error,
+the standard error stream,
 .bP
-standard output,
+the standard output stream,
 .bP
-standard input and
+the standard input stream,
+and
 .bP
-ultimately \*(``/dev/tty\*(''
+.I \%/dev/tty
 .RE
 .IP
 to obtain terminal settings.
-Having retrieved these settings, \fB@TPUT@\fP remembers which
-file descriptor to use when updating settings.
+Having retrieved them,
+\fB\%@TPUT@\fP remembers which descriptor to use for further updates.
 .TP
 (2)
-if the window size cannot be obtained from the operating system,
-but the terminal description (or environment, e.g., \fBLINES\fP
-and \fBCOLUMNS\fP variables specify this),
-update the operating system's notion of the window size.
+If the terminal dimensions cannot be obtained from the operating system,
+but the environment or terminal type database entry describes them,
+\fB\%@TPUT@\fP updates the operating system's notion of them.
 .TP
 (3)
-the terminal modes will be updated:
+\fB\%@TPUT@\fP updates the terminal modes.
 .RS
 .bP
-any delays (e.g., newline) specified in the entry will
-be set in the tty driver,
+Any delays specified in the entry
+(for example,
+when a newline is sent)
+are set in the terminal driver.
 .bP
-tabs expansion will be turned on or off according to
-the specification in the entry, and
+Tab expansion is turned on or off per the specification in the entry,
+and
 .bP
 if tabs are not expanded,
-standard tabs will be set (every 8 spaces).
+standard tabs
+(every 8 spaces)
+are set.
 .RE
 .TP
 (4)
-if present, the terminal's initialization strings will be
-output as detailed in the \fBterminfo\fP(5) section on
-.IR "Tabs and Initialization" ,
+If initialization capabilities,
+detailed in subsection \*(``Tabs and Initialization\*('' of
+\fB\%terminfo\fP(5),
+are present,
+\fB\%@TPUT@\fP writes them to the standard output stream.
 .TP
 (5)
-output is flushed.
+\fB\%@TPUT@\fP flushes the standard output stream.
 .RE
 .IP
-If an entry does not
-contain the information needed for any of these activities,
-that activity will silently be skipped.
+If an entry lacks the information needed for an activity above,
+that activity is silently skipped.
 .TP
-\fBreset\fP
-This is similar to \fBinit\fP, with two differences:
+.B reset
+re-initializes the terminal.
+A reset differs from initialization in two ways.
 .RS
 .TP 5
 (1)
-before any other initialization,
-the terminal modes will be reset to a \*(``sane\*('' state:
+\fB\%@TPUT@\fP sets the the terminal modes to a \*(``sane\*('' state,
 .RS
 .bP
-set cooked and echo modes,
+enabling cooked and echo modes,
 .bP
-turn off cbreak and raw modes,
+disabling cbreak and raw modes,
 .bP
-turn on newline translation and
+enabling newline translation,
+and
 .bP
-reset any unset special characters to their default values
+setting any unset special characters to their default values.
 .RE
 .TP 5
 (2)
-Instead of putting out \fIinitialization\fP strings, the terminal's
-\fIreset\fP strings will be output if present
-(\fBrs1\fP, \fBrs2\fP, \fBrs3\fP, \fBrf\fP).
-If the \fIreset\fP strings are not present, but \fIinitialization\fP
-strings are, the \fIinitialization\fP strings will be output.
+If any reset capabilities are defined for the terminal type,
+\fB\%@TPUT@\fP writes them to the output stream.
+Otherwise,
+\fB\%@TPUT@\fP uses any defined initialization capabilities.
+Reset capabilities are detailed in subsection
+\*(``Tabs and Initialization\*('' of \fB\%terminfo\fP(5).
 .RE
-.IP
-Otherwise, \fBreset\fP acts identically to \fBinit\fP.
 .TP
-\fBlongname\fP
-If the terminal database is present and an entry for the
-user's terminal exists (see \fB\-T\fItype\fR above), then the long name
-of the terminal will be put out.
-The long name is the last
-name in the first line of the terminal's description in the
-\fBterminfo\fP database [see \fBterm\fP(5)].
-.SS Aliases
-\fB@TPUT@\fP handles the \fBclear\fP, \fBinit\fP and \fBreset\fP
-commands specially:
-it allows for the possibility that it is invoked by a link with those names.
-.PP
-If \fB@TPUT@\fP is invoked by a link named \fBreset\fP, this has the
-same effect as \fB@TPUT@ reset\fP.
-The \fB@TSET@\fP(\*n) utility also treats a link named \fBreset\fP specially.
-.PP
-Before ncurses 6.1, the two utilities were different from each other:
-.bP
-\fB@TSET@\fP utility reset the terminal modes and special characters
-(not done with \fB@TPUT@\fP).
-.bP
-On the other hand, \fB@TSET@\fP's repertoire of terminal capabilities for
-resetting the terminal was more limited,
-i.e., only \fBreset_1string\fP, \fBreset_2string\fP and \fBreset_file\fP
-in contrast to the tab-stops and margins which are set by this utility.
-.bP
-The \fBreset\fP program is usually an alias for \fB@TSET@\fP,
-because of this difference with resetting terminal modes and special characters.
-.PP
-With the changes made for ncurses 6.1, the \fIreset\fP feature of the
-two programs is (mostly) the same.
-A few differences remain:
-.bP
-The \fB@TSET@\fP program waits one second when resetting,
-in case it happens to be a hardware terminal.
-.bP
-The two programs write the terminal initialization strings
-to different streams (i.e., the standard error for \fB@TSET@\fP and the
-standard output for \fB@TPUT@\fP).
+.B longname
+A
+.I \%term\%info
+entry begins with one or more names by which an application
+can refer to the entry,
+before the list of terminal capabilities.
+The names are separated by \*(``|\*('' characters.
+X/Open Curses terms the last name the \*(``long name\*('',
+and indicates that it may include blanks.
 .IP
-\fBNote:\fP although these programs write to different streams,
-redirecting their output to a file will capture only part of their actions.
-The changes to the terminal modes are not affected by redirecting the output.
-.PP
-If \fB@TPUT@\fP is invoked by a link named \fBinit\fP, this has the
-same effect as \fB@TPUT@ init\fP.
-Again, you are less likely to use that link because another program
-named \fBinit\fP has a more well-established use.
-.SS Terminal Size
-.PP
-Besides the special commands (e.g., \fBclear\fP),
-@TPUT@ treats certain terminfo capabilities specially:
-\fBlines\fP and \fBcols\fP.
-@TPUT@ calls \fBsetupterm\fP(3X) to obtain the terminal size:
-.bP
-first, it gets the size from the terminal database
-(which generally is not provided for terminal emulators
-which do not have a fixed window size)
-.bP
-then it asks the operating system for the terminal's size
-(which generally works, unless connecting via a serial line which
-does not support \fINAWS\fP: negotiations about window size).
-.bP
-finally, it inspects the environment variables \fBLINES\fP and \fBCOLUMNS\fP
-which may override the terminal size.
+\fB\%@TIC@\fP warns if the last name does not include blanks,
+to accommodate old
+.I \%term\%info
+entries that treated the long name as an optional feature.
+The long name is often referred to as the description field.
+.IP
+If the terminal database is present and an entry for the user's terminal
+type exists,
+\fB\%@TPUT@\fP reports its description to the standard output stream,
+without a trailing newline.
+See \fB\%terminfo\fP(5).
 .PP
-If the \fB\-T\fP option is given
-@TPUT@ ignores the environment variables by calling \fBuse_tioctl(TRUE)\fP,
-relying upon the operating system (or finally, the terminal database).
-.SH EXAMPLES
-.TP 5
-\fB@TPUT@ init\fP
-Initialize the terminal according to the type of
-terminal in the environmental variable \fBTERM\fP.  This
-command should be included in everyone's .profile after
-the environmental variable \fBTERM\fP has been exported, as
-illustrated on the \fBprofile\fP(5) manual page.
-.TP 5
-\fB@TPUT@ \-T5620 reset\fP
-Reset an AT&T 5620 terminal, overriding the type of
-terminal in the environmental variable \fBTERM\fP.
-.TP 5
-\fB@TPUT@ cup 0 0\fP
-Send the sequence to move the cursor to row \fB0\fP, column \fB0\fP
-(the upper left corner of the screen, usually known as the \*(``home\*(''
-cursor position).
-.TP 5
-\fB@TPUT@ clear\fP
-Echo the clear-screen sequence for the current terminal.
-.TP 5
-\fB@TPUT@ cols\fP
-Print the number of columns for the current terminal.
-.TP 5
-\fB@TPUT@ \-T450 cols\fP
-Print the number of columns for the 450 terminal.
-.TP 5
-\fBbold=`@TPUT@ smso` offbold=`@TPUT@ rmso`\fP
-Set the shell variables \fBbold\fP, to begin stand-out mode
-sequence, and \fBoffbold\fP, to end standout mode sequence,
-for the current terminal.
-This might be followed by a
-prompt: \fBecho "${bold}Please type in your name: ${offbold}\\c"\fP
-.TP 5
-\fB@TPUT@ hc\fP
-Set exit code to indicate if the current terminal is a hard copy terminal.
-.TP 5
-\fB@TPUT@ cup 23 4\fP
-Send the sequence to move the cursor to row 23, column 4.
-.TP 5
-\fB@TPUT@ cup\fP
-Send the terminfo string for cursor-movement, with no parameters substituted.
-.TP 5
-\fB@TPUT@ longname\fP
-Print the long name from the \fBterminfo\fP database for the
-type of terminal specified in the environmental
-variable \fBTERM\fP.
+.I Note:
+Redirecting the output of
+.RB \%\*(`` "@TPUT@ init" \*(''
+or
+.RB \%\*(`` "@TPUT@ reset" \*(''
+to a file will capture only part of their actions.
+Changes to the terminal modes are not affected by file descriptor
+redirection,
+since the terminal modes are altered via \fB\%ioctl\fP(2).
+.SS Aliases
+If \fB\%@TPUT@\fP is invoked via link with any of the names
+.BR clear ,
+.BR init ,
+or
+.BR \%reset ,
+it operates as if run with the corresponding (pseudo-)capability
+operand.
+For example,
+executing a link named
+.B \%reset
+that points to \fB\%@TPUT@\fP has the same effect as
+.RB \%\*(`` "@TPUT@ \%reset" \*(''.
 .PP
-.RS 5
-\fB@TPUT@ \-S <<!\fP
-.br
-\fB> clear\fP
-.br
-\fB> cup 10 10\fP
-.br
-\fB> bold\fP
-.br
-\fB> !\fP
-.RE
-.TP 5
-\&
-This example shows \fB@TPUT@\fP processing several capabilities
-in one invocation.
-It clears the screen,
-moves the cursor to position 10, 10
-and turns on bold (extra bright) mode.
-The list is terminated by an exclamation mark (\fB!\fP) on a line by itself.
-.SH FILES
+This feature was introduced by
+.I \%ncurses
+5.2 in 2000.
+It is rarely used:
 .TP
-\fB\*d\fP
-compiled terminal description database
+.B \%clear
+is a separate program,
+which is both smaller and more frequently executed.
 .TP
-\fB@DATADIR@/tabset/*\fP
-tab settings for some terminals, in a format
-appropriate to be output to the terminal (escape
-sequences that set margins and tabs); for more
-information, see the
-.IR "Tabs and Initialization" ,
-section of \fBterminfo\fP(5)
-.SH EXIT CODES
-If the \fB\-S\fP option is used,
-\fB@TPUT@\fP checks for errors from each line,
-and if any errors are found, will set the exit code to 4 plus the
-number of lines with errors.
-If no errors are found, the exit code is \fB0\fP.
-No indication of which line failed can be given so
-exit code \fB1\fP will never appear.
-Exit codes \fB2\fP, \fB3\fP, and
-\fB4\fP retain their usual interpretation.
-If the \fB\-S\fP option is not used,
-the exit code depends on the type of \fIcapname\fP:
-.RS 3
+.B init
+has the same name as another program in widespread use.
 .TP
-.I boolean
-a value of \fB0\fP is set for TRUE and \fB1\fP for FALSE.
+.B \%reset
+is provided
+by the \fB\%@TSET@\fP(1) utility (also via a link named
+.BR \%reset ")."
+.SS "Terminal Size"
+Besides the pseudo-capabilities
+(such as
+.BR init ),
+\fB\%@TPUT@\fP treats the
+.B lines
+and
+.B cols
+.I cap-codes
+specially:
+it may call \fB\%setupterm\fP(3X) to obtain the terminal size.
+.bP
+First,
+\fB\%@TPUT@\fP attempts to obtain these capabilities from the terminal
+database.
+This generally fails for terminal emulators,
+which lack a fixed window size and thus omit the capabilities.
+.bP
+It then asks the operating system for the terminal's size,
+which generally works,
+unless the connection is via a serial line that
+does not support \*(``NAWS\*('': negotiations about window size.
+.bP
+Finally,
+it inspects the environment variables
+.I LINES
+and
+.IR \%COLUMNS ,
+which may override the terminal size.
+.PP
+If the
+.B \-T
+option is given,
+\fB\%@TPUT@\fP ignores the environment variables by calling
+.BR \%use_tioctl(TRUE) ,
+relying upon the operating system
+(or,
+ultimately,
+the terminal database).
+.SH OPTIONS
+.TP 9n \" "-T type" + 2n
+.B \-S
+retrieves more than one capability per invocation of \fB\%@TPUT@\fP.
+The capabilities must be passed to \fB\%@TPUT@\fP from the standard
+input stream instead of from the command line
+(see section \*(``EXAMPLES\*('' below).
+Only one
+.I cap-code
+is allowed per line.
+The
+.B \-S
+option changes the meanings of the
+.B 0
+and
+.B 1
+exit statuses
+(see section \*(``EXIT STATUS\*('' below).
+.IP
+Some capabilities use string parameters rather than numeric ones.
+\fB\%@TPUT@\fP employs a built-in table and the presence of parameters
+in its input to decide how to interpret them,
+and whether to use \fB\%tparm\fP(3X).
 .TP
-.I string
-a value of \fB0\fP is set if the
-\fIcapname\fP is defined for this terminal \fItype\fP (the value of
-\fIcapname\fP is returned on standard output);
-a value of \fB1\fP is set if \fIcapname\fP
-is not defined for this terminal \fItype\fP
-(nothing is written to standard output).
+.BI \-T\  type
+indicates the terminal's
+.IR type .
+Normally this option is unnecessary,
+because a default is taken from the
+.I TERM
+environment variable.
+If specified,
+the environment variables
+.I LINES
+and
+.I \%COLUMNS
+are also ignored.
 .TP
-.I integer
-a value of \fB0\fP is always set,
-whether or not \fIcapname\fP is defined for this terminal \fItype\fP.
-To determine if \fIcapname\fP is defined for this terminal \fItype\fP,
-the user must test the value written to standard output.
-A value of \fB\-1\fP
-means that \fIcapname\fP is not defined for this terminal \fItype\fP.
+.B \-V
+reports the version of
+.I \%ncurses
+associated with \fB\%@TPUT@\fP,
+and exits with a successful status.
 .TP
-.I other
-\fBreset\fP or \fBinit\fP may fail to find their respective files.
-In that case, the exit code is set to 4 + \fBerrno\fP.
-.RE
-.PP
-Any other exit code indicates an error; see the DIAGNOSTICS section.
-.SH DIAGNOSTICS
-\fB@TPUT@\fP prints the following error messages and sets the corresponding exit
-codes.
+.B \-x
+prevents
+.RB \%\*(`` "@TPUT@ clear" \*(''
+from attempting to clear the scrollback buffer.
+.SH EXIT STATUS
+Normally,
+one should interpret \fB\%@TPUT@\fP's exit statuses as follows.
 .PP
-.ne 15
+.if n .ne 3
+.if t .ne 2
 .TS
-l l.
-exit code      error message
-=
-\fB0\fP        T{
-(\fIcapname\fP is a numeric variable that is not specified in the
-\fBterminfo\fP(5) database for this terminal type, e.g.
-\fB@TPUT@ \-T450 lines\fP and \fB@TPUT@ \-Thp2621 xmc\fP)
-T}
-\fB1\fP        no error message is printed, see the \fBEXIT CODES\fP section.
-\fB2\fP        usage error
-\fB3\fP        unknown terminal \fItype\fP or no \fBterminfo\fP database
-\fB4\fP        unknown \fBterminfo\fP capability \fIcapname\fP
-\fB>4\fP       error occurred in \-S
-=
+Lb Lb
+Lb Lx.
+Status Meaning When \-S Not Specified
+_
+0      Boolean or string capability present
+1      Boolean or numeric capability absent
+2      usage error or no terminal type specified
+3      unrecognized terminal type
+4      unrecognized capability code
+>4     system error (4 + \fBerrno\fP)
 .TE
-.SH HISTORY
-The \fBtput\fP command was begun by Bill Joy in 1980.
-The initial version only cleared the screen.
 .PP
-AT&T System V provided a different \fBtput\fP command:
-.bP
-SVr2 provided a rudimentary \fBtput\fP
-which checked the parameter against each
-predefined capability and returned the corresponding value.
-This version of \fBtput\fP did not use \fBtparm\fP(3X) for
-the capabilities which are parameterized.
-.bP
-SVr3 replaced that, a year later, by a more extensive program
-whose \fBinit\fP and \fBreset\fP subcommands
-(more than half the program) were incorporated from
-the \fBreset\fP feature of BSD \fBtset\fP written by Eric Allman.
-.bP
-SVr4 added color initialization using the \fBorig_colors\fP and
-\fBorig_pair\fP capabilities in the \fBinit\fP subcommand.
-.PP
-Keith Bostic replaced the BSD \fBtput\fP command in 1989
-with a new implementation
-based on the AT&T System V program \fBtput\fP.
-Like the AT&T program, Bostic's version
-accepted some parameters named for \fIterminfo\fP capabilities
-(\fBclear\fP, \fBinit\fP, \fBlongname\fP and \fBreset\fP).
-However (because he had only \fItermcap\fP available),
-it accepted \fItermcap\fP names for other capabilities.
-Also, Bostic's BSD \fBtput\fP did not modify the terminal I/O modes
-as the earlier BSD \fBtset\fP had done.
+When the
+.B \-S
+option is used,
+some statuses change meanings.
 .PP
-At the same time, Bostic added a shell script named \*(``clear\*('',
-which used \fBtput\fP to clear the screen.
-.PP
-Both of these appeared in 4.4BSD,
-becoming the \*(``modern\*('' BSD implementation of \fBtput\fP.
-.PP
-This implementation of \fBtput\fP began from a different source than
-AT&T or BSD: Ross Ridge's \fImytinfo\fP package, published on
-\fIcomp.sources.unix\fP in December 1992.
-Ridge's program made more sophisticated use of the terminal capabilities
-than the BSD program.
-Eric Raymond used that \fBtput\fP program
-(and other parts of \fImytinfo\fP) in ncurses in June 1995.
-Using the portions dealing with terminal capabilities
-almost without change,
-Raymond made improvements to the way the command-line parameters
-were handled.
+.if n .ne 4
+.if t .ne 3
+.TS
+Lb Lb
+Lb Lx.
+Status Meaning When \-S Specified
+_
+0      all operands interpreted
+1      unused
+4      some operands not interpreted
+.TE
+.SH ENVIRONMENT
+\fB@TPUT@\fP reads one environment variable.
+.TP 8n \" "TERM" + 2n + adjustment for PDF
+.I TERM
+denotes the terminal type.
+Each terminal type is distinct,
+though many are similar.
+The
+.B \-T
+option overrides its value.
+.SH FILES
+.TP
+.I @DATADIR@/tabset
+tab stop initialization database
+.TP
+.I \*d
+compiled terminal description database
 .SH PORTABILITY
-.PP
-This implementation of \fBtput\fP differs from AT&T \fBtput\fP in
-two important areas:
-.bP
-\fB@TPUT@\fP \fIcapname\fP writes to the standard output.
-That need not be a regular terminal.
-However, the subcommands which manipulate terminal modes
-may not use the standard output.
+Over time
+.I \%ncurses
+\fB\%@TPUT@\fP
+has differed from that of System\ V in two important respects,
+one now mostly historical.
+.bP
+\%\*(``\fB@TPUT@\fP
+.IR cap-code \*(''
+writes to the standard output,
+which need not be a terminal device.
+However,
+the operands that manipulate terminal modes might not use the standard
+output.
 .IP
-The AT&T implementation's \fBinit\fP and \fBreset\fP commands
-use the BSD (4.1c) \fBtset\fP source, which manipulates terminal modes.
-It successively tries standard output, standard error, standard input
-before falling back to \*(``/dev/tty\*('' and finally just assumes
-a 1200Bd terminal.
-When updating terminal modes, it ignores errors.
+System\ V
+.BR tput 's
+.B init
+and
+.B \%reset
+operands use logic from 4.1cBSD
+.BR tset ,
+manipulating terminal modes.
+It checks the same file descriptors
+(and
+.IR \%/dev/tty )
+for association with a terminal device as
+.I \%ncurses
+now does,
+and if none are,
+finally assumes a 1200 baud terminal.
+When updating terminal modes,
+it ignores errors.
 .IP
-Until changes made after ncurses 6.0,
-\fB@TPUT@\fP did not modify terminal modes.
-\fB@TPUT@\fP now uses a similar scheme,
-using functions shared with \fB@TSET@\fP
-(and ultimately based on the 4.4BSD \fBtset\fP).
-If it is not able to open a terminal, e.g., when running in \fBcron\fP(1),
-\fB@TPUT@\fP will return an error.
-.bP
-AT&T \fBtput\fP guesses the type of its \fIcapname\fP operands by seeing if
-all of the characters are numeric, or not.
+Until
+.I \%ncurses
+6.1
+(see section \*(``HISTORY\*('' below),
+\fB\%@TPUT@\fP did not modify terminal modes.
+It now employs a scheme similar to System\ V,
+using functions shared with \fB\%@TSET@\fP
+(and ultimately based on 4.4BSD
+.BR tset ).
+If it is not able to open a terminal
+(for instance,
+when run by \fIcron\fP(1)),
+\fB\%@TPUT@\fP exits with an error status.
+.bP
+System\ V
+.B tput
+assumes that the type of a
+.I cap-code
+operand is numeric if all the characters of its value are decimal
+numbers;
+if they are not,
+it treats
+.I cap-code
+as a string capability.
 .IP
-Most implementations which provide support for \fIcapname\fP operands
-use the \fBtparm\fP function to expand parameters in it.
+Most implementations that provide support for
+.I cap-code
+operands use the \fB\%tparm\fP(3X) function to expand its parameters.
 That function expects a mixture of numeric and string parameters,
-requiring \fB@TPUT@\fP to know which type to use.
+requiring \fB\%@TPUT@\fP to know which type to use.
 .IP
-This implementation uses a table to determine the parameter types for
-the standard \fIcapname\fP operands, and an internal library
-function to analyze nonstandard \fIcapname\fP operands.
+.I \%ncurses
+\fB\%@TPUT@\fP
+uses a table to determine the parameter types for
+the standard
+.I cap-code
+operands,
+and an internal function to analyze nonstandard
+.I cap-code
+operands.
 .IP
-Besides providing more reliable operation than AT&T's utility,
-a portability problem is introduced by this analysis:
-An OpenBSD developer adapted the internal library function from ncurses
-to port NetBSD's termcap-based \fBtput\fP to terminfo.
-That had been modified to interpret multiple commands on a line.
+While more reliable than System\ V's utility,
+a portability problem is introduced by this analysis.
+An OpenBSD developer adapted the internal library function from
+.I \%ncurses
+to port NetBSD's
+.IR termcap -based
+.B tput
+to
+.IR \%term\%info ,
+and modified it to interpret multiple
+.I cap-codes
+(and parameters)
+on the command line.
 Portable applications should not rely upon this feature;
-ncurses provides it to support applications written
-specifically for OpenBSD.
+.I \%ncurses
+offers it to support applications written specifically for OpenBSD.
 .PP
-This implementation (unlike others) can accept both \fItermcap\fP
-and \fIterminfo\fP names for the \fIcapname\fP feature,
+This implementation,
+unlike others,
+accepts both
+.I termcap
+and
+.I \%term\%info
+.I cap-codes
 if
-\fItermcap\fP support is compiled in.
-However, the predefined \fItermcap\fP and \fIterminfo\fP names have two
-ambiguities in this case (and the \fIterminfo\fP name is assumed):
-.bP
-The \fItermcap\fP name \fBdl\fP corresponds to
-the \fIterminfo\fP name \fBdl1\fP (delete one line).
-.br
-The \fIterminfo\fP name \fBdl\fP corresponds to
-the \fItermcap\fP name \fBDL\fP (delete a given number of lines).
-.bP
-The \fItermcap\fP name \fBed\fP corresponds to
-the \fIterminfo\fP name \fBrmdc\fP (end delete mode).
-.br
-The \fIterminfo\fP name \fBed\fP corresponds to
-the \fItermcap\fP name \fBcd\fP (clear to end of screen).
+.I termcap
+support is compiled in.
+In that case,
+however,
+the predefined
+.I termcap
+and
+.I \%term\%info
+codes have two
+ambiguities;
+.I \%ncurses
+assumes the
+.I \%term\%info
+code.
+.bP
+The
+.I cap-code
+.B dl
+means
+.B \%delete_line
+to
+.I termcap
+but
+.B \%parm_delete_line
+to
+.IR \%term\%info .
+.I termcap
+uses the code
+.B DL
+for
+.BR \%parm_delete_line .
+.I \%term\%info
+uses the code
+.B dl1
+for
+.BR \%delete_line .
+.bP
+The
+.I cap-code
+.B ed
+means
+.B \%exit_delete_mode
+to
+.I termcap
+but
+.B \%clr_eos
+to
+.IR \%term\%info .
+.I termcap
+uses the code
+.B cd
+for
+.BR \%clr_eos .
+.I \%term\%info
+uses the code
+.B rmdc
+for
+.BR \%exit_delete_mode .
 .PP
-The \fBlongname\fP and \fB\-S\fP options, and the parameter-substitution
-features used in the \fBcup\fP example,
-were not supported in BSD curses before 4.3reno (1989) or in
-AT&T/USL curses before SVr4 (1988).
+The
+.B \%longname
+operand,
+.B \-S
+option,
+and the parameter-substitution features used in the
+.B cup
+example below,
+were not supported in
+AT&T/USL
+.I curses
+before SVr4 (1989).
+Later,
+4.3BSD-Reno (1990) added support for
+.BR \%longname ,
+.\" longname was added in October 1989.
+and in 1994,
+NetBSD added support for the parameter-substitution features.
 .PP
-IEEE Std 1003.1/The Open Group  Base Specifications Issue 7 (POSIX.1-2008)
-documents only the operands for \fBclear\fP, \fBinit\fP and \fBreset\fP.
-There are a few interesting observations to make regarding that:
-.bP
-In this implementation, \fBclear\fP is part of the \fIcapname\fP support.
-The others (\fBinit\fP and \fBlongname\fP) do not correspond to terminal
-capabilities.
-.bP
-Other implementations of \fBtput\fP on
-SVr4-based systems such as Solaris, IRIX64 and HPUX
-as well as others such as AIX and Tru64
-provide support for \fIcapname\fP operands.
-.bP
-A few platforms such as FreeBSD recognize termcap names rather
-than terminfo capability names in their respective \fBtput\fP commands.
-Since 2010, NetBSD's \fBtput\fP uses terminfo names.
-Before that, it (like FreeBSD) recognized termcap names.
+IEEE Std 1003.1/The Open Group Base Specifications Issue 7
+(POSIX.1-2008)
+documents only the
+.BR clear ,
+.BR init ,
+and
+.B \%reset
+operands.
+A few observations of interest arise from that selection.
+.bP
+.I \%ncurses
+supports
+.B clear
+as it does any other standard
+.IR cap-code .
+The others
+.RB ( init
+and
+.BR \%longname )
+do not correspond to terminal capabilities.
+.bP
+The
+.B tput
+on SVr4-based systems such as Solaris,
+IRIX64,
+and HP-UX,
+as well as others such as AIX and Tru64,
+also support standard
+.I cap-code
+operands.
+.bP
+A few platforms such as FreeBSD recognize
+.I termcap
+codes rather than
+.I \%term\%info
+capability codes in their respective
+.B tput
+commands.
+Since 2010,
+NetBSD's
+.B tput
+uses
+.I \%term\%info
+codes.
+Before that,
+it
+(like FreeBSD)
+recognized
+.I termcap
+codes.
 .IP
-Beginning in 2021, FreeBSD uses the ncurses \fBtput\fP,
-configured for both terminfo (tested first) and termcap (as a fallback).
+Beginning in 2021,
+FreeBSD uses
+.I \%ncurses
+.BR tput ,
+configured for both
+.I \%term\%info
+(tested first)
+and
+.I termcap
+(as a fallback).
 .PP
-Because (apparently) \fIall\fP of the certified Unix systems
-support the full set of capability names, the reasoning for documenting
-only a few may not be apparent.
-.bP
-X/Open Curses Issue 7 documents \fBtput\fP differently, with \fIcapname\fP
+Because (apparently) all
+.I certified
+Unix systems support the full set of capability codes,
+the reason for documenting only a few may not be apparent.
+.bP
+X/Open Curses Issue 7 documents
+.B tput
+differently,
+with
+.I cap-code
 and the other features used in this implementation.
 .bP
-That is, there are two standards for \fBtput\fP:
+That is,
+there are two standards for
+.BR tput :
 POSIX (a subset) and X/Open Curses (the full implementation).
-POSIX documents a subset to avoid the complication of including X/Open Curses
-and the terminal capabilities database.
-.bP
-While it is certainly possible to write a \fBtput\fP program
-without using curses,
-none of the systems which have a curses implementation provide
-a \fBtput\fP utility which does not provide the \fIcapname\fP feature.
+POSIX documents a subset to avoid the complication of including
+X/Open Curses and the terminal capability database.
+.bP
+While it is certainly possible to write a
+.B tput
+program without using
+.IR curses ,
+no system with a
+.I curses
+implementation provides a
+.B tput
+utility that does not also support standard
+.IR cap-codes .
 .PP
 X/Open Curses Issue 7 (2009) is the first version to document utilities.
 However that part of X/Open Curses does not follow existing practice
-(i.e., Unix features documented in SVID 3):
-.bP
-It assigns exit code 4 to \*(``invalid operand\*('',
-which may be the same as \fIunknown capability\fP.
-For instance, the source code for Solaris' xcurses uses the term
-\*(``invalid\*('' in this case.
-.bP
-It assigns exit code 255 to a numeric variable that is not specified in
-the terminfo database.
+(that is,
+System\ V
+.I curses
+behavior).
+.bP
+It assigns exit status 4 to \*(``invalid operand\*('',
+which may have the same meaning as \*(``unknown capability\*(''.
+For instance,
+the source code for
+Solaris
+.I xcurses
+uses the term \*(``invalid\*('' in this case.
+.bP
+It assigns exit status 255 to a numeric variable that is not specified
+in the
+.I \%term\%info
+database.
 That likely is a documentation error,
-confusing the \fB\-1\fP written to the standard output for an absent
-or cancelled numeric value versus an (unsigned) exit code.
+mistaking the \*(``\-1\*('' written to the standard output to indicate
+an absent or cancelled numeric capability for an (unsigned) exit status.
 .PP
-The various Unix systems (AIX, HPUX, Solaris) use the same exit-codes
-as ncurses.
+The various System\ V implementations
+(AIX,
+HP-UX,
+Solaris)
+use the same exit statuses as
+.IR \%ncurses .
 .PP
-NetBSD curses documents different exit codes which do not correspond
-to either ncurses or X/Open.
-.SH SEE ALSO
-\fB@CLEAR@\fP(\*n),
-\fBstty\fP(1),
-\fB@TABS@\fP(\*n),
-\fB@TSET@\fP(\*n),
-\fBcurs_termcap\fP(3X),
-\fBterminfo\fP(5).
+NetBSD
+.I curses
+documents exit statuses that correspond to neither
+.I \%ncurses
+nor X/Open Curses.
+.SH HISTORY
+Bill Joy wrote a
+.B tput
+command during development of 4BSD in October 1980.
+This initial version only cleared the screen,
+and did not ship with official distributions.
+.\" It also exited with backwards exit status (1 on success, 0 on
+.\" failure), and was characterized by Bostic in 1988 as "pretty
+.\" unreasonable".
+.\" See Spinellis's "unix-history-repo" on GitHub.
+.PP
+System\ V developed a different
+.B tput
+command.
+.bP
+SVr2 (1984) provided a rudimentary
+.B tput
+that checked the parameter against each
+predefined capability and returned the corresponding value.
+This version of
+.B tput
+did not use \fB\%tparm\fP(3X) for parameterized capabilities.
+.bP
+SVr3 (1987) replaced that
+.\" SVr3 released in 1987, not 1985.
+.\" https://unix.org/what_is_unix/history_timeline.html
+with a more extensive program
+whose support for
+.B init
+and
+.B \%reset
+operands
+(more than half the program)
+incorporated the
+.B \%reset
+feature of BSD
+.B tset
+written by Eric Allman.
+.bP
+SVr4 (1989) added color initialization by using the
+.B \%orig_colors
+.RB ( oc )
+and
+.B \%orig_pair
+.RB ( op )
+capabilities in its
+.B init
+logic.
 .PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+Keith Bostic refactored BSD
+.B tput
+for shipment in 4.3BSD-Tahoe (1988),
+then replaced it the next year with a new implementation based on
+System\ V
+.BR tput .
+Bostic's version similarly accepted some parameters named for
+.I \%term\%info
+(pseudo-)capabilities:
+.BR clear ,
+.BR init ,
+.BR \%longname ,
+and
+.BR \%reset .
+However,
+because he had only
+.I termcap
+available,
+it accepted
+.I termcap
+codes for other capabilities.
+Also,
+Bostic's BSD
+.B tput
+did not modify the terminal modes as the earlier BSD
+.B tset
+had done.
+.PP
+At the same time,
+Bostic added a shell script named \*(``clear\*('' that used
+.B tput
+to clear the screen.
+Both of these appeared in 4.4BSD,
+becoming the \*(``modern\*('' BSD implementation of
+.BR tput .
+.PP
+The origin of
+.I \%ncurses
+\fB\%@TPUT@\fP lies outside both System\ V and BSD,
+in Ross Ridge's
+.I \%mytinfo
+package,
+published on
+.I comp.sources.unix
+in December 1992.
+Ridge's program made more sophisticated use of the terminal capabilities
+than the BSD program.
+Eric Raymond used that
+.B tput
+program
+(and other parts of
+.IR \%mytinfo )
+in
+.I \%ncurses
+in June 1995.
+Incorporating the portions dealing with terminal capabilities
+almost without change,
+Raymond made improvements to the way command-line parameters
+were handled.
+.PP
+Before
+.I \%ncurses
+6.1 (2018),
+its \fB\%@TSET@\fP and \fB\%@TPUT@\fP utilities differed.
+.bP
+\fB\%@TSET@\fP was more effective,
+resetting the terminal modes and special characters.
+.bP
+On the other hand,
+\fB\%@TSET@\fP's repertoire of terminal capabilities for resetting the
+terminal was more limited;
+it had only equivalents of
+.B \%reset_1string
+.RB ( rs1 ),
+.B \%reset_2string
+.RB ( rs2 ),
+and
+.B \%reset_file
+.RB ( rf ),
+and not the tab stop and margin update features of \fB\%@TPUT@\fP.
+.PP
+The
+.B \%reset
+program is traditionally an alias for \fB\%@TSET@\fP due to its ability
+to reset terminal modes and special characters.
+.PP
+As of
+.I \%ncurses
+6.1,
+the \*(``reset\*('' features of the two programs are (mostly) the same.
+Two minor differences remain.
+.bP
+The \fB\%@TSET@\fP program waits one second when resetting,
+in case the terminal happens to be a hardware device.
+.bP
+The two programs write the terminal initialization strings
+to different streams;
+that is,
+standard error for \fB\%@TSET@\fP and
+standard output for \fB\%@TPUT@\fP.
+.SH EXAMPLES
+.TP
+.B "@TPUT@ init"
+Initialize the terminal according to the type of
+terminal in the
+.I TERM
+environment variable.
+If the system does not reliably initialize the terminal upon login,
+this command can be included in
+.I \%$HOME/.profile
+after exporting the
+.I TERM
+environment variable.
+.TP
+.B "@TPUT@ \-T5620 reset"
+Reset an AT&T 5620 terminal,
+overriding the terminal type in the
+.I TERM
+environment variable.
+.TP
+.B "@TPUT@ cnorm"
+Set cursor to normal visibility.
+.TP
+.B "@TPUT@ home"
+Move the cursor to row 0,
+column 0:
+the upper left corner of the screen,
+usually known as the \*(``home\*('' cursor position.
+.TP
+.B "@TPUT@ clear"
+Clear the screen:
+write the
+.B \%clear_screen
+capability's value to the standard output stream.
+.TP
+.B "@TPUT@ cols"
+Report the number of columns used by the current terminal type.
+.TP
+.B "@TPUT@ \-Tadm3a cols"
+Report the number of columns used by an ADM-3A terminal.
+.TP
+.B "strong=\(ga@TPUT@ smso\(ga normal=\(ga@TPUT@ rmso\(ga"
+Set shell variables to capability values:
+.B strong
+and
+.BR normal ,
+to begin and end,
+respectively,
+stand-out mode for the terminal.
+One might use these to present a prompt.
+.IP
+.EX
+.RS 14
+printf "${strong}Username:${normal} "
+.RE
+.EE
+.TP
+.B "@TPUT@ hc"
+Indicate via exit status whether the terminal is a hard copy device.
+.TP
+.B "@TPUT@ cup 23 4"
+Move the cursor to row 23,
+column 4.
+.TP
+.B "@TPUT@ cup"
+Report the value of the
+.B \%cursor_address
+.RB ( cup )
+capability
+(used for cursor movement),
+with no parameters substituted.
+.TP
+.B "@TPUT@ longname"
+Report the
+.I \%term\%info
+database's description of the terminal type specified in the
+.I TERM
+environment variable.
+.TP
+.B "@TPUT@ \-S"
+Process multiple capabilities.
+The
+.B \-S
+option can be profitably used with a shell \*(``here document\*(''.
+.IP
+.EX
+.RB $\  "@TPUT@ \-S <<!"
+.RB >\  clear
+.RB >\  "cup 10 10"
+.RB >\  bold
+.RB >\  !
+.EE
+.IP
+The foregoing
+clears the screen,
+moves the cursor to position
+(10, 10)
+and turns on bold
+(extra bright)
+mode.
+.TP
+.B "@TPUT@ clear cup 10 10 bold"
+Perform the same actions as the foregoing
+.RB \%\*(`` "@TPUT@ \-S" \*(''
+example.
+.SH SEE ALSO
+\fB\%@CLEAR@\fP(1),
+\fB\%stty\fP(1),
+\fB\%@TABS@\fP(1),
+\fB\%@TSET@\fP(1),
+\fB\%curs_termcap\fP(3X),
+\fB\%terminfo\fP(5)
index 860c087591f2a49b5be220406f947175443ebf88..185227dcdb039007f5e58ac1c6ff94920056d872 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: tset.1,v 1.62 2022/02/12 20:02:20 tom Exp $
-.TH @TSET@ 1 ""
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
+.\" $Id: tset.1,v 1.85 2024/04/27 17:57:47 tom Exp $
+.TH @TSET@ 1 2024-04-27 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.ds ^  \(ha
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.ds       ^  ^
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
+.
+.ds d @TERMINFO@
 .SH NAME
-\fB@TSET@\fP, \fB@RESET@\fP \- terminal initialization
+\fB\%@TSET@\fP,
+\fB\%@RESET@\fP \-
+initialize or reset terminal state
 .SH SYNOPSIS
-\fB@TSET@\fP [\fB\-IQVcqrsw\fP] [\fB\-\fP] [\fB\-e\fP \fIch\fP] [\fB\-i\fP \fIch\fP] [\fB\-k\fP \fIch\fP] [\fB\-m\fP \fImapping\fP] [\fIterminal\fP]
+\fB@TSET@\fP [\fB\-IQVcqrsw\fP] [\fB\-\fP] [\fB\-e\fP \fIch\fP] [\fB\-i\fP \fIch\fP] [\fB\-k\fP \fIch\fP] [\fB\-m\fP \fImapping\fP] [\fIterminal-type\fP]
 .br
-\fB@RESET@\fP [\fB\-IQVcqrsw\fP] [\fB\-\fP] [\fB\-e\fP \fIch\fP] [\fB\-i\fP \fIch\fP] [\fB\-k\fP \fIch\fP] [\fB\-m\fP \fImapping\fP] [\fIterminal\fP]
+\fB@RESET@\fP [\fB\-IQVcqrsw\fP] [\fB\-\fP] [\fB\-e\fP \fIch\fP] [\fB\-i\fP \fIch\fP] [\fB\-k\fP \fIch\fP] [\fB\-m\fP \fImapping\fP] [\fIterminal-type\fP]
 .SH DESCRIPTION
-.SS tset - initialization
+.SS "\fItset\fP \(em initialization"
 This program initializes terminals.
 .PP
 First, \fB@TSET@\fP retrieves the current terminal mode settings
@@ -68,20 +81,20 @@ This determination is done as follows, using the first terminal type found.
 .PP
 1. The \fBterminal\fP argument specified on the command line.
 .PP
-2. The value of the \fBTERM\fP environmental variable.
+2. The value of the \fITERM\fP environment variable.
 .PP
 3. (BSD systems only.) The terminal type associated with the standard
 error output device in the \fI/etc/ttys\fP file.
-(On System\-V-like UNIXes and systems using that convention,
-\fBgetty\fP(1) does this job by setting
-\fBTERM\fP according to the type passed to it by \fI/etc/inittab\fP.)
+(On System\ V hosts and systems using that convention,
+\fI\%getty\fP(8) does this job by setting
+\fITERM\fP according to the type passed to it by \fI\%/etc/inittab\fP.)
 .PP
-4. The default terminal type, \*(``unknown\*(''.
+4. The default terminal type, \*(``unknown\*('',
+is not suitable for curses applications.
 .PP
 If the terminal type was not specified on the command-line, the \fB\-m\fP
-option mappings are then applied (see the section
-.B TERMINAL TYPE MAPPING
-for more information).
+option mappings are then applied;
+see subsection \*(``Terminal Type Mapping\*(''.
 Then, if the terminal type begins with a question mark (\*(``?\*(''), the
 user is prompted for confirmation of the terminal type.
 An empty
@@ -98,8 +111,10 @@ if the \*(``\fB\-w\fP\*('' option is enabled, \fB@TSET@\fP may update
 the terminal's window size.
 .IP
 If the window size cannot be obtained from the operating system,
-but the terminal description (or environment, e.g., \fBLINES\fP
-and \fBCOLUMNS\fP variables specify this),
+but the terminal description
+(or environment,
+e.g.,
+\fILINES\fP and \fI\%COLUMNS\fP variables specify this),
 use this to set the operating system's notion of the window size.
 .bP
 if the \*(``\fB\-c\fP\*('' option is enabled,
@@ -114,8 +129,7 @@ and \fB@TSET@\fP waits one second (in case a hardware reset was issued).
 Finally, if the erase, interrupt and line kill characters have changed,
 or are not set to their default values, their values are displayed to the
 standard error output.
-.SS reset - reinitialization
-.PP
+.SS "\fIreset\fP \(em reinitialization"
 When invoked as \fB@RESET@\fP, \fB@TSET@\fP sets the terminal
 modes to \*(``sane\*('' values:
 .bP
@@ -143,87 +157,29 @@ you may have to type
 to work, as carriage-return may no longer work in the abnormal state.
 .bP
 Also, the terminal will often not echo the command.
-.SH OPTIONS
-.PP
-The options are as follows:
-.TP 5
-.B \-c
-Set control characters and modes.
-.TP 5
-.BI \-e\  ch
-Set the erase character to \fIch\fP.
-.TP
-.B \-I
-Do not send the terminal or tab initialization strings to the terminal.
-.TP
-.BI \-i\  ch
-Set the interrupt character to \fIch\fP.
-.TP
-.BI \-k\  ch
-Set the line kill character to \fIch\fP.
-.TP
-.BI \-m\  mapping
-Specify a mapping from a port type to a terminal.
-See the section
-.B TERMINAL TYPE MAPPING
-for more information.
-.TP
-.B \-Q
-Do not display any values for the erase, interrupt and line kill characters.
-Normally \fB@TSET@\fP displays the values for control characters which
-differ from the system's default values.
-.TP
-.B \-q
-The terminal type is displayed to the standard output, and the terminal is
-not initialized in any way.
-The option \*(``\-\*('' by itself is equivalent but archaic.
-.TP
-.B \-r
-Print the terminal type to the standard error output.
-.TP
-.B \-s
-Print the sequence of shell commands to initialize the environment variable
-\fBTERM\fP to the standard output.
-See the section
-.B SETTING THE ENVIRONMENT
-for details.
-.TP
-.B \-V
-reports the version of ncurses which was used in this program, and exits.
-.TP
-.B \-w
-Resize the window to match the size deduced via \fBsetupterm\fP(3X).
-Normally this has no effect,
-unless \fBsetupterm\fP is not able to detect the window size.
-.PP
-The arguments for the \fB\-e\fP, \fB\-i\fP, and \fB\-k\fP
-options may either be entered as actual characters
-or by using the \*(``hat\*(''
-notation, i.e., control-h may be specified as \*(``^H\*('' or \*(``^h\*(''.
-.PP
-If neither \fB\-c\fP or \fB\-w\fP is given, both options are assumed.
-.
-.SH SETTING THE ENVIRONMENT
+.SS "Setting the Environment"
 It is often desirable to enter the terminal type and information about
 the terminal's capabilities into the shell's environment.
 This is done using the \fB\-s\fP option.
 .PP
 When the \fB\-s\fP option is specified, the commands to enter the information
 into the shell's environment are written to the standard output.
-If
-the \fBSHELL\fP environmental variable ends in \*(``csh\*('', the commands
-are for \fBcsh\fP, otherwise, they are for \fBsh\fP(1).
-Note, the \fBcsh\fP commands set and unset the shell variable
-\fBnoglob\fP, leaving it unset.
+If the \fISHELL\fP environment variable ends in \*(``csh\*('',
+the commands
+are for \fIcsh\fP(1),
+otherwise,
+they are for \fIsh\fP(1).
+The \fIcsh\fP commands set and unset the shell variable \fBnoglob\fP,
+leaving it unset.
 The following line in the \fB.login\fP
 or \fB.profile\fP files will initialize the environment correctly:
 .sp
-    eval \`@TSET@ \-s options ... \`
+    eval \(ga@TSET@ \-s options ... \(ga
 .
-.SH TERMINAL TYPE MAPPING
+.SS "Terminal Type Mapping"
 When the terminal is not hardwired into the system (or the current
 system information is incorrect) the terminal type derived from the
-\fI/etc/ttys\fP file or the \fBTERM\fP environmental variable is often
+\fI/etc/ttys\fP file or the \fITERM\fP environment variable is often
 something generic like \fBnetwork\fP, \fBdialup\fP, or \fBunknown\fP.
 When \fB@TSET@\fP is used in a startup script it is often desirable to
 provide information about the type of terminal used on such ports.
@@ -280,43 +236,92 @@ terminal.
 No whitespace characters are permitted in the \fB\-m\fP option argument.
 Also, to avoid problems with meta-characters, it is suggested that the
 entire \fB\-m\fP option argument be placed within single quote characters,
-and that \fBcsh\fP users insert a backslash character (\*(``\e\*('') before
-any exclamation marks (\*(``!\*('').
-.SH HISTORY
-.PP
-A \fBreset\fP command appeared in 1BSD (March 1978), written by Kurt Shoens.
-This program set the \fIerase\fP and \fIkill\fP characters
-to \fB^H\fP (backspace) and \fB@\fP respectively.
-Mark Horton improved that in 3BSD (October 1979), adding
-\fIintr\fP, \fIquit\fP, \fIstart\fP/\fIstop\fP and \fIeof\fP characters
-as well as changing the program to avoid modifying any user settings.
-That version of \fBreset\fP did not use the termcap database.
-.PP
-A separate \fBtset\fP command was provided in 1BSD by Eric Allman,
-using the termcap database.
-Allman's comments in the source code indicate
-that he began work in October 1977,
-continuing development over the next few years.
-.PP
-According to comments in the source code,
-the \fBtset\fP program was modified in September 1980,
-to use logic copied from the 3BSD \*(``reset\*(''
-when it was invoked as \fBreset\fP.
-This version appeared in 4.1cBSD, late in 1982.
-.PP
-Other developers (e.g., Keith Bostic and Jim Bloom)
-continued to modify \fBtset\fP until 4.4BSD was released in 1993.
+and that \fIcsh\fP users insert a backslash character (\*(``\e\*('')
+before any exclamation marks (\*(``!\*('').
+.SH OPTIONS
+The options are as follows:
+.TP 5
+.B \-c
+Set control characters and modes.
+.TP 5
+.BI \-e\  ch
+Set the erase character to \fIch\fP.
+.TP
+.B \-I
+Do not send the terminal or tab initialization strings to the terminal.
+.TP
+.BI \-i\  ch
+Set the interrupt character to \fIch\fP.
+.TP
+.BI \-k\  ch
+Set the line kill character to \fIch\fP.
+.TP
+.BI \-m\  mapping
+Specify a mapping from a port type to a terminal;
+see subsection \*(``Terminal Type Mapping\*(''.
+.TP
+.B \-Q
+Do not display any values for the erase, interrupt and line kill characters.
+Normally \fB@TSET@\fP displays the values for control characters which
+differ from the system's default values.
+.TP
+.B \-q
+The terminal type is displayed to the standard output, and the terminal is
+not initialized in any way.
+The option \*(``\-\*('' by itself is equivalent but archaic.
+.TP
+.B \-r
+Print the terminal type to the standard error output.
+.TP
+.B \-s
+Print the sequence of shell commands to initialize the environment variable
+\fITERM\fP to the standard output;
+see subsection \*(``Setting the Environment\*(''.
+.TP
+.B \-V
+reports the version of \fI\%ncurses\fP which was used in this program,
+and exits.
+.TP
+.B \-w
+Resize the window to match the size deduced via \fBsetupterm\fP(3X).
+Normally this has no effect,
+unless \fBsetupterm\fP is not able to detect the window size.
 .PP
-The \fBncurses\fP implementation
-was lightly adapted from the 4.4BSD sources for a terminfo environment by Eric
-S. Raymond <esr@snark.thyrsus.com>.
-.SH COMPATIBILITY
+The arguments for the \fB\-e\fP, \fB\-i\fP, and \fB\-k\fP
+options may either be entered as actual characters
+or by using the \*(``hat\*(''
+notation, i.e., control-h may be specified as \*(``\*^H\*('' or \*(``\*^h\*(''.
 .PP
+If neither \fB\-c\fP or \fB\-w\fP is given, both options are assumed.
+.SH ENVIRONMENT
+The \fB@TSET@\fP command uses these environment variables:
+.TP 5
+.I SHELL
+tells \fB@TSET@\fP whether to initialize \fITERM\fP using \fIsh\fP(1) or
+\fIcsh\fP(1) syntax.
+.TP 5
+.I TERM
+Denotes your terminal type.
+Each terminal type is distinct, though many are similar.
+.TP 5
+.I TERMCAP
+may denote the location of a termcap database.
+If it is not an absolute pathname, e.g., begins with a \*(``/\*('',
+\fB@TSET@\fP removes the variable from the environment before looking
+for the terminal description.
+.SH FILES
+.TP
+.I /etc/ttys
+system port name to terminal type mapping database (BSD versions only).
+.TP
+.I \*d
+compiled terminal description database directory
+.SH PORTABILITY
 Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7
 (POSIX.1-2008) nor
 X/Open Curses Issue 7 documents \fB@TSET@\fP or \fB@RESET@\fP.
 .PP
-The AT&T \fBtput\fP utility (AIX, HPUX, Solaris)
+The AT&T \fBtput\fP utility (AIX, HP-UX, Solaris)
 incorporated the terminal-mode manipulation as well as termcap-based features
 such as resetting tabstops from \fBtset\fP in BSD (4.1c),
 presumably with the intention of making \fBtset\fP obsolete.
@@ -324,21 +329,24 @@ However, each of those systems still provides \fBtset\fP.
 In fact, the commonly-used \fBreset\fP utility
 is always an alias for \fBtset\fP.
 .PP
-The \fB@TSET@\fP utility provides for backward-compatibility with BSD
-environments (under most modern UNIXes, \fB/etc/inittab\fP and \fBgetty\fP(1)
-can set \fBTERM\fP appropriately for each dial-up line; this obviates what was
-\fB@TSET@\fP's most important use).
-This implementation behaves like 4.4BSD
-\fBtset\fP, with a few exceptions specified here.
+The \fB\%@TSET@\fP utility provides backward compatibility with BSD
+environments;
+under most modern Unices,
+\fI\%/etc/inittab\fP and \fI\%getty\fP(8) can set \fITERM\fP
+appropriately for each dial-up line,
+obviating what was \fB\%@TSET@\fP's most important use.
+This implementation behaves like 4.4BSD \fBtset\fP,
+with a few exceptions we shall consider now.
 .PP
 A few options are different
-because the \fBTERMCAP\fP variable
-is no longer supported under terminfo-based \fBncurses\fP:
+because the \fI\%TERMCAP\fP variable
+is no longer supported under terminfo-based \fI\%ncurses\fP:
 .bP
 The \fB\-S\fP option of BSD \fBtset\fP no longer works;
 it prints an error message to the standard error and dies.
 .bP
-The \fB\-s\fP option only sets \fBTERM\fP, not \fBTERMCAP\fP.
+The \fB\-s\fP option only sets \fITERM\fP,
+not \fI\%TERMCAP\fP.
 .PP
 There was an undocumented 4.4BSD feature
 that invoking \fBtset\fP via a link named
@@ -382,57 +390,75 @@ In 4.4BSD, \fBtset\fP uses the window size from the termcap description
 to set the window size if \fBtset\fP is not able to obtain the window
 size from the operating system.
 .bP
-In ncurses, \fB@TSET@\fP obtains the window size using
-\fBsetupterm\fP, which may be from
+In \fI\%ncurses\fP, \fB@TSET@\fP obtains the window size using
+\fB\%setupterm\fP(3X), which may be from
 the operating system,
-the \fBLINES\fP and \fBCOLUMNS\fP environment variables or
+the \fILINES\fP and \fICOLUMNS\fP environment variables or
 the terminal description.
 .PP
-Obtaining the window size from the terminal description is common to
-both implementations, but considered obsolescent.
+Obtaining the window size from a terminal's type description is common
+to both implementations,
+but considered obsolescent.
 Its only practical use is for hardware terminals.
-Generally speaking, a window size would be unset only if there were
-some problem obtaining the value from the operating system
-(and \fBsetupterm\fP would still fail).
-For that reason, the \fBLINES\fP and \fBCOLUMNS\fP environment variables
-may be useful for working around window-size problems.
-Those have the drawback that if the window is resized,
-those variables must be recomputed and reassigned.
-To do this more easily, use the \fBresize\fP(1) program.
-.SH ENVIRONMENT
-The \fB@TSET@\fP command uses these environment variables:
-.TP 5
-SHELL
-tells \fB@TSET@\fP whether to initialize \fBTERM\fP using \fBsh\fP(1) or
-\fBcsh\fP(1) syntax.
-.TP 5
-TERM
-Denotes your terminal type.
-Each terminal type is distinct, though many are similar.
-.TP 5
-TERMCAP
-may denote the location of a termcap database.
-If it is not an absolute pathname, e.g., begins with a \*(``/\*('',
-\fB@TSET@\fP removes the variable from the environment before looking
-for the terminal description.
-.SH FILES
-.TP 5
-/etc/ttys
-system port name to terminal type mapping database (BSD versions only).
-.TP
-@TERMINFO@
-terminal capability database
+Generally,
+the window size will remain uninitialized only if there were a problem
+obtaining the value from the operating system
+(and \fB\%setupterm\fP would still fail).
+The \fILINES\fP and \fI\%COLUMNS\fP environment variables
+may thus be useful for working around window-size problems,
+but have the drawback that if the window is resized,
+their values must be recomputed and reassigned.
+The \fI\%resize\fP(1) program distributed with
+\fI\%xterm\fP(1) assists this activity.
+.SH HISTORY
+A \fB\%reset\fP command written by Kurt Shoens appeared in 1BSD
+(March 1978).
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/s6/reset.c
+It set the \fIerase\fP and \fIkill\fP characters
+to \fB\*^H\fP (backspace) and \fB@\fP respectively.
+Mark Horton improved this \fB\%reset\fP in 3BSD
+(October 1979),
+adding \fIintr\fP,
+\fIquit\fP,
+\fIstart\fP/\fIstop\fP,
+and \fIeof\fP
+characters as well as changing the program to avoid modifying any user
+settings.
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/src/cmd/\
+.\"   reset.c
+That version of \fB\%reset\fP did not use \fI\%termcap\fP.
+.PP
+Eric Allman wrote a distinct \fBtset\fP command for 1BSD,
+using a forerunner of \fI\%termcap\fP called \fI\%ttycap\fP.
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/s6/tset.c
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=1BSD/man7/ttycap.7
+Allman's comments in the source code indicate
+that he began work in October 1977,
+continuing development over the next few years.
+By late 1979,
+it had migrated to \fI\%termcap\fP and handled the \fI\%TERMCAP\fP
+variable.
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/src/cmd/\
+.\"   tset/tset.c
+Later comments indicate that \fBtset\fP was modified in September 1980
+to use logic copied from the 3BSD \*(``reset\*('' program when it was
+invoked as \fB\%reset\fP.
+.\" https://minnie.tuhs.org/cgi-bin/utree.pl?file=2.9BSD/usr/src/ucb/\
+.\"   tset/tset.c
+This version appeared in 4.1cBSD, \" and backported to 2.9BSD
+late in 1982.
+Other developers such as Keith Bostic and Jim Bloom continued to modify
+\fBtset\fP until 4.4BSD was released in 1993.
+.PP
+The \fI\%ncurses\fP implementation was lightly adapted from the 4.4BSD
+sources to use the \fI\%terminfo\fP API by Eric S.\& Raymond
+<esr@snark.thyrsus.com>.
 .SH SEE ALSO
-.hy 0
-\fBcsh\fP(1),
-\fBsh\fP(1),
-\fBstty\fP(1),
-\fBcurs_terminfo\fP(3X),
-\fBtty\fP(4),
-\fBterminfo\fP(5),
-\fBttys\fP(5),
-\fBenviron\fP(7)
-.hy
-.PP
-This describes \fBncurses\fP
-version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+\fB\%csh\fP(1),
+\fB\%sh\fP(1),
+\fB\%stty\fP(1),
+\fB\%curs_terminfo\fP(3X),
+\fB\%tty\fP(4),
+\fB\%terminfo\fP(5),
+\fB\%ttys\fP(5),
+\fB\%environ\fP(7)
index b43e218f376d7921d799c632dccc85e87e0b46b4..219bbf5f9976b45f2ccf295844e4a23cdacc5f71 100644 (file)
@@ -1,5 +1,6 @@
+'\" t
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 2017 Free Software Foundation, Inc.                            *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: user_caps.5,v 1.22 2022/07/03 20:01:04 tom Exp $
-.TH user_caps 5
-.ie \n(.g .ds `` \(lq
-.el       .ds `` ``
-.ie \n(.g .ds '' \(rq
-.el       .ds '' ''
-.de NS
-.ie n  .sp
-.el    .sp .5
-.ie n  .in +4
-.el    .in +2
-.nf
-.ft C                  \" Courier
-..
-.de NE
-.fi
-.ft R
-.ie n  .in -4
-.el    .in -2
-..
+.\" $Id: user_caps.5,v 1.49 2024/03/16 15:35:01 tom Exp $
+.TH user_caps 5 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "File formats"
+.ie \n(.g \{\
+.ds `` \(lq
+.ds '' \(rq
+.\}
+.el \{\
+.ie t .ds `` ``
+.el   .ds `` ""
+.ie t .ds '' ''
+.el   .ds '' ""
+.\}
+.
 .de bP
 .ie n  .IP \(bu 4
 .el    .IP \(bu 2
 ..
 .SH NAME
-user_caps \- user-defined terminfo capabilities
+user_caps \-
+user-defined \fIterminfo\fR capability format
 .SH SYNOPSIS
-.B @TIC@ -x, @INFOCMP@ -x
+.B @INFOCMP@ \-x
+.PP
+.B @TIC@ \-x
 .SH DESCRIPTION
 .SS Background
-.PP
-Before ncurses 5.0,
+Before \fI\%ncurses\fP 5.0,
 terminfo databases used a \fIfixed repertoire\fP of terminal
 capabilities designed for the SVr2 terminal database in 1984,
 and extended in stages through SVr4 (1989),
 and standardized in the Single Unix Specification beginning in 1995.
 .PP
 Most of the \fIextensions\fP in this fixed repertoire were additions
-to the tables of boolean, numeric and string capabilities.
+to the tables of Boolean, numeric and string capabilities.
 Rather than change the meaning of an existing capability, a new name was added.
 The terminfo database uses a binary format; binary compatibility was
 ensured by using a header which gave the number of items in the
@@ -92,22 +88,24 @@ Although they \fImay\fP provide all of the standard capability names,
 the position in the tables differs because some features were added as needed,
 while others were added (out of order) to comply with X/Open Curses.
 .IP
-While ncurses' repertoire of predefined capabilities is closest to Solaris,
+While \fI\%ncurses\fP' repertoire of predefined capabilities is closest
+to Solaris,
 Solaris's terminfo database has a few differences from
 the list published by X/Open Curses.
-For example, ncurses can be configured with tables which match the
-terminal databases for AIX, HP-UX or OSF/1,
+For example,
+\fI\%ncurses\fP can be configured with tables which match the terminal
+databases for AIX, HP-UX or OSF/1,
 rather than the default Solaris-like configuration.
 .bP
-In SVr4 curses and ncurses,
+In SVr4 curses and \fI\%ncurses\fP,
 the terminal database is defined at compile-time using a text file
 which lists the different terminal capabilities.
 .IP
 In principle, the text-file can be extended,
 but doing this requires recompiling and reinstalling the library.
-The text-file used in ncurses for terminal capabilities includes
+The text-file used in \fI\%ncurses\fP for terminal capabilities includes
 details for various systems past the documented X/Open Curses features.
-For example, ncurses supports these capabilities in each configuration:
+For example, \fI\%ncurses\fP supports these capabilities in each configuration:
 .RS 8
 .TP 5
 memory_lock
@@ -142,16 +140,16 @@ it could represent larger numbers.
 Although termcap's extensibility was rarely used
 (it was never the \fIspeaker\fP who had actually used the feature),
 the criticism had a point.
-ncurses 5.0 provided a way to detect nonstandard capabilities,
+\fI\%ncurses\fP 5.0 provided a way to detect nonstandard capabilities,
 determine their
 type and optionally store and retrieve them in a way which did not interfere
 with other applications.
 These are referred to as \fIuser-defined capabilities\fP because no
 modifications to the toolset's predefined capability names are needed.
 .PP
-The ncurses utilities \fB@TIC@\fP and \fB@INFOCMP@\fP have a command-line
-option \*(``\-x\*('' to control whether the nonstandard capabilities
-are stored or retrieved.
+The \fI\%ncurses\fP utilities \fB@TIC@\fP and \fB@INFOCMP@\fP have a
+command-line option \*(``\-x\*('' to control whether the nonstandard
+capabilities are stored or retrieved.
 A library function \fBuse_extended_names\fP
 is provided for the same purpose.
 .PP
@@ -159,7 +157,7 @@ When compiling a terminal database, if \*(``\-x\*('' is set,
 \fB@TIC@\fP will store a user-defined capability if the capability name is not
 one of the predefined names.
 .PP
-Because ncurses provides a termcap library interface,
+Because \fI\%ncurses\fP provides a termcap library interface,
 these user-defined capabilities may be visible to termcap applications:
 .bP
 The termcap interface (like all implementations of termcap)
@@ -181,21 +179,20 @@ While terminfo and termcap have a set of 60 predefined function-key names,
 to which a series of keys can be assigned,
 that is insufficient for more than a dozen keys multiplied by more than
 a couple of modifier combinations.
-The ncurses database uses a convention based on \fBxterm\fP(1) to
-provide extended special-key names.
+The \fI\%ncurses\fP database uses a convention based on \fBxterm\fP(1)
+to provide extended special-key names.
 .IP
 Fitting that into termcap's limitation of 2-character names
 would be pointless.
 These extended keys are available only with terminfo.
-.SS Recognized capabilities
-.PP
-The ncurses library uses the user-definable capabilities.
+.SS "Recognized Capabilities"
+The \fI\%ncurses\fP library uses the user-definable capabilities.
 While the terminfo database may have other extensions,
-ncurses makes explicit checks for these:
+\fI\%ncurses\fP makes explicit checks for these:
 .RS 3
 .TP 3
 AX
-\fIboolean\fP, asserts that the terminal interprets SGR 39 and SGR 49
+\fIBoolean\fP, asserts that the terminal interprets SGR 39 and SGR 49
 by resetting the foreground and background color, respectively, to the default.
 .IP
 This is a feature recognized by the \fBscreen\fP program as well.
@@ -208,13 +205,15 @@ the terminal.
 The command \*(``\fBtput clear\fP\*('' does the same thing.
 .TP 3
 NQ
-used to suppress a consistency check in @TIC@ for the ncurses capabilities
+\fIBoolean\fP,
+used to suppress a consistency check in @TIC@ for the \fI\%ncurses\fP
+capabilities
 in user6 through user9 (u6, u7, u8 and u9)
 which tell how to query the terminal's cursor position
 and its device attributes.
 .TP 3
 RGB
-\fIboolean\fP, \fInumber\fP \fBor\fP \fIstring\fP,
+\fIBoolean\fP, \fInumber\fP \fBor\fP \fIstring\fP,
 used to assert that the
 \fBset_a_foreground\fP and
 \fBset_a_background\fP capabilities correspond to \fIdirect colors\fP,
@@ -223,22 +222,24 @@ This capability allows the \fBcolor_content\fP function to
 return appropriate values without requiring the application
 to initialize colors using \fBinit_color\fP.
 .IP
-The capability type determines the values which ncurses sees:
+The capability type determines the values which \fI\%ncurses\fP sees:
 .RS 3
 .TP 3
-\fIboolean\fP
+\fIBoolean\fP
 implies that the number of bits for red, green and blue are the same.
 Using the maximum number of colors,
-ncurses adds two, divides that sum by three, and assigns the result
-to red, green and blue in that order.
+\fI\%ncurses\fP adds two,
+divides that sum by three,
+and assigns the result to red,
+green and blue in that order.
 .IP
 If the number of bits needed for the number of colors is not a multiple
 of three, the blue (and green) components lose in comparison to red.
 .TP 3
 \fInumber\fP
-tells ncurses what result to add to red, green and blue.
-If ncurses runs out of bits,
-blue (and green) lose just as in the \fIboolean\fP case.
+tells \fI\%ncurses\fP what result to add to red, green and blue.
+If \fI\%ncurses\fP runs out of bits,
+blue (and green) lose just as in the \fIBoolean\fP case.
 .TP 3
 \fIstring\fP
 explicitly list the number of bits used for red, green and blue components
@@ -253,27 +254,29 @@ to represent the standard eight ANSI colors, i.e., one bit per color.
 .TP 3
 U8
 \fInumber\fP,
-asserts that ncurses must use Unicode values for line-drawing characters,
+asserts that \fI\%ncurses\fP must use Unicode values for line-drawing
+characters,
 and that it should ignore the alternate character set capabilities
 when the locale uses UTF-8 encoding.
 For more information, see the discussion of
-\fBNCURSES_NO_UTF8_ACS\fP in \fBncurses\fP(3X).
+\fBNCURSES_NO_UTF8_ACS\fP in \fB\%ncurses\fP(3X).
 .IP
 Set this capability to a nonzero value to enable it.
 .TP 3
 XM
 \fIstring\fP,
-override ncurses's built-in string which
+override \fI\%ncurses\fP's built-in string which
 enables/disables \fBxterm\fP(1) mouse mode.
 .IP
-ncurses sends a character sequence to the terminal to initialize mouse mode,
+\fI\%ncurses\fP sends a character sequence to the terminal to initialize mouse mode,
 and when the user clicks the mouse buttons or (in certain modes) moves the
 mouse, handles the characters sent back by the terminal to tell it what
 was done with the mouse.
 .IP
 The mouse protocol is enabled when
 the \fImask\fP passed in the \fBmousemask\fP function is nonzero.
-By default, ncurses handles the responses for the X11 xterm mouse protocol.
+By default,
+\fI\%ncurses\fP handles the responses for the X11 xterm mouse protocol.
 It also knows about the \fISGR 1006\fP xterm mouse protocol,
 but must to be told to look for this specifically.
 It will not be able to guess which mode is used,
@@ -282,7 +285,7 @@ because the responses are enough alike that only confusion would result.
 The \fBXM\fP capability has a single parameter.
 If nonzero, the mouse protocol should be enabled.
 If zero, the mouse protocol should be disabled.
-ncurses inspects this capability if it is present,
+\fI\%ncurses\fP inspects this capability if it is present,
 to see whether the 1006 protocol is used.
 If so, it expects the responses to use the \fISGR 1006\fP xterm mouse protocol.
 .IP
@@ -330,22 +333,21 @@ xterm mouse protocols:
 .IP
 .nf
   xterm+x11mouse|X11 xterm mouse protocol,
-          kmous=\\E[M, XM=\\E[?1000%?%p1%{1}%=%th%el%;,
-          xm=\\E[M
+          kmous=\eE[M, XM=\eE[?1000%?%p1%{1}%=%th%el%;,
+          xm=\eE[M
              %?%p4%t%p3%e%{3}%;%'\ '%+%c
              %p2%'!'%+%c
              %p1%'!'%+%c,
 
   xterm+sm+1006|xterm SGR-mouse,
-          kmous=\\E[<, XM=\\E[?1006;1000%?%p1%{1}%=%th%el%;,
-          xm=\\E[<%i%p3%d;
+          kmous=\eE[<, XM=\eE[?1006;1000%?%p1%{1}%=%th%el%;,
+          xm=\eE[<%i%p3%d;
              %p1%d;
              %p2%d;
              %?%p4%tM%em%;,
 .fi
 .
-.SS Extended key-definitions
-.PP
+.SS "Extended Key Definitions"
 Several terminals provide the ability to send distinct strings for
 combinations of modified special keys.
 There is no standard for what those keys can send.
@@ -353,33 +355,52 @@ There is no standard for what those keys can send.
 Since 1999, \fBxterm\fP(1) has supported
 \fIshift\fP, \fIcontrol\fP, \fIalt\fP, and \fImeta\fP modifiers which produce
 distinct special-key strings.
-In a terminal description, ncurses has no special knowledge of the
-modifiers used.
+In a terminal description,
+\fI\%ncurses\fP has no special knowledge of the modifiers used.
 Applications can use the \fInaming convention\fP established for \fBxterm\fP
 to find these special keys in the terminal description.
 .PP
-Starting with the curses convention that \fIkey names\fP begin with \*(``k\*(''
-and that shifted special keys are an uppercase name,
-ncurses' terminal database defines these names to which a suffix is added:
+Starting with the
+.I curses
+convention that capability codes describing the input generated by a
+terminal's key caps begin with \*(``k\*('',
+and that shifted special keys use uppercase letters in their names,
+.IR \%ncurses 's
+terminal database defines the following names and codes to which a
+suffix is added.
+.PP
 .RS 5
 .TS
-tab(/) ;
-l l .
-\fBName\fP/\fBDescription\fP
+Lb Lb
+Lb Lx.
+Code   Description
 _
-kDC/special form of kdch1 (delete character)
-kDN/special form of kcud1 (cursor down)
-kEND/special form of kend (End)
-kHOM/special form of khome (Home)
-kLFT/special form of kcub1 (cursor-left or cursor-back)
-kNXT/special form of knext (Next, or Page-Down)
-kPRV/special form of kprev (Prev, or Page-Up)
-kRIT/special form of kcuf1 (cursor-right, or cursor-forward)
-kUP/special form of kcuu1 (cursor-up)
+kDC    shifted kdch1 (delete character)
+.\" kDC is a standard capability; see X/Open Curses Issue 7, p. 345.
+kDN    shifted kcud1 (cursor down)
+kEND   shifted kend (end)
+kHOM   shifted khome (home)
+kLFT   shifted kcub1 (cursor back)
+kNXT   shifted knext (next)
+kPRV   shifted kprev (previous)
+kRIT   shifted kcuf1 (cursor forward)
+kUP    shifted kcuu1 (cursor up)
 .TE
 .RE
 .PP
+Keycap nomenclature on the Unix systems for which
+.I curses
+was developed differs from today's ubiquitous descendants of the IBM
+PC/AT keyboard layout.
+In the foregoing,
+interpret \*(``backward\*('' as \*(``left\*('',
+\*(``forward\*('' as \*(``right\*('',
+\*(``next\*('' as \*(``page down\*('',
+and
+\*(``prev(ious)\*('' as \*(``page up\*(''.
+.PP
 These are the suffixes used to denote the modifiers:
+.PP
 .RS 5
 .TS
 tab(/) ;
@@ -405,8 +426,9 @@ _
 .RE
 .PP
 None of these are predefined; terminal descriptions can refer to \fInames\fP
-which ncurses will allocate at runtime to \fIkey-codes\fP.
-To use these keys in an ncurses program, an application could do this:
+which \fI\%ncurses\fP will allocate at runtime to \fIkey-codes\fP.
+To use these keys in an \fI\%ncurses\fP program,
+an application could do this:
 .bP
 using a list of extended key \fInames\fP,
 ask \fBtigetstr\fP(3X) for their values, and
@@ -414,32 +436,29 @@ ask \fBtigetstr\fP(3X) for their values, and
 given the list of values,
 ask \fBkey_defined\fP(3X) for the \fIkey-code\fP which
 would be returned for those keys by \fBwgetch\fP(3X).
-.PP
 .\"
 .SH PORTABILITY
-.PP
 The \*(``\-x\*('' extension feature of \fB@TIC@\fP and \fB@INFOCMP@\fP
 has been adopted in NetBSD curses.
 That implementation stores user-defined capabilities,
 but makes no use of these capabilities itself.
 .\"
+.SH AUTHORS
+Thomas E. Dickey
+.br
+beginning with \fI\%ncurses\fP 5.0 (1999)
+.\"
 .SH SEE ALSO
-.PP
-\fB@INFOCMP@\fP(1M),
-\fB@TIC@\fP(1M).
+\fB\%@INFOCMP@\fP(1M),
+\fB\%@TIC@\fP(1M)
 .PP
 The terminal database section
 .I "NCURSES USER-DEFINABLE CAPABILITIES"
 summarizes commonly-used user-defined capabilities
 which are used in the terminal descriptions.
-Some of those features are mentioned in \fBscreen\fP(1) or \fBtmux\fP(1).
+Some of those features are mentioned in \fB\%screen\fP(1) or
+\fBtmux\fP(1).
 .PP
 .I "XTerm Control Sequences"
-provides further information on the \fBxterm\fP(1) features
-which are used in these extended capabilities.
-.\"
-.SH AUTHORS
-.PP
-Thomas E. Dickey
-.br
-beginning with ncurses 5.0 (1999)
+provides further information on the \fB\%xterm\fP(1) features
+that are used in these extended capabilities.
index 1500913b2debc8fdd75e37d478a85bc7eb6ec727..b67feada0dc0f2186f92b8b31dbc34cd558108e0 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright 2018-2021,2022 Thomas E. Dickey                                *
+.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
 .\" Copyright 1998-2010,2015 Free Software Foundation, Inc.                  *
 .\"                                                                          *
 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
 .\"
 .\" Author: Thomas E. Dickey 1996
 .\"
-.\" $Id: wresize.3x,v 1.20 2022/02/12 20:07:29 tom Exp $
-.TH wresize 3X ""
+.\" $Id: wresize.3x,v 1.36 2024/03/16 15:35:01 tom Exp $
+.TH wresize 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
 .SH NAME
-\fBwresize\fP \- resize a curses window
+\fB\%wresize\fP \-
+resize a \fIcurses\fR window
 .SH SYNOPSIS
-\fB#include <curses.h>\fP
-.sp
-\fBint wresize(WINDOW *\fIwin\fB, int \fIlines\fB, int \fIcolumns\fB);\fR
+.nf
+\fB#include <curses.h>
+.PP
+\fBint wresize(WINDOW *\fIwin\fP, int \fIlines\fP, int \fIcolumns\fP);
+.fi
 .SH DESCRIPTION
-This is an extension to the curses library.
-It reallocates storage for an \fBncurses\fP
-window to adjust its dimensions to the specified values.
-If either dimension is larger than the current values, the
-window's data is filled with blanks that have the current background rendition
-(as set by \fBwbkgdset\fP) merged into them.
+This \fI\%ncurses\fP extension to standard \fIcurses\fP reallocates
+storage for a \fIcurses\fP window to adjust its dimensions to the
+specified values.
+If either dimension is larger than its current value,
+the expanded part of the window is filled with blanks merged with
+current background rendition
+(as set by \fB\%wbkgdset\fP(3X)).
 .SH RETURN VALUE
-The function returns the integer \fBERR\fP upon failure and \fBOK\fP on success.
-It will fail if either of the dimensions less than or equal to zero,
+\fB\%wresize\fP returns \fBERR\fP upon failure and \fBOK\fP on success.
+It will fail if either of the dimensions is less than or equal to zero,
 or if an error occurs while (re)allocating memory for the window.
 .SH NOTES
-The only restriction placed on the dimensions is that they be greater than zero.
-The dimensions are not compared to \fBcurses\fP screen dimensions to
-simplify the logic of \fBresizeterm\fP.
+The only restriction placed on the dimensions is that they be greater
+than zero.
+They are \fInot\fP compared to the \fIcurses\fP screen dimensions;
+this keeps the logic of \fB\%resizeterm\fP(3X) simple.
 The caller must ensure that the window's dimensions fit within the
 actual screen dimensions.
 .SH PORTABILITY
+It is not possible to resize windows with SVr4 \fIcurses\fP.
 .PP
-It is not possible to resize windows with SVr4 curses.
-.PP
-This extension of ncurses was introduced in mid-1995.
-It was adopted in NetBSD curses (2001) and PDCurses (2003).
+\fI\%ncurses\fP introduced this extension in mid-1995.
+NetBSD \fIcurses\fP adopted it in 2001,
+and \fI\%PDCurses\fP in 2003.
+.SH AUTHORS
+Thomas Dickey
+(from an equivalent function written in 1988 for BSD \fIcurses\fP).
 .SH SEE ALSO
-\fBresizeterm\fP(3X).
-.SH AUTHOR
-Thomas Dickey (from an equivalent function written in 1988 for BSD curses).
+\fB\%resizeterm\fP(3X)
index 4ec08c5288ff932b4cd8ae458c1e463e52007bb2..4bc8ef8fc8c1061a455b19cef682ea3b26ef4bb8 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2012,2014 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -38,7 +38,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_global.c,v 1.33 2021/03/27 23:46:29 tom Exp $")
+MODULE_ID("$Id: m_global.c,v 1.34 2023/09/16 16:39:26 tom Exp $")
 
 static char mark[] = "-";
 /* *INDENT-OFF* */
@@ -568,7 +568,7 @@ _nc_New_TopRow_and_CurrentItem(
       cur_item = menu->curitem;
       assert(cur_item);
       menu->toprow = (short)(((menu->rows - menu->frows) >= 0)
-                            ? min(menu->rows - menu->frows, new_toprow)
+                            ? Min(menu->rows - menu->frows, new_toprow)
                             : 0);
       menu->curitem = new_current_item;
 
@@ -592,7 +592,7 @@ _nc_New_TopRow_and_CurrentItem(
   else
     {                          /* if we are not posted, this is quite simple */
       menu->toprow = (short)(((menu->rows - menu->frows) >= 0)
-                            ? min(menu->rows - menu->frows, new_toprow)
+                            ? Min(menu->rows - menu->frows, new_toprow)
                             : 0);
       menu->curitem = new_current_item;
     }
index 0fab0049a4f0888c7756e70b850130c25e0c16ae..ee1a1c4d456c48e547d72a19c7e5b02b77ee0ba8 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: magic,v 1.3 2020/02/02 23:34:34 tom Exp $
+# $Id: magic,v 1.5 2023/09/23 23:37:26 tom Exp $
 ##############################################################################
-# Copyright 2020 Thomas E. Dickey                                            #
+# Copyright 2020,2023 Thomas E. Dickey                                       #
 # Copyright 2015,2018 Free Software Foundation, Inc.                         #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -60,7 +60,7 @@
 !:mime application/x-terminfo2
 #
 # While the compiled terminfo uses little-endian format irregardless of
-# platform, SystemV screen dumps do not.  They came later, and that detail was
+# platform, System V screen dumps do not.  They came later, and that detail was
 # overlooked.
 #
 # AIX and HPUX use the SVr4 big-endian format
index b066a1059394029722834669f9ef0b409a4bcfc2..0c3365d76fdb72a0b563eb94a22e9c1f2c05d6f2 100755 (executable)
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
-# $Id: ncu2openbsd,v 1.65 2021/10/03 18:52:22 tom Exp $
+# $Id: ncu2openbsd,v 1.67 2023/09/09 15:59:17 tom Exp $
 # -----------------------------------------------------------------------------
-# Copyright 2021 by Thomas E. Dickey
+# Copyright 2021,2023 by Thomas E. Dickey
 #
 #                         All Rights Reserved
 #
@@ -44,7 +44,7 @@ use File::Temp qw/ tempdir /;
 
 $| = 1;
 
-our ( $opt_d, $opt_n, $opt_r, $opt_t, $opt_v, $opt_x );
+our ( $opt_d, $opt_n, $opt_r, $opt_t, $opt_v, $opt_x, $opt_6 );
 our $source_dir;
 our $target_dir;
 our $update_dir;
@@ -1177,12 +1177,12 @@ sub configure_tree() {
     my @search = ( "/usr/share/terminfo", "/usr/local/share/terminfo" );
     my @prefix = ("./configure");
     $prefix[ ++$#prefix ] = "--with-abi-version=5"
-      if ( &patchdate >= 20150502 );
+      if ( &patchdate >= 20150502 && !$opt_6 );
     my @options = (
-        "--with-ospeed=int",    #
-        "--with-shared",        #
-        "--without-normal",     #
-        "--without-debug",      #
+        "--with-ospeed=int",                               #
+        "--with-shared",                                   #
+        "--without-normal",                                #
+        "--without-debug",                                 #
         "--with-terminfo-dirs=" . join( ':', @search ),    #
         "--without-ada",                                   #
         "--disable-hard-tabs",                             #
@@ -1191,7 +1191,8 @@ sub configure_tree() {
         "--enable-bsdpad",                                 #
         "--enable-signed-char",                            #
         "--enable-termcap",                                #
-        "--enable-widec"
+        "--enable-widec",                                  #
+        "--disable-setuid-environ"
     );
     $options[ ++$#options ] = "--with-trace" if ($opt_t);
     $options[ ++$#options ] = "--enable-string-hacks"
@@ -1250,6 +1251,7 @@ sub usage() {
 Usage: ncu2openbsd [options] [sourcetree]
 
 Options:
+  -6       use ABI 6 rather than 5 if available
   -d DST   specify destination (default: /usr/src)
   -n       no-op, do not update destination
   -r       remove update, restore sources from ".orig"
@@ -1261,7 +1263,7 @@ EOF
 }
 
 $Getopt::Std::STANDARD_HELP_VERSION = 1;
-&getopts('d:nrtvx') || &usage();
+&getopts('6d:nrtvx') || &usage();
 $opt_d = "/usr/src" unless ($opt_d);
 &usage() unless ( $#ARGV <= 0 );
 
index 2b791c543f5031f33e95e89c41b1af0cd393a8a4..5d575b8eb454e251efff45e108b3e65f09a0054e 100644 (file)
@@ -6,8 +6,8 @@
 # Report bugs and new terminal descriptions to
 #      bug-ncurses@gnu.org
 #
-#      $Revision: 1.1050 $
-#      $Date: 2023/01/15 00:26:15 $
+#      $Revision: 1.1143 $
+#      $Date: 2024/03/09 20:01:40 $
 #
 # The original header is preserved below for reference.  It is noted that there
 # is a "newer" version which differs in some cosmetic details (but actually
@@ -368,6 +368,9 @@ ansi+idc|ANSI insert/delete characters,
 ansi+arrows|ANSI normal-mode home and cursor-keys,
        kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
        khome=\E[H,
+ansi+apparrows|ANSI application-mode home and cursor-keys,
+       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\EOH,
+       use=ansi+arrows,
 ansi+sgr|ANSI graphic renditions,
        blink=\E[5m, invis=\E[8m, rev=\E[7m,
        sgr=\E[0%?%p3%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
@@ -438,11 +441,9 @@ klone+sgr8|attribute control for ansi.sys displays with invis,
 # work; uses \E[12m instead, which is pretty bulletproof but loses you the ACS
 # diamond and arrow characters under curses.
 klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m),
-       blink=\E[5m, bold=\E[1m, invis=\E[8m, rev=\E[7m, rmso=\E[m,
-       rmul=\E[m,
        sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6
            %t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
-       sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
+       sgr0=\E[0;10m, smacs=\E[12m, use=ansi+sgrbold,
        use=klone+acs,
 
 # KOI8-R (RFC1489) acs (alternate character set)
@@ -469,8 +470,7 @@ klone+color|color control for ansi.sys and ISO6429-compatible displays,
 # default color pair,  but many `ANSI' terminals don't grok the <op> cap.
 ecma+color|color control for ECMA-48-compatible terminals,
        AX,
-       colors#8, ncv#3, pairs#64,
-       op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       op=\E[39;49m, use=klone+color,
 
 ecma+italics|ECMA-48 italics,
        ritm=\E[23m, sitm=\E[3m,
@@ -492,13 +492,12 @@ ecma+index|ECMA-48 scroll up/down,
 # For more detail on this rather pathetic standard, see the comments
 # near the end of this file.
 ibcs2|Intel Binary Compatibility Standard prescriptions,
-       cbt=\E[Z, clear=\Ec, cub=\E[%p1%dD, cub1=\E[1D,
-       cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A,
-       dch=\E[%p1%dP, dispc=\E=%p1%dg, ech=\E[%p1%dX,
-       hpa=\E[%i%p1%dG, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
-       il=\E[%p1%dL, rc=\E7, rmam=\E[?7l, sc=\E7, smam=\E[?7h,
-       tbc=\E[g, vpa=\E[%i%p1%dd, use=ecma+index,
+       cbt=\E[Z, clear=\Ec, cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C,
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[1A, dch=\E[%p1%dP,
+       dispc=\E=%p1%dg, ech=\E[%p1%dX, hpa=\E[%i%p1%dG, hts=\EH,
+       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, rc=\E7,
+       rmam=\E[?7l, sc=\E7, smam=\E[?7h, tbc=\E[g,
+       vpa=\E[%i%p1%dd, use=ansi+local, use=ecma+index,
 
 #### ANSI/ECMA-48 terminals and terminal emulators
 #
@@ -560,14 +559,12 @@ ansi-mtabs|any ANSI terminal with pessimistic assumptions (relative addressing),
 ansi77|ANSI 3.64 standard 1977 version,
        OTbs, am, mir,
        cols#80, it#8, lines#24,
-       bel=^G, clear=\E[;H\E[2J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub1=^H, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu1=\E[A, dch1=\E[P, dl1=\E[M$<5*/>, ed=\E[J, el=\E[K,
-       home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED, kbs=^H,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
-       kf2=\EOR, kf4=\EOS, khome=\E[H, nel=\r\ED, rc=\E8, ri=\EM,
-       rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, smir=\E[4h,
-       smso=\E[7m, smul=\E[4m,
+       bel=^G, clear=\E[;H\E[2J, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M$<5*/>,
+       ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED,
+       kf1=\EOP, kf2=\EOR, kf4=\EOS, nel=\r\ED, ri=\EM, rmir=\E[4l,
+       rmso=\E[m, rmul=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+       use=ansi+arrows, use=ansi+csr, use=ansi+local1,
 
 # Procomm and some other ANSI emulations don't recognize all of the ANSI-
 # standard capabilities.  This entry deletes <cuu>, <cuf>, <cud>, <cub>, and
@@ -581,13 +578,12 @@ ansi77|ANSI 3.64 standard 1977 version,
 # From: Eric S. Raymond <esr@snark.thyrsus.com> Oct 30 1995
 pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ANSI (mono mode),
        OTbs, am, mir, msgr,
-       cols#80, it#8, lines#24,
-       bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=\r, cub1=\E[D,
-       cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
-       hts=\EH, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, tbc=\E[3g,
+       cols#80, lines#24,
+       bel=^G, cr=\r, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M,
+       home=\E[H, ht=^I, il1=\E[L, ind=\n, use=ansi+arrows,
+       use=ansi+erase, use=ansi+inittabs, use=ansi+local1,
        use=klone+sgr-dumb,
+
 pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode),
        lines#25, use=pcansi-m,
 pcansi-33-m|pcansi33m|ibm-pc terminal programs with 33 lines (mono mode),
@@ -610,14 +606,12 @@ pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines,
 # From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
 ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes,
        mc5i,
-       cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
-       cuu=\E[%p1%dA, dch=\E[%p1%dP, dl=\E[%p1%dM,
-       ech=\E[%p1%dX, el1=\E[1K, hpa=\E[%i%p1%dG, ht=\E[I,
-       ich=\E[%p1%d@, il=\E[%p1%dL, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kich1=\E[L, mc4=\E[4i,
-       mc5=\E[5i, nel=\r\E[S, rep=%p1%c\E[%p2%{1}%-%db,
-       s0ds=\E(B, s1ds=\E)B, s2ds=\E*B, s3ds=\E+B, tbc=\E[3g,
-       vpa=\E[%i%p1%dd, use=ecma+index, use=pcansi-m,
+       dch=\E[%p1%dP, dl=\E[%p1%dM, ech=\E[%p1%dX, el1=\E[1K,
+       hpa=\E[%i%p1%dG, ht=\E[I, ich=\E[%p1%d@, il=\E[%p1%dL,
+       kcbt=\E[Z, kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S,
+       rep=%p1%c\E[%p2%{1}%-%db, s0ds=\E(B, s1ds=\E)B,
+       s2ds=\E*B, s3ds=\E+B, vpa=\E[%i%p1%dd, use=ansi+local,
+       use=ecma+index, use=pcansi-m,
 
 # ECMA-48 addresses three of the four capabilities here:
 #
@@ -693,12 +687,11 @@ ansi-generic|ansiterm|generic ANSI standard terminal,
 ansi.sys-old|ANSI.SYS under PC-DOS 2.0,
        OTbs, am, mir, msgr, xon,
        cols#80, lines#25,
-       clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[k, home=\E[H,
-       is2=\E[m\E[?7h, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K,
-       khome=^^, pfkey=\E[0;%p1%{58}%+%d;%p2"%s"p, rc=\E[u,
-       rmam=\E[?7l, sc=\E[s, smam=\E[?7h, use=ansi+cpr,
-       use=klone+color, use=klone+sgr8,
+       clear=\E[2J, cub1=^H, cup=\E[%i%p1%d;%p2%dH, el=\E[k,
+       home=\E[H, is2=\E[m\E[?7h, kcub1=^H, kcud1=\n, kcuf1=^L,
+       kcuu1=^K, khome=^^, pfkey=\E[0;%p1%{58}%+%d;%p2"%s"p,
+       rc=\E[u, rmam=\E[?7l, sc=\E[s, smam=\E[?7h, use=ansi+cpr,
+       use=ansi+local1, use=klone+color, use=klone+sgr8,
 
 # Keypad:      Home=\0G        Up=\0H  PrPag=\0I
 #              ka1,kh          kcuu1           kpp,ka3
@@ -721,7 +714,7 @@ ansi.sys-old|ANSI.SYS under PC-DOS 2.0,
 #
 # <pfkey> capability for F1-F48 -TD
 ansi.sys|ANSI.SYS 3.1 and later versions,
-       el=\E[K, ka1=\0G, ka3=\0I, kb2=\0L, kbs=^H, kc1=\0O, kc3=\0Q,
+       el=\E[K, ka1=\0G, ka3=\0I, kb2=\0L, kc1=\0O, kc3=\0Q,
        kcbt=\0^O, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H,
        kdch1=\0S, kend=\0O, kf1=\0;, kf10=\0D, kf11=\0\205,
        kf12=\0\206, kf13=\0T, kf14=\0U, kf15=\0V, kf16=\0W,
@@ -736,7 +729,7 @@ ansi.sys|ANSI.SYS 3.1 and later versions,
        pfkey=\E[0;%?%p1%{11}%<%t%':'%e%p1%{13}%<%t%'z'%e%p1%{23}%<
              %t%'G'%e%p1%{25}%<%t%'p'%e%p1%'#'%<%t%'E'%e%p1%'%'%<%t
              %'f'%e%p1%'/'%<%t%'C'%e%{92}%;%p1%+%d;%p2"%s"p,
-       use=ansi.sys-old,
+       use=ansi+arrows, use=ansi.sys-old,
 
 #
 # Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS.
@@ -826,41 +819,33 @@ st52-color|at-color|atari-color|atari_st-color|Atari ST with color,
        use=st52,
 st52|st52-m|at|at-m|atari|atari-m|atari_st|atarist-m|Atari ST,
        am, eo, mir, npc,
-       cols#80, it#8, lines#24,
-       bel=^G, civis=\Ef, clear=\EE, cnorm=\Ee, cr=\r, cub1=\ED,
-       cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
-       cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, el1=\Eo, home=\EH, ht=^I,
-       il1=\EL, ind=\n, is2=\Ev\Eq\Ee, kLFT=\Ed, kRIT=\Ec, kbs=^H,
-       kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=^?,
-       kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es,
-       kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf2=\EQ,
-       kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, kf6=\EU, kf7=\EV, kf8=\EW,
-       kf9=\EX, khlp=\EH, khome=\EE, kich1=\EI, knp=\Eb, kpp=\Ea,
-       kund=\EK, nel=\r\n, rc=\Ek, rev=\Ep, ri=\EI, rmso=\Eq,
-       rs2=\Ev\Eq\Ee, sc=\Ej, sgr0=\Eq, smso=\Ep,
+       civis=\Ef, clear=\EE, cnorm=\Ee, dl1=\EM, el1=\Eo, il1=\EL,
+       is2=\Ev\Eq\Ee, kLFT=\Ed, kRIT=\Ec, kdch1=^?, kf1=\EP,
+       kf10=\EY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es, kf15=\Et,
+       kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf2=\EQ, kf20=\Ey,
+       kf3=\ER, kf4=\ES, kf5=\ET, kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX,
+       khlp=\EH, khome=\EE, kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK,
+       rc=\Ek, rev=\Ep, rmso=\Eq, rs2=\Ev\Eq\Ee, sc=\Ej, sgr0=\Eq,
+       smso=\Ep, use=vt52-basic,
 tw100|Toswin VT100 window manager,
        eo, mir, msgr, xon,
        colors#8, cols#80, it#8, lines#24, pairs#64, vt#3,
        acsc=++\,\,--..00II``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxy
             yzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\Ef,
-       clear=\E[2J\E[H, cnorm=\Ee, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\EB,
-       cuf=\E[%p1%dC, cuf1=\EC, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\EA, dch1=\Ea, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I,
-       hts=\EH, ich=\E[%p1%d@, il1=\EL, ind=\n, is2=\E<\E)0, kbs=^H,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=^?,
-       kf1=\EOP, kf10=\EOY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es,
-       kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf2=\EOQ,
-       kf20=\Ey, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV,
-       kf8=\EOW, kf9=\EOX, khlp=\EH, khome=\E\EE, kich1=\EI,
-       knp=\Eb, kpp=\E\Ea, kund=\EK, ll=\E[24H, nel=\EE,
-       oc=\E[30;47m, op=\E[30;47m, rc=\E8, rev=\E[7m, ri=\EM,
-       rmacs=^O, rmcup=\E[?7h, rmir=\Ei, rmkx=\E[?1l\E>,
+       clear=\E[2J\E[H, cnorm=\Ee, cr=\r, cub1=^H, cud1=\EB,
+       cuf1=\EC, cup=\E[%i%p1%d;%p2%dH, cuu1=\EA, dch1=\Ea,
+       dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
+       el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il1=\EL,
+       ind=\n, is2=\E<\E)0, kdch1=^?, kf1=\EOP, kf10=\EOY, kf11=\Ep,
+       kf12=\Eq, kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev,
+       kf18=\Ew, kf19=\Ex, kf2=\EOQ, kf20=\Ey, kf3=\EOR, kf4=\EOS,
+       kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, khlp=\EH,
+       khome=\E\EE, kich1=\EI, knp=\Eb, kpp=\E\Ea, kund=\EK,
+       ll=\E[24H, nel=\EE, oc=\E[30;47m, op=\E[30;47m, rev=\E[7m,
+       ri=\EM, rmacs=^O, rmcup=\E[?7h, rmir=\Ei, rmkx=\E[?1l\E>,
        rmso=\E[m, rmul=\E[m,
        rs1=\E<\E[20l\E[?3;6;9l\E[r\Eq\E(B\017\E)0\E>,
-       sc=\E7,
        setb=\E[4%p1%'0'%+%Pa%?%ga%'0'%=%t0%e%ga%'1'%=%t4%e%ga%'2'%=
             %t2%e%ga%'3'%=%t6%e%ga%'4'%=%t1%e%ga%'5'%=%t5%e%ga%'6'
             %=%t3%e7%;m,
@@ -869,42 +854,38 @@ tw100|Toswin VT100 window manager,
             %=%t3%e7%;m,
        sgr0=\E[m, smacs=^N, smcup=\E[?7l, smir=\Eh,
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+       use=ansi+apparrows, use=ansi+csr, use=ansi+local,
+
 # The entries for stv52 and stv52pc probably need a revision.
 stv52|MiNT virtual console,
        am, msgr,
-       cols#80, it#8, lines#30,
-       bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE,
-       cnorm=\E. \Ee, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
-       cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.",
-       dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL,
-       ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kdch1=^?, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq,
-       kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew,
-       kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET,
-       kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE,
-       kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK, nel=\r\n$<2*/>,
-       op=\Eb@\EcO, rev=\Ep, ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_,
-       rmso=\Eq, rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_,
-       smcup=\Ev\Ee\Ez_, smso=\Ep, smul=\EyH,
+       lines#30,
+       blink=\Er, bold=\EyA, civis=\Ef, clear=\EE, cnorm=\E. \Ee,
+       cub1=^H, cvvis=\E.", dim=\Em, dl1=\EM, il1=\EL, ind=\n$<2*/>,
+       kdch1=^?, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, kf13=\Er,
+       kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex,
+       kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, kf6=\EU, kf7=\EV,
+       kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE, kich1=\EI, knp=\Eb,
+       kpp=\Ea, kund=\EK, nel=\r\n$<2*/>, op=\Eb@\EcO, rev=\Ep,
+       ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_, rmso=\Eq, rmul=\EzH,
+       rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, smcup=\Ev\Ee\Ez_, smso=\Ep,
+       smul=\EyH, use=vt52-basic,
 stv52pc|MiNT virtual console with PC charset,
        am, msgr,
-       cols#80, it#8, lines#30,
+       lines#30,
        acsc=+\257\,\256-\^.v0\333I\374`\177a\260f\370g\361h\261j
             \331k\277l\332m\300n\305o\377p-q\304r-s_t+u+v+w+x\263y
             \363z\362{\343|\366}\234~\371,
-       bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE,
-       cnorm=\E. \Ee, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
-       cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.",
-       dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL,
-       ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kdch1=^?, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq,
-       kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew,
-       kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET,
-       kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE,
-       kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK, nel=\r\n$<2*/>,
-       rev=\Ep, ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_, rmso=\Eq,
-       rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, smcup=\Ev\Ee\Ez_,
-       smso=\Ep, smul=\EyH,
+       blink=\Er, bold=\EyA, civis=\Ef, clear=\EE, cnorm=\E. \Ee,
+       cub1=^H, cvvis=\E.", dim=\Em, dl1=\EM, il1=\EL, ind=\n$<2*/>,
+       kdch1=^?, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, kf13=\Er,
+       kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex,
+       kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, kf6=\EU, kf7=\EV,
+       kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE, kich1=\EI, knp=\Eb,
+       kpp=\Ea, kund=\EK, nel=\r\n$<2*/>, rev=\Ep, ri=\EI$<2*/>,
+       rmcup=\Ev\E. \Ee\Ez_, rmso=\Eq, rmul=\EzH,
+       rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, smcup=\Ev\Ee\Ez_, smso=\Ep,
+       smul=\EyH, use=vt52-basic,
 
 # From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
 atari-old|Atari st,
@@ -912,8 +893,8 @@ atari-old|Atari st,
        cols#80, it#8, lines#25,
        clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
-       ed=\EJ, el=\EK, ht=^I, il1=\EL, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, ri=\EI, rmso=\Eq, sgr0=\Eq, smso=\Ep,
+       ed=\EJ, el=\EK, ht=^I, il1=\EL, ri=\EI, rmso=\Eq, sgr0=\Eq,
+       smso=\Ep, use=vt52+arrows,
 # UniTerm terminal program for the Atari ST:  49-line VT220 emulation mode
 # From: Paul M. Aoki <aoki@ucbvax.berkeley.edu>
 uniterm|uniterm49|UniTerm VT220 emulator with 49 lines,
@@ -943,26 +924,20 @@ st52-old|Atari ST with VT52 emulation,
 # BeOS entry for Terminal program Seems to be almost ANSI
 beterm|BeOS Terminal,
        am, eo, mir, msgr, xenl, xon,
-       colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64,
-       bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H,
-       hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[11~,
-       kf10=\E[20~, kf11=\E[21~, kf12=\E[22~, kf2=\E[12~,
-       kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[16~, kf7=\E[17~,
-       kf8=\E[18~, kf9=\E[19~, kspd=^Z, nel=\r\n, op=\E[m, rc=\E8,
-       rev=\E[7m, ri=\EM, rmir=\E[4l, rmkx=\E[?4l, rmso=\E[m,
-       rmul=\E[24m, rs1=\Ec, sc=\E7, setab=\E[4%p1%dm,
-       setaf=\E[3%p1%dm, setb=\E[%p1%{40}%+%cm,
-       setf=\E[%p1%{30}%+%cm, sgr0=\E[0;10m, smir=\E[4h,
-       smkx=\E[?4h, smso=\E[7m, smul=\E[4m,
-       u6=\E[%i%p1%d;%p2%dR, u7=\E[6n, vpa=\E[%i%p1%dd,
-       use=vt220+pcedit,
+       cols#80, it#8, lines#25, ncv#5,
+       bel=^G, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, ech=\E[%p1%dX, el1=\E[1K,
+       home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ind=\n,
+       kf1=\E[11~, kf10=\E[20~, kf11=\E[21~, kf12=\E[22~,
+       kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[16~,
+       kf7=\E[17~, kf8=\E[18~, kf9=\E[19~, khome=\E[1~, kspd=^Z,
+       nel=\r\n, op=\E[m, rev=\E[7m, ri=\EM, rmkx=\E[?4l, rmso=\E[m,
+       rmul=\E[24m, rs1=\Ec, setb=\E[%p1%{40}%+%cm,
+       setf=\E[%p1%{30}%+%cm, sgr0=\E[0;10m, smkx=\E[?4h,
+       smso=\E[7m, smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n,
+       vpa=\E[%i%p1%dd, use=ansi+arrows, use=ansi+csr,
+       use=ansi+erase, use=ansi+idc, use=ansi+idl,
+       use=ansi+local, use=klone+color, use=vt220+pcedit,
 
 #### Linux consoles
 #
@@ -998,24 +973,20 @@ linux-basic|Linux console (basic),
        acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i
             \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u
             \264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
-       bel=^G, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
-       el=\E[K, el1=\E[1K, flash=\E[?5h$<200/>\E[?5l, home=\E[H,
-       hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[[A,
+       bel=^G, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
+       dim=\E[2m, ech=\E[%p1%dX, el1=\E[1K,
+       flash=\E[?5h$<200/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
+       ht=^I, hts=\EH, ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z, kf1=\E[[A,
        kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[[B,
        kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~, kmous=\E[M, kspd=^Z, nel=\r\n,
-       rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l, rmir=\E[4l,
-       rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, sc=\E7,
+       kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kmous=\E[M, kspd=^Z,
+       nel=\r\n, ri=\EM, rmam=\E[?7l, rmso=\E[27m, rmul=\E[24m,
+       rs1=\Ec\E]R,
        sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
            %t;2%;%?%p6%t;1%;%?%p9%t;11%;m,
-       smam=\E[?7h, smir=\E[4h, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%i%p1%dd, use=vt220+pcedit, use=vt102+enq,
+       smam=\E[?7h, tbc=\E[3g, vpa=\E[%i%p1%dd, use=ansi+arrows,
+       use=ansi+csr, use=ansi+erase, use=ansi+idc, use=ansi+idl,
+       use=ansi+local, use=vt220+pcedit, use=vt102+enq,
        use=klone+sgr, use=ecma+color, use=linux+sfkeys,
 
 linux+decid|ncurses extension for Linux console DECID,
@@ -1177,36 +1148,26 @@ linux-vt|Linux console using VT codes for graphics,
 # Note: The status-line support is buggy (dsl does not work).
 kon|kon2|Kanji ON Linux console,
        am, bce, ccc, eo, eslok, hs, mir, msgr, xenl, xon,
-       colors#8, it#8, ncv#18, pairs#64,
-       acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
-            \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
-            \301w\302x\263y\363z\362{\343|\330}\234~\376,
-       bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
-       clear=\E[H\E[J, cnorm=\E[?25h, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, dsl=\E[?H\E[?E, ed=\E[J, el=\E[K, el1=\E[1K,
-       fsl=\E[?F, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       initc=\E]P%p1%x%p2%02x%p3%02x%p4%02x, invis=\E[8m,
-       kb2=\E[G, kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\E[[A,
-       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
-       kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
-       kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~,
-       kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
-       knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=\r\n, op=\E[37;40m,
-       rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, rmir=\E[4l,
-       rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, sc=\E7,
-       setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       it#8, ncv#18,
+       bel=^G, civis=\E[?25l, cnorm=\E[?25h, cr=\r, cub1=^H,
+       cud1=\n, cup=\E[%i%p1%d;%p2%dH, dim=\E[2m,
+       dsl=\E[?H\E[?E, el1=\E[1K, fsl=\E[?F, home=\E[H,
+       hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ind=\n,
+       initc=\E]P%p1%x%p2%02x%p3%02x%p4%02x, kb2=\E[G, kbs=^?,
+       kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+       kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B,
+       kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~,
+       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kspd=^Z,
+       nel=\r\n, op=\E[37;40m, ri=\EM, rmso=\E[27m, rmul=\E[24m,
+       rs1=\Ec,
        sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
            %t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
-       sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smpch=\E[11m,
-       smso=\E[7m, smul=\E[4m, tbc=\E[3g, tsl=\E[?T, u8=\E[?6c,
-       vpa=\E[%i%p1%dd, use=ansi+enq,
+       sgr0=\E[0;10m, tbc=\E[3g, tsl=\E[?T, u8=\E[?6c,
+       vpa=\E[%i%p1%dd, use=ansi+arrows, use=ansi+csr,
+       use=ansi+enq, use=ansi+erase, use=ansi+idc, use=ansi+idl,
+       use=ansi+local, use=ansi+sgrbold, use=ecma+sgr,
+       use=klone+color, use=vt220+pcedit,
 
 # release: 0.4.7 2005/05
 #
@@ -1278,15 +1239,15 @@ bterm|bogl virtual terminal,
        acsc=aajjkkllmmqqttuuxx, bold=\E[1m, clear=\E[H\E[2J,
        cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, ed=\E[J,
        el=\E[K, home=\E[H, ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[[A,
-       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
-       kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
-       kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~,
-       kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~, kmous=\E[M, kspd=^Z, nel=\r\n,
-       op=\E[49m\E[39m, rev=\E[7m, ri=\EM, rmacs=^O, rmso=\E[27m,
-       rmul=\E[24m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
-       sgr0=\E[0m, smacs=^N, smso=\E[7m, smul=\E[4m,
+       kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+       kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B,
+       kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~,
+       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~,
+       kmous=\E[M, kspd=^Z, nel=\r\n, op=\E[49m\E[39m, rev=\E[7m,
+       ri=\EM, rmacs=^O, rmso=\E[27m, rmul=\E[24m,
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m, smacs=^N,
+       smso=\E[7m, smul=\E[4m, use=ansi+arrows,
        use=vt220+pcedit, use=vt220+cvis,
 
 #### Mach
@@ -1296,17 +1257,15 @@ bterm|bogl virtual terminal,
 mach|Mach console,
        am, km, NQ,
        cols#80, it#8, lines#25,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kdch1=\E[9, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf2=\EOQ,
-       kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
-       kf9=\EOX, khome=\E[H, kich1=\E[@, kll=\E[F, knp=\E[U,
-       kpp=\E[V, rev=\E[7m, rmso=\E[0m, rmul=\E[24m, sgr0=\E[0m,
-       smso=\E[7m, smul=\E[4m,
+       bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r, cub1=^H,
+       cud1=\n, cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K,
+       home=\E[H, ht=^I, ind=\n, kbs=^?, kdch1=\E[9, kend=\E[Y,
+       kf1=\EOP, kf10=\EOY, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT,
+       kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, kich1=\E[@, kll=\E[F,
+       knp=\E[U, kpp=\E[V, rev=\E[7m, rmso=\E[0m, rmul=\E[24m,
+       sgr0=\E[0m, smso=\E[7m, smul=\E[4m, use=ansi+arrows,
+       use=ansi+idl, use=ansi+local,
+
 mach-bold|Mach console with bold instead of underline,
        rmul=\E[0m, smul=\E[1m, use=mach,
 mach-color|Mach console with ANSI color,
@@ -1364,33 +1323,28 @@ mach-gnu-color|GNU Mach console with ANSI color,
 # Reading the source, RIS resets cnorm, but not xmous.
 hurd|The GNU Hurd console server,
        am, bce, bw, eo, km, mir, msgr, xenl, xon, NQ,
-       colors#8, it#8, ncv#18, pairs#64,
+       it#8, ncv#18,
        acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
             yzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\Ec, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
-       el1=\E[1K, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG, ht=^I,
-       ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
-       invis=\E[8m, kb2=\E[G, kbs=^?, kcbt=\E[Z, kcub1=\EOD,
-       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf10=\E[21~,
+       bel=^G, cbt=\E[Z, clear=\Ec, cr=\r, cub1=^H, cvvis=\E[34l,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
+       el1=\E[1K, flash=\Eg, ht=^I, ich=\E[%p1%d@, ind=\E[S,
+       kb2=\E[G, kbs=^?, kcbt=\E[Z, kf1=\EOP, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
        kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
        kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS,
        kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       kich1=\E[2~, kmous=\E[M, kspd=^Z, nel=\r\n, op=\E[39;49m,
-       rc=\E8, rev=\E[7m, ri=\E[T, rmacs=\E[10m, rmir=\E[4l,
-       rmso=\E[27m, rmul=\E[24m, rs1=\EM\E[?1000l, sc=\E7,
-       setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       khome=\E[1~, kmous=\E[M, kspd=^Z, nel=\r\n, op=\E[39;49m,
+       ri=\E[T, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
+       rs1=\EM\E[?1000l,
        sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;
            2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
-       sgr0=\E[0m, smacs=\E[11m, smir=\E[4h, smso=\E[7m,
-       smul=\E[4m, vpa=\E[%i%p1%dd, grbom=\E[>1l, gsbom=\E[>1h,
-       use=vt220+pcedit, use=ecma+index, use=ecma+italics,
-       use=vt220+cvis,
+       smir=\E[4h, grbom=\E[>1l, gsbom=\E[>1h,
+       use=ansi+apparrows, use=ansi+csr, use=ansi+cup,
+       use=ansi+erase, use=ansi+idl, use=ansi+local,
+       use=ansi+rca2, use=ansi+sgrbold, use=vt220+pcedit,
+       use=ecma+index, use=ecma+italics, use=klone+acs,
+       use=klone+color, use=vt220+cvis,
 
 #### QNX
 #
@@ -1493,25 +1447,21 @@ qnxt2|QNX 2.15 serial terminal,
 # QNX ANSI terminal definition
 qansi-g|QNX ANSI,
        am, eslok, hs, xon,
-       colors#8, cols#80, it#8, lines#25, ncv#19, pairs#64, wsl#80,
+       colors#8, cols#80, lines#25, ncv#19, pairs#64, wsl#80,
        acsc=Oa``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[2J\E[H,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[1M, dsl=\E[r, ech=\E[%p1%dX, ed=\E[J,
-       el=\E[K, el1=\E[1K\E[X, flash=\E[?5h$<200>\E[?5l,
-       fsl=\E[?6h\E8, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L,
-       ind=\E[S, invis=\E[9m,
+       bel=^G, clear=\E[2J\E[H, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+       cup=\E[%i%p1%d;%p2%dH$<5>, cvvis=\E[?12;25h,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
+       dl1=\E[1M, dsl=\E[r, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+       el1=\E[1K\E[X, flash=\E[?5h$<200>\E[?5l, fsl=\E[?6h\E8,
+       home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[1@,
+       il=\E[%p1%dL, il1=\E[1L, ind=\E[S, invis=\E[9m,
        is2=\E>\E[?1l\E[?7h\E[0;10;39;49m, is3=\E(B\E)0,
        kBEG=\ENn, kCAN=\E[s, kCMD=\E[t, kCPY=\ENs, kCRT=\ENt,
        kDL=\ENv, kEXT=\ENw, kFND=\ENx, kHLP=\ENy, kHOM=\E[h,
        kLFT=\E[d, kNXT=\E[u, kOPT=\ENz, kPRV=\E[v, kRIT=\E[c,
-       kbs=^H, kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa,
-       kcmd=\E[G, kcpy=\E[g, kctab=\E[z, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[p, kend=\E[Y,
+       kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa, kcmd=\E[G,
+       kcpy=\E[g, kctab=\E[z, kdch1=\E[P, kdl1=\E[p, kend=\E[Y,
        kext=\E[y, kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA,
        kf13=\EOp, kf14=\EOq, kf15=\EOr, kf16=\EOs, kf17=\EOt,
        kf18=\EOu, kf19=\EOv, kf2=\EOQ, kf20=\EOw, kf21=\EOx,
@@ -1523,13 +1473,13 @@ qansi-g|QNX ANSI,
        kf42=\E[22~, kf43=\E[23~, kf44=\E[24~, kf45=\E[25~,
        kf46=\E[26~, kf47=\E[27~, kf48=\E[28~, kf5=\EOT, kf6=\EOU,
        kf7=\EOV, kf8=\EOW, kf9=\EOX, kfnd=\ENf, khlp=\ENh,
-       khome=\E[H, khts=\ENb, kich1=\E[@, kil1=\E[`, kind=\E[a,
-       kmov=\ENi, kmrk=\ENm, kmsg=\ENe, knp=\E[U, kopn=\ENo,
-       kopt=\ENk, kpp=\E[V, kref=\ENl, kres=\ENp, krfr=\ENg,
-       kri=\E[b, krpl=\ENr, krst=\ENj, ksav=\ENq, kslt=\E[T,
-       ktbc=\ENd, kund=\ENu, ll=\E[99H, nel=\EE, op=\E[39;49m,
-       rev=\E[7m, ri=\E[T, rmacs=^O, rmam=\E[?7l, rmso=\E[27m,
-       rmul=\E[24m, rs1=\017\E[?7h\E[0;39;49m$<2>\E>\E[?1l,
+       khts=\ENb, kich1=\E[@, kil1=\E[`, kind=\E[a, kmov=\ENi,
+       kmrk=\ENm, kmsg=\ENe, knp=\E[U, kopn=\ENo, kopt=\ENk,
+       kpp=\E[V, kref=\ENl, kres=\ENp, krfr=\ENg, kri=\E[b,
+       krpl=\ENr, krst=\ENj, ksav=\ENq, kslt=\E[T, ktbc=\ENd,
+       kund=\ENu, ll=\E[99H, nel=\EE, op=\E[39;49m, ri=\E[T,
+       rmacs=^O, rmam=\E[?7l, rmso=\E[27m, rmul=\E[24m,
+       rs1=\017\E[?7h\E[0;39;49m$<2>\E>\E[?1l,
        rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
@@ -1537,10 +1487,11 @@ qansi-g|QNX ANSI,
             %=%t3%e%p1%d%;m,
        sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
            %|%t;7%;%?%p7%t;9%;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g,
-       tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH, use=decid+cpr,
-       use=ansi+rep, use=att610+cvis0, use=ecma+index,
+       sgr0=\E[m\017, smacs=^N, smam=\E[?7h,
+       tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH, use=ansi+arrows,
+       use=ansi+local, use=ansi+rep, use=ansi+inittabs,
+       use=ansi+sgrbold, use=att610+cvis0, use=decid+cpr,
+       use=ecma+index,
 #
 qansi|QNX ANSI with console writes,
        daisy, xhpa, use=qansi-g,
@@ -1596,29 +1547,27 @@ scoansi-old|SCO Extended ANSI standard crt (5.0.5),
             yszr{c}\034~\207,
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
        civis=\E[=14;12C, clear=\E[H\E[2J, cnorm=\E[=10;12C,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[=0;12C, dch=\E[%p1%dP,
-       dch1=\E[P, dispc=\E[=%p1%dg, dl=\E[%p1%dM, dl1=\E[M,
-       ed=\E[m\E[J, el=\E[m\E[K, el1=\E[1K, home=\E[H, ht=^I,
-       hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
-       ind=\E[S, invis=\E[8m, kbeg=\E[E, kbs=^H, kcbt=\E[Z,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?,
-       kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X,
-       kf13=\E[Y, kf15=\E[a, kf16=\E[b, kf17=\E[c, kf18=\E[d,
-       kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g, kf22=\E[h,
-       kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l, kf27=\E[m,
-       kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p, kf31=\E[q,
-       kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u, kf36=\E[v,
-       kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P, kf40=\E[z,
-       kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[], kf45=\E[\^,
-       kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q, kf6=\E[R,
-       kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H, kich1=\E[L,
+       cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[=0;12C,
+       dch=\E[%p1%dP, dch1=\E[P, dispc=\E[=%p1%dg, ed=\E[m\E[J,
+       el=\E[m\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH,
+       ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, invis=\E[8m, kbeg=\E[E,
+       kcbt=\E[Z, kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V,
+       kf11=\E[W, kf12=\E[X, kf13=\E[Y, kf15=\E[a, kf16=\E[b,
+       kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f,
+       kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k,
+       kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O,
+       kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t,
+       kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y,
+       kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\,
+       kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{,
+       kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, kich1=\E[L,
        knp=\E[G, kpp=\E[I, op=\E[0;37;40m, rc=\E8, rev=\E[7m,
        ri=\E[T, rmacs=\E[10m, rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
        sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
        sgr0=\E[0;10m, smacs=\E[12m, smam=\E[?7h, smso=\E[7m,
-       smul=\E[4m, use=ecma+index,
+       smul=\E[4m, use=ansi+arrows, use=ansi+idl,
+       use=ansi+local, use=ecma+index,
+
 scoansi-new|SCO Extended ANSI standard crt (5.0.6),
        km,
        civis=\E[=0c, cnorm=\E[=1c, csr=\E[%i%p1%d;%p2%dr,
@@ -1675,36 +1624,33 @@ iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100),
        am,
        cols#80, it#8, lines#40,
        bel=^G, bold=\E[1m, clear=\E[H\E[2J,
-       cnorm=\E[9/y\E[12/y\E[=6l, cr=\r, cub=\E[%p1%dD,
-       cub1=\E[D, cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
-       cuu1=\E[A, cvvis=\E[10/y\E[=1h\E[=2l\E[=6h,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
-       home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+       cnorm=\E[9/y\E[12/y\E[=6l, cr=\r, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH,
+       cvvis=\E[10/y\E[=1h\E[=2l\E[=6h, ed=\E[J, el=\E[K,
+       el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=\ED,
        is2=\E[?1l\E>\E[?7h\E[100g\E[0m\E7\E[r\E8, kDC=\E[P,
        kEND=\E[147q, kHOM=\E[143q, kLFT=\E[158q, kPRT=\E[210q,
-       kRIT=\E[167q, kSPD=\E[218q, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, kend=\E[146q,
-       kent=\r, kf1=\E[001q, kf10=\E[010q, kf11=\E[011q,
-       kf12=\E[012q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q,
-       kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
-       kf9=\E[009q, khome=\E[H, kich1=\E[139q, knp=\E[154q,
+       kRIT=\E[167q, kSPD=\E[218q, kcbt=\E[Z, kdch1=^?,
+       kend=\E[146q, kent=\r, kf1=\E[001q, kf10=\E[010q,
+       kf11=\E[011q, kf12=\E[012q, kf2=\E[002q, kf3=\E[003q,
+       kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
+       kf8=\E[008q, kf9=\E[009q, kich1=\E[139q, knp=\E[154q,
        kpp=\E[150q, kprt=\E[209q, krmir=\E[146q, kspd=\E[217q,
        nel=\EE, pfkey=\EP101;%p1%d.y%p2%s\E\\, rc=\E8,
        rev=\E[7m, ri=\EM, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sc=\E7,
        sgr0=\E[m, smam=\E[?7h, smso=\E[1;7m, smul=\E[4m,
-       tbc=\E[3g,
+       tbc=\E[3g, use=ansi+arrows, use=ansi+idl, use=ansi+local,
+
 iris-ansi-ap|IRIS ANSI in application-keypad mode,
-       is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q,
-       kf11=\E[011q, kf12=\E[012q, kf9=\E[009q, use=iris-ansi,
+       is2=\E[?1l\E=\E[?7h, kent=\EOM, use=iris-ansi,
 
 # From the man-page, this is a quasi-vt100 emulator that runs on SGI's IRIX
 # (T.Dickey 98/1/24)
 iris-color|xwsh|IRIX ANSI with color,
        ncv#33,
        csr=\E[%i%p1%d;%p2%dr, dch=\E[%p1%dP, dim=\E[2m,
-       ech=\E[%p1%dX, ich=\E[%p1%d@, rc=\E8, rmul=\E[24m, rs1=\Ec,
-       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+       ech=\E[%p1%dX, ich=\E[%p1%d@, rmul=\E[24m, rs1=\Ec,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        use=ecma+italics, use=vt100+enq, use=klone+color,
        use=iris-ansi-ap,
 
@@ -1730,15 +1676,14 @@ iris-color|xwsh|IRIX ANSI with color,
 #              CSI ? 5 h Reverse Video (DECSCNM).
 #
 pccon+keys|OpenBSD PC keyboard keys,
-       kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kdch1=\E[3~, kend=\E[8~, kent=\r, kf1=\E[11~, kf10=\E[21~,
+       kbs=^?, kend=\E[8~, kent=\r, kf1=\E[11~, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
        kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
        kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf21=\E[35~,
        kf22=\E[36~, kf23=\E[37~, kf24=\E[38~, kf3=\E[13~,
        kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
-       kf9=\E[20~, khome=\E[7~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
-       krfr=^R,
+       kf9=\E[20~, khome=\E[7~, krfr=^R, use=ansi+arrows,
+       use=vt220+pcedit,
 pccon+sgr+acs0|sgr and simple ASCII pseudographics for OpenBSD PC console,
        acsc=+>\,<-\^.v0#`+a:f\\h#i#j+k+l+m+n+o~p-q-r-s_t+u+v+w+x|y#
             z#{*|!}#~o,
@@ -1754,8 +1699,8 @@ pccon+sgr+acs|sgr and default ASCII pseudographics for OpenBSD PC console,
 # underline renders as color
 pccon+colors|ANSI colors for OpenBSD PC console,
        bce,
-       colors#8, ncv#2, pairs#64,
-       op=\E[49;39m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       ncv#2,
+       op=\E[49;39m, use=klone+color,
 # OpenBSD uses wscons,
 # + which does not implement DECSCNM or anything comparable, so it does not
 #   support flash.
@@ -1763,15 +1708,13 @@ pccon+colors|ANSI colors for OpenBSD PC console,
 pccon+base|base capabilities for OpenBSD PC console,
        am, km, mc5i, msgr, npc, nxon, xenl, xon,
        cols#80, it#8, lines#24,
-       bel=^G, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
-       el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\ED, nel=\EE, rc=\E8, ri=\EM,
-       rmam=\E[?7l, rmul=\E[24m, rs2=\Ec, sc=\E7, smam=\E[?7h,
-       smul=\E[4m, tbc=\E[3g, use=ansi+cpr,
+       bel=^G, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
+       dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, el1=\E[1K,
+       home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED, nel=\EE,
+       ri=\EM, rmam=\E[?7l, rmul=\E[24m, rs2=\Ec, smam=\E[?7h,
+       smul=\E[4m, tbc=\E[3g, use=ansi+cpr, use=ansi+csr,
+       use=ansi+erase, use=ansi+idl, use=ansi+local,
+
 pccon0-m|OpenBSD PC console without colors & with simple ASCII pseudographics,
        use=pccon+sgr+acs0, use=pccon+base, use=pccon+keys,
 pccon0|OpenBSD PC console with simple ASCII pseudographics,
@@ -1800,25 +1743,22 @@ pcvtXX|pcvt VT200 emulator (DEC VT220),
        it#8, vt#3,
        acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
             yzz~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\ED,
+       bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED,
        is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^?,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kdch1=\E[3~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~,
        kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
        khome=\E[1~, kich1=\E[2~, kll=\E[4~, knp=\E[6~, kpp=\E[5~,
-       nel=\EE, rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100,
-       ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
-       rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
-       rs1=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
-       sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       use=decid+cpr, use=ecma+index, use=vt220+cvis,
+       nel=\EE, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM,
+       rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
+       rmso=\E[27m, rmul=\E[24m,
+       rs1=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m,
+       smacs=\E(0, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=,
+       smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+apparrows,
+       use=ansi+csr, use=ansi+erase, use=ansi+idl,
+       use=ansi+local, use=decid+cpr, use=ecma+index,
+       use=vt220+cvis,
 
 #      NetBSD/FreeBSD VT220 terminal emulator console (pc keyboard & monitor)
 #      termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
@@ -1880,28 +1820,21 @@ pcvt25-color|DEC VT220 emulation with 25 lines and color,
 # modified codes for setf/setb to setaf/setab, then to klone+color, corrected
 # typo in invis - TD
 arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480),
-       am, bce, msgr, xenl, xon,
-       cols#80, it#8, lines#30,
+       bce, xenl, xon,
+       lines#30,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
-       clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C$<2>,
-       cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
-       cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
-       enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n,
-       invis=\E[8m$<2>, ka1=\E[q, ka3=\E[s, kb2=\E[r, kbs=^H,
-       kc1=\E[p, kc3=\E[n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kent=\E[M, kf0=\E[y, kf1=\E[P, kf10=\E[x,
-       kf2=\E[Q, kf3=\E[R, kf4=\E[S, kf5=\E[t, kf6=\E[u, kf7=\E[v,
-       kf8=\E[l, kf9=\E[w, rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>,
+       blink=\E[5m$<2>, bold=\E[1m$<2>, cub1=^H, cud1=\n,
+       cuf1=\E[C$<2>, cuu1=\E[A$<2>, invis=\E[8m$<2>, ka1=\E[q,
+       ka3=\E[s, kb2=\E[r, kc1=\E[p, kc3=\E[n, kent=\E[M, kf0=\E[y,
+       kf1=\E[P, kf10=\E[x, kf2=\E[Q, kf3=\E[R, kf4=\E[S, kf5=\E[t,
+       kf6=\E[u, kf7=\E[v, kf8=\E[l, kf9=\E[w, rev=\E[7m$<2>,
        rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>,
-       rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
-       sc=\E7,
+       rmul=\E[m$<2>,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<2>,
        sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
-       smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, use=ecma+sgr,
+       smso=\E[7m$<2>, smul=\E[4m$<2>, use=ansi+csr,
+       use=ansi+local, use=ecma+sgr, use=vt100+4bsd,
        use=klone+color,
 
 arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768),
@@ -1912,7 +1845,7 @@ arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768),
 # From Minoura Makoto <minoura@netlaputa.or.jp>, 12 May 1996
 x68k|x68k-ite|NetBSD/x68k ITE,
        cols#96, lines#32,
-       kclr=\E[9~, khlp=\E[28~, use=vt220-base,
+       kbs=^?, kclr=\E[9~, khlp=\E[28~, use=vt220-base,
 
 # <tv@pobox.com>:
 # Entry for the DNARD OpenFirmware console, close to ANSI but not quite.
@@ -1938,8 +1871,9 @@ ofcons|DNARD OpenFirmware console,
        sgr0=\2330m, smso=\2337m, smul=\2334m,
 
 # NetBSD "wscons" emulator in VT220 mode.
-# This entry is based on the NetBSD termcap entry, correcting the ncv value.
-# The emulator renders underlined text in red.  Colors are otherwise usable.
+# This entry is based on the NetBSD termcap entry.  The emulator renders
+# underlined text in red.  Colors are otherwise usable.  NetBSD developers
+# prefer to not specify the corresponding ncv value.
 #
 # Testing the emulator and reading the source code (NetBSD 2.0), it appears
 # that "vt220" is inaccurate.  There are a few VT220-features, but most of the
@@ -1950,13 +1884,12 @@ ofcons|DNARD OpenFirmware console,
 # the level of detail in a termcap, it is a passable emulator, since ECH does
 # work.  Don't use it on a VMS system -TD
 wsvt25|NetBSD wscons in 25 line DEC VT220 mode,
-       bce, msgr,
-       colors#8, cols#80, it#8, lines#25, ncv#2, pairs#64,
+       bce,
+       colors#8, lines#25, pairs#64,
        is2=\E[r\E[25;1H, kdch1=\E[3~, kend=\E[8~, kf1=\E[11~,
-       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~,
-       kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~, khome=\E[7~, op=\E[m, rs1=\Ec,
-       setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=vt220,
+       kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~,
+       khome=\E[7~, op=\E[m, rs1=\Ec, setab=\E[4%p1%dm,
+       setaf=\E[3%p1%dm, use=vt220,
 
 wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta,
        km, use=wsvt25,
@@ -2015,22 +1948,18 @@ rcons-color|BSD rasterconsole with ANSI color,
 mgterm|MGL/MGL2 MobileGear Graphic Library,
        OTbs, OTpt, am, bce, bw, eo, km, msgr, npc,
        colors#8, cols#80, it#8, lines#18, pairs#64,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, dl=\E[%p1%dM,
-       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
-       home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
-       ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kb2=\E[E,
-       kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V,
-       kf11=\E[W, kf12=\E[X, kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q,
-       kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H,
-       kich1=\E[L, knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rc=\E8,
-       rev=\E[7m, ri=\E[T, rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7,
-       setb=\E[4%p1%dm, setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m,
-       vpa=\E[%i%p1%dd, use=ecma+index,
+       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       dim=\E[30;1m, ech=\E[%p1%dX, el1=\E[1K, home=\E[H,
+       hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, ich1=\E[@, ind=\E[S,
+       kb2=\E[E, kcbt=\E[Z, kdch1=^?, kend=\E[F, kf1=\E[M,
+       kf10=\E[V, kf11=\E[W, kf12=\E[X, kf2=\E[N, kf3=\E[O,
+       kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U,
+       kich1=\E[L, knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rev=\E[7m,
+       ri=\E[T, rmso=\E[m, rs2=\E[x\E[m\Ec, setb=\E[4%p1%dm,
+       setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd,
+       use=ansi+arrows, use=ansi+csr, use=ansi+erase,
+       use=ansi+idl, use=ansi+local, use=ecma+index,
 
 #### FreeBSD console entries
 
@@ -2066,33 +1995,30 @@ mgterm|MGL/MGL2 MobileGear Graphic Library,
 #      F37-F48 are shift+control F1-F12
 cons25w|ansiw|ansi80x25-raw|FreeBSD console (25-line raw mode),
        am, bce, bw, eo, msgr, npc,
-       colors#8, cols#80, it#8, lines#25, ncv#21, pairs#64,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cnorm=\E[=0C, cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
-       cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m,
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+       cols#80, it#8, lines#25, ncv#21,
+       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, cnorm=\E[=0C,
+       cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[=1C,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, ech=\E[%p1%dX,
        home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
-       ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kb2=\E[E,
-       kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V,
-       kf11=\E[W, kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a,
-       kf16=\E[b, kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N,
-       kf20=\E[f, kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j,
-       kf25=\E[k, kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o,
-       kf3=\E[O, kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s,
-       kf34=\E[t, kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x,
-       kf39=\E[y, kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[,
-       kf43=\E[\\, kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`,
-       kf48=\E[{, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U,
-       khome=\E[H, kich1=\E[L, knp=\E[G, kpp=\E[I, nel=\E[E,
-       op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T, rmso=\E[m,
-       rs2=\E[x\E[m\Ec, sc=\E7, setab=\E[4%p1%dm,
-       setaf=\E[3%p1%dm,
+       ich1=\E[@, ind=\E[S, kb2=\E[E, kcbt=\E[Z, kdch1=^?,
+       kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X,
+       kf13=\E[Y, kf14=\E[Z, kf15=\E[a, kf16=\E[b, kf17=\E[c,
+       kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f, kf21=\E[g,
+       kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k, kf26=\E[l,
+       kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O, kf30=\E[p,
+       kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t, kf35=\E[u,
+       kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y, kf4=\E[P,
+       kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\, kf44=\E[],
+       kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{, kf5=\E[Q,
+       kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, kich1=\E[L, knp=\E[G,
+       kpp=\E[I, nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T,
+       rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7,
        sgr=\E[0%?%p1%t;2;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;30;1%;%?
            %p6%t;1%;m,
-       sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd, use=ecma+index,
+       sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd, use=ansi+arrows,
+       use=ansi+erase, use=ansi+idl, use=ansi+local,
+       use=ecma+index, use=klone+color,
+
 cons25|ansis|ansi80x25|FreeBSD console (25-line ANSI mode),
        acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l
             \332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~
@@ -2253,33 +2179,31 @@ teken-2018|teken as of 2018,
        bw@, mir, xenl, NQ,
        acsc=0\333a\260f\370g\361h\261j\331k\277l\332m\300n\305q
             \304t\303u\264v\301w\302x\263y\363z\362~\371,
-       cvvis@, hpa=\E[%i%p1%dG, hts=\EH, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[F, kent=\r,
+       cvvis@, hpa=\E[%i%p1%dG, hts=\EH, kdch1=\E[3~, kent=\r,
        kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ,
        kf3=\EOR, kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~, khome=\E[H, kich1=\E[2~, knp=\E[6~,
-       kpp=\E[5~, rmir=\E[4l, smir=\E[4h, tbc=\E[3g,
-       vpa=\E[%i%p1%dd, use=vt220+cvis, use=cons25,
+       kf8=\E[19~, kf9=\E[20~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+       rmir=\E[4l, smir=\E[4h, tbc=\E[3g, use=vt220+cvis,
+       use=cons25,
 
 teken-2022|teken as of 2022,
        am, bce, eo, mir, msgr, npc, NQ,
-       colors#8, cols#80, it#8, lines#25, ncv#21, pairs#64, U8#1,
+       cols#80, it#8, lines#25, ncv#21, U8#1,
        bold=\E[1m, cr=\r, cub1=^H, dim=\E[30;1m, ech=\E[%p1%dX,
-       ind=\E[S, kbs=^H, kent=\r, nel=\E[E, op=\E[x, rev=\E[7m,
-       ri=\E[T, rmso=\E[27m, rs2=\E[x\E[m\Ec, setab=\E[4%p1%dm,
-       setaf=\E[3%p1%dm,
+       ind=\E[S, kent=\r, nel=\E[E, op=\E[x, rev=\E[7m, ri=\E[T,
+       rmso=\E[27m, rs2=\E[x\E[m\Ec,
        sgr=\E[0%?%p1%t;2;7%;%?%p3%t;7%;%?%p5%t;30;1%;%?%p6%t;1%;m,
        sgr0=\E[m, use=vt220+cvis, use=ecma+index,
        use=ansi+arrows, use=ansi+csr, use=ansi+cup,
        use=ansi+erase, use=ansi+idc, use=ansi+idl,
        use=ansi+local, use=ansi+rca2, use=ansi+sgrso,
-       use=ansi+tabs,
+       use=ansi+tabs, use=klone+color,
 
 teken-vt+fkeys|teken's xterm special keys,
-       kdch1=\E[3~, kend=\E[F, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
-       kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~,
-       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
-       kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+       kend=\E[F, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+       kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~, kf6=\E[17~,
+       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
+       use=vt220+pcedit,
 
 teken-sc+fkeys|teken's syscons special keys,
        kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W,
@@ -2308,21 +2232,20 @@ origpc3|origibmpc3|IBM PC 386BSD console,
        cols#80, lines#25,
        acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
             \263,
-       bold=\E[7m, clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K,
-       home=\E[H, ind=\E[S, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, khome=\E[Y, ri=\E[T, rmso=\E[1;0x\E[2;7x,
-       rmul=\E[1;0x\E[2;7x, sgr0=\E[m\E[1;0x\E[2;7x,
-       smso=\E[1;7x\E[2;0x, smul=\E[1;7x\E[2;0x,
+       bold=\E[7m, clear=\Ec, cub1=^H, cup=\E[%i%p1%2d;%p2%2dH,
+       ed=\E[J, el=\E[K, home=\E[H, ind=\E[S, kcub1=\E[D,
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[Y, ri=\E[T,
+       rmso=\E[1;0x\E[2;7x, rmul=\E[1;0x\E[2;7x,
+       sgr0=\E[m\E[1;0x\E[2;7x, smso=\E[1;7x\E[2;0x,
+       smul=\E[1;7x\E[2;0x, use=ansi+local1,
 
 # description of BSD/386 console emulator in version 1.0 (supplied by BSDI)
 oldpc3|oldibmpc3|old IBM PC BSD/386 console,
        OTbs, km,
        lines#25,
        bel=^G, bold=\E[=15F, cr=\r, cud1=\n, dim=\E[=8F, dl1=\E[M,
-       ht=^I, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, kll=\E[F,
-       knp=\E[G, kpp=\E[I, nel=\r\n, sgr0=\E[=R,
+       ht=^I, il1=\E[L, ind=\n, kich1=\E[L, kll=\E[F, knp=\E[G,
+       kpp=\E[I, nel=\r\n, sgr0=\E[=R, use=ansi+arrows,
 
 # Description of BSD/OS console emulator in version 1.1, 2.0, 2.1
 # Note, the emulator supports many of the additional console features
@@ -2343,15 +2266,13 @@ bsdos-pc-nobold|BSD/OS PC console w/o bold,
 bsdos-pc-m|bsdos-pc-mono|BSD/OS PC console mono,
        OTbs, am, eo, km, xon,
        cols#80, it#8, lines#25,
-       bel=^G, clear=\Ec, cr=\r, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L,
-       kll=\E[F, knp=\E[G, kpp=\E[I, nel=\r\n, rc=\E8, sc=\E7,
+       bel=^G, clear=\Ec, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+       ind=\n, kich1=\E[L, kll=\E[F, knp=\E[G, kpp=\E[I, nel=\r\n,
+       rc=\E8, sc=\E7,
        sgr=\E[0;10%?%p1%t;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7
            %t;8%;%?%p9%t;11%;m%?%p5%t\E[=8F%;,
+       use=ansi+arrows, use=ansi+idl, use=ansi+local,
        use=klone+sgr8,
 
 # Old names for BSD/OS PC console used in releases before 4.1.
@@ -2388,11 +2309,9 @@ bsdos-ppc|PowerPC BSD/OS console,
 # that VT52 does not support line-drawing characters (the scan-X values refer
 # to a crude plotting feature) -TD
 vt52|DEC VT52,
-       OTbs,
-       it#8, lines#24,
-       acsc=+h.k0affggolpnqprrss, home=\EH, kbs=^H, nel=\r\n,
-       ri=\EI, rmacs=\EG, rmkx=\E>, smacs=\EF, smkx=\E=, u8=\E/[KL],
-       use=vt50h,
+       lines#24,
+       acsc=+h.k0affggolpnqprrss, rmacs=\EG, rmkx=\E>,
+       smacs=\EF, smkx=\E=, u8=\E/[KL], use=vt50h, use=vt52-basic,
 
 # This is more likely the "vt52" that you would see in emulation, i.e., no
 # keypad, no graphics.
@@ -2400,8 +2319,11 @@ vt52-basic|VT52 for emulators,
        cols#80, it#8, lines#24,
        bel=^G, clear=\EH\EJ, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK,
-       home=\EH, ht=^I, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, nel=\r\n, ri=\EI,
+       home=\EH, ht=^I, ind=\n, kbs=^H, nel=\r\n, ri=\EI,
+       use=vt52+arrows,
+
+vt52+arrows|cursor keys for VT52,
+       kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
 
 #### DEC VT100 and compatibles
 #
@@ -2545,9 +2467,8 @@ vt100+fnkeys|DEC VT100 numeric keypad (kf0-kf10),
 #  |___________________|_________|_kent_@8_|
 #
 vt220+keypad|DEC VT220 numeric keypad,
-       ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, kent=\EOM,
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, ka2=\EOx, kb1=\EOt,
-       kb3=\EOv, kc2=\EOr,
+       ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, ka2=\EOx,
+       kb1=\EOt, kb3=\EOv, kc2=\EOr, use=vt100+pfkeys,
 #
 vt100+enq|ncurses extension for VT100-style ENQ,
        u8=\E[?1;2c, use=ansi+enq,
@@ -2589,25 +2510,24 @@ vt102+enq|ncurses extension for VT102-style ENQ,
 #
 # (vt100: I added <rmam>/<smam> based on the init string, also <OTbs>. -- esr)
 vt100|vt100-am|DEC VT100 (w/advanced video),
-       OTbs, mc5i, xenl, xon,
+       OTbs, xenl, xon,
        vt#3,
-       csr=\E[%i%p1%d;%p2%dr, kcub1=\EOD, kcud1=\EOB,
-       kcuf1=\EOC, kcuu1=\EOA, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
-       mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rmam=\E[?7l,
+       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, lf1=pf1,
+       lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[0i, rmam=\E[?7l,
        rmkx=\E[?1l\E>, rs2=\E<\E>\E[?3;4;5l\E[?7;8h\E[r,
-       sc=\E7,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;m%?%p9%t\016%e\017%;$<2>,
        smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m$<2>,
-       use=decid+cpr, use=vt100+4bsd, use=vt100+fnkeys,
+       use=ansi+csr, use=ansi+pp, use=decid+cpr, use=vt100+4bsd,
+       use=vt100+fnkeys,
+
 vt100+4bsd|DEC VT100 from 4.0BSD,
        am, msgr,
        cols#80, it#8, lines#24,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
-       clear=\E[H\E[J$<50>, cr=\r, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C$<2>,
-       cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
+       clear=\E[H\E[J$<50>, cr=\r, cub1=^H, cud1=\n,
+       cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>,
        cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
        enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H,
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
@@ -2616,7 +2536,8 @@ vt100+4bsd|DEC VT100 from 4.0BSD,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;m%?%p9%t\016%e\017%;$<2>,
        sgr0=\E[m\017$<2>, smacs=^N, smso=\E[1;7m$<2>,
-       smul=\E[4m$<2>, tbc=\E[3g,
+       smul=\E[4m$<2>, tbc=\E[3g, use=ansi+local,
+
 vt100nam|vt100-nam|VT100 no automargins,
        am@, xenl@,
        rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt100-am,
@@ -2690,18 +2611,17 @@ vt131|DEC VT131,
        OTbs, am, xenl,
        cols#80, it#8, lines#24, vt#3,
        bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
-       clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub1=^H, cud1=\n, cuf1=\E[C$<2/>,
-       cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
-       ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I,
-       is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB,
-       kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
-       kf4=\EOS, nel=\r\n, rc=\E8, rev=\E[7m$<2/>, ri=\EM$<5/>,
+       clear=\E[;H\E[2J$<50/>, cr=\r, cub1=^H, cud1=\n,
+       cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
+       cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
+       ht=^I, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD,
+       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ,
+       kf3=\EOR, kf4=\EOS, nel=\r\n, rev=\E[7m$<2/>, ri=\EM$<5/>,
        rmam=\E[?7h, rmkx=\E[?1l\E>, rmso=\E[m$<2/>,
        rmul=\E[m$<2/>,
-       rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+       rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        sgr0=\E[m$<2/>, smam=\E[?7h, smkx=\E[?1h\E=,
-       smso=\E[7m$<2/>, smul=\E[4m$<2/>,
+       smso=\E[7m$<2/>, smul=\E[4m$<2/>, use=ansi+csr,
 
 # vt132 - like vt100 but slower and has ins/del line and such.
 # I'm told that <smir>/<rmir> are backwards in the terminal from the
@@ -2726,23 +2646,23 @@ vt220-old|vt200-old|DEC VT220 in VT100 emulation mode,
        OTnl=\n,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
-       clear=\E[H\E[2J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P,
-       dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
-       if=/usr/share/tabset/vt100, il1=\E[L, ind=\ED$<20/>,
-       is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[29~, kf2=\EOQ,
+       clear=\E[H\E[2J$<50>, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH$<10>, dch1=\E[P, ed=\E[J$<50>,
+       el=\E[K$<3>, home=\E[H, ht=^I,
+       if=/usr/share/tabset/vt100, ind=\ED$<20/>,
+       is2=\E[1;24r\E[24;1H, kf1=\EOP, kf10=\E[29~, kf2=\EOQ,
        kf3=\EOR, kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~,
-       kf8=\E[20~, kf9=\E[21~, kich1=\E[2~, rc=\E8, rev=\E[7m$<2>,
-       rf=/usr/share/tabset/vt100, ri=\EM$<14/>,
-       rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m,
-       rmul=\E[24m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
-       sc=\E7,
+       kf8=\E[20~, kf9=\E[21~, khome=\E[1~, kich1=\E[2~,
+       rev=\E[7m$<2>, rf=/usr/share/tabset/vt100,
+       ri=\EM$<14/>, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
+       rmso=\E[27m, rmul=\E[24m,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
            %p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
-       smso=\E[7m, smul=\E[4m, use=vt220+pcedit, use=vt220+cvis,
+       smso=\E[7m, smul=\E[4m, use=ansi+arrows, use=ansi+csr,
+       use=ansi+idl1, use=ansi+local1, use=vt220+pcedit,
+       use=vt220+cvis,
 
 # Here's a picture of the Sun/PC editing keypad:
 #      +--------+--------+--------+
@@ -2785,29 +2705,26 @@ vt220-base|DEC VT220 as emulated,
        OTbs, am, mir, msgr, xenl, xon,
        cols#80, it#8, lines#24, vt#3,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
-       flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, if=/usr/share/tabset/vt100,
-       il=\E[%p1%dL, il1=\E[L, ind=\ED,
+       bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
+       dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, el1=\E[1K,
+       enacs=\E)0, flash=\E[?5h$<200/>\E[?5l, ht=^I, hts=\EH,
+       ich=\E[%p1%d@, if=/usr/share/tabset/vt100, ind=\ED,
        is2=\E[?7h\E[>\E[?1l\E F\E[?4l, kbs=^H, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf1=\EOP,
-       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
-       kf14=\E[26~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
-       kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
-       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khlp=\E[28~,
-       krdo=\E[29~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, nel=\EE,
-       rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l,
-       rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, rs1=\E[?3l, sc=\E7,
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[21~,
+       kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
+       kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~,
+       kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, krdo=\E[29~, lf1=pf1,
+       lf2=pf2, lf3=pf3, lf4=pf4, nel=\EE, rev=\E[7m, ri=\EM,
+       rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m,
+       rmul=\E[24m, rs1=\E[?3l,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
            %p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
-       smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt220+vtedit,
-       use=ansi+pp, use=ansi+enq,
+       smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+csr,
+       use=ansi+cup, use=ansi+pp, use=ansi+enq, use=ansi+erase,
+       use=ansi+idl, use=ansi+local, use=vt220+vtedit,
+
 vt220|vt200|DEC VT220,
        use=vt220+cvis, use=vt220-base,
 vt220-w|vt200-w|DEC VT220 in wide mode,
@@ -2879,19 +2796,18 @@ vt220-nam|v200-nam|VT220 in VT100 mode with no auto margins,
 vt200-js|vt220-js|DEC VT200 series with jump scroll,
        am, msgr,
        cols#80,
-       bel=^G, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
-       ht=^I, il1=\E[L, ind=\ED,
+       bel=^G, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+       home=\E[H, ht=^I, il1=\E[L, ind=\ED,
        is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1h\E[?5l\E[?6l\E[?7h\E[?8h\E[
            ?25h\E>\E[m,
        kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED, rc=\E8,
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED,
        rf=/usr/share/tabset/vt100, ri=\EM, rmdc=, rmir=\E[4l,
        rmkx=\E[?1l\E>, rmso=\E[27m$<5/>, rmul=\E[24m,
-       rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, smdc=,
+       rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, smdc=,
        smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m,
-       use=vt220+cvis,
+       use=ansi+csr, use=ansi+erase, use=vt220+cvis,
 
 # This was DEC's VT320.  Use the purpose-built one below instead
 #vt320|DEC VT320 in VT100 emulation mode,
@@ -2922,31 +2838,28 @@ vt320|vt300|DEC VT320 7 bit terminal,
        cols#80, lines#24, wsl#80,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I,
-       hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
+       dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+       home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ind=\ED,
        is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
-       kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~,
+       kbs=^?, kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~,
        kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
        kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
        kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
        kf9=\E[20~, khome=\E[1~, kich1=\E[2~, knp=\E[6~, knxt=^I,
-       kpp=\E[5~, kprv=\E[Z, kslt=\E[4~, nel=\EE, rc=\E8, rev=\E[7m,
+       kpp=\E[5~, kprv=\E[Z, kslt=\E[4~, nel=\EE, rev=\E[7m,
        rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
        rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
        rmul=\E[m,
        rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
-       sc=\E7,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
            %p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       use=dec+pp, use=vt220+cvis, use=vt220+keypad, use=dec+sl,
-       use=ansi+enq,
+       use=ansi+apparrows, use=ansi+csr, use=ansi+enq,
+       use=ansi+idl, use=ansi+local, use=dec+pp, use=vt220+cvis,
+       use=vt220+keypad, use=dec+sl,
+
 vt320-nam|vt300-nam|DEC VT320 7 bit terminal with no am to make SAS happy,
        am@,
        is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
@@ -2985,28 +2898,26 @@ vt340|dec-vt340|vt330|dec-vt330|DEC VT340 graphics terminal with 24 line page,
        am, eslok, hs, mir, msgr, xenl, xon,
        cols#80, it#8, lines#24, vt#3,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K,
+       blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       dsl=\E[2$~\r\E[1$}\E[K\E[$},
        flash=\E[?5h$<200/>\E[?5l, fsl=\E[$}, home=\E[H, ht=^I,
-       hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+       hts=\EH, ich=\E[%p1%d@, ind=\ED,
        is2=\E<\E\sF\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r
            \E[24;1H,
        kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
        kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
-       lf3=pf3, lf4=pf4, nel=\r\ED, rc=\E8, rev=\E[7m,
+       lf3=pf3, lf4=pf4, nel=\r\ED, rev=\E[7m,
        rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
        rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
-       rmul=\E[24m, rs1=\E[?3l, sc=\E7,
+       rmul=\E[24m, rs1=\E[?3l,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
            %p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       tsl=\E[2$~\E[1$}\E[1;%dH, use=vt220+cvis,
+       tsl=\E[2$~\E[1$}\E[1;%dH, use=ansi+csr, use=ansi+erase,
+       use=ansi+idl, use=ansi+local, use=vt220+cvis,
 
 # Left/right margins are supported in xterm since patch #279 (2012/05/10)
 vt420+lrmm|VT420 left/right margins,
@@ -3040,28 +2951,25 @@ vt400|vt400-24|dec-vt400|DEC VT400 24x80 column autowrap,
        cols#80, it#8, lines#24, vt#3,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        blink=\E[5m, bold=\E[1m, clear=\E[H\E[J$<10/>, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J$<10/>,
-       el=\E[K$<4/>, flash=\E[?5h$<200/>\E[?5l, fsl=\E[$},
-       home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
-       il=\E[%p1%dL, il1=\E[L, ind=\ED,
+       cub1=^H, cud1=\n, dsl=\E[2$~\r\E[1$}\E[K\E[$},
+       ed=\E[J$<10/>, el=\E[K$<4/>, flash=\E[?5h$<200/>\E[?5l,
+       fsl=\E[$}, ht=^I, hts=\EH, ind=\ED,
        is2=\E<\E\sF\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r
            \E[24;1H,
        kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
        kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
-       lf3=pf3, lf4=pf4, nel=\r\ED, rc=\E8, rev=\E[7m,
+       lf3=pf3, lf4=pf4, nel=\r\ED, rev=\E[7m,
        rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B,
-       rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
-       rmul=\E[24m, rs1=\E<\E[?3l\E[!p\E[?7h, sc=\E7,
+       rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
+       rs1=\E<\E[?3l\E[!p\E[?7h,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
            %p9%t\E(0%e\E(B%;$<2>,
-       sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       tsl=\E[2$~\E[1$}\E[1;%dH, use=dec+sl, use=vt220+cvis,
+       sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smkx=\E[?1h\E=,
+       smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+       tsl=\E[2$~\E[1$}\E[1;%dH, use=ansi+csr, use=ansi+cup,
+       use=ansi+idc, use=ansi+idl, use=ansi+local, use=dec+sl,
+       use=vt220+cvis,
 
 # (vt420: I removed <kf0>, it collided with <kf10>.  I also restored
 # a missing <sc> -- esr)
@@ -3071,29 +2979,26 @@ vt420|DEC VT420,
        cols#80, it#8, lines#24, vt#3,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
-       clear=\E[H\E[2J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<10>,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J$<50>,
-       el=\E[K$<3>, el1=\E[1K, enacs=\E)0,
-       flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, if=/usr/share/tabset/vt300,
-       il=\E[%p1%dL, il1=\E[L, ind=\ED, is2=\E[1;24r\E[24;1H,
-       is3=\E[?67h\E[64;1"p, kbs=^H, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[29~, kf2=\EOQ,
-       kf3=\EOR, kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~,
-       kf8=\E[20~, kf9=\E[21~, nel=\EE, rc=\E8, rev=\E[7m$<2>,
-       rf=/usr/share/tabset/vt300, ri=\EM, rmacs=\E(B$<4>,
-       rmam=\E[?7l, rmir=\E[4l, rmkx=\E>,
+       clear=\E[H\E[2J$<50>, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH$<10>, dch=\E[%p1%dP, dch1=\E[P,
+       ech=\E[%p1%dX, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K,
+       enacs=\E)0, flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I,
+       hts=\EH, ich=\E[%p1%d@, if=/usr/share/tabset/vt300,
+       ind=\ED, is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p,
+       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+       kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+       kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~,
+       nel=\EE, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300,
+       ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>,
        rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
-       rmso=\E[27m, rmul=\E[24m, rs3=\E[?67h\E[64;1"p, sc=\E7,
+       rmso=\E[27m, rmul=\E[24m, rs3=\E[?67h\E[64;1"p,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
            %p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B$<2>, smacs=\E(0$<2>, smam=\E[?7h,
        smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       use=vt220+vtedit, use=ansi+pp, use=dec+sl, use=ansi+enq,
-       use=vt220+cvis, use=vt420+lrmm,
+       use=ansi+csr, use=ansi+enq, use=ansi+idl, use=ansi+pp,
+       use=ansi+local, use=dec+sl, use=vt220+cvis,
+       use=vt420+lrmm, use=vt220+vtedit,
 
 # DEC VT220 and up support DECUDK (user-defined keys).  DECUDK (i.e., pfx)
 # takes two parameters, the key and the string.  Translating the key is
@@ -3438,36 +3343,29 @@ tt|tkterm|Don Libes' tk text widget terminal emulator,
 nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset,
        am, bw, msgr, xenl, xon,
        cols#80, it#8, lines#24,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
-       el1=\E[1K, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L,
-       ind=\n, invis=\E[8m, kbs=^?, kcub1=\EOD, kcud1=\EOB,
-       kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM,
-       rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
-       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+       bel=^G, cr=\r, cub1=^H, cud1=\n, dim=\E[2m, el1=\E[1K, ht=^I,
+       hts=\EH, ind=\n, kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+       kcuu1=\EOA, kent=\EOM, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
            %p5%t;2%;%?%p7%t;8%;m,
-       sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=vt100+pfkeys,
+       sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, tbc=\E[3g,
+       use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl,
+       use=ansi+local, use=ansi+sgrbold, use=vt100+enq,
+       use=vt100+pfkeys,
 
 nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       enacs=\E(B\E)0, rmacs=^O,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
            %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, use=nsterm+7,
+       sgr0=\E[m\017, use=nsterm+7, use=vt100+4bsd,
 
 nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset,
        acsc=+\335\,\334-\366.\3770#`\327a:f\241g\261h#i
             \360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{
             \271|\255}\243~\245,
-       enacs=\E(B\E)0, rmacs=^O,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
            %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, use=nsterm+7,
+       sgr0=\E[m\017, use=nsterm+7, use=vt100+4bsd,
 
 # compare with xterm+sl-twm
 nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
@@ -3477,8 +3375,8 @@ nsterm+c|AppKit Terminal.app v51+ full color support (including 16 colors),
        op=\E[0m, use=ibm+16color,
 
 nsterm+c41|AppKit Terminal.app v41 color support,
-       colors#8, ncv#37, pairs#64,
-       op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       ncv#37,
+       op=\E[0m, use=klone+color,
 
 # These are different combinations of the building blocks
 
@@ -3559,14 +3457,13 @@ nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline)
 # vt52, vt100, vt102 and xterm.
 nsterm-16color|AppKit Terminal.app v240.2+ with Mac OS X version 10.5,
        bw@, mir, npc,
-       dch=\E[%p1%dP, dch1=\E[P, flash=\E[?5h$<200/>\E[?5l,
-       hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[@, kdch1=\E[3~,
-       kend=\E[F, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
-       kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
-       kf17=\E[31~, kf18=\E[22~, kf19=\E[33~, kf20=\E[34~,
-       kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khome=\E[H, knp=\E[6~, kpp=\E[5~, rmir=\E[4l, smir=\E[4h,
-       vpa=\E[%i%p1%dd, kLFT5=\E[5D, kRIT5=\E[5C,
+       flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG,
+       kdch1=\E[3~, kend=\E[F, kf10=\E[21~, kf11=\E[23~,
+       kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+       kf16=\E[29~, kf17=\E[31~, kf18=\E[22~, kf19=\E[33~,
+       kf20=\E[34~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
+       kf8=\E[19~, kf9=\E[20~, khome=\E[H, knp=\E[6~, kpp=\E[5~,
+       vpa=\E[%i%p1%dd, kLFT5=\E[5D, kRIT5=\E[5C, use=ansi+idc,
        use=xterm+alt47, use=nsterm-c-s-acs, use=vt220+cvis,
 
 # The versions of Terminal.app in Mac OS X version 10.3.x seem to have
@@ -3735,34 +3632,25 @@ nsterm|nsterm-256color|Apple_Terminal|AppKit Terminal.app,
 #      can display/alter xterm-256color cube
 #      can display/alter xterm-88color cube
 iTerm.app|iterm|iTerm.app terminal emulator for Mac OS X,
-       am, bce, hs, mir, msgr, npc, xenl, xon,
-       cols#80, it#8, lines#24, wsl#50,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
-       flash=\E[?5h$<200/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
-       ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
-       il1=\E[L, ind=\n, kLFT=\E[1;2D, kRIT=\E[1;2C, kbs=^?,
-       kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       kdch1=\E[3~, kend=\EOF, kent=\EOM, kf1=\EOP, kf10=\E[21~,
-       kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+       bce, mir, npc, xenl, xon,
+       wsl#50,
+       blink=\E[5m, bold=\E[1m, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, el1=\E[1K,
+       flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG,
+       kLFT=\E[1;2D, kRIT=\E[1;2C, kbs=^?, kcbt=\E[Z, kdch1=\E[3~,
+       kend=\EOF, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
        kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khome=\EOH, knp=\E[6~, kpp=\E[5~, op=\E[0m, rc=\E8,
-       rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
-       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
-       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+       knp=\E[6~, kpp=\E[5~, op=\E[0m, rev=\E[7m, ri=\EM,
+       rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
            %p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%i%p1%dd, kEND5=\E[1;5F, kHOM5=\E[1;5H,
-       use=xterm+alt47, use=ansi+enq, use=xterm+sl-twm,
-       use=vt100+keypad, use=xterm+x11mouse,
-       use=xterm+256setaf, use=vt220+cvis,
+       sgr0=\E[m\017, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
+       smul=\E[4m, vpa=\E[%i%p1%dd, kEND5=\E[1;5F,
+       kHOM5=\E[1;5H, use=ansi+apparrows, use=ansi+csr,
+       use=ansi+enq, use=ansi+erase, use=ansi+idc, use=ansi+idl,
+       use=ansi+local, use=vt100+4bsd, use=vt100+keypad,
+       use=vt100+pfkeys, use=xterm+alt47, use=xterm+sl-twm,
+       use=xterm+x11mouse, use=xterm+256setaf, use=vt220+cvis,
 
 # iTerm2 3.0.15
 #
@@ -3798,13 +3686,13 @@ iTerm.app|iterm|iTerm.app terminal emulator for Mac OS X,
 # 2018/01/21: found xterm+sm+1006 did not work with version 3.1.5
 # 2018/05/19: xterm+sm+1006 seems to work with 3.1.6beta -TD
 iTerm2.app|iterm2|terminal emulator for Mac OS X,
-       blink=\E[5m, cbt=\E[Z, dim=\E[2m, kEND=\E[1;2F,
-       kHOM=\E[1;2H, ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf13=\E[1;2P,
-       kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~,
-       kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~,
-       kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[23;2~,
-       kf24=\E[24;2~, kind=\E[1;2B, kri=\E[1;2A, nel=\EE,
-       op=\E[39;49m, rmso=\E[27m, rmul=\E[24m,
+       cbt=\E[Z, dim=\E[2m, kEND=\E[1;2F, kHOM=\E[1;2H, ka1@, ka3@,
+       kb2@, kc1@, kc3@, kent@, kf13=\E[1;2P, kf14=\E[1;2Q,
+       kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~, kf18=\E[17;2~,
+       kf19=\E[18;2~, kf20=\E[19;2~, kf21=\E[20;2~,
+       kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~,
+       kind=\E[1;2B, kri=\E[1;2A, nel=\EE, op=\E[39;49m,
+       rmso=\E[27m, rmul=\E[24m,
        rs2=\E[!p\E[?3;4l\E[4l\E>\E[?1000l,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
            %p5%t;2%;m%?%p9%t\016%e\017%;,
@@ -3918,22 +3806,18 @@ iTerm2.app|iterm2|terminal emulator for Mac OS X,
 xnuppc+basic|Darwin PowerPC console basic capabilities,
        am, bce, mir, xenl, NQ,
        it#8,
-       bold=\E[1m, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dsl=\E]2;\007, ed=\E[J, el=\E[K,
-       el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^?,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
-       rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m,
-       rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
-       sc=\E7,
+       bold=\E[1m, cr=\r, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+       dsl=\E]2;\007, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=\n,
+       kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+       rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
-       sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, use=vt100+keypad,
+       sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, tbc=\E[3g,
+       use=ansi+csr, use=ansi+erase, use=ansi+local,
+       use=ansi+sgrso, use=ansi+sgrul, use=vt100+keypad,
 
 xnuppc+c|Darwin PowerPC console ANSI color support,
-       colors#8, ncv#32, pairs#64,
-       op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       ncv#32, use=klone+color,
 
 xnuppc+b|Darwin PowerPC console color-bold support,
        ncv#32,
@@ -4092,9 +3976,8 @@ xnuppc-256x96|darwin-256x96|Darwin PowerPC console (color) 256x96,
 ######## DOS/WINDOWS
 # CRT is shareware.  It implements some xterm features, including mouse.
 crt|crt-vt220|CRT 2.3 emulating VT220,
-       bce, msgr,
-       ncv@,
-       hts=\EH, use=vt100+enq, use=vt220-base, use=ecma+color,
+       bce,
+       ncv@, use=vt100+enq, use=vt220-base, use=ecma+color,
 
 # SecureCRT 8.7.3.2279
 # 8.7.3 was released 2020/08/11
@@ -4155,7 +4038,7 @@ crt|crt-vt220|CRT 2.3 emulating VT220,
 #      resize.pl gets no reply, resize.sh needs fix for no reply.
 scrt|securecrt|SecureCRT emulating xterm-256color,
        bce@, km@, npc,
-       bel@, cvvis@, kcbt=\E[Z, kent=\EOM, use=vt220+pcedit,
+       bel@, cvvis@, kcbt=\E[Z, use=vt220+pcedit,
        use=xterm+256setaf, use=ecma+index, use=ansi+rep,
        use=xterm+keypad, use=xterm+pcfkeys, use=xterm-basic,
 
@@ -4205,15 +4088,23 @@ scrt|securecrt|SecureCRT emulating xterm-256color,
 #      supports 256-colors, including changing palette (ncurses menu d works)
 #      supports UTF-8, but honors VT100 line-drawing
 absolute|Absolute Telnet emulating xterm,
-       kcbt=\E[Z, use=ecma+index, use=ansi+rep,
+       kcbt=\E[Z, use=ecma+index, use=linux+kbs, use=ansi+rep,
        use=vt220+pcedit, use=xterm+keypad, use=xterm+app,
        use=xterm+pcf0, use=xterm+256color, use=xterm+x11mouse,
        use=xterm-basic,
 
 #### PuTTY
-# PuTTY 0.74 (27 June 2020)
 # http://www.chiark.greenend.org.uk/~sgtatham/putty/
 #
+# PuTTY 0.78 (September 2020, tested 12 August 2023)
+# Testing with tack:
+#      implements cross-out text (shortly after 0.74)
+#      restore kLFT as kLFT5, etc. (mentioned in October 2021)
+#      does not support direct-colors (mentioned in July 2021)
+#
+# PuTTY 0.74 (27 June 2020)
+#      (unchanged)
+#
 # PuTTY 0.73 (September 2019)
 # Testing with tack:
 #      does not implement italics
@@ -4258,42 +4149,46 @@ absolute|Absolute Telnet emulating xterm,
 #      http://stackoverflow.com/questions/24613237/terminal-retains-bg-color-after-closing-vim-using-color-scheme-and-putty-256co/37869114#37869114
 putty|PuTTY terminal emulator,
        am, bce, bw, ccc, mir, msgr, xenl, xon, XT,
-       colors#8, it#8, ncv#22, pairs#64, U8#1,
+       it#8, ncv#22, U8#1,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
-       dch=\E[%p1%dP, dch1=\E[P,
+       bel=^G, cr=\r, cub1=^H, cud1=\ED, cup=\E[%i%p1%d;%p2%dH,
+       cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P,
        dispc=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G
              \342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e
              %p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G
              \342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@
              %e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E
              %%G\340\202\242\E%%@%e%p1%c%;,
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
-       el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l,
-       home=\E[H, hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, ind=\n,
+       ech=\E[%p1%dX, el1=\E[1K, enacs=\E(B\E)0,
+       flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
+       ind=\n,
        initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/
              %02x%p4%{255}%*%{1000}%/%02x,
        is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R,
-       kbs=^?, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
-       kcuu1=\EOA, kind=\E[B, kri=\E[A, kspd=^Z, nel=\r\n, oc=\E]R,
-       op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
-       rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmpch=\E[10m,
-       rmso=\E[27m, rmul=\E[24m,
+       kbs=^?, kcbt=\E[Z, khome=\E[1~, kind=\E[B, kri=\E[A, kspd=^Z,
+       nel=\r\n, oc=\E]R, op=\E[39;49m, ri=\EM, rmacs=^O,
+       rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
+       rmul=\E[24m,
        rs2=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l,
-       s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, sc=\E7,
-       setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h\E=, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
-       vpa=\E[%i%p1%dd, E3=\E[3J, use=vt220+pcedit,
-       use=ansi+tabs, use=ansi+rep, use=ecma+index,
-       use=xterm+alt1049, use=xterm+sm+1006, use=putty+fnkeys,
-       use=vt102+enq, use=xterm+sl, use=vt100+fnkeys,
-       use=putty+keypad, use=vt220+cvis, use=bracketed+paste,
+       smkx=\E[?1h\E=, vpa=\E[%i%p1%dd, E3=\E[3J,
+       use=ansi+apparrows, use=ansi+csr, use=ansi+erase,
+       use=ansi+idl, use=ansi+local, use=ansi+tabs,
+       use=ansi+rep, use=bracketed+paste, use=ecma+index,
+       use=ecma+strikeout, use=klone+color, use=klone+sgr,
+       use=putty+cursor, use=putty+fnkeys, use=vt220+pcedit,
+       use=xterm+alt1049, use=vt102+enq, use=xterm+sm+1006,
+       use=xterm+sl, use=vt100+fnkeys, use=putty+keypad,
+       use=vt220+cvis,
+
+# older versions (e.g., before 0.71) of PuTTY used a shift-modifier to toggle
+# between normal- and application-mode for the cursor-keys.  That was dropped,
+# and a few years later (after 0.74) restored as the control-modifier.
+putty+cursor|PuTTY modified cursor-keys,
+       kDN5=\E[B, kLFT5=\E[D, kRIT5=\E[C, kUP5=\E[A,
 putty+keypad|PuTTY numeric keypad,
        kp1=\EOq, kp2=\EOr, kp3=\EOs, kp4=\EOt, kp5=\EOu, kp6=\EOv,
        kp7=\EOw, kp8=\EOx, kp9=\EOy, kpADD=\EOl, kpDIV=\EOQ,
@@ -4417,11 +4312,11 @@ mintty+common|shared capabilities for mintty,
        rsupm=\E[75m, smm@, smpch=\E[11m, sshm=\E[1:2m,
        ssubm=\E[74m, ssupm=\E[73m, Rmol=\E[55m, Smol=\E[53m,
        Smulx=\E[4:%p1%dm, blink2=\E[6m, norm=\E[22m,
-       opaq=\E[28m, smul2=\E[21m, use=ansi+rep,
+       opaq=\E[28m, smul2=\E[21m, use=linux+kbs, use=ansi+rep,
        use=ecma+strikeout, use=ecma+index, use=vt420+lrmm,
-       use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm+tmux,
-       use=ecma+italics, use=xterm-basic, use=bracketed+paste,
-       use=report+version,
+       use=xterm+focus, use=xterm+sm+1006, use=xterm+pcfkeys,
+       use=xterm+tmux, use=ecma+italics, use=xterm-basic,
+       use=bracketed+paste, use=report+version,
 # 2019-06-09: These capabilities are commented-out for compatibility with
 # existing releases 5.9-6.1, and may be considered for inclusion after the
 # release of ncurses 6.2:
@@ -4489,18 +4384,17 @@ teraterm2.3|Tera Term Pro 2.3,
             \264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
        blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
-       dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
-       el=\E[K, el1=\E[1K, flash=\E[?5h$<200/>\E[?5l,
-       hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, kf1=\E[11~,
+       dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+       flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG, kf1=\E[11~,
        kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
        kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
        kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
        kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
        kf8=\E[19~, kf9=\E[20~, op=\E[100m, rev=\E[7m, ri=\EM,
        rmso=\E[27m, rmul=\E[24m, sgr0=\E[0m\017, smso=\E[7m,
-       smul=\E[4m, vpa=\E[%i%p1%dd, use=vt220+vtedit,
-       use=vt100+enq, use=klone+color, use=vt100,
-       use=vt220+cvis,
+       smul=\E[4m, vpa=\E[%i%p1%dd, use=ansi+idl,
+       use=vt220+vtedit, use=vt100+enq, use=klone+color,
+       use=vt100, use=vt220+cvis,
 
 # Version 4.59 has regular VT100 line-drawing (so it is no longer necessary
 # to choose a Windows OEM font).
@@ -4619,9 +4513,88 @@ ms-vt100+|vt100+|windows XP VT100+ (sic),
 ms-vt-utf8|vt-utf8|UTF-8 flavor of VT100+,
        use=ms-vt100+,
 
+# VT-UTF-8 and VT100+ Protocols
+# https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-vuvp/969416c0-ccd6-4a75-a9b3-597d7713845b
+#
+# This Microsoft "protocol" adapted the aixterm 16-color feature from xterm's
+# documentation in 2015, as seen in successive revisions:
+#
+# 2013/07/22 has 8 colors
+# 2015/10/16 has 16 colors using SGR 90-97, 100-107 as well as SGR 24 and 27,
+#            adds "informative" reference to xterm's ctlseqs
+#
+# The cnorm/civis definitions added in 2015 are unrelated to any standard.
+ms-vt100-16color|VT-UTF-8 and VT100+,
+       civis=\E[?h, cnorm=\E[?l, rmso=\E[27m, rmul=\E[24m,
+       use=ibm+16color, use=ms-vt100+,
+
+# Based on
+# https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences
+# We use this scheme to map function keys
+#       terminfo        modifier        code    keys
+#       kf13-kf24       shift           2       F1 to F12
+#       kf25-kf36       alt             3       F1 to F12
+#       kf37-kf48       control         4       F1 to F12
+#       kf49-kf60       ctrl-alt        7       F1 to F12
+#
+# Unclear: smam and rmam implemented?
+# Unclear: rmkx, smkx, rmir, smir - irrelevant?
+#
+# TD:
+# +    According to tack, tbc and cbt fail.
+# +    The line-drawing (acsc) does not work in telnet or ssh.  I added the
+#      U8 extension to tell ncurses to use UTF-8 for line-drawing (when the
+#      locale uses UTF-8).  That won't work for telnet (which uses ASCII),
+#      but seems to work for OpenSSH's ssh.  I set the codepage to 65001,
+#      of course.
+# +    Function keys... do not work consistently in telnet and ssh.  With
+#      telnet, kf1-kf4 are \EOP to \EOS, and kf5-kf12 match the terminfo.
+#      But with ssh, it's entirely different (reminds me of rxvt).
+winconsole|Windows 10 new console,
+       am, km, mir, msgr, xenl,
+       ncv@, U8#1,
+       acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
+            yzz~~,
+       bel=^G, blink@, cr=\r, ech=\E[%p1%dX, el1=\E[0K, ich1@, ind=\n,
+       invis@, is1=\E[!p, kf13=\E[11;2~, kf14=\E[12;2~,
+       kf15=\E[13;2~, kf16=\E[14;2~, kf17=\E[15;2~,
+       kf18=\E[17;2~, kf19=\E[18;2~, kf20=\E[19;2~,
+       kf21=\E[20;2~, kf22=\E[21;2~, kf23=\E[24;2~,
+       kf24=\E[25;2~, kf25=\E[11;3~, kf26=\E[12;3~,
+       kf27=\E[13;3~, kf28=\E[14;3~, kf29=\E[15;3~,
+       kf30=\E[17;3~, kf31=\E[18;3~, kf32=\E[19;3~,
+       kf33=\E[20;3~, kf34=\E[21;3~, kf35=\E[24;3~,
+       kf36=\E[25;3~, kf37=\E[11;4~, kf38=\E[12;4~,
+       kf39=\E[13;4~, kf40=\E[14;4~, kf41=\E[15;4~,
+       kf42=\E[17;4~, kf43=\E[18;4~, kf44=\E[19;4~,
+       kf45=\E[20;4~, kf46=\E[21;4~, kf47=\E[24;4~,
+       kf48=\E[25;4~, kf49=\E[11;7~, kf50=\E[12;7~,
+       kf51=\E[13;7~, kf52=\E[14;7~, kf53=\E[15;7~,
+       kf54=\E[17;7~, kf55=\E[18;7~, kf56=\E[19;7~,
+       kf57=\E[20;7~, kf58=\E[21;7~, kf59=\E[24;7~,
+       kf60=\E[25;7~, khome=\E[1~, nel=\r\n, ri=\E[T, rmacs=\E(B,
+       rmir@, rmpch@, rs1=\E[!p,
+       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t
+           \E(0%e\E(B%;,
+       sgr0=\E[0m\E(B, smacs=\E(0, smir@, smpch@, use=ansi+arrows,
+       use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idc,
+       use=ansi+idl, use=ecma+index, use=ansi+inittabs,
+       use=ansi+local, use=ecma+sgr, use=ecma+color,
+       use=vt220+cvis, use=vt220+pcedit, use=xterm+nopcfkeys,
+
 # Windows Terminal (Preview)
 # https://github.com/microsoft/terminal
 #
+# Windows 10 22H2 (also Windows 11)
+# Version 1.16.10261.0
+#
+# - Windows Terminal #1553: "Feature Request:  Mouse/Touch/Pointer Bindings
+#   (like middle-click paste, right-click context menu, etc.)", compare to
+#   https://learn.microsoft.com/en-us/windows/console/mouse-event-record-str
+#   This appears to be related to a problem with its implementation of the
+#   Console API; the mouse does not work in a "Command Window" (e.g., as used
+#   in the ncurses MinGW driver), although escape sequences work.
+#
 # Windows 10 21H1
 # Version 1.9.1942.0
 #
@@ -4712,10 +4685,10 @@ ms-vt-utf8|vt-utf8|UTF-8 flavor of VT100+,
 ms-terminal|Windows10 terminal,
        npc,
        cud1=\E[B, kcbt=\E[Z, rmkx=\E[?1l, rmm@, smkx=\E[?1h, smm@,
-       Cr@, Ms@, use=xterm+256color, use=xterm+pcfkeys,
-       use=ansi+rep, use=xterm+sm+1006, use=ecma+index,
-       use=ecma+italics, use=ecma+strikeout, use=xterm-basic,
-       use=xterm+tmux,
+       Cr@, Ms@, use=linux+kbs, use=xterm+256color,
+       use=xterm+pcfkeys, use=ansi+rep, use=xterm+sm+1006,
+       use=ecma+index, use=ecma+italics, use=ecma+strikeout,
+       use=xterm-basic, use=xterm+tmux,
 
 #### Visual Studio
 # Visual Studio Code 1.45.0 uses xterm.js 12.8.1 (see https://xtermjs.org/).
@@ -4764,9 +4737,10 @@ ms-terminal|Windows10 terminal,
 # - color-palette cannot be changed
 vscode|xterm.js|Visual Studio Code terminal using xterm.js,
        npc,
-       kcbt=\E[Z, rmkx=\E[?1l, smkx=\E[?1h, use=xterm+256setaf,
-       use=ecma+index, use=xterm+sm+1006, use=xterm+pcfkeys,
-       use=ecma+italics, use=xterm-basic, use=bracketed+paste,
+       kcbt=\E[Z, rmkx=\E[?1l, smkx=\E[?1h, use=linux+kbs,
+       use=xterm+256setaf, use=ecma+index, use=xterm+focus,
+       use=xterm+sm+1006, use=xterm+pcfkeys, use=ecma+italics,
+       use=xterm-basic, use=bracketed+paste,
 vscode-direct|Visual Studio Code with direct-colors,
        use=xterm+indirect, use=vscode,
 
@@ -4793,14 +4767,14 @@ x10term|vs100-x10|xterm terminal emulator (X10 window system),
        cols#80, it#8, lines#65,
        bold=\E[1m, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr,
        cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL,
-       il1=\E[L, ind=\n, is2=\E\E[m\E[?7h\E[?1;4l, kbs=^H,
+       cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, el=\E[K,
+       home=\E[H, ht=^I, ind=\n, is2=\E\E[m\E[?7h\E[?1;4l, kbs=^H,
        kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
        kf2=\EOQ, kf3=\EOR, kf4=\EOS, rev=\E[7m, ri=\EM, rmam=\E[?7l,
        rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
        sgr0=\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=,
-       smso=\E[7m, smul=\E[4m,
+       smso=\E[7m, smul=\E[4m, use=ansi+idl,
+
 # csl is extension which clears the status line
 x10term+sl|status-line for X10 xterm,
        eslok, hs,
@@ -4814,26 +4788,21 @@ x10term+sl|status-line for X10 xterm,
 xterm-r5|xterm R5 version,
        OTbs, am, km, msgr, xenl,
        cols#80, it#8, lines#24,
-       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, kcub1=\EOD, kcud1=\EOB,
-       kcuf1=\EOC, kcuu1=\EOA, kdl1=\E[31~, kel=\E[8~, kf0=\EOq,
+       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+       hts=\EH, ind=\n, kdl1=\E[31~, kel=\E[8~, kf0=\EOq,
        kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
        kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~,
        kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~,
-       kil1=\E[30~, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM,
-       rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+       kil1=\E[30~, kmous=\E[M, rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>,
+       rmso=\E[m, rmul=\E[m,
        rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H,
-       sc=\E7,
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
            %;m,
-       sgr0=\E[m, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, use=vt220+pcedit, use=vt100+enq,
-       use=xterm+kbs,
+       sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+       tbc=\E[3g, use=xterm+kbs, use=ansi+apparrows,
+       use=ansi+csr, use=ansi+idc, use=ansi+idl, use=ansi+local,
+       use=vt220+pcedit, use=vt100+enq,
 
 # Compatible with the R6 xterm
 # (from XFree86 3.2 distribution, <acsc> and <it> added, <blink@> removed)
@@ -4844,13 +4813,10 @@ xterm-r6|xterm X11R6 version,
        OTbs, am, km, mir, msgr, xenl,
        cols#80, it#8, lines#24,
        acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL,
-       il1=\E[L, ind=\n,
+       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
+       dch1=\E[P, ed=\E[J, el=\E[K, enacs=\E)0, home=\E[H, ht=^I,
+       hts=\EH, ind=\n,
        is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
        kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\E[11~,
        kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
@@ -4858,12 +4824,13 @@ xterm-r6|xterm X11R6 version,
        kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
        kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
        kf8=\E[19~, kf9=\E[20~, kmous=\E[M, meml=\El, memu=\Em,
-       rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l,
-       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
-       rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, sc=\E7,
-       sgr0=\E[m, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=,
-       smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=xterm+alt47,
+       rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmkx=\E[?1l\E>,
+       rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8,
+       sgr0=\E[m, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=, tbc=\E[3g,
+       use=xterm+alt47, use=ansi+csr, use=ansi+idl,
+       use=ansi+local, use=ansi+sgrso, use=ansi+sgrul,
        use=vt220+vtedit, use=xterm+kbs, use=vt100+enq,
+
 xterm-old|antique xterm version,
        use=xterm-r6,
 # The monochrome version began as a copy of "xtermm" (from Solaris), and was
@@ -4879,40 +4846,35 @@ xterm-mono|monochrome xterm,
 # The name has been changed and some aliases have been removed.
 xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System),
        OTbs, am, bce, km, mir, msgr, xenl, XT,
-       cols#80, it#8, lines#24, ncv@,
+       cols#80, lines#24, ncv@,
        acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
-       flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
-       ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
-       il1=\E[L, ind=\n,
+       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+       el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l,
+       home=\E[H, hpa=\E[%i%p1%dG, ind=\n,
        is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
-       kbeg=\EOE, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       kdch1=^?, kend=\EOF, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
-       kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
-       kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
-       kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
-       kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       kfnd=\E[1~, khome=\EOH, kich1=\E[2~, kmous=\E[M, knp=\E[6~,
-       kpp=\E[5~, kslt=\E[4~, meml=\El, memu=\Em, rc=\E8, rev=\E[7m,
-       ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
-       rmso=\E[27m, rmul=\E[24m, rs1=^O,
-       rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7,
+       kbeg=\EOE, kbs=^?, kdch1=^?, kend=\EOF, kf1=\E[11~,
+       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+       kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+       kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
+       kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
+       kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, kmous=\E[M, kslt=\E[4~,
+       meml=\El, memu=\Em, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l,
+       rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=^O,
+       rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>,
        setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
        setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%i%p1%dd, use=xterm+alt47, use=xterm+kbs,
-       use=vt100+enq, use=ecma+color, use=vt220+cvis,
-       use=vt220+keypad,
+       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
+       smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
+       use=ansi+apparrows, use=ansi+csr, use=ansi+idc,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
+       use=xterm+alt47, use=xterm+kbs, use=vt100+enq,
+       use=ecma+color, use=vt220+cvis, use=vt220+keypad,
+       use=vt220+pcedit,
 
 # This is the stock xterm entry supplied with XFree86 3.3, which uses VT100
 # codes for F1-F4 except while in VT220 mode.
@@ -4938,18 +4900,17 @@ xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System),
        npc,
        kDC=\E[3;5~, kEND=\EO5F, kHOM=\EO5H, kIC=\E[2;5~,
        kLFT=\EO5D, kNXT=\E[6;5~, kPRV=\E[5;5~, kRIT=\EO5C, ka1@,
-       ka3@, kb2=\EOE, kc1@, kc3@, kcbt=\E[Z, kdch1=\E[3~, kend=\EOF,
-       kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S,
-       kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~,
-       kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
-       kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P, kf26=\EO5Q,
-       kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~, kf30=\E[17;5~,
-       kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
-       kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~, kf37=\EO6P,
-       kf38=\EO6Q, kf39=\EO6R, kf40=\EO6S, kf41=\E[15;6~,
-       kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~,
-       kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~,
-       kf48=\E[24;6~, khome=\EOH,
+       ka3@, kb2=\EOE, kc1@, kc3@, kcbt=\E[Z, kf13=\EO2P, kf14=\EO2Q,
+       kf15=\EO2R, kf16=\EO2S, kf17=\E[15;2~, kf18=\E[17;2~,
+       kf19=\E[18;2~, kf20=\E[19;2~, kf21=\E[20;2~,
+       kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P,
+       kf26=\EO5Q, kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~,
+       kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~,
+       kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~,
+       kf36=\E[24;5~, kf37=\EO6P, kf38=\EO6Q, kf39=\EO6R,
+       kf40=\EO6S, kf41=\E[15;6~, kf42=\E[17;6~, kf43=\E[18;6~,
+       kf44=\E[19;6~, kf45=\E[20;6~, kf46=\E[21;6~,
+       kf47=\E[23;6~, kf48=\E[24;6~,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
            %p9%t\016%e\017%;,
        use=xterm+alt1049, use=xterm-xf86-v333,
@@ -4985,14 +4946,12 @@ xterm-xfree86|xterm terminal emulator (XFree86),
 
 xterm+nofkeys|building block for xterm fkey-variants,
        npc,
-       kcbt=\E[Z, kent=\EOM, nel=\EE, use=ecma+index,
-       use=ansi+rep, use=ecma+strikeout, use=vt420+lrmm,
+       kcbt=\E[Z, nel=\EE, use=ecma+index, use=ansi+rep,
+       use=ecma+strikeout, use=vt420+lrmm, use=xterm+focus,
        use=xterm+sm+1006, use=xterm+tmux, use=ecma+italics,
        use=xterm+keypad, use=xterm-basic,
 
 xterm-p370|xterm patch #370,
-       npc,
-       kcbt=\E[Z, kent=\EOM, nel=\EE,
        rv=\E\\[41;[1-6][0-9][0-9];0c,
        xr=\EP>\\|XTerm\\([1-9][0-9]+\\)\E\\\\,
        use=ecma+index, use=ansi+rep, use=ecma+strikeout,
@@ -5008,9 +4967,15 @@ xterm-new|modern xterm terminal emulator,
        use=xterm-p370,
 
 # This fragment is for people who cannot agree on what the backspace key
-# should send.
+# should send.  The ncurses configure script option "--with-xterm-kbs" can
+# set it to BS (standard) or DEL (Linux's notion of "vt220").  xterm provides
+# either, depending on how the pseudoterminals are configured.
 xterm+kbs|fragment for backspace key,
        kbs=^H,
+
+# Use this fragment for terminals that always use DEL for "backspace".
+linux+kbs|fragment for "backspace" key,
+       kbs=^?,
 #
 # This fragment describes as much of XFree86 xterm's "pc-style" function
 # keys as will fit into terminfo's 60 function keys.
@@ -5052,13 +5017,23 @@ xterm+nopcfkeys|fragment without PC-style fkeys,
        kf42=\E[63~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
        kf8=\E[19~, kf9=\E[20~,
 
+vt100+noapp|fragment with cursor keys in normal mode,
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+       use=vt100+noapp+pc,
+
 xterm+noapp|fragment with cursor keys in normal mode,
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[F,
        khome=\E[H,
 
 xterm+app|fragment with cursor keys in application mode,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\EOF,
-       khome=\EOH,
+       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+       use=xterm+app+pc,
+
+vt100+noapp+pc|fragment for noapp pc-style home/end,
+       kend=\E[F, khome=\E[H,
+
+xterm+app+pc|fragment for app pc-style home/end,
+       kend=\EOF, khome=\EOH,
 #
 # The "PC-style" modifier scheme was introduced in xterm patch #94 (1999/3/27)
 # and revised in xterm patch #167 (2002/8/24).  Some other terminal emulators
@@ -5131,8 +5106,7 @@ xterm+pcc0|fragment with modifyCursorKeys:0,
 # Here are corresponding fragments from xterm patch #216:
 #
 xterm+pcf0|fragment with modifyFunctionKeys:0,
-       kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
-       kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S,
+       kf1=\EOP, kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S,
        kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ,
        kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
        kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P, kf26=\EO5Q,
@@ -5143,50 +5117,51 @@ xterm+pcf0|fragment with modifyFunctionKeys:0,
        kf4=\EOS, kf40=\EO6S, kf41=\E[15;6~, kf42=\E[17;6~,
        kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
        kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~, kf49=\EO3P,
-       kf5=\E[15~, kf50=\EO3Q, kf51=\EO3R, kf52=\EO3S,
-       kf53=\E[15;3~, kf54=\E[17;3~, kf55=\E[18;3~,
-       kf56=\E[19;3~, kf57=\E[20;3~, kf58=\E[21;3~,
-       kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~, kf61=\EO4P,
-       kf62=\EO4Q, kf63=\EO4R, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+       kf50=\EO3Q, kf51=\EO3R, kf52=\EO3S, kf53=\E[15;3~,
+       kf54=\E[17;3~, kf55=\E[18;3~, kf56=\E[19;3~,
+       kf57=\E[20;3~, kf58=\E[21;3~, kf59=\E[23;3~,
+       kf60=\E[24;3~, kf61=\EO4P, kf62=\EO4Q, kf63=\EO4R,
+       use=xterm+nopcfkeys,
 #
 xterm+pcf2|fragment with modifyFunctionKeys:2,
-       kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
-       kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S,
-       kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ,
-       kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
-       kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q,
-       kf27=\E[1;5R, kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR,
-       kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~,
-       kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~,
-       kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R,
-       kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
-       kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
-       kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
-       kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
+       kf1=\EOP, kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R,
+       kf16=\E[1;2S, kf17=\E[15;2~, kf18=\E[17;2~,
+       kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~,
+       kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~,
+       kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R, kf28=\E[1;5S,
+       kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~, kf31=\E[18;5~,
+       kf32=\E[19;5~, kf33=\E[20;5~, kf34=\E[21;5~,
+       kf35=\E[23;5~, kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q,
+       kf39=\E[1;6R, kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~,
+       kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~,
+       kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~,
+       kf48=\E[24;6~, kf49=\E[1;3P, kf50=\E[1;3Q, kf51=\E[1;3R,
        kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
        kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
-       kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
-       kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~,
+       kf58=\E[21;3~, kf59=\E[23;3~, kf60=\E[24;3~,
+       kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R,
+       use=xterm+nopcfkeys,
 #
 # Chunks from xterm #230:
 xterm+pce2|fragment with modifyCursorKeys:2 editing-keys,
        kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~,
-       kNXT=\E[6;2~, kPRV=\E[5;2~, kich1=\E[2~, knp=\E[6~,
-       kpp=\E[5~, kDC3=\E[3;3~, kDC4=\E[3;4~, kDC5=\E[3;5~,
-       kDC6=\E[3;6~, kDC7=\E[3;7~, kEND3=\E[1;3F, kEND4=\E[1;4F,
-       kEND5=\E[1;5F, kEND6=\E[1;6F, kEND7=\E[1;7F,
-       kHOM3=\E[1;3H, kHOM4=\E[1;4H, kHOM5=\E[1;5H,
-       kHOM6=\E[1;6H, kHOM7=\E[1;7H, kIC3=\E[2;3~, kIC4=\E[2;4~,
-       kIC5=\E[2;5~, kIC6=\E[2;6~, kIC7=\E[2;7~, kNXT3=\E[6;3~,
-       kNXT4=\E[6;4~, kNXT5=\E[6;5~, kNXT6=\E[6;6~,
-       kNXT7=\E[6;7~, kPRV3=\E[5;3~, kPRV4=\E[5;4~,
-       kPRV5=\E[5;5~, kPRV6=\E[5;6~, kPRV7=\E[5;7~,
-       use=xterm+edit,
+       kNXT=\E[6;2~, kPRV=\E[5;2~, kDC3=\E[3;3~, kDC4=\E[3;4~,
+       kDC5=\E[3;5~, kDC6=\E[3;6~, kDC7=\E[3;7~, kEND3=\E[1;3F,
+       kEND4=\E[1;4F, kEND5=\E[1;5F, kEND6=\E[1;6F,
+       kEND7=\E[1;7F, kHOM3=\E[1;3H, kHOM4=\E[1;4H,
+       kHOM5=\E[1;5H, kHOM6=\E[1;6H, kHOM7=\E[1;7H,
+       kIC3=\E[2;3~, kIC4=\E[2;4~, kIC5=\E[2;5~, kIC6=\E[2;6~,
+       kIC7=\E[2;7~, kNXT3=\E[6;3~, kNXT4=\E[6;4~,
+       kNXT5=\E[6;5~, kNXT6=\E[6;6~, kNXT7=\E[6;7~,
+       kPRV3=\E[5;3~, kPRV4=\E[5;4~, kPRV5=\E[5;5~,
+       kPRV6=\E[5;6~, kPRV7=\E[5;7~, use=xterm+edit,
 
 xterm+edit|fragment for 6-key editing-keypad,
+       use=xterm+pc+edit, use=vt220+pcedit,
+
+xterm+decedit|fragment for vt220 6-key editing-keypad,
        kdch1=\E[3~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
-       use=xterm+pc+edit,
+       use=xterm+vt+edit,
 
 xterm+pc+edit|fragment for pc-style editing keypad,
        kend=\E[4~, khome=\E[1~,
@@ -5274,32 +5249,27 @@ xterm+acs|ISO-2022 alternate character-switching for xterm,
 # This chunk is used for building the VT220/Sun/PC keyboard variants.
 xterm-basic|modern xterm terminal emulator - common,
        OTbs, am, bce, mir, msgr, xenl, AX, XT,
-       colors#8, cols#80, it#8, lines#24, pairs#64,
-       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+       colors#8, cols#80, lines#24, pairs#64,
+       bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       dim=\E[2m, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
        flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
-       ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
-       ind=\n, invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>,
-       kmous=\E[M, meml=\El, memu=\Em, op=\E[39;49m, rc=\E8,
-       rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
-       rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
-       rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7, setab=\E[4%p1%dm,
-       setaf=\E[3%p1%dm,
+       ich=\E[%p1%d@, ind=\n, is2=\E[!p\E[?3;4l\E[4l\E>,
+       kmous=\E[M, meml=\El, memu=\Em, op=\E[39;49m, ri=\EM,
+       rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
+       rmul=\E[24m, rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>,
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
        setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
        setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;
            %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
-       sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%i%p1%dd, E3=\E[3J, use=ansi+pp, use=xterm+kbs,
-       use=xterm+alt+title, use=ansi+enq, use=att610+cvis,
+       sgr0=\E(B\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=,
+       vpa=\E[%i%p1%dd, E3=\E[3J, use=ansi+csr, use=ansi+enq,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
+       use=ansi+pp, use=ansi+sgrbold, use=xterm+kbs,
+       use=xterm+alt+title, use=att610+cvis, use=xterm+acs,
        use=xterm+meta,
 
 xterm+meta|meta mode for xterm,
@@ -5551,7 +5521,6 @@ xterm+tmux2|advanced xterm features used in tmux,
 xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
        OTbs, am, bce, km, mc5i, mir, msgr, npc, xenl, AX,
        colors#8, cols#80, it#8, lines#24, pairs#64,
-       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z,
        civis=\233?25l, clear=\233H\2332J,
        cnorm=\233?25l\233?25h, cr=\r, csr=\233%i%p1%d;%p2%dr,
@@ -5576,9 +5545,8 @@ xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
        kf9=\23320~, khome=\2331~, kich1=\2332~, kmous=\233M,
        knp=\2336~, kpp=\2335~, mc0=\233i, mc4=\2334i, mc5=\2335i,
        meml=\El, memu=\Em, op=\23339;49m, rc=\E8, rev=\2337m,
-       ri=\215, rmacs=\E(B, rmam=\233?7l, rmcup=\233?1049l,
-       rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m,
-       rs1=\Ec,
+       ri=\215, rmam=\233?7l, rmcup=\233?1049l, rmir=\2334l,
+       rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m, rs1=\Ec,
        rs2=\E[62"p\E\sG\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r
            \E8,
        sc=\E7, setab=\2334%p1%dm, setaf=\2333%p1%dm,
@@ -5588,11 +5556,11 @@ xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
             %{6}%=%t3%e%p1%d%;m,
        sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
            %p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
-       sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h,
-       smcup=\233?1049h, smir=\2334h, smkx=\233?1h\E=,
-       smso=\2337m, smul=\2334m, tbc=\2333g, u6=\233[%i%d;%dR,
-       u8=\233[?%[;0123456789]c, vpa=\233%i%p1%dd,
-       use=ansi+enq, use=xterm+kbs,
+       sgr0=\2330m\E(B, smam=\233?7h, smcup=\233?1049h,
+       smir=\2334h, smkx=\233?1h\E=, smso=\2337m, smul=\2334m,
+       tbc=\2333g, u6=\233[%i%d;%dR, u8=\233[?%[;0123456789]c,
+       vpa=\233%i%p1%dd, use=ansi+enq, use=xterm+acs,
+       use=xterm+kbs,
 
 # Note: normally xterm supports modified function-keys as described in
 #      XTerm - "Other" modified keys
@@ -5612,24 +5580,23 @@ xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
 #              -e tack
 # e.g., "foo sun" if the script is named "foo" -TD
 xterm-hp|xterm with hpterm function keys,
-       kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
-       kdch1=\EP, kend=\EF, khome=\Eh, kich1=\EQ, knp=\ES, kpp=\ET,
-       use=hp+pfk-cr, use=xterm+nofkeys, use=xterm+nopcfkeys,
+       kclr=\EJ, kdch1=\EP, kend=\EF, khome=\Eh, kich1=\EQ, knp=\ES,
+       kpp=\ET, use=hp+pfk-cr, use=vt52+arrows,
+       use=xterm+nofkeys, use=xterm+nopcfkeys,
 
 xterm-sco|xterm with SCO function keys,
-       kbeg=\E[E, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V, kf11=\E[W,
-       kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a, kf16=\E[b,
-       kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N, kf20=\E[f,
-       kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j, kf25=\E[k,
-       kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o, kf3=\E[O,
-       kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s, kf34=\E[t,
-       kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x, kf39=\E[y,
-       kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[, kf43=\E[\\,
-       kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`, kf48=\E[{,
-       kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, khome=\E[H,
+       kbeg=\E[E, kbs=^?, kdch1=^?, kend=\E[F, kf1=\E[M, kf10=\E[V,
+       kf11=\E[W, kf12=\E[X, kf13=\E[Y, kf14=\E[Z, kf15=\E[a,
+       kf16=\E[b, kf17=\E[c, kf18=\E[d, kf19=\E[e, kf2=\E[N,
+       kf20=\E[f, kf21=\E[g, kf22=\E[h, kf23=\E[i, kf24=\E[j,
+       kf25=\E[k, kf26=\E[l, kf27=\E[m, kf28=\E[n, kf29=\E[o,
+       kf3=\E[O, kf30=\E[p, kf31=\E[q, kf32=\E[r, kf33=\E[s,
+       kf34=\E[t, kf35=\E[u, kf36=\E[v, kf37=\E[w, kf38=\E[x,
+       kf39=\E[y, kf4=\E[P, kf40=\E[z, kf41=\E[@, kf42=\E[[,
+       kf43=\E[\\, kf44=\E[], kf45=\E[\^, kf46=\E[_, kf47=\E[`,
+       kf48=\E[{, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U,
        kich1=\E[L, kmous=\E[>M, knp=\E[G, kpp=\E[I,
-       use=xterm+nofkeys,
+       use=ansi+arrows, use=xterm+nofkeys,
 
 # The xterm-new description has all of the features, but is not completely
 # compatible with VT220.  If you are using a Sun or PC keyboard, set the
@@ -5642,26 +5609,20 @@ xterm-sco|xterm with SCO function keys,
 #
 xterm-vt220|xterm emulating VT220,
        npc,
-       kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       kend=\E[4~, kent=\EOM, kf10=\E[21~, kf11=\E[23~,
+       kcbt=\E[Z, kend=\E[4~, kf10=\E[21~, kf11=\E[23~,
        kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
        kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
        kf20=\E[34~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
-       kmous=\E[M, knp=\E[6~, kpp=\E[5~, nel=\EE, use=xterm+app,
-       use=xterm+edit, use=vt220+keypad, use=ecma+italics,
-       use=ecma+index, use=ansi+rep, use=ecma+strikeout,
-       use=xterm+sm+1006, use=xterm+tmux, use=xterm+keypad,
-       use=xterm-basic,
+       kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kmous=\E[M, nel=\EE,
+       use=xterm+app, use=xterm+edit, use=vt220+keypad,
+       use=ecma+italics, use=ecma+index, use=ansi+rep,
+       use=ecma+strikeout, use=xterm+focus, use=xterm+sm+1006,
+       use=xterm+tmux, use=xterm+keypad, use=xterm-basic,
 
 xterm-vt52|xterm emulating DEC VT52,
-       cols#80, it#8, lines#24,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, clear=\EH\EJ, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC,
-       cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK,
-       home=\EH, ht=^I, ind=\n, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, nel=\r\n, ri=\EI, rmacs=\EG, smacs=\EF,
-       use=xterm+kbs, use=vt52+keypad,
+       clear=\EH\EJ, rmacs=\EG, smacs=\EF, use=xterm+kbs,
+       use=vt52+keypad, use=vt52-basic,
 
 xterm-noapp|xterm with cursor keys in normal mode,
        rmcup@, rmkx=\E>, smcup@, smkx=\E=, use=xterm+noapp,
@@ -5875,9 +5836,9 @@ xterm-x11hilite|X11 mouse with highlight,
 # "any-event" mouse mode.
 #
 # These building blocks incorporate later features as well:
-# xterm patch #224 (2007/2/11 added private mode 1004, for enabling/disabling
+# xterm patch #224 (2007/2/11) added private mode 1004, for enabling/disabling
 # focus in/out event reporting.
-# xterm patch #277 (2012/01/07 added private mode 1006
+# xterm patch #277 (2012/01/07) added private mode 1006
 
 xterm+sm+1002|xterm any-button mouse,
        kmous=\E[<, XM=\E[?1006;1004;1002%?%p1%{1}%=%th%el%;,
@@ -5892,9 +5853,12 @@ xterm+sm+1003|xterm any-event mouse,
 xterm-1003|example of xterm any-event mouse,
        use=xterm+sm+1003, use=xterm,
 
+# Some terminal emulators implement xterm focus in/out, but do it incorrectly,
+# interfering with user applications.
+# https://lists.gnu.org/archive/html/bug-ncurses/2023-10/msg00087.html
 xterm+focus|xterm focus-in/out event "keys",
        XF,
-       kxIN=\E[I, kxOUT=\E[O,
+       fd=\E[?1004l, fe=\E[?1004h, kxIN=\E[I, kxOUT=\E[O,
 
 # xterm patch #116 (1999/9/25) added Stephen P Wall's changes to support DEC
 # locator mode.
@@ -5932,6 +5896,13 @@ xterm+sm+1006|xterm SGR-mouse (building block),
 xterm-1006|xterm SGR-mouse,
        use=xterm+sm+1006, use=xterm,
 
+# Some terminal emulators implement xterm focus in/out, but do it incorrectly,
+# interfering with user applications.
+# https://lists.gnu.org/archive/html/bug-ncurses/2023-10/msg00087.html
+oldxterm+sm+1006|xterm SGR-mouse (building block),
+       kmous=\E[<, XM=\E[?1006;1000%?%p1%{1}%=%th%el%;,
+       xm=\E[<%i%p3%d;%p1%d;%p2%d;%?%p4%tM%em%;,
+
 #### KTERM
 # (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr)
 # (kterm should not invoke DEC Graphics as the alternate character set
@@ -5942,9 +5913,8 @@ xterm-1006|xterm SGR-mouse,
 kterm|kterm kanji terminal emulator (X window system),
        XT,
        ncv@,
-       acsc=``aajjkkllmmnnooppqqrrssttuuvvwwxx~~,
-       csr=\E[%i%p1%d;%p2%dr, enacs=, kmous=\E[M, rc=\E8,
-       rmacs=\E(B, rmam=\E[?7l, sc=\E7,
+       acsc=``aajjkkllmmnnooppqqrrssttuuvvwwxx~~, enacs=,
+       rmacs=\E(B, rmam=\E[?7l,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e
            \E(B%;,
        sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, use=x10term+sl,
@@ -5961,34 +5931,31 @@ xtermm|xterm terminal emulator (monochrome),
        OTbs, am, km, mir, msgr, xenl,
        btns#3, cols#80, it#8, lines#24,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink@, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY,
-       home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\EOD,
-       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kf0=\EOy,
-       kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf5=\EOT, kf6=\EOU,
-       kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kmous=\E[^_,
-       knp=\E[U, kpp=\E[V, rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM,
-       rmacs=^O, rmcup=\E@0\E[?4r, rmso=\E[m,
+       bel=^G, blink@, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cud1=\n,
+       dch=\E[%p1%dP, dch1=\E[P, el1=\E[1K$<3>, enacs=\E(B\E)0,
+       getm=\E[%p1%dY, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
+       ind=\n, kend=\E[Y, kf0=\EOy, kf10=\EOY, kf11=\EOZ, kf12=\EOA,
+       kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H,
+       kmous=\E[^_, knp=\E[U, kpp=\E[V, reqmp=\E[492Z, rev=\E[7m,
+       ri=\EM, rmacs=^O, rmcup=\E@0\E[?4r,
        rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
-       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smcup=\E@0\E[?4s\E[?4h\E@1,
-       smso=\E[7m, tbc=\E[3g, use=decid+cpr, use=vt100+fnkeys,
+       tbc=\E[3g, use=ansi+apparrows, use=ansi+csr,
+       use=ansi+cup, use=ansi+erase, use=ansi+idl,
+       use=ansi+local, use=ansi+sgrso, use=decid+cpr,
+       use=vt100+fnkeys,
 
 xtermc|xterm terminal emulator (color),
-       colors#8, ncv#7, pairs#64,
-       op=\E[100m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       ncv#7,
+       op=\E[100m,
        setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
        setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
-       use=xtermm,
+       use=xtermm, use=klone+color,
 
 # From: David J. MacKenzie <djm@va.pubnix.com> 20 Apr 1995
 # Here's a termcap entry I've been using for xterm_color, which comes
@@ -6002,6 +5969,23 @@ xterm-pcolor|xterm with color used for highlights and status line,
            %t;7;31%;%?%p3%t;7;34%;m,
        smso=\E[7;31m, smul=\E[4;42m, use=xterm+sl, use=xterm-r6,
 
+# This was mentioned
+#      http://unix.stackexchange.com/questions/119/colors-in-man-pages
+# pointing to
+#      http://nion.modprobe.de/blog/archives/569-colored-manpages.html
+#      (blog posting by Nico Golde, June 24 2007)
+# archive:
+#      https://web-beta.archive.org/web/20070921042430/http://nion.modprobe.de/mostlike.txt
+# The comment hints where it started, but there are differences:
+#      Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-pcolor
+mostlike|manpages with color looking like most,
+       OTbs@,
+       bold=\E[1m\E[31m,
+       is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H,
+       meml@, memu@, rev=\E[7m\E[34m,
+       rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sgr@,
+       smso=\E[1;30m\E[47m, smul=\E[32m, TS@, use=xterm-pcolor,
+
 # This describes the capabilities of color_xterm, an xterm variant from
 # before ECMA-48 color support was folded into the main-line xterm release.
 # This entry is straight from color_xterm's maintainer.
@@ -6012,29 +5996,24 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X,
        OTbs, am, km, mir, msgr, xenl, XT,
        cols#80, it#8, lines#65, ncv@,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J,
        el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I,
-       ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, kbs=^H, kcub1=\EOD,
-       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[8~, kf1=\E[11~,
-       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~,
-       kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~, khome=\E[7~, kich1=\E[2~,
-       kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM,
-       rmacs=^O, rmam=\E[?7l, rmcup=\E>\E[?41;1r, rmir=\E[4l,
-       rmso=\E[27m, rmul=\E[24m,
+       ich=\E[%p1%d@, ind=\n, is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l,
+       kend=\E[8~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+       kf12=\E[24~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
+       kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+       khome=\E[7~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+       rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l,
+       rmcup=\E>\E[?41;1r, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
        rs1=\E(B\017\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<,
-       sc=\E7,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;m%?%p9%t\016%e\017%;,
        sgr0=\E[0m\017, smacs=^N, smam=\E[?7h,
        smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smso=\E[7m,
-       smul=\E[4m, use=decid+cpr, use=ecma+color,
-       use=vt220+keypad,
+       smul=\E[4m, use=ansi+apparrows, use=ansi+csr,
+       use=ansi+idl, use=ansi+local, use=decid+cpr,
+       use=ecma+color, use=vt220+keypad,
 
 # The IRAF source has a terminfo using "xterm-r5", but line-drawing does not
 # work in that case.  This entry uses xterm+acs, to work around that problem.
@@ -6058,7 +6037,11 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X,
 # does nothing with those, even after installing the app-defaults file which
 # was overlooked by the Debian packager.
 xgterm|graphic terminal for IRAF,
-       use=xterm+acs, use=xterm-r5, use=xterm+keypad,
+       enacs=\E(B\E)0, rmacs=^O,
+       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t
+           \016%e\017%;,
+       sgr0=\E[m\017, smacs=^N, use=xterm+acs, use=xterm-r5,
+       use=xterm+keypad,
 
 # The 'nxterm' distributed with Redhat Linux 5.2 is a slight rehack of
 # xterm-sb_right-ansi-3d, which implements ANSI colors, but does not support
@@ -6083,8 +6066,7 @@ xterm-color|nxterm|generic color xterm,
 # with their Sun keyboard labels instead.
 # From: Simon J. Gerraty <sjg@zen.void.oz.au> 10 Jan 1996
 xterm-sun|xterm with sunFunctionKeys true,
-       kb2=\E[218z, kcpy=\E[197z, kcub1=\EOD, kcud1=\EOB,
-       kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3z, kend=\E[220z,
+       kb2=\E[218z, kcpy=\E[197z, kdch1=\E[3z, kend=\E[220z,
        kent=\EOM, kf1=\E[224z, kf10=\E[233z, kf11=\E[192z,
        kf12=\E[193z, kf13=\E[194z, kf14=\E[195z, kf15=\E[196z,
        kf17=\E[198z, kf18=\E[199z, kf19=\E[200z, kf2=\E[225z,
@@ -6095,16 +6077,18 @@ xterm-sun|xterm with sunFunctionKeys true,
        kf5=\E[228z, kf6=\E[229z, kf7=\E[230z, kf8=\E[231z,
        kf9=\E[232z, kfnd=\E[200z, khlp=\E[196z, khome=\E[214z,
        kich1=\E[2z, knp=\E[222z, kpp=\E[216z, kund=\E[195z,
-       use=xterm+nofkeys, use=xterm+nopcfkeys,
+       use=xterm+kbs, use=ansi+apparrows, use=xterm+nofkeys,
+       use=xterm+nopcfkeys,
+
 xterms-sun|small (80x24) xterm with sunFunctionKeys true,
-       cols#80, lines#24, use=xterm-sun,
+       use=xterm-sun,
 
 #### GNOME (VTE)
 # this describes the alpha-version of GNOME terminal shipped with Redhat 6.0
 gnome-rh62|GNOME terminal,
        bce,
        kdch1=^?, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
-       use=xterm-color,
+       use=linux+kbs, use=xterm-color,
 
 # GNOME Terminal 1.4.0.4 (Redhat 7.2)
 #
@@ -6126,12 +6110,11 @@ gnome-rh62|GNOME terminal,
 #      it hangs in tack after running function-keys test.
 gnome-rh72|GNOME Terminal in RedHat 7,
        bce, km@,
-       kdch1=\E[3~, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
-       rmam=\E[?7l,
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rmam=\E[?7l,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\016%e
            \017%;,
        sgr0=\E[0m\017, smam=\E[?7h, tbc@, use=vt220+cvis,
-       use=xterm-color,
+       use=linux+kbs, use=xterm-color,
 
 # GNOME Terminal 2.0.1 (Redhat 8.0)
 #
@@ -6148,18 +6131,17 @@ gnome-rh72|GNOME Terminal in RedHat 7,
 # that it implements kcbt.
 gnome-rh80|GNOME Terminal in RedHat 8,
        bce@, msgr@,
-       ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kbs=^?,
-       kcbt=\E^I, op=\E[39;49m, use=gnome-rh72,
+       ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kcbt=\E^I,
+       op=\E[39;49m, use=gnome-rh72,
 
 # GNOME Terminal 2.2.1 (Redhat 9.0)
 #
 # bce and msgr are repaired.
 gnome-rh90|GNOME Terminal in RedHat 9,
        bce, msgr, XT,
-       hpa=\E[%i%p1%dG, kDC=\E[3;2~, kLFT=\EO2D, kRIT=\EO2C,
-       kb2=\E[E, kcbt=\E[Z, kend=\EOF, khome=\EOH, tbc=\E[3g,
-       vpa=\E[%i%p1%dd, use=xterm+pcf0, use=xterm+pcfkeys,
-       use=gnome-rh80,
+       hpa=\E[%i%p1%dG, kLFT=\EO2D, kRIT=\EO2C, kb2=\E[E,
+       kcbt=\E[Z, tbc=\E[3g, vpa=\E[%i%p1%dd, use=xterm+pcf0,
+       use=xterm+pcfkeys, use=gnome-rh80,
 
 # GNOME Terminal 2.14.2 (Fedora Core 5)
 # Ed Catmur notes that gnome-terminal has recognized soft-reset since May 2002.
@@ -6228,10 +6210,9 @@ gnome-2012|GNOME Terminal 3.6.0,
 # The parameters with \EO (SS3) are technically an error, since SS3 should have
 # no parameters.  This appears to be rote copying based on xterm+pcc0.
 vte+pcfkeys|VTE's variation on xterm+pcfkeys (building block),
-       kf1=\EOP, kf13=\EO1;2P, kf14=\EO1;2Q, kf15=\EO1;2R,
-       kf16=\EO1;2S, kf2=\EOQ, kf25=\EO1;5P, kf26=\EO1;5Q,
-       kf27=\EO1;5R, kf28=\EO1;5S, kf3=\EOR, kf37=\EO1;6P,
-       kf38=\EO1;6Q, kf39=\EO1;6R, kf4=\EOS, kf40=\EO1;6S,
+       kf13=\EO1;2P, kf14=\EO1;2Q, kf15=\EO1;2R, kf16=\EO1;2S,
+       kf25=\EO1;5P, kf26=\EO1;5Q, kf27=\EO1;5R, kf28=\EO1;5S,
+       kf37=\EO1;6P, kf38=\EO1;6Q, kf39=\EO1;6R, kf40=\EO1;6S,
        kf49=\EO1;3P, kf50=\EO1;3Q, kf51=\EO1;3R, kf52=\EO1;3S,
        kf61=\EO1;4P, kf62=\EO1;4Q, kf63=\EO1;4R,
        use=xterm+pcfkeys,
@@ -6265,13 +6246,13 @@ vte-2014|VTE 0.35.1,
        ncv@,
        cbt=\E[Z, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l,
        ich=\E[%p1%d@, kent=\EOM, use=ecma+index,
-       use=xterm+sm+1006, use=xterm+pcfkeys, use=vte-2012,
+       use=oldxterm+sm+1006, use=xterm+pcfkeys, use=vte-2012,
        use=bracketed+paste,
 
 # As of January 2018, this was the  most recent release,
 # e.g., with gnome-terminal 3.26.2
 vte-2017|VTE 0.50.2,
-       use=ecma+strikeout, use=vte-2014,
+       E3=\E[3J, use=ecma+strikeout, use=vte-2014,
 
 # VTE 0.51.2 and gnome-terminal 3.28.2 copied a feature from KovId's TTY
 # late in 2017 for changing the appearance of underlines, which was
@@ -6326,10 +6307,11 @@ xfce|Xfce Terminal,
 hterm|Chromium hterm,
        npc,
        U8#1,
-       kcbt=\E[Z, kent=\EOM, nel=\EE, use=xterm+osc104,
-       use=ecma+index, use=ansi+rep, use=ecma+strikeout,
-       use=vt420+lrmm, use=xterm+sm+1006, use=xterm+tmux,
-       use=ecma+italics, use=xterm+pcfkeys, use=xterm-basic,
+       kcbt=\E[Z, kent=\EOM, nel=\EE, use=linux+kbs,
+       use=xterm+osc104, use=ecma+index, use=ansi+rep,
+       use=ecma+strikeout, use=vt420+lrmm, use=xterm+focus,
+       use=xterm+sm+1006, use=xterm+tmux, use=ecma+italics,
+       use=xterm+pcfkeys, use=xterm-basic,
        use=bracketed+paste,
 hterm-256color|Chromium hterm with xterm 256-colors,
        use=xterm+256color2, use=hterm,
@@ -6355,29 +6337,27 @@ hterm-256color|Chromium hterm with xterm 256-colors,
 # trimmed to eliminate those.  Also, since it is a slightly older version of
 # VTE, it lacks a few more features (again, trimmed).
 termite|VTE-based terminal,
-       am, ccc, km, mir, msgr, npc, xenl,
-       cols#80, it#8, lines#24, ncv@,
+       am, km, mir, msgr, npc, xenl,
+       cols#80, lines#24, ncv@,
        acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
             yzz{{||}}~~,
-       bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
-       flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
-       ht=^I, hts=\EH, ind=\n, invis=\E[8m,
+       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+       el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
+       hpa=\E[%i%p1%dG, ind=\n, invis=\E[8m,
        is2=\E[!p\E[?3;4l\E[4l\E>, kb2=\EOE, kbs=^?, kcbt=\E[Z,
-       kent=\EOM, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B,
+       kent=\EOM, kmous=\E[M, rev=\E[7m, ri=\EM, rmacs=\E(B,
        rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
-       rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
+       rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
            %t;7%;%?%p7%t;8%;m,
        sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smkx=\E[?1h\E=,
-       smso=\E[7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
-       use=xterm+alt1049, use=ecma+index, use=ansi+idc,
-       use=ansi+idl, use=ansi+enq, use=ecma+italics,
-       use=xterm+256color, use=ecma+color, use=vt220+cvis,
-       use=xterm+pcfkeys, use=xterm+sl-twm,
+       smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, use=ansi+csr,
+       use=ansi+enq, use=ansi+idc, use=ansi+idl,
+       use=ansi+inittabs, use=ecma+index, use=ecma+italics,
+       use=ansi+local, use=xterm+alt1049, use=xterm+256color,
+       use=ecma+color, use=vt220+cvis, use=xterm+pcfkeys,
+       use=xterm+sl-twm,
 
 #### Other GNOME
 # Multi-GNOME-Terminal 1.6.2
@@ -6392,7 +6372,8 @@ mgt|Multi GNOME Terminal,
 # or not is debatable).
 kvt|KDE terminal,
        bce, km@,
-       kdch1=^?, kend=\E[F, khome=\E[H, use=xterm-color,
+       kdch1=^?, kend=\E[F, khome=\E[H, use=linux+kbs,
+       use=xterm-color,
 
 # Konsole 1.0.1 (2001/11/25)
 # (formerly known as kvt)
@@ -6450,17 +6431,17 @@ kvt|KDE terminal,
 konsole-base|KDE console window (common),
        bce, km@, npc, XT,
        ncv@,
-       blink=\E[5m, dim=\E[2m, ech=\E[%p1%dX,
-       flash=\E[?5h$<100/>\E[?5l, hpa=\E[%i%p1%dG,
-       invis=\E[8m, kbs=^?, kdch1=\E[3~, kend=\E[4~, kf1@, kf10@,
-       kf11@, kf12@, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2@,
-       kf20@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, kfnd@, khome=\E[1~,
-       kslt@, rmam=\E[?7l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
+       ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l,
+       hpa=\E[%i%p1%dG, kend=\E[4~, kf1@, kf10@, kf11@, kf12@, kf13@,
+       kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2@, kf20@, kf3@, kf4@,
+       kf5@, kf6@, kf7@, kf8@, kf9@, kfnd@, khome=\E[1~, kslt@,
+       rmam=\E[?7l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
        rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
            %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[0m\017, smam=\E[?7h, vpa=\E[%i%p1%dd,
-       use=ecma+index, use=xterm+sm+1006, use=ecma+strikeout,
+       use=ansi+sgrdim, use=ecma+index, use=xterm+focus,
+       use=xterm+sm+1006, use=ecma+strikeout,
        use=ecma+italics, use=ecma+color, use=xterm-r6,
        use=vt220+cvis, use=bracketed+paste,
        use=report+version,
@@ -6549,11 +6530,11 @@ konsole+pcfkeys|konsole subset of xterm+pcfkeys,
 # it is still useful for deriving the other entries, since the developer
 # provided function-keys based on xterm.
 konsole-vt100|KDE console window with VT100 (sic) keyboard,
-       kbs=^?, kdch1=\E[3~, kend=\E[F, kf1=\E[11~, kf10=\E[21~,
-       kf11=\E[23~, kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@,
-       kf18@, kf19@, kf2=\E[12~, kf20@, kf3=\E[13~, kf4=\E[14~,
-       kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khome=\E[H, use=konsole-base,
+       kend=\E[F, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+       kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@,
+       kf2=\E[12~, kf20@, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~,
+       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
+       use=konsole-base,
 
 # Obsolete: vt420pc.keytab was added in June 2000, dropped from the install in
 # September 2008 and removed in June 2016.  The developer who removed it stated
@@ -6646,31 +6627,28 @@ mlterm3|multi lingual terminal emulator 3.x,
 #
 mlterm2|multi lingual terminal emulator 2.x,
        am, eslok, km, mc5i, mir, msgr, npc, xenl, XT,
-       colors#8, cols#80, it#8, lines#24, pairs#64,
+       colors#8, cols#80, lines#24, pairs#64,
        acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
        ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=,
-       home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n,
+       home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ind=\n,
        is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^?,
-       kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       kend=\EOF, kent=\EOM, khome=\EOH, kind=\EO1;2B, kmous=\E[M,
-       kri=\EO1;2A, mc0=\E[i, nel=\EE, op=\E[39;49m, rc=\E8,
-       rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
+       kcbt=\E[Z, kend=\EOF, kent=\EOM, kind=\EO1;2B, kmous=\E[M,
+       kri=\EO1;2A, mc0=\E[i, nel=\EE, op=\E[39;49m, rev=\E[7m,
+       ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l,
        rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
        rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l,
-       sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e
            \E(B%;,
        sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       u8=\E[?1;2c, vpa=\E[%i%p1%dd, use=ansi+enq,
-       use=vt220+vtedit, use=xterm+alt1049, use=ecma+index,
-       use=mlterm+pcfkeys, use=vt220+cvis, use=xterm+r6f2,
+       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u8=\E[?1;2c,
+       vpa=\E[%i%p1%dd, use=ansi+apparrows, use=ansi+csr,
+       use=ansi+enq, use=ansi+idl, use=ansi+inittabs,
+       use=ansi+local, use=vt220+vtedit, use=xterm+alt1049,
+       use=ecma+index, use=mlterm+pcfkeys, use=vt220+cvis,
+       use=xterm+r6f2,
 
 # The insert/delete/home/end keys do not respond to modifiers because mlterm
 # looks in its termcap to decide which string to send.  If it used terminfo
@@ -6712,29 +6690,25 @@ mlterm-256color|mlterm 3.0 with xterm 256-colors,
 # removed dch/dch1 because they are inconsistent with bce/ech -TD
 # remove km as per tack test -TD
 rxvt-basic|rxvt terminal base (X Window System),
-       OTbs, am, bce, eo, mir, msgr, xenl, xon, XT,
-       cols#80, it#8, lines#24,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
-       enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
-       ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
-       ind=\n, is1=\E[?47l\E=\E[?1l,
-       is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^H,
-       kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
-       rmir=\E[4l, rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
+       OTbs, bce, eo, mir, xenl, xon, XT,
+       blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, el1=\E[1K,
+       flash=\E[?5h$<100/>\E[?5l, ich=\E[%p1%d@,
+       is1=\E[?47l\E=\E[?1l,
+       is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
+       kcbt=\E[Z, kmous=\E[M, rev=\E[7m, ri=\EM, rmir=\E[4l,
+       rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
        rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
        rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?
            25h,
-       s0ds=\E(B, s1ds=\E(0, sc=\E7,
+       s0ds=\E(B, s1ds=\E(0,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
            %p9%t\016%e\017%;,
-       sgr0=\E[0m\017, smacs=^N, smir=\E[4h, smkx=\E=, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, use=xterm+alt47, use=vt100+enq,
+       sgr0=\E[0m\017, smir=\E[4h, smkx=\E=, smso=\E[7m,
+       smul=\E[4m, use=ansi+csr, use=ansi+idl, use=ansi+local,
+       use=xterm+alt47, use=vt100+enq, use=vt100+4bsd,
        use=rxvt+pcfkeys, use=vt220+cvis, use=vt220+keypad,
+
 # Key Codes from rxvt reference:
 #
 # Note: Shift + F1-F10 generates F11-F20
@@ -6818,23 +6792,19 @@ rxvt-basic|rxvt terminal base (X Window System),
 rxvt+pcfkeys|rxvt fragment for PC-style fkeys,
        kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E[2$, kLFT=\E[d,
        kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kel=\E[8\^, kend=\E[8~, kf1=\E[11~,
-       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
-       kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
-       kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
+       kcuf1=\E[C, kcuu1=\E[A, kel=\E[8\^, kend=\E[8~,
        kf21=\E[23$, kf22=\E[24$, kf23=\E[11\^, kf24=\E[12\^,
        kf25=\E[13\^, kf26=\E[14\^, kf27=\E[15\^, kf28=\E[17\^,
-       kf29=\E[18\^, kf3=\E[13~, kf30=\E[19\^, kf31=\E[20\^,
-       kf32=\E[21\^, kf33=\E[23\^, kf34=\E[24\^, kf35=\E[25\^,
-       kf36=\E[26\^, kf37=\E[28\^, kf38=\E[29\^, kf39=\E[31\^,
-       kf4=\E[14~, kf40=\E[32\^, kf41=\E[33\^, kf42=\E[34\^,
-       kf43=\E[23@, kf44=\E[24@, kf5=\E[15~, kf6=\E[17~,
-       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[7~, kind=\E[a,
-       kri=\E[b, kDC5=\E[3\^, kDC6=\E[3@, kDN=\E[b, kDN5=\EOb,
-       kEND5=\E[8\^, kEND6=\E[8@, kHOM5=\E[7\^, kHOM6=\E[7@,
-       kIC5=\E[2\^, kIC6=\E[2@, kLFT5=\EOd, kNXT5=\E[6\^,
-       kNXT6=\E[6@, kPRV5=\E[5\^, kPRV6=\E[5@, kRIT5=\EOc,
-       kUP=\E[a, kUP5=\EOa, use=vt220+vtedit,
+       kf29=\E[18\^, kf30=\E[19\^, kf31=\E[20\^, kf32=\E[21\^,
+       kf33=\E[23\^, kf34=\E[24\^, kf35=\E[25\^, kf36=\E[26\^,
+       kf37=\E[28\^, kf38=\E[29\^, kf39=\E[31\^, kf40=\E[32\^,
+       kf41=\E[33\^, kf42=\E[34\^, kf43=\E[23@, kf44=\E[24@,
+       khome=\E[7~, kind=\E[a, kri=\E[b, kDC5=\E[3\^, kDC6=\E[3@,
+       kDN=\E[b, kDN5=\EOb, kEND5=\E[8\^, kEND6=\E[8@,
+       kHOM5=\E[7\^, kHOM6=\E[7@, kIC5=\E[2\^, kIC6=\E[2@,
+       kLFT5=\EOd, kNXT5=\E[6\^, kNXT6=\E[6@, kPRV5=\E[5\^,
+       kPRV6=\E[5@, kRIT5=\EOc, kUP=\E[a, kUP5=\EOa,
+       use=vt220+vtedit, use=xterm+nopcfkeys,
 
 # rxvt was originally "xvt", first announced in April 1993:
 #      http://www.krsaborio.net/linux-desktops/research/1993/0416.html
@@ -6934,7 +6904,6 @@ rxvt-16color|rxvt with 16 colors like aixterm,
 #      (not in rxvt, but not documented by mrxvt) but not CSI 19 t.
 # +    none of the "dynamic colors" (OSC colors) scripts work.
 mrxvt|multitabbed rxvt,
-       XT,
        kEND=\E[8;2~, kHOM=\E[7;2~, kcub1=\E[D, kcud1=\E[B,
        kcuf1=\E[C, kcuu1=\E[A, kend=\E[8~, khome=\E[7~,
        kEND3=\E[8;3~, kEND4=\E[8;4~, kEND5=\E[8;5~,
@@ -6958,32 +6927,27 @@ mrxvt-256color|multitabbed rxvt with 256 colors,
 # remove nonworking flash -TD
 # remove km as per tack test -TD
 Eterm|Eterm-color|Eterm with xterm-style color support (X Window System),
-       am, bce, bw, eo, mc5i, mir, msgr, xenl, xon, XT,
-       btns#5, cols#80, it#8, lines#24, lm#0, ncv@,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+       bce, bw, eo, mc5i, mir, xenl, xon, XT,
+       btns#5, lm#0, ncv@,
+       blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
        ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
-       home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, is1=\E[?47l\E>\E[?1l,
+       hpa=\E[%i%p1%dG, ich=\E[%p1%d@, is1=\E[?47l\E>\E[?1l,
        is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kNXT@,
-       kPRV@, ka1=\E[7~, ka3=\E[5~, kb2=\EOu, kbeg=\EOu, kbs=^H,
-       kc1=\E[8~, kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M,
-       mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
-       rmam=\E[?7l, rmir=\E[4l, rmkx=, rmso=\E[27m, rmul=\E[24m,
+       kPRV@, ka1=\E[7~, ka3=\E[5~, kb2=\EOu, kbeg=\EOu, kc1=\E[8~,
+       kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M, mc4=\E[4i,
+       mc5=\E[5i, rev=\E[7m, ri=\EM, rmam=\E[?7l, rmir=\E[4l, rmkx=,
+       rmso=\E[27m, rmul=\E[24m,
        rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
        rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?
            25h,
-       sc=\E7,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, smkx=,
-       smso=\E[7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
-       use=xterm+alt47, use=vt100+enq, use=rxvt+pcfkeys,
-       use=ecma+color, use=vt220+cvis,
+       sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h, smkx=, smso=\E[7m,
+       smul=\E[4m, vpa=\E[%i%p1%dd, use=ansi+csr, use=ansi+idl,
+       use=ansi+local, use=xterm+alt47, use=vt100+enq,
+       use=rxvt+pcfkeys, use=ecma+color, use=vt100+4bsd,
+       use=vt220+cvis,
 
 Eterm-256color|Eterm with xterm 256-colors,
        use=xterm+256color, use=Eterm,
@@ -7003,8 +6967,7 @@ aterm|AfterStep terminal,
 # vttest shows several problems with keyboard, cursor-movements.
 # see also https://invisible-island.net/xterm/xterm.faq.html#bug_xiterm
 xiterm|internationalized terminal emulator for X,
-       km@,
-       kbs=^?, kdch1=\E[3~, use=klone+color, use=xterm-r6,
+       km@, use=klone+color, use=xterm-r6,
 
 
 #### HPTERM
@@ -7130,28 +7093,27 @@ emu-220|Emu-220 (vt200-7bit mode),
        cols#80, it#8, lines#24, vt#200,
        acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
        blink=\E[0;5m, bold=\E[0;1m, clear=\E[2J\E[H, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D,
-       cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A,
-       dch=\E[%p1%dP, dch1=\E[1P, dl=\E[%p1%dM, dl1=\E[1M,
-       ed=\E[0J, el=\E[0K, el1=\E[1K, enacs=\E)0, home=\E[H, ht=^I,
-       hts=\EH, if=/usr/share/tabset/vt300, il=\E[%p1%dL,
-       il1=\E[1L, ind=\ED, is2=\E>\E[?1l\E[?3l\E[4l\E[?7h,
-       kbs=^H, kcmd=\E[29~, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+       cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C,
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[1A, dch=\E[%p1%dP,
+       dch1=\E[1P, dl=\E[%p1%dM, dl1=\E[1M, ed=\E[0J, el=\E[0K,
+       el1=\E[1K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH,
+       if=/usr/share/tabset/vt300, il=\E[%p1%dL, il1=\E[1L,
+       ind=\ED, is2=\E>\E[?1l\E[?3l\E[4l\E[?7h, kbs=^H,
+       kcmd=\E[29~, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
        kcuu1=\E[A, kent=\EOM, kf0=\EOp, kf1=\EOq, kf10=\EOl,
        kf11=\EOm, kf12=\EOn, kf13=\EOP, kf14=\EOQ, kf15=\EOR,
        kf16=\EOS, kf2=\EOr, kf26=\E[17~, kf27=\E[18~, kf28=\E[19~,
        kf29=\E[20~, kf3=\EOs, kf30=\E[21~, kf34=\E[26~,
        kf37=\E[31~, kf38=\E[32~, kf39=\E[33~, kf4=\EOt,
        kf40=\E[34~, kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx,
-       kf9=\EOy, khlp=\E[28~, rc=\E8, rev=\E[0;7m, ri=\EM, rmacs=^O,
+       kf9=\EOy, khlp=\E[28~, rev=\E[0;7m, ri=\EM, rmacs=^O,
        rmcup=\E>, rmkx=\E>, rmso=\E[m, rmul=\E[m,
-       rs2=\E[4l\E[34l\E[?1l\E[?3l\E[?5l\E[?7h, sc=\E7,
+       rs2=\E[4l\E[34l\E[?1l\E[?3l\E[?5l\E[?7h,
        sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;
            2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smcup=\E[?1l\E=, smkx=\E=,
-       smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g, use=vt220+vtedit,
-       use=vt220+cvis,
+       smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g, use=ansi+csr,
+       use=ansi+local, use=vt220+vtedit, use=vt220+cvis,
 
 #### MVTERM
 # A commercial product, Reportedly a version of Xterm with an OPEN LOOK UI,
@@ -7165,26 +7127,20 @@ emu-220|Emu-220 (vt200-7bit mode),
 #      apparently implements alternate screen like xterm
 #      does not use padding, of course.
 mvterm|vv100|SwitchTerm aka mvTERM,
-       am, km, mir, msgr, xenl, xon,
-       colors#8, cols#80, it#8, lines#24, pairs#64,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I,
-       hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
-       ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
-       kcuu1=\EOA, kf0=\EOy, kf10=\EOx, kf5=\EOt, kf6=\EOu,
-       kf7=\EOv, kf8=\EOl, kf9=\EOw, op=\E[100m, rc=\E8, rev=\E[7m,
-       ri=\EM, rmacs=^O, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+       km, mir, xenl, xon,
+       colors#8, pairs#64,
+       blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J,
+       el=\E[K, ich=\E[%p1%d@, ich1=\E[@, kcub1=\EOD, kcud1=\EOB,
+       kcuf1=\EOC, kcuu1=\EOA, op=\E[100m, rev=\E[7m, ri=\EM,
+       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
        rs2=\E>\E[1;3;4;5;6l\E[?7h\E[100m\E[m\E[r\E[2J\E[H,
-       sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smkx=\E[?1h\E=, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, use=xterm+alt47, use=vt100+fnkeys,
+       sgr0=\E[m\017, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+       use=ansi+csr, use=ansi+idl, use=ansi+local,
+       use=xterm+alt47, use=vt100+fnkeys, use=vt100+4bsd,
        use=x10term+sl,
 
 #### MTERM
@@ -7196,19 +7152,16 @@ mterm-ansi|ANSI emulation,
        am, bw, mir, msgr,
        it#8,
        acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
-       el=\E[K, home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=,
-       il=\E[%p1%dL, il1=\E[L, ind=\E[S, invis=\E[8m,
-       is2=\E)0\017, kbs=^H, nel=\EE, rev=\E[7m, ri=\E[T, rmacs=^O,
-       rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
+       bel=^G, cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
+       dim=\E[2m, ech=\E[%p1%dX, home=\E[H, hpa=\E[%i%p1%d`,
+       ht=^I, ich1=, ind=\E[S, is2=\E)0\017, kbs=^H, nel=\EE, ri=\E[T,
+       rmacs=^O, rmso=\E[27m, rmul=\E[24m,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
            %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smir=\E[4h, smso=\E[7m,
-       smul=\E[4m, vpa=\E[%i%p1%dd, use=ecma+index,
+       sgr0=\E[m\017, smacs=^N, vpa=\E[%i%p1%dd, use=ansi+erase,
+       use=ansi+idc1, use=ansi+idl, use=ansi+local,
+       use=ansi+sgrbold, use=ecma+index,
+
 # mterm normally sets $TERM to "mterm"
 mterm|mouse-sun|Der Mouse term,
        am, bw, mir,
@@ -7221,32 +7174,28 @@ mterm|mouse-sun|Der Mouse term,
 #
 # note: kdch1, kfnd, kslt are in the source code, but do not work -TD
 decansi|ANSI emulation with DEC compatibility hacks,
-       am, mir, msgr, xenl,
-       colors#8, it#8, pairs#64,
-       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, enacs=\E(B\E)0,
-       home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, il=\E[%p1%dL,
-       il1=\E[L, ind=\E[S, invis=\E[8m, is2=\E)0\E[r\017, kbs=^H,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\E[11~,
-       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
-       kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
-       kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
-       kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~, nel=\EE, op=\E[0m, rc=\E8, rev=\E[7m,
-       ri=\E[T, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
-       rmso=\E[27m, rmul=\E[24m, sc=\E7, setab=\E[4%p1%dm,
+       am, mir, msgr, xenl,
+       colors#8, it#8, pairs#64,
+       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+       bel=^G, cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
+       dim=\E[2m, ech=\E[%p1%dX, enacs=\E(B\E)0, home=\E[H,
+       hpa=\E[%i%p1%d`, ht=^I, ich1=, ind=\E[S, is2=\E)0\E[r\017,
+       kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+       kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+       kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[12~,
+       kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~,
+       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, nel=\EE,
+       op=\E[0m, ri=\E[T, rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>,
+       rmso=\E[27m, rmul=\E[24m, setab=\E[4%p1%dm,
        setaf=\E[3%p1%dm,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
            %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
-       use=ansi+cpr, use=vt220+vtedit, use=ecma+index,
-       use=vt220+cvis,
+       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
+       vpa=\E[%i%p1%dd, use=ansi+cpr, use=ansi+csr,
+       use=ansi+erase, use=ansi+idc1, use=ansi+idl,
+       use=ansi+local, use=ansi+sgrbold, use=vt220+vtedit,
+       use=ecma+index, use=vt220+cvis,
 
 #### VWM
 # http://vwm.sourceforge.net/
@@ -7258,22 +7207,20 @@ vwmterm|VWM terminal,
        am, bce, ccc, mir, msgr, npc, xenl, xon,
        colors#8, pairs#64,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[?25h, dim=\E[2m,
-       ed=\E[J, el=\E[K, home=\E[H, il1=\E[L, ind=\n, invis=\E[8m,
+       bel=^G, bold=\E[1m, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
+       cvvis=\E[?25h, dim=\E[2m, home=\E[H, il1=\E[L, ind=\n,
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
        kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
        kf11=\E[22~, kf12=\E[23~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D,
        kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khome=\E[1~, knp=\E[6~, kpp=\E[5~, rev=\E[7m, rmacs=\E[10m,
+       khome=\E[1~, knp=\E[6~, kpp=\E[5~, rmacs=\E[10m,
        rmam=\E[?7l, rs1=\E[H\E[J\E[m\Ec, setab=\E[4%p1%dm,
        setaf=\E[3%p1%dm,
        sgr=\E[0;10%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
            %t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
        sgr0=\E[0;10m, smacs=\E[11m, smam=\E[?7h, smso=\E[3m,
-       smul=\E[4m, use=vt220+cvis, use=xterm+alt1049,
+       smul=\E[4m, use=ansi+erase, use=ansi+local, use=ansi+sgr,
+       use=vt220+cvis, use=xterm+alt1049,
 
 #### MGR
 #
@@ -7328,14 +7275,12 @@ st|stterm|aka simpleterm,
 # This entry discards the ccc/initc capabilities from st-0.7 because they
 # belong in st-256color.
 st-0.8|simpleterm 0.8,
-       dim=\E[2m, kcbt@, kent@, oc=\E]104\007,
-       sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
-           %t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m,
-       Ms=\E]52;%p1%s;%p2%s\007, kDN3=\E[1;3B, kDN5=\E[1;5B,
-       kLFT3=\E[1;3D, kLFT5=\E[1;5D, kNXT3=\E[6;3~,
-       kNXT5=\E[6;5~, kPRV3=\E[5;3~, kPRV5=\E[5;5~,
-       kRIT3=\E[1;3C, kRIT5=\E[1;5C, kUP3=\E[1;3A, kUP5=\E[1;5A,
-       use=ecma+strikeout, use=st-0.6,
+       kcbt@, kent@, oc=\E]104\007, Ms=\E]52;%p1%s;%p2%s\007,
+       kDN3=\E[1;3B, kDN5=\E[1;5B, kLFT3=\E[1;3D, kLFT5=\E[1;5D,
+       kNXT3=\E[6;3~, kNXT5=\E[6;5~, kPRV3=\E[5;3~,
+       kPRV5=\E[5;5~, kRIT3=\E[1;3C, kRIT5=\E[1;5C,
+       kUP3=\E[1;3A, kUP5=\E[1;5A, use=ecma+strikeout,
+       use=st-0.6,
 
 # Reviewed 0.7:
 #      dim is intermittent, sometimes works, sometimes does not
@@ -7347,18 +7292,12 @@ st-0.8|simpleterm 0.8,
 #      provided with the source is incorrect, since Se/Ss are mis-coded
 #      as booleans rather than strings.
 st-0.7|simpleterm 0.7,
-       ccc,
-       dim=\E[2m,
-       initc=\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*
-             %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
-       kcbt@, kent@, oc=\E]104\007,
-       sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
-           %t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m,
-       Ms=\E]52;%p1%s;%p2%s\007, kDN3=\E[1;3B, kDN5=\E[1;5B,
-       kLFT3=\E[1;3D, kLFT5=\E[1;5D, kNXT3=\E[6;3~,
-       kNXT5=\E[6;5~, kPRV3=\E[5;3~, kPRV5=\E[5;5~,
-       kRIT3=\E[1;3C, kRIT5=\E[1;5C, kUP3=\E[1;3A, kUP5=\E[1;5A,
-       use=ecma+strikeout, use=st-0.6,
+       kcbt@, kent@, Ms=\E]52;%p1%s;%p2%s\007, kDN3=\E[1;3B,
+       kDN5=\E[1;5B, kLFT3=\E[1;3D, kLFT5=\E[1;5D,
+       kNXT3=\E[6;3~, kNXT5=\E[6;5~, kPRV3=\E[5;3~,
+       kPRV5=\E[5;5~, kRIT3=\E[1;3C, kRIT5=\E[1;5C,
+       kUP3=\E[1;3A, kUP5=\E[1;5A, use=ecma+strikeout,
+       use=st-0.6, use=xterm+256color,
 
 # st-0.4.1
 #
@@ -7389,60 +7328,40 @@ st-0.7|simpleterm 0.7,
 # still has no function keys past kf36 (no combinations of modifiers)
 # no application keypad mode, e.g, kent.
 st-0.6|simpleterm 0.6,
-       am, bce, hs, mir, msgr, npc, xenl, XT,
-       colors#8, cols#80, it#8, lines#24, pairs#64,
+       bce, mir, npc, xenl, XT,
+       colors#8, pairs#64,
        acsc=+C\,D-A.B0E``aaffgghFiGjjkkllmmnnooppqqrrssttuuvvwwxxyy
             zz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
-       enacs=\E)0, flash=\E[?5h$<100/>\E[?5l, fsl=^G, home=\E[H,
-       hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
-       is2=\E[4l\E>\E[?1034l, kDC=\E[3;2~, kEND=\E[1;2F,
-       kHOM=\E[1;2H, kIC=\E[2;2~, kLFT=\E[1;2D, kNXT=\E[6;2~,
-       kPRV=\E[5;2~, kRIT=\E[1;2C, ka1=\E[1~, ka3=\E[5~, kb2=\EOu,
-       kbs=^?, kc1=\E[4~, kc3=\E[6~, kcbt=\E[Z, kclr=\E[3;5~,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       kdl1=\E[3;2~, ked=\E[1;5F, kel=\E[1;2F, kent=\EOM,
-       kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
-       kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R, kf16=\E[1;2S,
-       kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~, kf2=\EOQ,
-       kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
-       kf23=\E[23;2~, kf24=\E[24;2~, kf25=\E[1;5P, kf26=\E[1;5Q,
-       kf27=\E[1;5R, kf28=\E[1;5S, kf29=\E[15;5~, kf3=\EOR,
-       kf30=\E[17;5~, kf31=\E[18;5~, kf32=\E[19;5~,
-       kf33=\E[20;5~, kf34=\E[21;5~, kf35=\E[23;5~,
-       kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q, kf39=\E[1;6R,
-       kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~, kf42=\E[17;6~,
-       kf43=\E[18;6~, kf44=\E[19;6~, kf45=\E[20;6~,
-       kf46=\E[21;6~, kf47=\E[23;6~, kf48=\E[24;6~,
-       kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q, kf51=\E[1;3R,
-       kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
-       kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
-       kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
-       kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kil1=\E[2;5~,
-       kind=\E[1;2B, kmous=\E[M, kri=\E[1;2A, krmir=\E[2;2~,
-       mc0=\E[i, mc4=\E[4i, mc5=\E[5i, op=\E[39;49m, rc=\E8,
-       rev=\E[7m, ri=\EM, rmacs=\E(B, rmir=\E[4l, rmkx=\E[?1l\E>,
-       rmso=\E[27m, rmul=\E[24m, rs1=\Ec, rs2=\E[4l\E>\E[?1034l,
-       sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       clear=\E[H\E[2J, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
+       ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
+       flash=\E[?5h$<100/>\E[?5l, hpa=\E[%i%p1%dG,
+       ich=\E[%p1%d@, is2=\E[4l\E>\E[?1034l, kDC=\E[3;2~,
+       kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, kLFT=\E[1;2D,
+       kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C, ka1=\E[1~,
+       ka3=\E[5~, kb2=\EOu, kbs=^?, kc1=\E[4~, kc3=\E[6~, kcbt=\E[Z,
+       kclr=\E[3;5~, kdl1=\E[3;2~, ked=\E[1;5F, kel=\E[1;2F,
+       khome=\E[1~, kil1=\E[2;5~, kind=\E[1;2B, kmous=\E[M,
+       kri=\E[1;2A, krmir=\E[2;2~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
+       op=\E[39;49m, ri=\EM, rmacs=\E(B, rmir=\E[4l,
+       rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
+       rs2=\E[4l\E>\E[?1034l, setab=\E[4%p1%dm,
+       setaf=\E[3%p1%dm,
        setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
        setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
            %t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m,
-       sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smkx=\E[?1h\E=,
-       smso=\E[7m, smul=\E[4m, tbc=\E[3g, u8=\E[?1;2c,
-       vpa=\E[%i%p1%dd, Se=\E[2 q, Ss=\E[%p1%d q, use=ansi+enq,
+       smacs=\E(0, smir=\E[4h, smkx=\E[?1h\E=, u8=\E[?1;2c,
+       vpa=\E[%i%p1%dd, Se=\E[2 q, Ss=\E[%p1%d q,
+       use=ansi+apparrows, use=ansi+csr, use=ansi+enq,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
+       use=ansi+sgrbold, use=vt100+4bsd, use=vt100+pfkeys,
        use=vt220+pcedit, use=ecma+index, use=xterm+alt1049,
        use=vt220+cvis, use=xterm+sl, use=ecma+italics,
        use=ecma+strikeout, use=bracketed+paste,
+       use=xterm+pcf2,
 #
 # st-0.1.1
 #
@@ -7464,25 +7383,23 @@ st-0.6|simpleterm 0.6,
 # Fixes: add eo and xenl per tack, remove nonworking cbt, hts and tbc, invis
 simpleterm|old-st|simpleterm 0.1.1,
        am, eo, mir, msgr, ul, xenl,
-       colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
-       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%dG,
-       ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^?,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
-       kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
-       kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khome=\E[1~, knp=\E[6~, kpp=\E[5~, op=\E[37;40m, rc=\E8,
-       rev=\E[7m, rmacs=\E(B, rmso=\E[m, rmul=\E[m, sc=\E7,
-       setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       cols#80, it#8, lines#24,
+       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H,
+       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
+       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+       dch1=\E[P, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%dG,
+       ht=^I, ich=\E[%p1%d@, ind=\n, kbs=^?, kdch1=\E[3~,
+       kend=\E[4~, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
+       kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~,
+       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+       khome=\E[1~, knp=\E[6~, kpp=\E[5~, rev=\E[7m, rmso=\E[m,
+       rmul=\E[m,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
            %t;7%;m,
-       sgr0=\E[0m, smacs=\E(0, smso=\E[7m, smul=\E[4m,
-       use=vt220+cvis, use=ecma+index,
+       sgr0=\E[0m, smso=\E[7m, smul=\E[4m, use=ansi+arrows,
+       use=ansi+csr, use=ansi+idl, use=vt220+cvis,
+       use=ecma+index, use=klone+color, use=xterm+acs,
+
 st-16color|stterm-16color|simpleterm with 16-colors,
        use=ibm+16color, use=st,
 # Tested with st 0.8.2
@@ -7572,28 +7489,25 @@ terminator|Terminator no line wrap,
        bce, eo, mir, msgr, xenl, xon,
        cols#80, it#8, lines#24, lm#0,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
-       flash=^G, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, is1=\E[?47l\E=\E[?1l,
+       bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       dim=\E[2m, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+       flash=^G, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ind=\n,
+       is1=\E[?47l\E=\E[?1l,
        is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^?,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
-       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
-       kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf2=\EOQ, kf3=\EOR,
-       kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
-       kf9=\E[20~, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B,
-       rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec,
-       rs2=\E[!p\E[?3;4l\E[4l\E>, s0ds=\E(B, s1ds=\E(0, sc=\E7,
+       kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+       kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+       kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~, kf6=\E[17~,
+       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, rev=\E[7m,
+       ri=\EM, rmacs=\E(B, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
+       rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, s0ds=\E(B, s1ds=\E(0,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p5%t;2%;%?%p1%p3%|%t;7
            %;m%?%p9%t\E(0%e\E(B%;,
        sgr0=\E[m\E(B, smacs=\E(0, smir=\E[4h, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, tsl=\E]2;, vpa=\E[%i%p1%dd,
-       use=ansi+enq, use=vt220+pcedit, use=ecma+italics,
-       use=ecma+index, use=xterm+256setaf, use=xterm+sl-twm,
+       smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=ansi+arrows,
+       use=ansi+csr, use=ansi+enq, use=ansi+idl, use=ansi+local,
+       use=vt220+pcedit, use=ecma+italics, use=ecma+index,
+       use=xterm+256setaf, use=xterm+sl-twm,
        use=xterm+alt1049, use=vt220+cvis, use=bracketed+paste,
 
 #### TERMINOLOGY
@@ -7649,9 +7563,7 @@ terminator|Terminator no line wrap,
 terminology-0.6.1|EFL-based terminal emulator (0.6.1),
        mc5i@,
        blink@, ed@, el@, el1@, invis=\E[8m, kLFT=\E[1;2D,
-       kRIT=\E[1;2C, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
-       kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       kind=\E[1;2B, kri=\E[1;2A,
+       kRIT=\E[1;2C, kind=\E[1;2B, kri=\E[1;2A,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p7%t;8
            %;m%?%p9%t\016%e\017%;$<2>,
        vpa=\E[%i%p1%dd, kDC3=\E[3;3~, kDC4=\E[3;4~,
@@ -7705,10 +7617,11 @@ terminology-1.0.0|EFL-based terminal emulator (1.0.0),
 terminology-1.8.1|EFL-based terminal emulator (1.8.1),
        km@,
        cvvis@, flash@, initc@, kcbt=\E[Z, rmm@, smm@, Ms@,
-       use=ecma+index, use=xterm+256setaf, use=ansi+rep,
-       use=ecma+strikeout, use=xterm+sm+1006,
-       use=xterm+pcfkeys, use=xterm+tmux, use=vt220+cvis,
-       use=ecma+italics, use=xterm-basic, use=report+version,
+       use=linux+kbs, use=ecma+index, use=xterm+256setaf,
+       use=ansi+rep, use=ecma+strikeout, use=xterm+focus,
+       use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm+tmux,
+       use=vt220+cvis, use=ecma+italics, use=xterm-basic,
+       use=report+version,
 
 terminology|EFL-based terminal emulator,
        use=terminology-1.8.1,
@@ -7776,12 +7689,19 @@ alacritty-direct|alacritty with direct color indexing,
 # added xterm+sl-twm in 0.3.3 -TD
 alacritty+common|base fragment for alacritty,
        km@, npc,
-       kb2=\EOE, kbs=^?, kcbt=\E[Z, kent=\EOM, Se=\E[0 q,
-       Smulx=\E[4:%p1%dm, use=ecma+index, use=xterm+sm+1006,
-       use=xterm-basic, use=xterm+app, use=ansi+rep,
-       use=xterm+tmux, use=ecma+strikeout, use=xterm+sl-twm,
-       use=ecma+italics, use=xterm+pce2, use=xterm+pcc2,
-       use=xterm+pcf2, use=bracketed+paste,
+       kb2=\EOE, kcbt=\E[Z, kent=\EOM, Se=\E[0 q,
+       Smulx=\E[4:%p1%dm, use=ecma+index, use=xterm+focus,
+       use=xterm+sm+1006, use=xterm-basic, use=xterm+app,
+       use=ansi+rep, use=xterm+tmux, use=ecma+strikeout,
+       use=xterm+sl-twm, use=ecma+italics, use=xterm+pce2,
+       use=xterm+pcc2, use=xterm+pcf2, use=bracketed+paste,
+
+# https://github.com/raphamorim/rio
+# derived from alacritty
+rio|fork of alacritty,
+       use=alacritty,
+rio-direct|fork of alacritty,
+       use=alacritty-direct,
 
 #### Kitty
 # https://github.com/kovidgoyal/kitty
@@ -7901,40 +7821,25 @@ kitty-direct|KovId's TTY using direct colors,
        oc=\E]104\007, use=xterm+direct2, use=kitty+common,
 kitty+common|KovId's TTY common properties,
        am, mc5i, mir, msgr, npc, xenl,
-       cols#80, it#8, lines#24,
+       cols#80, lines#24,
        acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
             yzz{{||}}~~,
-       bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       dim=\E[2m, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
        flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
-       ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
-       ind=\n, kBEG=\E[1;2E, kbeg=\EOE, kbs=^?, kcbt=\E[Z,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       kdch1=\E[3~, kend=\EOF, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
-       kf12=\E[24~, kf13=\E[1;2P, kf14=\E[1;2Q, kf15=\E[1;2R,
-       kf16=\E[1;2S, kf17=\E[15;2~, kf18=\E[17;2~,
-       kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~,
-       kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~,
-       kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R, kf28=\E[1;5S,
-       kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~, kf31=\E[18;5~,
-       kf32=\E[19;5~, kf33=\E[20;5~, kf34=\E[21;5~,
-       kf35=\E[23;5~, kf36=\E[24;5~, kf4=\EOS, kf5=\E[15~,
-       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\EOH,
-       kich1=\E[2~, kind=\E[1;2B, knp=\E[6~, kpp=\E[5~,
-       kri=\E[1;2A, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
-       rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l,
-       rmso=\E[27m, rmul=\E[24m, rs1=\E]\E\\\Ec, sc=\E7,
+       ich=\E[%p1%d@, ind=\n, kBEG=\E[1;2E, kbeg=\EOE, kbs=^?,
+       kcbt=\E[Z, op=\E[39;49m, rev=\E[7m, ri=\EM, rmacs=\E(B,
+       rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l, rmso=\E[27m,
+       rmul=\E[24m, rs1=\E]\E\\\Ec,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;
            %?%p1%p3%|%t;7%;m,
        sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%i%p1%dd, Smulx=\E[4:%p1%dm, use=ansi+enq,
-       use=ansi+rep, use=xterm+sm+1006, use=ecma+index,
-       use=xterm+pcfkeys, use=xterm+sl-twm,
+       smkx=\E[?1h, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
+       Smulx=\E[4:%p1%dm, use=ansi+csr, use=ansi+enq,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
+       use=ansi+rep, use=xterm+focus, use=xterm+sm+1006,
+       use=ecma+index, use=xterm+pcfkeys, use=xterm+sl-twm,
        use=ecma+strikeout, use=ecma+italics,
        use=xterm+alt1049, use=att610+cvis, use=xterm+tmux,
        use=bracketed+paste, use=report+version,
@@ -7979,27 +7884,25 @@ foot-direct|foot with direct color indexing,
        use=xterm+direct, use=foot+base,
 
 foot+base|foot base fragment,
-       am, bce, bw, hs, mir, msgr, npc, xenl, AX, XT,
+       am, bce, bw, mir, msgr, npc, xenl, AX, XT,
        cols#80, it#8, lines#24,
-       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       cub1=^H, cud1=\n, dim=\E[2m, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
-       el1=\E[1K, flash=\E]555\E\\, ind=\n, invis=\E[8m,
-       is2=\E[!p\E[?3;4l\E[4l\E>, kbs=^?, kcbt=\E[Z,
-       oc=\E]104\E\\, op=\E[39;49m, rev=\E[7m, ri=\EM, rmacs=\E(B,
+       bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, dim=\E[2m,
+       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+       flash=\E]555\E\\, ind=\n, is2=\E[!p\E[4l\E>, kbs=^?,
+       kcbt=\E[Z, oc=\E]104\E\\, op=\E[39;49m, ri=\EM,
        rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
-       rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>,
+       rs1=\Ec, rs2=\E[!p\E[4l\E>,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;
            %?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
-       sgr0=\E(B\E[m, smacs=\E(0, smam=\E[?7h, smkx=\E[?1h\E=,
-       smso=\E[7m, smul=\E[4m, E3=\E[3J, use=att610+cvis,
-       use=ansi+csr, use=ansi+cup, use=ansi+enq, use=ansi+local,
-       use=ansi+idc, use=ansi+idl, use=ansi+rca2, use=ansi+rep,
-       use=ansi+tabs, use=ecma+index, use=ecma+italics,
-       use=ecma+strikeout, use=xterm+alt+title,
+       sgr0=\E(B\E[m, smam=\E[?7h, smkx=\E[?1h\E=, E3=\E[3J,
+       use=att610+cvis, use=ansi+csr, use=ansi+cup,
+       use=ansi+enq, use=ansi+local, use=ansi+idc, use=ansi+idl,
+       use=ansi+rca2, use=ansi+rep, use=ansi+tabs,
+       use=ansi+sgrbold, use=ecma+index, use=ecma+italics,
+       use=ecma+strikeout, use=xterm+acs, use=xterm+alt+title,
        use=xterm+pcfkeys, use=xterm+sm+1006, use=xterm+tmux2,
        use=xterm+sl-alt, use=bracketed+paste,
-       use=report+version,
+       use=report+version, use=xterm+focus,
 
 ######## WEB CLIENTS
 
@@ -8053,10 +7956,151 @@ domterm|DomTerm web client,
        bel@, blink@, dim@, invis@, kcbt=\E[Z, ritm@, rmkx=\E[?1l,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
            %t;7%;m,
-       sitm@, smkx=\E[?1h, use=xterm+256setaf, use=ecma+index,
-       use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm-basic,
+       sitm@, smkx=\E[?1h, use=linux+kbs, use=xterm+256setaf,
+       use=ecma+index, use=xterm+focus, use=xterm+sm+1006,
+       use=xterm+pcfkeys, use=xterm-basic,
        use=bracketed+paste,
 
+######## Miscellaneous
+
+#### WezTerm
+# https://wezfurlong.org/wezterm/
+# https://github.com/wez/wezterm
+#
+# which says:
+# "wezterm is a terminal emulator with support for modern features
+#  such as fonts with ligatures, hyperlinks, tabs and multiple windows."
+#
+# wezterm-20230712_072601_f4abf8fd-1.fedora38.x86_64
+# tested with MacOS and Fedora 38/39.
+#
+# General:
+# + written in Rust.
+# + initial screensize is odd, i.e., 81x24
+#   provides no visual feedback on resize
+#   ignores "resize -s"
+#   manual resize and then running resize got off-by-one adjustment
+# + leaves debris (unerased cells) when switching between normal/alternate
+#   screens.
+# + sets TERM=xterm-256color
+# tack:
+# + misplaced message in "am" screen
+# + fails xenl (should be false)
+# + cvvis is same as cnorm, block
+# + has blink and dim
+# + in bce test, blue isn't really blue but some pale purple
+# + modified keys mostly work, but its tab control interferes with some
+# + rmm/smm don't work (always uses escape-prefix)
+# wraptest:
+# + poor (doesn't copy anyone, most of the results are wrong)
+# vttest:
+# + DA is VT5xx with sixel, selective erase, user windows, color
+# + DA2 is VT220 version 277
+# + only the VT100 character set works, contrary to DA/DA2.
+# + no NRCS, either
+# + double-sized character work, with some debris
+# + doesn't switch between 80/132 columns.
+# + numeric keypad ANSI application mode escapes don't work.
+# + numeric keypad ANSI mode misses "0", ".", ","
+# + uses PC-style editing keypad \E[H and \E[F for Find and Select
+# + no VT52
+# + DECSED selective erase doesn't work
+# + SRM doesn't work
+# + 8-bit controls don't work
+# + DECNCSM doesn't work
+# + most DECRQSS do not work (DECSCL, DECSTBM, DECSLRM respond)
+# + DECRQM/DECRPM don't work (most reply permanently reset)
+# + DECLRMM responds to DECRPM, but VT420 rectangle tests do not work.
+#   Some of the left/right margin tests work with the cursor-movement screen,
+#   but DECFI/DECBI do not work.  The other cursor-movement tests are buggy.
+# + implements ECMA-48 cursor movement, but not SL/SR or protected area
+# + implements xterm normal, any-event and button-event mouse, none of the rest
+# + reports window size, none of the other window reports
+wezterm|Wez's Terminal Emulator,
+       km@, xenl@,
+       cvvis@, rmkx=\E[?1l, rmm@, smkx=\E[?1h, smm@,
+       use=xterm-256color,
+
+#### Contour
+# https://github.com/contour-terminal/contour
+#
+# "Modern C++ Terminal Emulator"
+# Contour is a modern and actually fast, modal, virtual terminal emulator,
+# for everyday use. It is aiming for power users with a modern feature mindset.
+#
+# That is three occurrences of "modern" too many -TD
+#
+# MacOS
+# - cannot run, because the package is not signed.
+#
+# Fedora rawhide
+# contour-terminal-0.3.12.262-6.fc39.x86_64
+# - dumps core, cannot test
+#
+# Fedora 39
+# contour-terminal-0.4.0.6245-1.fc38.x86_64
+# - starts but doesn't display
+#
+# Fedora 38
+# contour-terminal-0.4.0.6245-1.fc38.x86_64
+# - starts but doesn't display
+# contour-terminal-0.3.12.262-1.fc38.x86_64
+# + testable (see below)
+# + initial screensize 62x23, no visual feedback on resize, no "resize -s"
+#
+# Sets TERM=contour (which is preferable to xterm).
+#
+# tack:
+# + cvvis is same as cnorm, "|"
+# + sitm/ritm don't work
+# + rmm/smm don't work (always uses escape, but terminfo defines km)
+# + initp interchanges red/blue (bug in tack?)
+# + modified F1-F4 are wrong, sending SS3 with modifier numbers
+# + shifted editing-keypad doesn't send anything
+# + meta key doesn't work
+# + status-line works (based on xterm, including window-resizing)
+# + dots don't line up for home test
+#
+# wraptest:
+# + poor 7/25 differences from xterm (perhaps copying iTerm2)
+#
+# vttest:
+# + hangs in menu 1, etc., when it tries to resize
+#
+# infocmp vs xterm-256color
+# + missing XM/xm
+# + rmcup/smcup doesn't use title-stack (but is implemented)
+# + doesn't use SGR mouse (but is implemented)
+# + sgr doesn't define dim, but dim capability is in terminfo (implemented)
+#
+# Developer's terminfo (compiled-in) uses some extensions.
+contour|contour-latest|Contour Terminal Emulator,
+       am, bce, eslok, hs, km, mc5i, mir, msgr, npc, xenl, xvpa,
+       cols#80, lines#24, pairs#0x7fff,
+       bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       dim=\E[2m, dsl=\E[$~, ech=\E[%p1%dX, el1=\E[1K,
+       flash=\E[?5h$<100/>\E[?5l, fsl=\E[$}, hpa=\E[%i%p1%dG,
+       ind=\n, indn=\E[%p1%dS, invis=\E[8m, ka1=, ka3=, kbs=^?, kc1=,
+       kc3=, kcbt=\E[Z, kend=\EOF, khlp=, kmous=\E[M, kund=,
+       oc=\E]104\E\\, op=\E[39;49m, rev=\E[7m, ri=\EM,
+       rin=\E[%p1%dT, rmam=\E[?7l, rmkx=\E[?1l, rmso=\E[27m,
+       rmul=\E[24m, rs1=\E]\E\\\Ec,
+       sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
+           %t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
+       sgr0=\E(B\E[m, smam=\E[?7h, smkx=\E[?1h, smso=\E[7m,
+       smul=\E[4m, tsl=\E[2$~\E[1$}\E[H\E[2J, vpa=\E[%i%p1%dd,
+       Cs=\E]12;%p1%s\E\\, E3=\E[3J, Rmol=\E[55m, Se=\E[ q,
+       Smol=\E[53m, Smulx=\E[4:%p1%dm, Ss=\E[%p1%d q,
+       use=ansi+apparrows, use=ansi+cup, use=ansi+csr,
+       use=ansi+erase, use=ansi+idc, use=ansi+idl,
+       use=ansi+inittabs, use=ansi+local, use=ansi+rep,
+       use=att610+cvis, use=ecma+italics, use=ecma+strikeout,
+       use=xterm+256color, use=xterm+acs, use=xterm+alt1049,
+       use=xterm+pcc2, use=xterm+pce2, use=xterm+pcf2,
+
+contour-direct|Contour terminal with direct colors,
+       use=xterm+direct, use=contour,
+
 ######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS
 #
 
@@ -8068,9 +8112,8 @@ cbunix|cb unix virtual terminal,
        cols#80, lines#24, lm#0,
        bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
        cup=\EG%p2%c%p1%c, cuu1=\EA, dch1=\EM, dl1=\EN, ed=\EL,
-       el=\EK, ich1=\EO, il1=\EP, ind=\n, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, khome=\EE, rmso=\Eb^D, rmul=\Eb^A,
-       smso=\Ea^D, smul=\Ea^A,
+       el=\EK, ich1=\EO, il1=\EP, ind=\n, khome=\EE, rmso=\Eb^D,
+       rmul=\Eb^A, smso=\Ea^D, smul=\Ea^A, use=vt52+arrows,
 # (vremote: removed obsolete ":nl@:" -- esr)
 vremote|virtual remote terminal,
        am@,
@@ -8089,28 +8132,25 @@ pty|4bsd pseudo teletype,
 eterm|GNU Emacs term.el terminal emulation,
        am, mir, xenl,
        cols#80, lines#24,
-       bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, rev=\E[7m, rmir=\E[4l,
-       rmso=\E[m, rmul=\E[m, sgr0=\E[m, smir=\E[4h, smso=\E[7m,
-       smul=\E[4m, use=xterm+alt47, use=ansi+cpr,
+       bel=^G, bold=\E[1m, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H,
+       cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, ind=\n,
+       rev=\E[7m, rmir=\E[4l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+       smir=\E[4h, smso=\E[7m, smul=\E[4m, use=ansi+cpr,
+       use=ansi+erase, use=ansi+idl, use=ansi+local,
+       use=xterm+alt47,
 
 # The codes supported by the term.el terminal emulation in GNU Emacs 22.2
 eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96,
        msgr,
        colors#8, pairs#64,
-       blink=\E[5m, il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
-       kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       op=\E[39;49m, rc=\E8, ri=\EM, rmso=\E[27m, rmul=\E[24m,
-       rs1=\Ec, sc=\E7, setab=\E[%p1%'('%+%dm,
+       kbs=^?, khome=\E[1~, op=\E[39;49m, ri=\EM, rmso=\E[27m,
+       rmul=\E[24m, rs1=\Ec, setab=\E[%p1%'('%+%dm,
        setaf=\E[%p1%{30}%+%dm,
        sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?
            %p7%t;8%;m,
-       sgr0=\E[m, use=vt220+pcedit, use=eterm,
+       sgr0=\E[m, use=ansi+apparrows, use=ansi+csr,
+       use=ansi+sgr, use=vt220+pcedit, use=eterm,
 
 # shell.el can "do" color, though not nearly as well.
 #
@@ -8127,10 +8167,10 @@ eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96,
 # italics but does not lose the color information -TD 2017/01/28.
 dumb-emacs-ansi|Emacs dumb terminal with ANSI color codes,
        am, hc,
-       colors#8, it#8, ncv#13, pairs#64,
+       it#8, ncv#13,
        bold=\E[1m, cud1=\n, ht=^I, ind=\n, op=\E[39;49m,
-       rmul=\E[24m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
-       sgr0=\E[m, smul=\E[4m, use=ecma+italics,
+       rmul=\E[24m, sgr0=\E[m, smul=\E[4m, use=ecma+italics,
+       use=klone+color,
 
 #### Screen
 
@@ -8205,32 +8245,29 @@ dumb-emacs-ansi|Emacs dumb terminal with ANSI color codes,
 # the (Siemens Nixdorf) 97801 terminal.  It was not shown in the termcap or
 # terminfo entries (which list about 60% of the control sequences).
 screen-base|VT 100/ANSI X3.64 virtual terminal (base),
-       OTbs, OTpt, am, km, mir, msgr, xenl, G0,
-       colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1,
+       OTbs, OTpt, km, mir, xenl, G0,
+       ncv@, U8#1,
        acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy
             yzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
-       clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
-       cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
-       enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG,
-       ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
-       ind=\n, indn=\E[%p1%dS, is2=\E)0, kcbt=\E[Z, kcub1=\EOD,
-       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf10=\E[21~,
-       kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
-       kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       kmous=\E[M, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+       blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+       cnorm=\E[34h\E[?25h, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, cvvis=\E[34l,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, el1=\E[1K, flash=\Eg,
+       hpa=\E[%i%p1%dG, ich=\E[%p1%d@, indn=\E[%p1%dS, is2=\E)0,
+       kbs=^?, kcbt=\E[Z, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
+       kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[15~,
+       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+       khome=\E[1~, kmous=\E[M, nel=\EE, rev=\E[7m, ri=\EM,
        rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m, rmul=\E[24m,
-       rs2=\Ec\E[?1000l\E[?25h, sc=\E7,
+       rs2=\Ec\E[?1000l\E[?25h,
        sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;
            5%;%?%p5%t;2%;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=,
-       smso=\E[3m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
-       E0=\E(B, S0=\E(%p1%c, use=xterm+kbs, use=vt220+pcedit,
-       use=xterm+alt1049, use=ecma+color, use=vt100+enq,
+       sgr0=\E[m\017, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[3m,
+       smul=\E[4m, vpa=\E[%i%p1%dd, E0=\E(B, S0=\E(%p1%c,
+       use=ansi+apparrows, use=ansi+csr, use=ansi+erase,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
+       use=xterm+kbs, use=vt220+pcedit, use=xterm+alt1049,
+       use=ecma+color, use=vt100+enq, use=vt100+4bsd,
 
 screen|VT 100/ANSI X3.64 virtual terminal,
        use=screen4,
@@ -8276,7 +8313,7 @@ screen-256color-s|GNU Screen with 256 colors and status line,
        use=xterm+256setaf, use=screen-s,
 
 screen-256color-bce|GNU Screen with 256 colors and BCE,
-       bce, use=xterm+256setaf, use=screen-bce,
+       use=xterm+256setaf, use=screen-bce,
 
 screen-256color-bce-s|GNU Screen with 256 colors using BCE and status line,
        bce, use=xterm+256setaf, use=screen-s,
@@ -8338,9 +8375,8 @@ screen+italics|screen cannot support italics,
 #      since the default translations override the built-in keycode
 #      translation.  They are suppressed here to show what is tested by tack.
 screen.xterm-xfree86|screen.xterm-new|screen customized for modern xterm,
-       bce@, bw, npc,
-       invis@, kIC@, kNXT@, kPRV@, kcbt=\E[Z, kent=\EOM, meml@, memu@,
-       nel=\EE, rep@,
+       bce@, bw,
+       invis@, kIC@, kNXT@, kPRV@, meml@, memu@, rep@,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|
            %t;7%;%?%p4%t;5%;%?%p5%t;2%;m,
        E3@, use=screen+italics, use=screen+fkeys,
@@ -8387,7 +8423,7 @@ screen.konsole|screen in KDE console window,
 # fix the backspace key
 screen.linux|screen.linux-s|screen in Linux console,
        bw,
-       kbs=^?, kcbt@, use=linux+sfkeys, use=xterm+x11mouse,
+       kcbt@, use=linux+sfkeys, use=xterm+x11mouse,
        use=screen+fkeys, use=screen,
 screen.mlterm|screen in mlterm,
        XR@, use=xterm+x11mouse, use=screen+fkeys,
@@ -8422,10 +8458,8 @@ screen-bce.mrxvt|screen optimized for mrxvt,
        bce,
        ech@, use=screen.mrxvt,
 screen-bce.gnome|screen optimized for GNOME-Terminal,
-       bce,
        ech@, use=screen+italics, use=screen.gnome,
 screen-bce.konsole|screen optimized for KDE console window,
-       bce,
        ech@, use=screen+italics, use=screen.konsole,
 screen-bce.linux|screen optimized for Linux console,
        bce,
@@ -8435,34 +8469,28 @@ screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols,
        cols#132, use=screen,
 
 screen2|VT 100/ANSI X3.64 virtual terminal (old 2.x),
-       cols#80, it#8, lines#24,
-       cbt=\E[Z, clear=\E[2J\E[H, cr=\r, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=, il=\E[%p1%dL,
-       il1=\E[L, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV,
-       kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH,
-       nel=\r\n, rc=\E8, ri=\EM, rmir=\E[4l, rmso=\E[23m,
-       rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smir=\E[4h,
-       smso=\E[3m, smul=\E[4m, tbc=\E[3g,
+       cols#80, lines#24,
+       clear=\E[2J\E[H, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
+       ed=\E[J, el=\E[K, ich1=, ind=\n, kbs=^H, kf0=\E~, kf1=\ES,
+       kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
+       kf9=\E0I, khome=\EH, nel=\r\n, rc=\E8, ri=\EM, rmso=\E[23m,
+       rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smso=\E[3m,
+       smul=\E[4m, use=ansi+idc, use=ansi+idl,
+       use=ansi+inittabs, use=ansi+local, use=vt52+arrows,
+
 # (screen3: removed unknown ":xv:LP:G0:" -- esr)
 screen3|VT 100/ANSI X3.64 virtual terminal (old 3.x),
        km, mir, msgr,
-       cols#80, it#8, lines#24,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E)0, kbs=^H, kcub1=\EOD,
-       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ,
-       kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
-       rmir=\E[4l, rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs1=\Ec,
-       sc=\E7, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m,
-       smul=\E[4m, tbc=\E[3g,
+       cols#80, lines#24,
+       bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch=\E[%p1%dP,
+       dch1=\E[P, home=\E[H, ich=\E[%p1%d@, ind=\n, is2=\E)0,
+       kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rev=\E[7m,
+       ri=\EM, rmir=\E[4l, rmkx=\E>, rmso=\E[23m, rmul=\E[24m,
+       rs1=\Ec, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m,
+       smul=\E[4m, use=ansi+csr, use=ansi+erase, use=ansi+idl,
+       use=ansi+inittabs, use=ansi+local,
 
 # screen 4.0 was released 2003-07-21, and as of March 2019, its terminfo file
 # was last updated in 2009 to include 256-color support.  The most recent
@@ -8500,7 +8528,7 @@ screen5|VT 100/ANSI X3.64 virtual terminal (someday),
 # various entries such as screen.xterm-new provide a way to more closely
 # match the terminal.
 tmux|tmux terminal multiplexer,
-       invis=\E[8m, kbs=^?, rmso=\E[27m,
+       invis=\E[8m, rmso=\E[27m,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?
            %p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        smso=\E[7m, E3=\E[3J, Smulx=\E[4:%p1%dm,
@@ -8556,7 +8584,7 @@ mosh|mobile shell,
            %t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
        sgr0=\E(B\E[m, use=ansi+enq, use=xterm+meta,
        use=ecma+italics, use=ecma+index, use=xterm+acs,
-       use=xterm+sm+1006, use=xterm+pcfkeys,
+       use=xterm+focus, use=xterm+sm+1006, use=xterm+pcfkeys,
        use=xterm-xfree86, use=bracketed+paste,
 
 mosh-256color|mosh using 256-colors,
@@ -8584,41 +8612,35 @@ mosh-256color|mosh using 256-colors,
 # + Most of the mode-settings in the initialization/reset strings are not
 #   implemented; dvtm copies its description from rxvt.
 dvtm|dynamic virtual terminal manager,
-       am, eo, mir, msgr, xenl, AX,
-       colors#8, cols#80, it#8, lines#24, ncv@, pairs#64,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
-       enacs=\E(B\E)0, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
+       eo, mir, xenl,
+       ncv@,
+       blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, el1=\E[1K,
+       hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[@,
        is1=\E[?47l\E=\E[?1l,
        is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
        kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E[2$, kLFT=\E[d,
        kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, ka1=\EOw, ka3=\EOy,
-       kb2=\EOu, kbs=^?, kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kel=\E[8\^, kend=\E[8~,
-       kent=\EOM, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~,
+       kb2=\EOu, kbs=^?, kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kel=\E[8\^,
+       kend=\E[8~, kent=\EOM, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
        kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
        kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf21=\E[23$,
        kf22=\E[24$, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~,
        kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khome=\E[7~, kind=\E[a, kmous=\E[M, kri=\E[b, op=\E[39;49m,
-       rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmso=\E[27m,
-       rmul=\E[24m,
+       khome=\E[7~, kind=\E[a, kmous=\E[M, kri=\E[b, rev=\E[7m,
+       ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
        rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
        rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?
            25h,
-       s0ds=\E(B, s1ds=\E(0, sc=\E7, setab=\E[4%p1%dm,
-       setaf=\E[3%p1%dm,
+       s0ds=\E(B, s1ds=\E(0,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?
            %p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smir=\E[4h, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=xterm+alt47,
-       use=vt220+vtedit, use=vt220+cvis, use=ecma+italics,
+       sgr0=\E[m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+       vpa=\E[%i%p1%dd, use=ansi+arrows, use=ansi+csr,
+       use=ansi+idl, use=ansi+local, use=xterm+alt47,
+       use=vt220+vtedit, use=vt220+cvis, use=ecma+color,
+       use=ecma+italics, use=vt100+4bsd,
 
 dvtm-256color|dynamic virtual terminal manager with 256 colors,
        colors#0x100, pairs#0x10000,
@@ -8666,33 +8688,30 @@ dvtm-256color|dynamic virtual terminal manager with 256 colors,
 # pairs, since the latter ends the string that is loaded to the window-title.
 ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in VT220-8 mode,
        am, km, mir, msgr, xenl,
-       acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, el1=\E[1K, enacs=\E)0,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
+       dch1=\E[P, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
        flash=\E[?5h$<100/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
        ich=\E[%p1%d@, if=/usr/share/tabset/vt100,
-       il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>,
-       is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+       ind=\n$<150*>,
+       is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>,
        kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~,
        kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, kf14=\E[33~,
        kf15=\E[34~, kf2=\E[18, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~,
        kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khlp=\E[1~,
        khome=\E[2~, knp=\E[6~, kpp=\E[3~, mc4=\E[4i, mc5=\E[5i,
-       rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM,
-       rmacs=\E(B, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l,
-       rmso=\E[27m, rmul=\E[24m,
-       rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sc=\E7,
+       rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM,
+       rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l, rmso=\E[27m,
+       rmul=\E[24m,
+       rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?
            %p9%t\E(0%e\E(B%;,
-       sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smcup=\E7,
-       smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       u8=\E[?62;1;6c, use=vt220+cvis, use=xterm+sl,
-       use=ansi+enq,
+       sgr0=\E[m\E(B, smam=\E[?7h, smcup=\E7, smir=\E[4h,
+       smso=\E[7m, smul=\E[4m, tbc=\E[3g, u8=\E[?62;1;6c,
+       use=ansi+arrows, use=ansi+csr, use=ansi+idl,
+       use=ansi+local, use=vt220+cvis, use=xterm+acs,
+       use=xterm+sl, use=ansi+enq,
+
 ncsa|NCSA Telnet 2.7 for Macintosh in VT220-8 mode (color),
        use=ncsa-m, use=klone+color,
 ncsa-ns|NCSA Telnet 2.7 for Macintosh in VT220-8 mode (color w/o status line),
@@ -8749,9 +8768,9 @@ elks-vt52|ELKS VT52 console,
        home=\EH, use=elks-glasstty,
 
 elks-ansi|ELKS ANSI console,
-       clear=\E[H\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
-       rmso=\E[m, smso=\E[7m, use=elks-glasstty,
+       clear=\E[H\E[2J, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+       el=\E[K, home=\E[H, use=ansi+local1, use=ansi+sgrso,
+       use=elks-glasstty,
 
 # As a matter of fact, ELKS 0.0.83 on PCs defaults to ANSI emulation
 # instead of VT52, but the "elks" entry still refers to the latter.
@@ -8777,9 +8796,9 @@ pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation,
        cols#80, lines#25,
        bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
-       el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, kbs=^H,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
-       nel=\r\n, rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m,
+       el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, nel=\r\n,
+       rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m,
+       use=ansi+arrows,
 
 #### Sun consoles
 #
@@ -8788,13 +8807,13 @@ pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation,
 oldsun|Sun Microsystems Workstation console,
        OTbs, am, km, mir, msgr,
        cols#80, it#8, lines#34,
-       bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
-       dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I,
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       is1=\E[1r, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H,
-       rmso=\E[m, sgr0=\E[m, smso=\E[7m,
+       bel=^G, clear=^L, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
+       dch=\E[%p1%dP, dch1=\E[P, ed=\E[J, el=\E[K, ht=^I,
+       ich=\E[%p1%d@, ich1=\E[@, ind=\n, is1=\E[1r, kcub1=\E[D,
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
+       kf3=\EOR, kf4=\EOS, khome=\E[H, rmso=\E[m, sgr0=\E[m,
+       smso=\E[7m, use=ansi+idl, use=ansi+local1,
+
 # From: Alexander Lukyanov <lav@video.yars.free.net>, 14 Nov 1995
 # <lines> capability later corrected by J.T. Conklin <jtc@cygnus.com>
 # SGR 1, 4 aren't supported - removed bold/underline (T.Dickey 17 Jan 1998)
@@ -8803,22 +8822,42 @@ sun-il|Sun Microsystems console with working insert-line,
        cols#80, lines#34,
        bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
-       dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I,
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       kb2=\E[218z, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kdch1=^?, kend=\E[220z, kf1=\E[224z,
+       dch1=\E[P, ed=\E[J, el=\E[K, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
+       ind=\n, kb2=\E[218z, kdch1=^?, kend=\E[220z, kf1=\E[224z,
        kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, kf2=\E[225z,
        kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, kf6=\E[229z,
        kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, khome=\E[214z,
        kich1=\E[247z, knp=\E[222z, kopt=\E[194z, kpp=\E[216z,
        kres=\E[193z, kund=\E[195z, rev=\E[7m, rmso=\E[m, rmul@,
        rs2=\E[s, sgr=\E[0%?%p1%p3%|%t;7%;m, sgr0=\E[m,
-       smso=\E[7m, u8=\E[1t, u9=\E[11t,
+       smso=\E[7m, u8=\E[1t, u9=\E[11t, use=ansi+arrows,
+       use=ansi+idl,
+
 # On some versions of CGSIX framebuffer firmware (SparcStation 5), <il1>/<il>
 # flake out on the last line.  Unfortunately, without them the terminal has no
 # way to scroll.
 sun-cgsix|sun-ss5|Sun SparcStation 5 console,
        il@, il1@, use=sun-il,
+
+# The Sun console was documented in the wscons manual page (apparently
+# unrelated to the "wscons" used by some of the BSDs).
+#
+#    https://illumos.org/man/4D/wscons
+#    https://www.bitsavers.org/pdf/sun/sun1/800-0345_Sun-1_System_Reference_Manual_Jul82.pdf
+#
+# The early cmdtool and shelltool programs in Sun's NeWS were based on this.
+# After NeWS was discontinued, XView provided a similar shelltool, with an
+# incomplete manual page.  Presumably the intent was to document features of
+# shelltool not in wscons:
+#
+#    https://manpages.ubuntu.com/manpages/bionic/en/man1/shelltool.1.html
+#    https://manpages.ubuntu.com/manpages/bionic/en/man1/cmdtool.1.html
+#
+# The wscons manual page and the XView source show that it had no feature that
+# could be used in ncurses u6/u7/u8/u9 extensions.  Interesting, the XView
+# source shows that its shelltool could tell the host what a particular mode
+# was set to.  But neither that nor its CSI..t controls support u6/u7/u8/u9.
+#
 # If you are using an SS5, change the sun definition to use sun-ss5.
 sun|sun1|sun2|Sun Microsystems Inc. workstation console,
        use=sun-il,
@@ -8835,7 +8874,7 @@ sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs,
 sun-48|Sun 48-line window,
        cols#80, lines#48, use=sun,
 sun-34|Sun 34-line window,
-       cols#80, lines#34, use=sun,
+       use=sun,
 sun-24|Sun 24-line window,
        cols#80, lines#24, use=sun,
 sun-17|Sun 17-line window,
@@ -8877,16 +8916,13 @@ sun-type4|Sun Workstation console with type 4 keyboard,
 #      blink=\E[5m
 # It supports bold, but not underline -TD (2009-09-19)
 sun-color|Sun Microsystems Workstation console with color support (IA systems),
-       colors#8, ncv#3, pairs#64,
-       bold=\E[1m, cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
-       cuu=\E[%p1%dA, home=\E[H, op=\E[0m, rs2=\E[s,
-       setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       bold=\E[1m, cub1=^H, cud1=\n, home=\E[H, op=\E[0m,
        setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
        setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}
             %=%t3%e%p1%d%;m,
-       sgr=\E[0%?%p6%t;1%;%?%p1%p3%|%t;7%;m, sgr0=\E[m,
-       smso=\E[7m, use=sun,
+       sgr=\E[0%?%p6%t;1%;%?%p1%p3%|%t;7%;m, use=ansi+local,
+       use=sun, use=klone+color,
 
 #### Iris consoles
 #
@@ -8904,11 +8940,10 @@ wsiris|iris40|IRIS emulating a 40 line Visual 50 (approximately),
        cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
        cvvis=\E;, dim=\E7F2, dl1=\EM, ed=\EJ, el=\EK,
        flash=\E7F4\E7B1\013\E7F7\E7B0, home=\EH, ht=^I, il1=\EL,
-       ind=\n, is2=\E7B0\E7F7\E7C2\E7R3, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3,
-       kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, ri=\EI,
-       rmso=\E0@, rmul=\E7R3\E0@, sgr0=\E7F7, smso=\E9P,
-       smul=\E7R2\E9P,
+       ind=\n, is2=\E7B0\E7F7\E7C2\E7R3, kf0=\E0, kf1=\E1,
+       kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8,
+       kf9=\E9, ri=\EI, rmso=\E0@, rmul=\E7R3\E0@, sgr0=\E7F7,
+       smso=\E9P, smul=\E7R2\E9P, use=vt52+arrows,
 
 #### NeWS consoles
 #
@@ -8977,17 +9012,17 @@ news-unk|Sony NEWS VT100 emulator common entry,
        OTbs, OTpt, am, xenl,
        cols#80,
        OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M,
-       ed=\E[J, el=\E[K, home=\E[H, ht=^I,
-       if=/usr/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L,
+       cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+       cuu1=\E[A, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+       if=/usr/share/tabset/vt100,
        is2=\E[?7h\E[?1h\E[?3l\E7\E8, kbs=^H, kcub1=\EOD,
        kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOY, kf1=\EOP,
        kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV,
-       kf8=\EOW, kf9=\EOX, rc=\E8, rev=\E[7m, ri=\EM,
-       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
-       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sc=\E7,
-       sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+       kf8=\EOW, kf9=\EOX, rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>,
+       rmso=\E[m, rmul=\E[m,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sgr0=\E[m,
+       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+csr,
+       use=ansi+idl,
 #
 # (news-29: this had :TY=ascii: --esr)
 news-29|Sony NEWS VT100 emulator with 29 lines,
@@ -9026,14 +9061,14 @@ news-old-unk|old Sony NEWS VT100 emulator common entry,
        OTbs, OTpt, am, xenl,
        cols#80, vt#3,
        OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
-       home=\E[H, ht=^I, if=/usr/share/tabset/vt100, kbs=^H,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
-       kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m, ri=\EM,
-       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
-       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
-       sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+       cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+       cuu1=\E[A, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+       if=/usr/share/tabset/vt100, kbs=^H, kcub1=\E[D,
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
+       kf3=\EOR, kf4=\EOS, rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>,
+       rmso=\E[m, rmul=\E[m,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m,
+       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+csr,
 #
 # (nwp512: this had :DE=^H:, which I think means <OTbs> --esr)
 nwp512|news|nwp514|news40|vt100-bm|nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|old Sony VT100 emulator 40 lines,
@@ -9085,23 +9120,21 @@ news29|news28-a|old Sony VT100 emulator 29 lines,
 nwp511|nwp-511|nwp-511 VT100,
        OTbs, OTpt, am, xenl,
        cols#80, lines#24,
-       clear=\E[;H\E[2J$<20/>, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A$<2/>, dl1=\E[M,
-       ed=\E[J$<30/>, el=\E[K$<3/>,
+       clear=\E[;H\E[2J$<20/>, cup=\E[%i%p1%d;%p2%dH,
+       cuu1=\E[A$<2/>, dl1=\E[M, ed=\E[J$<30/>, el=\E[K$<3/>,
        flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
        il1=\E[L, is2=\E[?5l\E[?1l\E>\E[?7h\E[?8h, kcub1=\E[D,
        kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
        kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\E#W, khome=\E[H,
        ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
        rs2=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h,
-       smso=\E[7m$<2/>, smul=\E[4m$<2/>,
+       smso=\E[7m$<2/>, smul=\E[4m$<2/>, use=ansi+local1,
 # (news517: this had :TY=sjis:. --esr)
 nwp517|nwp-517|nwp-517 VT200 80 cols 30 rows,
-       eslok, hs,
        cols#80, lines#30,
-       OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$},
+       OTi2=\E[2$~\n, dsl=\E[1$~,
        is2=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
-       tsl=\E[1$}\E[;%df, use=vt220-base,
+       tsl=\E[1$}\E[;%df, use=dec+sl, use=vt220-base,
 # (news517-w: this had :TY=sjis:. --esr)
 nwp517-w|nwp-517-w|nwp-517 VT200 132 cols 50 rows,
        eslok, hs,
@@ -9120,29 +9153,26 @@ dtterm|CDE desktop terminal,
        am, mir, msgr, xenl, xon,
        cols#80, it#8, lines#24, lm#0, ncv@,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
-       enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, home=\E[H,
-       ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
-       ind=\ED, invis=\E[8m, is2=\E F\E>\E[?1l\E[?7h\E[?45l,
+       bel=^G, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       dim=\E[2m, ech=\E[%p1%dX, el1=\E[1K, enacs=\E(B\E)0,
+       flash=\E[?5h$<200>\E[?5l, home=\E[H, ht=^I, hts=\EH,
+       ich=\E[%p1%d@, ind=\ED, is2=\E F\E>\E[?1l\E[?7h\E[?45l,
        kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
        kf1=\E[11~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
        kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
        kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[12~,
        kf20=\E[34~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~,
        kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khlp=\E[28~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
-       rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m,
-       sc=\E7,
+       khlp=\E[28~, nel=\EE, ri=\EM, rmacs=^O, rmam=\E[?7l,
+       rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m,
        sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
            %t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=decid+cpr,
-       use=vt220+vtedit, use=vt220+cvis, use=ecma+color,
+       smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=ansi+csr,
+       use=ansi+erase, use=ansi+idl, use=ansi+local,
+       use=ansi+sgr, use=decid+cpr, use=vt220+vtedit,
+       use=vt220+cvis, use=ecma+color,
 
 ######## Non-Unix Consoles
 #
@@ -9163,43 +9193,34 @@ emx-base|DOS special keys,
 #
 # Removed: rmacs=\E[10m, smacs=\E[11m, because OS/2 does not implement acs.
 ansi-emx|ANSI.SYS color,
-       am, bce, eo, mir, msgr, xon,
-       colors#8, cols#80, it#8, lines#25, pairs#64,
-       bel=^G, blink=\E[5m, bold=\E[1m,
-       clear=\E[1;33;44m\E[H\E[J, cr=\r, cub1=^H, cud1=\n,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       dch=\E[%p1%dp, ed=\E[J, el=\E[K,
-       flash=\E[?5h$<100/>\E[?5l, home=\E[H, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, ich1=\E[@, ind=\n, kb2=\E[G, kbs=^H, kf0=\0D,
-       kll=\0O, kspd=^Z, nel=\r\n, rev=\E[5;37;41m, rmir=\E[4l,
-       rmpch=\E[10m, rmso=\E[0;44m\E[1;33m,
-       rmul=\E[0;44m\E[1;33m, rs1=\Ec, setab=\E[4%p1%dm,
-       setaf=\E[3%p1%dm, sgr0=\E[0m\E[1;33;44m, smir=\E[4h,
-       smpch=\E[11m, smso=\E[0;31;47m, smul=\E[1;31;44m,
-       tbc=\E[3g, u8=\E[?6c, u9=\E[c, use=vt220+cvis,
-       use=emx-base,
+       eo,
+       clear=\E[1;33;44m\E[H\E[J, cr=\r, cud1=\n, dch=\E[%p1%dp,
+       ed=\E[J, flash=\E[?5h$<100/>\E[?5l, ht=^I, hts=\EH,
+       ich=\E[%p1%d@, ich1=\E[@, ind=\n, kb2=\E[G, kf0=\0D, kll=\0O,
+       kspd=^Z, nel=\r\n, rev=\E[5;37;41m, rmir=\E[4l,
+       rmso=\E[0;44m\E[1;33m, rmul=\E[0;44m\E[1;33m, rs1=\Ec,
+       sgr0=\E[0m\E[1;33;44m, smir=\E[4h, smso=\E[0;31;47m,
+       smul=\E[1;31;44m, tbc=\E[3g, u8=\E[?6c, u9=\E[c,
+       use=vt220+cvis, use=emx-base,
 # nice colors for Emacs (white on blue, mode line white on cyan)
 ansi-color-2-emx|ANSI.SYS color 2,
        clear=\E[0;37;44m\E[H\E[J, rev=\E[1;37;46m,
-       rmso=\E[0;37;44m, rmul=\E[0;37;44m, rs1=\Ec,
-       setaf=\E[3%p1%dm, sgr0=\E[0;37;44m, smso=\E[1;37;46m,
-       smul=\E[1;36;44m, use=ansi-emx,
+       rmso=\E[0;37;44m, rmul=\E[0;37;44m, sgr0=\E[0;37;44m,
+       smso=\E[1;37;46m, smul=\E[1;36;44m, use=ansi-emx,
 # nice colors for Emacs (white on black, mode line black on cyan)
 ansi-color-3-emx|ANSI.SYS color 3,
        clear=\E[0;37;40m\E[H\E[J, rev=\E[1;37;46m,
-       rmso=\E[0;37;40m, rmul=\E[0;37;40m, rs1=\Ec,
-       setaf=\E[3%p1%dm, sgr0=\E[0;10m, smso=\E[1;37;46m,
-       smul=\E[0;36;40m, use=ansi-emx,
+       rmso=\E[0;37;40m, rmul=\E[0;37;40m, sgr0=\E[0;10m,
+       smso=\E[1;37;46m, smul=\E[0;36;40m, use=ansi-emx,
 mono-emx|stupid monochrome ANSI terminal with only one kind of emphasis,
        am,
        cols#80, it#8, lines#24,
-       clear=\E[H\E[2J$<50>, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
-       ht=^I, kb2=\E[G, kbs=^H, kcub1=\0K, kcud1=\0P, kcuf1=\0M,
-       kcuu1=\0H, kf0=\0D, kf1=\0;, kf2=\0<, kf3=\0=, kf4=\0>,
-       kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, kf9=\0C, khome=\0G,
-       kich1=\0R, kll=\0O, knp=\0Q, kpp=\0I, nel=\r\n, rev=\E[7m,
-       sgr0=\E[0m,
+       clear=\E[H\E[2J$<50>, cup=\E[%i%p1%d;%p2%dH, el=\E[K,
+       home=\E[H, ht=^I, kb2=\E[G, kbs=^H, kcub1=\0K, kcud1=\0P,
+       kcuf1=\0M, kcuu1=\0H, kf0=\0D, kf1=\0;, kf2=\0<, kf3=\0=,
+       kf4=\0>, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, kf9=\0C,
+       khome=\0G, kich1=\0R, kll=\0O, knp=\0Q, kpp=\0I, nel=\r\n,
+       rev=\E[7m, sgr0=\E[0m, use=ansi+local1,
 
 #### Cygwin
 
@@ -9269,30 +9290,23 @@ cygwinB19|ANSI emulation for cygwin32,
 cygwin|ANSI emulation for Cygwin,
        am, hs, mir, msgr, xon,
        colors#8, it#8, pairs#64,
-       acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
-            \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
-            \301w\302x\263y\363z\362{\343|\330}\234~\376,
-       bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r, cub=\E[%p1%dD,
-       cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
-       cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H,
-       hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, kb2=\E[G,
-       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
-       kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
-       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B,
-       kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~,
-       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kspd=^Z, nel=\r\n,
-       op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m,
-       rmir=\E[4l, rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m,
+       bel=^G, bold=\E[1m, cr=\r, cub=\E[%p1%dD, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, el1=\E[1K, fsl=^G, home=\E[H, ht=^I,
+       ind=\n, invis=\E[8m, kb2=\E[G, kf1=\E[[A, kf10=\E[21~,
+       kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+       kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+       kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
+       kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+       khome=\E[1~, kspd=^Z, nel=\r\n, op=\E[39;49m, rc=\E8,
+       rev=\E[7m, ri=\EM, rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m,
        rs1=\Ec\E]R, sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
        sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7
            %t;8%;%?%p9%t;11%;m,
-       sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smpch=\E[11m,
-       smso=\E[7m, smul=\E[4m, tsl=\E];, vpa=\E[%i%p1%dd,
-       use=xterm+alt47, use=vt220+pcedit, use=vt102+enq,
+       sgr0=\E[0;10m, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
+       tsl=\E];, use=ansi+arrows, use=ansi+erase, use=ansi+idc,
+       use=ansi+idl, use=ansi+local, use=ansi+rca2,
+       use=vt220+pcedit, use=vt102+enq, use=klone+acs,
+       use=xterm+alt47,
 
 # I've supplied this so that you can help test new values and add other
 # features.  Cheers, earnie_boyd@yahoo.com.
@@ -9302,31 +9316,22 @@ cygwin|ANSI emulation for Cygwin,
 # this list, but DOES cause problems so it has been removed
 cygwinDBG|Debug Version for Cygwin,
        am, eo, mir, msgr, xon,
-       colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
-       acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
-            \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
-            \301w\302x\263y\363z\362{\343|\330}\234~\376,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cr=\r, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
-       el1=\E[1K, flash=\E[?5h$<200/>\E[?5l, home=\E[H,
-       hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, kNXT=\E[6$,
-       kPRV=\E[5$, kb2=\E[G, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[[A, kf10=\E[21~,
-       kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
-       kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
-       kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
-       kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       kspd=^Z, nel=\r\n, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
-       rmacs=\E[10m, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
-       rs1=\Ec\E]R, sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       cols#80, lines#24, ncv#3,
+       bel=^G, cr=\r, cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, el1=\E[1K,
+       flash=\E[?5h$<200/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
+       ind=\n, kNXT=\E[6$, kPRV=\E[5$, kb2=\E[G, kcbt=\E[Z,
+       kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+       kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B,
+       kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~,
+       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kspd=^Z,
+       nel=\r\n, op=\E[39;49m, rc=\E8, ri=\EM, rs1=\Ec\E]R, sc=\E7,
        sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5
            %t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
-       sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt220+pcedit,
+       sgr0=\E[0;10m, vpa=\E[%i%p1%dd, use=ansi+arrows,
+       use=ansi+erase, use=ansi+idc, use=ansi+idl,
+       use=ansi+inittabs, use=ansi+local, use=ansi+sgrbold,
+       use=klone+acs, use=klone+color, use=vt220+pcedit,
        use=vt220+cvis, use=vt102+enq,
 
 #### DJGPP
@@ -9455,24 +9460,21 @@ djgpp|ANSI emulation for DJGPP alpha,
        acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
             \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
             \301w\302x\263y\363z\362{\343|\330}\234~\376,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v,
-       clear=\E[H\E[J, cnorm=\E[v, cr=\r, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+       bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[1v, cnorm=\E[v, cr=\r,
+       cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[2v,
+       dch=\E[%p1%dP, dch1=\E[P, ech=\E[%p1%dX, el1=\E[1K,
        home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
-       ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, invis=\E[8m,
-       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
-       kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~,
-       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, nel=\r\n, op=\E[37;40m,
-       rev=\E[7m, ri=\E[T, rmso=\E[m, setab=\E[4%p1%dm,
-       setaf=\E[3%p1%dm,
+       ich1=\E[@, ind=\E[S, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~,
+       kf12=\E[24~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E,
+       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+       khome=\E[1~, nel=\r\n, op=\E[37;40m, ri=\E[T, rmso=\E[m,
+       setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
        sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%e;25%;%?
            %p6%t;1%;%?%p7%t;8%;m,
        sgr0=\E[m, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
-       use=vt220+pcedit, use=ecma+index,
+       use=ansi+arrows, use=ansi+erase, use=ansi+idl,
+       use=ansi+local, use=ansi+sgr, use=vt220+pcedit,
+       use=ecma+index,
 
 djgpp203|entry for DJGPP 2.03,
        OTbs, am,
@@ -9484,19 +9486,17 @@ djgpp204|entry for DJGPP 2.04,
        OTbs, am, AX,
        colors#8, cols#80, it#8, lines#25, ncv#3, pairs#64,
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v,
-       clear=\E[H\E[2J, cnorm=\E[v, cr=\r, cub=\E[%p1%dD,
-       cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
-       cuu1=\E[A, cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P,
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
-       home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
-       il1=\E[L, ind=\E[S, invis=\E[8m, kbs=^H, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[21~, kf1=\E[[A,
-       kf10=\E[21~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E,
-       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kll=\E[4~,
-       nel=\r\n, rev=\E[7m, ri=\E[T, rmso=\E[m, setab=\E[4%p1%dm,
-       setaf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
-       use=vt220+pcedit, use=ecma+index,
+       clear=\E[H\E[2J, cnorm=\E[v, cr=\r,
+       cup=\E[%i%p1%d;%p2%dH, cvvis=\E[2v, dch=\E[%p1%dP,
+       dch1=\E[P, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+       ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, invis=\E[8m,
+       kf0=\E[21~, kf1=\E[[A, kf10=\E[21~, kf2=\E[[B, kf3=\E[[C,
+       kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
+       kf9=\E[20~, khome=\E[1~, kll=\E[4~, nel=\r\n, rev=\E[7m,
+       ri=\E[T, rmso=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+       sgr0=\E[m, smso=\E[7m, smul=\E[4m, use=ansi+arrows,
+       use=ansi+idl, use=ansi+local, use=vt220+pcedit,
+       use=ecma+index,
 
 #### U/Win
 
@@ -9505,24 +9505,22 @@ djgpp204|entry for DJGPP 2.04,
 # set (the emulator spits out error messages).  Compare with att6386 -TD
 uwin|U/Win 3.2 console,
        am, eo, in, msgr, xenl, xon,
-       colors#8, it#8, ncv#58, pairs#64,
+       it#8, ncv#58,
        acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i
             \316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u
             \264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I,
-       hts=\EH, ich=\E[%p1%d@, ich1=\E[@, kbs=^H, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, kend=\E[Y,
-       kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ,
-       kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
-       kf9=\EOX, khome=\E[H, kich1=\E[@, nel=\r\n, op=\E[39;49m,
-       rc=\E8, rev=\E[7m, rmacs=\E[10m, rmir=\E[4l, rmpch=\E[10m,
-       rmso=\E[27m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7,
-       setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0;10m,
-       smacs=\E[11m, smir=\E[4h, smpch=\E[11m, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, use=ansi+cpr, use=vt220+cvis,
+       bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
+       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dim=\E[2m,
+       ech=\E[%p1%dX, el1=\E[1K, home=\E[H, ht=^I, hts=\EH,
+       kdch1=^?, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf11=\EOZ,
+       kf12=\EOA, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
+       kf7=\EOV, kf8=\EOW, kf9=\EOX, kich1=\E[@, nel=\r\n,
+       op=\E[39;49m, rc=\E8, rev=\E[7m, rmacs=\E[10m,
+       rmpch=\E[10m, rmso=\E[27m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7,
+       sgr0=\E[0;10m, smacs=\E[11m, smpch=\E[11m, smso=\E[7m,
+       smul=\E[4m, tbc=\E[3g, use=ansi+arrows, use=ansi+cpr,
+       use=ansi+erase, use=ansi+idc, use=klone+color,
+       use=vt220+cvis,
 
 #### Microsoft (miscellaneous)
 
@@ -9613,30 +9611,28 @@ interix|opennt|opennt-25|ntconsole|ntconsole-25|OpenNT-term compatible with colo
        acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j
             \331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v
             \301w\302x\263y\363z\362{\343|\330}\234~\376,
-       bel=^G, bold=\E[1m, clear=\E[2J, cr=\r, cub=\E[%p1%dD,
-       cub1=\E[D, cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
-       cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
-       home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
-       kLFT=\EF\^, kRIT=\EF$, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, kend=\E[U,
-       kf0=\EFA, kf1=\EF1, kf10=\EFA, kf11=\EFB, kf12=\EFC,
-       kf13=\EFD, kf14=\EFE, kf15=\EFF, kf16=\EFG, kf17=\EFH,
-       kf18=\EFI, kf19=\EFJ, kf2=\EF2, kf20=\EFK, kf21=\EFL,
-       kf22=\EFM, kf23=\EFN, kf24=\EFO, kf25=\EFP, kf26=\EFQ,
-       kf27=\EFR, kf28=\EFS, kf29=\EFT, kf3=\EF3, kf30=\EFU,
-       kf31=\EFV, kf32=\EFW, kf33=\EFX, kf34=\EFY, kf35=\EFZ,
-       kf36=\EFa, kf37=\EFb, kf38=\EFc, kf39=\EFd, kf4=\EF4,
-       kf40=\EFe, kf41=\EFf, kf42=\EFg, kf43=\EFh, kf44=\EFi,
-       kf45=\EFj, kf46=\EFk, kf47=\EFm, kf48=\EFn, kf49=\EFo,
-       kf5=\EF5, kf50=\EFp, kf51=\EFq, kf52=\EFr, kf53=\EFs,
-       kf54=\EFt, kf55=\EFu, kf56=\EFv, kf57=\EFw, kf58=\EFx,
-       kf59=\EFy, kf6=\EF6, kf60=\EFz, kf7=\EF7, kf8=\EF8, kf9=\EF9,
-       khome=\E[H, kich1=\E[L, kind=\EF+, kll=\E[U, knp=\E[T,
-       kpp=\E[S, kri=\EF-, ll=\E[U, nel=\r\n, op=\E[m, rc=\E[u,
-       rev=\E[7m, ri=\E[T, rmcup=\E[2b\E[u\r\E[K, rmso=\E[m,
-       rmul=\E[m, rs1=\Ec, sc=\E[s, sgr0=\E[0m, smcup=\E[s\E[1b,
-       smso=\E[7m, smul=\E[4m, use=ecma+index, use=klone+color,
+       bel=^G, bold=\E[1m, clear=\E[2J, cr=\r, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+       ind=\E[S, kLFT=\EF\^, kRIT=\EF$, kcbt=\E[Z, kdch1=^?,
+       kend=\E[U, kf0=\EFA, kf1=\EF1, kf10=\EFA, kf11=\EFB,
+       kf12=\EFC, kf13=\EFD, kf14=\EFE, kf15=\EFF, kf16=\EFG,
+       kf17=\EFH, kf18=\EFI, kf19=\EFJ, kf2=\EF2, kf20=\EFK,
+       kf21=\EFL, kf22=\EFM, kf23=\EFN, kf24=\EFO, kf25=\EFP,
+       kf26=\EFQ, kf27=\EFR, kf28=\EFS, kf29=\EFT, kf3=\EF3,
+       kf30=\EFU, kf31=\EFV, kf32=\EFW, kf33=\EFX, kf34=\EFY,
+       kf35=\EFZ, kf36=\EFa, kf37=\EFb, kf38=\EFc, kf39=\EFd,
+       kf4=\EF4, kf40=\EFe, kf41=\EFf, kf42=\EFg, kf43=\EFh,
+       kf44=\EFi, kf45=\EFj, kf46=\EFk, kf47=\EFm, kf48=\EFn,
+       kf49=\EFo, kf5=\EF5, kf50=\EFp, kf51=\EFq, kf52=\EFr,
+       kf53=\EFs, kf54=\EFt, kf55=\EFu, kf56=\EFv, kf57=\EFw,
+       kf58=\EFx, kf59=\EFy, kf6=\EF6, kf60=\EFz, kf7=\EF7,
+       kf8=\EF8, kf9=\EF9, kich1=\E[L, kind=\EF+, kll=\E[U,
+       knp=\E[T, kpp=\E[S, kri=\EF-, ll=\E[U, nel=\r\n, op=\E[m,
+       rc=\E[u, rev=\E[7m, ri=\E[T, rmcup=\E[2b\E[u\r\E[K,
+       rmso=\E[m, rmul=\E[m, rs1=\Ec, sc=\E[s, sgr0=\E[0m,
+       smcup=\E[s\E[1b, smso=\E[7m, smul=\E[4m, use=ansi+arrows,
+       use=ansi+idl, use=ansi+local, use=ecma+index,
+       use=klone+color,
 
 opennt-35|ntconsole-35|OpenNT-term35 compatible with color,
        lines#35, use=opennt,
@@ -9718,15 +9714,15 @@ altos2|alt2|altos-2|Altos II,
        ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
        if=/usr/share/tabset/vt100, il1=\E[L, ind=\n,
        is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kDL=^Am\r,
-       kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^AM\r, kel=^AN\r,
+       kEOL=^An\r, kcbt=^AK\r, kclr=^AL\r, kdch1=^AM\r, kel=^AN\r,
        kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r,
        kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r,
        kf38=^Af\r, kf39=^Ag\r, kf4=^AC\r, kf40=^Ah\r, kf41=^Ai\r,
        kf42=^Aj\r, kf43=^Ak\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
        kf8=^AG\r, kf9=^AH\r, khome=\E[f, kil1=^AJ\r, kind=^AO\r,
        nel=\r\n, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
-       smam=\E[?7h, smso=\E[7m, smul=\E[4m,
+       smam=\E[?7h, smso=\E[7m, smul=\E[4m, use=ansi+arrows,
+
 # (altos3: had extension capabilities
 #      :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
 #      :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
@@ -9817,21 +9813,21 @@ hp+pfk+arrows|HP alternate arrow definitions,
        kll=\Eq\r, kri=\Es\r,
 
 hp+arrows|HP arrow definitions,
-       kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
-       kind=\ES, kll=\EF, kri=\ET,
+       khome=\Eh, kind=\ES, kll=\EF, kri=\ET, use=vt52+arrows,
 
 # Generic stuff from the HP 262x series
 #
 hp262x|HP 262x terminals,
        xhp,
        blink=\E&dA, dch1=\EP$<2>, ed=\EJ, ht=\011$<2>, ind=\ES,
-       invis=\E&dS, ip=$<2>, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh,
-       kich1=\EQ, kil1=\EL, kind=\ES, knp=\EU, kpp=\EV, kri=\ET,
-       krmir=\ER, rev=\E&dB, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@,
+       invis=\E&dS, ip=$<2>, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK,
+       khome=\Eh, kich1=\EQ, kil1=\EL, kind=\ES, knp=\EU, kpp=\EV,
+       kri=\ET, krmir=\ER, rev=\E&dB, rmkx=\E&s0A, rmso=\E&d@,
+       rmul=\E&d@,
        sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|
            %;%?%p4%t%{65}%|%;%c,
        sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, smul=\E&dD,
+       use=vt52+arrows,
 
 # Note: no <home> on HPs since that homes to top of memory, not screen.
 # Due to severe 2621 braindamage, the only way to get the arrow keys to
@@ -9861,8 +9857,7 @@ hp2621-fl|HP 2621,
        xhp@, xon,
        pb#19200,
        cbt=\Ei, cup=\E&a%p2%dc%p1%dY, dch1=\EP$<2>, ht=\011$<2>,
-       ip=$<2>, is2=\E&j@\r, rmkx=\E&j@, rmso=\E&d@, rmul=\E&d@,
-       sgr0=\E&d@, smkx=\E&jB, smso=\E&dD, smul=\E&dD,
+       ip=$<2>, is2=\E&j@\r, rmkx=\E&j@, smkx=\E&jB, smso=\E&dD,
        use=hp+pfk+cr, use=hpgeneric,
 
 # To use hp2621p printer, setenv TERM=2621p, PRINTER=2612p
@@ -9874,8 +9869,8 @@ hp2621p-a|HP 2621p with fn as arrows,
 
 # hp2621 with k45 keyboard
 hp2621-k45|hp2621k45|k45|HP 2621 with 45 keyboard,
-       kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
-       khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621,
+       kbs=^H, khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621,
+       use=vt52+arrows,
 
 # 2621 using all 48 lines of memory, only 24 visible at any time.
 hp2621-48|HP 48 line 2621,
@@ -9989,21 +9984,20 @@ hp2626-12-s|Hewlett-Packard 2626 11 lines plus status,
 # hp2627 color tubes from University of Wisconsin
 #
 hp2627a-rev|HP 2627 with reverse video colors,
-       cr=\r, cud1=\n, ht=^I, ind=\n,
+       ht=^I,
        is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3
            \r,
-       kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rmul=\E&v0S\E&d@,
+       kcub1=^H, kcud1=\n, nel=\r\n, rmul=\E&v0S\E&d@,
        smul=\E&dD\E&v1S, use=hp2621-nl,
 hp2627a|HP 2627 color terminal with no labels,
-       cr=\r, cud1=\n, ht=^I, ind=\n,
+       ht=^I,
        is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r,
-       kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rmso=\E&v0S,
+       kcub1=^H, kcud1=\n, nel=\r\n, rmso=\E&v0S,
        rmul=\E&v0S\E&d@, smso=\E&v2S, smul=\E&dD\E&v1S,
        use=hp2621-nl,
 hp2627c|HP 2627 color (cyan) terminal with no labels,
-       cr=\r, cud1=\n, ht=^I, ind=\n,
        is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r,
-       kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, use=hp2627a,
+       use=hp2627a,
 
 # hp2640a doesn't have the Y cursor addressing feature, and C is
 # memory relative instead of screen relative, as we need.
@@ -10032,14 +10026,13 @@ hp2641a|hp2645a|hp2647a|HP 264?A series BRL entry,
 # software to support it.
 hp2645|hp45|HP 2645 series,
        pb#9600,
-       blink=\E&dA, cr=\r$<20>, dim=\E&dH, kctab=\E2, kcub1=\ED,
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
-       ked=\EJ, kel=\EK, khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL,
-       kind=\ES, knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, rev=\E&dB,
-       rmkx=\E&s0A,
+       blink=\E&dA, cr=\r$<20>, dim=\E&dH, kctab=\E2, kdch1=\EP,
+       kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh, khts=\E1, kich1=\EQ,
+       kil1=\EL, kind=\ES, knp=\EU, kpp=\EV, kri=\ET, krmir=\ER,
+       rev=\E&dB, rmkx=\E&s0A,
        sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|
            %;%?%p4%t%{65}%|%;%?%p5%t%{72}%|%;%?%p6%t%{66}%|%;%c,
-       sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, use=hpgeneric,
+       sgr0=\E&d@, smkx=\E&s1A, use=hpgeneric, use=vt52+arrows,
 # You should use this terminal at 4800 baud or less.
 hp2648|hp2648a|HP 2648a graphics terminal,
        clear=\EH\EJ$<50>, cup=\E&a%p2%dc%p1%dY$<20>,
@@ -10073,11 +10066,10 @@ hp2621-a|hp2621a-a|hp2621 with fn as arrows,
 # newer hewlett packard terminals
 
 newhpkeyboard|generic entry for HP extended keyboard,
-       kbs=^H, kcbt=\Ei, kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh,
-       kich1=\EQ, kil1=\EL, kind=\ET, kll=\EF, knp=\EU, kpp=\EV,
-       kri=\ES, krmir=\ER, rmkx=\E&s0A, smkx=\E&s1A,
-       use=hp+pfk-cr,
+       kbs=^H, kcbt=\Ei, kclr=\EJ, kdch1=\EP, kdl1=\EM, ked=\EJ,
+       kel=\EK, khome=\Eh, kich1=\EQ, kil1=\EL, kind=\ET, kll=\EF,
+       knp=\EU, kpp=\EV, kri=\ES, krmir=\ER, rmkx=\E&s0A,
+       smkx=\E&s1A, use=hp+pfk-cr, use=vt52+arrows,
 
 newhp|generic entry for new Hewlett Packard terminals,
        am, bw, mir, xhp, xon,
@@ -10131,11 +10123,10 @@ hp+printer|"standard" printer info for HP ttys,
 # length label, the following character is eaten!
 hp2621b|HP 2621b with old style keyboard,
        lh#1, lm#48, lw#8, nlab#8,
-       kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
-       kind=\ET, kll=\EF, kri=\ES,
+       khome=\Eh, kind=\ET, kll=\EF, kri=\ES,
        pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c
            %;%p2%s\E%{111}%p1%+%c\r,
-       smln=\E&jB, use=hp2621,
+       smln=\E&jB, use=hp2621, use=vt52+arrows,
 
 hp2621b-p|HP 2621b with printer,
        use=hp+printer, use=hp2621b,
@@ -10214,29 +10205,25 @@ hpansi|hp700|Hewlett Packard 700/44 in HP-PCterm mode,
        cols#80, lines#25,
        acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
             \263,
-       bel=^G, cbt=\E[Z, clear=\E[2J\E[H, cr=\r, cub1=\E[D,
-       cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
-       ich1=\E[@, il1=\E[L, ind=\n,
+       bel=^G, cbt=\E[Z, clear=\E[2J\E[H, cr=\r,
+       cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, ed=\E[J,
+       el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\n,
        is2=\E[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\\,
-       kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kend=\E[4~, kf1=\E[17~, kf10=\E[28~,
-       kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, kf6=\E[23~,
-       kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khome=\E[1~, knp=\E[6~,
-       kpp=\E[5~, rmam=\E[?7l,
-       rmsc=\E[>11l\EP1**x0/11;1/13\E[m\E\\, rmso=\E[m,
-       rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
+       kcbt=\E[Z, kend=\E[4~, kf1=\E[17~, kf10=\E[28~, kf2=\E[18~,
+       kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~,
+       kf8=\E[25~, kf9=\E[26~, khome=\E[1~, knp=\E[6~, kpp=\E[5~,
+       rmam=\E[?7l, rmsc=\E[>11l\EP1**x0/11;1/13\E[m\E\\,
+       rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
        smsc=\E[>11h\EPO**x0/65;1/67\E\\$<250>, smso=\E[7m,
-       smul=\E[4m, xoffc=g, xonc=e, use=vt220+cvis,
+       smul=\E[4m, xoffc=g, xonc=e, use=ansi+arrows,
+       use=ansi+local1, use=vt220+cvis,
 #
 # (hp2392: copied <rmir> here from hpex -- esr)
 hp2392|239x series,
        cols#80,
-       cbt=\Ei, cup=\E&a%p1%dy%p2%dC, kf1=\Ep\r, kf2=\Eq\r,
-       kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r,
-       kf8=\Ew\r, khome=\Eh, kind=\EU, knp=\Eu, kpp=\Ev, kri=\EV,
-       rmir=\ER, rmul=\E&d@, smir=\EQ, smul=\E&dD, vpa=\E&a%p1%dY,
-       use=hpsub,
+       cbt=\Ei, cup=\E&a%p1%dy%p2%dC, khome=\Eh, kind=\EU,
+       knp=\Eu, kpp=\Ev, kri=\EV, rmir=\ER, rmul=\E&d@, smir=\EQ,
+       smul=\E&dD, vpa=\E&a%p1%dY, use=hpsub, use=hp+pfk+cr,
 
 hpsub|HP terminals -- capability subset,
        am, da, db, mir, xhp, xon,
@@ -10244,9 +10231,9 @@ hpsub|HP terminals -- capability subset,
        bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
        cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC,
        ht=^I, if=/usr/share/tabset/stdcrt, il1=\EL, ind=\n,
-       is2=\E&s1A\E<\E&k0\\, kbs=^H, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, khome=\Eh, rmkx=\E&s0A, rmso=\E&d@,
-       sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB,
+       is2=\E&s1A\E<\E&k0\\, kbs=^H, khome=\Eh, rmkx=\E&s0A,
+       rmso=\E&d@, sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB,
+       use=vt52+arrows,
 
 # hpex:
 #      May be used for most 24 x 80 hp terminals,
@@ -10259,9 +10246,9 @@ hpsub|HP terminals -- capability subset,
 # (hpex: removed memory-lock capabilities ":ml=\El:mu=\Em:",
 # moved <rmir> here from hpsub -- esr)
 hpex|HP extended capabilities,
-       cr=\r, cud1=\n, cup=\E&a%p1%dy%p2%dC, ht=^I, ind=\n, kbs=^H,
-       kcub1=^H, kcud1=\n, nel=\r\n, rmir=\ER, rmul=\E&d@, smir=\EQ,
-       smul=\E&dD, vpa=\E&a%p1%dY, use=hpsub,
+       cud1=\n, cup=\E&a%p1%dy%p2%dC, kcub1=^H, kcud1=\n,
+       nel=\r\n, rmir=\ER, rmul=\E&d@, smir=\EQ, smul=\E&dD,
+       vpa=\E&a%p1%dY, use=hpsub,
 
 # From: Ville Sulko <Ville.Sulko@bip.atk.tpo.fi>, 05 Aug 1996
 hp2|hpex2|Hewlett-Packard extended capabilities newer version,
@@ -10303,10 +10290,9 @@ hp300h|HP Catseye console,
        cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
        dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I,
        if=/usr/share/tabset/stdcrt, il1=\EL, ind=\n, kbs=^H,
-       kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
-       rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@,
-       smir=\EQ, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, tbc=\E3,
-       vpa=\E&a%p1%dY,
+       khome=\Eh, rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@,
+       sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&dB, smul=\E&dD,
+       tbc=\E3, vpa=\E&a%p1%dY, use=vt52+arrows,
 # From: Greg Couch <gregc@ernie.berkeley.edu>
 hp9837|hp98720|hp98721|HP 9000/300 workstations,
        OTbs, am, da, db, mir, xhp,
@@ -10314,12 +10300,11 @@ hp9837|hp98720|hp98721|HP 9000/300 workstations,
        bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cub1=^H, cud1=\EB,
        cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
        dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
-       il1=\EL, ind=\n, is2=\E&v0m1b0i&j@, kbs=^H, kcub1=\ED,
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
-       ked=\EJ, kel=\EK, khome=\Eh, kich1=\EQ, kil1=\EL, knp=\EU,
-       kpp=\EV, rmir=\ER, rmkx=\E&s0A, rmso=\E&v0S, rmul=\E&d@,
-       sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&v5S, smul=\E&dD,
-       tbc=\E3, vpa=\E&a%p1%dY,
+       il1=\EL, ind=\n, is2=\E&v0m1b0i&j@, kbs=^H, kdch1=\EP,
+       kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh, kich1=\EQ, kil1=\EL,
+       knp=\EU, kpp=\EV, rmir=\ER, rmkx=\E&s0A, rmso=\E&v0S,
+       rmul=\E&d@, sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&v5S,
+       smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, use=vt52+arrows,
 # HP 9845 desktop computer from BRL
 # (hp9845: removed unknown capability :gu: -- esr)
 hp9845|HP 9845,
@@ -10334,30 +10319,31 @@ hp9845|HP 9845,
 # added empty <acsc> to avoid warnings re <smacs>/<rmacs> --esr)
 hp98550|hp98550a|HP 9000 Series 300 color console,
        OTbs, am, da, db, mir, xhp,
-       cols#128, it#8, lines#49, lm#0,
+       cols#128, lines#49, lm#0,
        acsc=, bel=^G, blink=\E&dA, bold=\E&dJ, cbt=\Ei, civis=\E*dR,
        clear=\EH\EJ, cnorm=\E*dQ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
        cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, dim=\E&dH,
-       dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1,
+       dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, hts=\E1,
        if=/usr/share/tabset/std, il1=\EL, ind=\n, invis=\E&ds,
        kbs=^H, kclr=\EJ, kctab=\E2, kdch1=\EP, kdl1=\EM, ked=\EJ,
        kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL, kll=\EF, knp=\EU,
        kpp=\EV, krmir=\ER, ktbc=\E3, rev=\E&dJ, rmacs=^O, rmir=\ER,
        rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smacs=^N,
        smir=\EQ, smkx=\E&s1A, smso=\E&dJ, smul=\E&dD, tbc=\E3,
-       vpa=\E&a%p1%dY, use=hp+pfk-cr, use=hp+arrows,
+       vpa=\E&a%p1%dY, use=hp+pfk-cr, use=ansi+inittabs,
+       use=hp+arrows,
 
 # From: Martin Trusler
 hp98550-color|hp98550a-color|HP 9000 Series 300 color console (Trusler),
        OTbs, am, ccc, da, db, km, mir, xhp,
-       colors#8, cols#128, it#8, lh#2, lines#49, lm#0, lw#8, nlab#8,
-       pairs#8, xmc#0,
+       colors#8, cols#128, lh#2, lines#49, lm#0, lw#8, nlab#8, pairs#8,
+       xmc#0,
        acsc=+>\,<-\^.v0\374``a\374f\372g\376h\374j+k+l+m+n+o-q-s-t+
             u+v+w+x|y<z>{*|!}\273~\362,
        bel=^G, bold=\E&dD, cbt=\Ei, clear=\EH\EJ, cr=\r, cub1=^H,
        cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA,
        dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, home=\E&a0y0C,
-       hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, ind=\ES,
+       hpa=\E&a%p1%dC, hts=\E1, il1=\EL, ind=\ES,
        initp=\E&v0m%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.
              %p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1
              %e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=
@@ -10380,7 +10366,7 @@ hp98550-color|hp98550a-color|HP 9000 Series 300 color console (Trusler),
        smir=\EQ, smkx=\E&s1A, smln=\E&jB, smm=\E&k1I, smso=\E&dB,
        smul=\E&dD, tbc=\E3, u6=\Ea%dc%dR\r, u7=\Ea,
        u8=\E%[0123456789/], u9=\E*s1\^, vpa=\E&a%p1%dY,
-       use=hp+pfk-cr, use=hp+arrows,
+       use=hp+pfk-cr, use=ansi+inittabs, use=hp+arrows,
 
 # From: Victor Duchovni <vic@fine.princeton.edu>
 # (hp700-wy: removed obsolete ":nl=^J:";
@@ -10419,23 +10405,24 @@ bobcat|sbobcat|HP 9000 model 300 console,
        cbt=\Ei, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
        cup=\E&a%p1%dy%p2%dC$<6/>, cuu1=\EA, dch1=\EP,
        dl1=\EM$<10*/>, ed=\EJ, el=\EK, hpa=\E&a%p1%dC$<6/>, ht=^I,
-       il1=\EL$<10*/>, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, khome=\Eh, nel=\r\n, rmir=\ER,
-       rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smir=\EQ,
-       smkx=\E&s1A, smso=\E&dB, smul=\E&dD, vpa=\E&a%p1%dY$<6/>,
+       il1=\EL$<10*/>, ind=\n, kbs=^H, khome=\Eh, nel=\r\n,
+       rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@,
+       smir=\EQ, smkx=\E&s1A, smso=\E&dB, smul=\E&dD,
+       vpa=\E&a%p1%dY$<6/>, use=vt52+arrows,
 gator-t|HP 9000 model 237 emulating extra-tall AAA,
        lines#94, use=gator,
 gator|HP 9000 model 237 emulating AAA,
        bw, km, mir, ul,
        cols#128, it#8, lines#47,
-       bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
-       dch=\E[%p1%dP$<4/>, dch1=\E[P, dl=\E[%p1%dM$<1*/>,
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%d`,
-       ht=^I, ich=\E[%p1%d@$<4/>, ich1=\E[@, il=\E[%p1%dL$<1*/>,
-       il1=\E[L, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n,
-       rep=%p1%c\E[%p2%db$<1*/>, rev=\E[7m, rmso=\E[m,
+       bel=^G, cbt=\E[Z, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch=\E[%p1%dP$<4/>,
+       dch1=\E[P, dl=\E[%p1%dM$<1*/>, dl1=\E[M, home=\E[H,
+       hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@$<4/>, ich1=\E[@,
+       il=\E[%p1%dL$<1*/>, il1=\E[L, kbs=^H, kcub1=^H, kcud1=\n,
+       nel=\r\n, rep=%p1%c\E[%p2%db$<1*/>, rev=\E[7m, rmso=\E[m,
        rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+       use=ansi+erase,
+
 gator-52|HP 9000 model 237 emulating VT52,
        cols#128, lines#47, use=vt52-basic,
 gator-52t|HP 9000 model 237 emulating extra-tall VT52,
@@ -10519,8 +10506,7 @@ adm3a+|adm3a plus,
 # (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do=^J:" -- esr)
 adm5|LSI adm5,
        xmc#1,
-       bel=^G, cr=\r, cud1=\n, ed=\EY, el=\ET, kbs=^H, khome=^^,
-       rmso=\EG, smso=\EG, use=adm3a+,
+       ed=\EY, el=\ET, khome=^^, rmso=\EG, smso=\EG, use=adm3a+,
 # A lot of terminals other than adm11s use these.  Wherever you see
 # use=adm+sgr with some of its capabilities disabled, try the
 # disabled ones.  They may well work but not have been documented or
@@ -10614,10 +10600,9 @@ adm20|Lear Siegler adm20,
        sgr0=\E(, smso=\E),
 adm21|Lear Siegler adm21,
        xmc#1,
-       bel=^G, cr=\r, cud1=\n, dch1=\EW, dl1=\ER$<30*>, ed=\EY,
-       el=\ET, ich1=\EQ, il1=\EE$<30*>, ind=\n, invis@, kbs=^H,
-       kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^,
-       use=adm+sgr, use=adm3a,
+       dch1=\EW, dl1=\ER$<30*>, ed=\EY, el=\ET, ich1=\EQ,
+       il1=\EE$<30*>, invis@, kbs=^H, khome=^^, use=adm+sgr,
+       use=adm3a,
 # (adm22: ":em=:" was an obvious typo for ":ei=:"; also,
 # removed obsolete ":kn#7:ma=j^Jk^P^K^Pl ^R^L^L :";
 # removed bogus-looking \200 from before <cup>. -- esr)
@@ -10843,18 +10828,17 @@ adm1178|1178|LSI adm1178,
 pt100|pt200|wren|fenix|Prime pt100/pt200,
        am, bw, mir, msgr,
        cols#80, it#8, lines#24,
-       cbt=\E[Z, clear=\E?, cr=\r, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E0%p1%{33}%+%c%p2%{33}%+%c, cuu=\E[%p1%dA,
-       cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl1=\E[M,
-       ed=\E[J\E[r, el=\E[K\E[t, flash=\E$$<200/>\E$P,
-       home=\E$B, ht=^I, il1=\E[L\E[t, ind=\n, kbs=^H, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=\r\n,
-       rmcup=, rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m,
-       sgr0=\E[m,
+       cbt=\E[Z, clear=\E?, cr=\r, cub1=^H, cud1=\ED,
+       cup=\E0%p1%{33}%+%c%p2%{33}%+%c, cuu1=\EM,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl1=\E[M, ed=\E[J\E[r,
+       el=\E[K\E[t, flash=\E$$<200/>\E$P, home=\E$B, ht=^I,
+       il1=\E[L\E[t, ind=\n, khome=\E$A, nel=\r\n, rmcup=,
+       rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
        smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12
              l\E[1Q,
        smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m,
+       use=ansi+arrows, use=ansi+local,
+
 pt100w|pt200w|wrenw|fenixw|Prime pt100/pt200 in 132-column mode,
        cols#132,
        cup=\E[%i%p1%d;%p2%dH, use=pt100,
@@ -10929,20 +10913,20 @@ qvt103|Qume qvt 103,
        am, xenl, xon,
        cols#80, it#8, lines#24, vt#3,
        bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
-       clear=\E[H\E[2J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C$<2>,
-       cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
+       clear=\E[H\E[2J$<50>, cr=\r, cub1=^H, cud1=\n,
+       cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>,
        cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I,
        hts=\EH, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
-       kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8,
+       kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
        rev=\E[7m$<2>, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E[?1l\E>,
        rmso=\E[m$<2>, rmul=\E[m$<2>,
-       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
            %;m$<2>,
        sgr0=\E[m$<2>, smam=\E[?7h, smkx=\E[?1h\E=,
-       smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
+       smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, use=ansi+csr,
+       use=ansi+local,
+
 qvt103-w|Qume qvt103 132 cols,
        cols#132, lines#24,
        rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt103,
@@ -11756,7 +11740,7 @@ tvi925|TeleVideo 925,
 # to avoid "magic cookie" standout glitch:
 tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
        xmc@,
-       kbs=^H, kcub1=^H, kcud1=\n, rmso=\E(, smso=\E), use=tvi925,
+       kcud1=\n, rmso=\E(, smso=\E), use=tvi925,
 
 # From: Todd Litwin <litwin@litwin.jpl.nasa.gov> 28 May 1993
 # Originally Tim Curry, Univ. of Central Fla., <duke!ucf-cs!tim> 5/21/82
@@ -11954,8 +11938,8 @@ tvi950-rv-4p|TeleVideo 950 rev video w/4 pages,
 # If the BSD termcap file was right, <cup=\E=%p1%{32}%+%c%p2%{32}%+%c> would
 # also work.
 tvi955|TeleVideo 955,
-       OTbs, mc5i, msgr@,
-       it#8, xmc@,
+       mc5i, msgr@,
+       xmc@,
        acsc=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ, blink=\EG2,
        civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH,
        cvvis=\E.1, dim=\E[=5h, ind@, invis=\EG1,
@@ -11964,8 +11948,7 @@ tvi955|TeleVideo 955,
        rmam=\E[=7l, rmxon=^N,
        rs1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee\s\017\E0P\E6\0\E0p\E4\0
            \Ef\r,
-       sgr0=\EG0\E[=5l, smacs=\E$, smam=\E[=7h, smxon=^O,
-       use=tvi950,
+       sgr0=\EG0\E[=5l, smam=\E[=7h, smxon=^O, use=tvi950,
 tvi955-w|955-w|TeleVideo 955 w/132 cols,
        cols#132,
        is2=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El, use=tvi955,
@@ -11988,13 +11971,13 @@ tvi970|TeleVideo 970,
        ed=\E[J, el=\E[K, flash=\E[5m$<200/>\E[m, home=\E[H,
        hpa=\E[%i%p1%dG, ht=^I, il1=\E[L,
        is2=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J,
-       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
        kf1=\E?a, kf2=\E?b, kf3=\E?c, kf4=\E?d, kf5=\E?e, kf6=\E?f,
-       kf7=\E?g, kf8=\E?h, kf9=\E?i, khome=\E[H, ri=\EM, rmacs=\E(B,
+       kf7=\E?g, kf8=\E?h, kf9=\E?i, ri=\EM, rmacs=\E(B,
        rmam=\E[?7h, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
        sgr0=\E[m, smacs=\E(B, smam=\E[?7l,
        smcup=\E[?20l\E[?7h\E[1Q, smir=\E[4h, smso=\E[7m,
-       smul=\E[4m, vpa=\E[%i%p1%dd,
+       smul=\E[4m, vpa=\E[%i%p1%dd, use=ansi+arrows,
+
 tvi970-vb|TeleVideo 970 with visual bell,
        flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
        use=tvi970,
@@ -12026,10 +12009,9 @@ tvi9065|TeleVideo 9065,
        wnum#0, wsl#30,
        acsc='r0_jhkglfmeniopqksqtmulvownxj, bel=^G,
        blink=\EG2, bold=\EG\,, cbt=\EI, civis=\E.0, clear=^Z,
-       cnorm=\E.3, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD,
-       cub1=^H, cud=\E[%p1%dB, cud1=^V, cuf=\E[%p1%dC, cuf1=^L,
-       cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu=\E[%p1%dA,
-       cuu1=^K, cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp,
+       cnorm=\E.3, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^V,
+       cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+       cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp,
        dl=\E[%p1%dM, dl1=\ER, dsl=\E_30\r, ech=\E[%p1%d@, ed=\EY,
        el=\ET, flash=\Eb$<15>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1,
        ich=\E[%p1%d@, if=/usr/share/tabset/stdcrt,
@@ -12061,7 +12043,8 @@ tvi9065|TeleVideo 9065,
            %p9%t\E$%e\E%%%;,
        sgr0=\EG0\E%, smacs=\E$, smam=\E=7h, smcup=\E.2, smdc=\Er,
        smir=\Eq, smln=\E[4;2v, smso=\EGt, smul=\EG8, smxon=^O,
-       tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0, use=ecma+index,
+       tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0, use=ansi+local,
+       use=ecma+index,
 
 #### Visual (vi)
 #
@@ -12088,14 +12071,10 @@ tvi9065|TeleVideo 9065,
 # disguise; <kf7>-<kf9> are really l1-l3.
 vi50|Visual 50,
        OTbs, OTpt, am, da, db, msgr,
-       cols#80, it#8, lines#24,
-       OTnl=\n, bel=^G, cbt=\Ez$<4/>, clear=\EH\EJ, cr=\r, cub1=^H,
-       cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
-       cuu1=\EA, dl1=\EM$<3*/>, ed=\EJ, el=\EK$<16/>, home=\EH,
-       ht=^I, il1=\EL, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV,
+       OTnl=\n, cbt=\Ez$<4/>, cub1=^H, dl1=\EM$<3*/>,
+       el=\EK$<16/>, il1=\EL, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV,
        kf5=\EE, kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH,
-       nel=\r\n, ri=\EI, rmso=\ET, rmul=\EW, smso=\EU, smul=\ES,
+       rmso=\ET, rmul=\EW, smso=\EU, smul=\ES, use=vt52-basic,
 # this one was BSD & SCO's vi50
 vi50adm|Visual 50 in adm3a mode,
        am, msgr,
@@ -12103,8 +12082,7 @@ vi50adm|Visual 50 in adm3a mode,
        bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L,
        cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\EM,
        ed=\Ek, el=\EK, home=\EH, ht=^I, il1=\EL, ind=\n, kbs=^H,
-       kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH,
-       rmso=\ET, smso=\EU,
+       khome=\EH, rmso=\ET, smso=\EU, use=vt52+arrows,
 # From: Jeff Siegal <jbs@quiotix.com>
 vi55|Visual 55,
        OTbs, am, mir, msgr,
@@ -12112,9 +12090,8 @@ vi55|Visual 55,
        clear=\Ev, csr=\E_%p1%{65}%+%c%p2%{65}%+%c, cub1=^H,
        cud1=\n, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
        cuu1=\EA, dch1=\Ew, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I,
-       il1=\EL, is2=\Ev\E_AX\Eb\EW\E9P\ET, kbs=^H, kcub1=\ED,
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EI, rmir=\Eb, rmso=\ET,
-       smir=\Ea, smso=\EU,
+       il1=\EL, is2=\Ev\E_AX\Eb\EW\E9P\ET, kbs=^H, ri=\EI,
+       rmir=\Eb, rmso=\ET, smir=\Ea, smso=\EU, use=vt52+arrows,
 
 # Visual 200 from BRL
 # The following switch settings are assumed for normal operation:
@@ -12134,24 +12111,21 @@ vi200|Visual 200,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ed,
        dch1=\EO, dim=\E4, dl1=\EM, ed=\Ey, el=\Ex, home=\EH, ht=^I,
        hts=\E1, il1=\EL, ind=\n, invis=\Ea, kbs=^H, kclr=\Ev,
-       kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
-       kdch1=\EO, kdl1=\EM, ked=\EJ, kel=\Et, kf0=\E?p, kf1=\E?q,
-       kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, kf7=\E?w,
-       kf8=\E?x, kf9=\E?y, khome=\EH, khts=\E1, kich1=\Ei, kil1=\EL,
-       krmir=\Ej, mc0=\EH\E], mc4=\EX, mc5=\EW, ri=\EI, rmacs=\EG,
-       rmkx=\E>, rmso=\E3, rs1=\E3\Eb\Ej\E\El\EG\Ec\Ek\EX,
-       sgr0=\E3\Eb, smacs=\EF, smkx=\E=, smso=\E4, tbc=\Eg,
+       kctab=\E2, kdch1=\EO, kdl1=\EM, ked=\EJ, kel=\Et, kf0=\E?p,
+       kf1=\E?q, kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v,
+       kf7=\E?w, kf8=\E?x, kf9=\E?y, khome=\EH, khts=\E1, kich1=\Ei,
+       kil1=\EL, krmir=\Ej, mc0=\EH\E], mc4=\EX, mc5=\EW, ri=\EI,
+       rmacs=\EG, rmkx=\E>, rmso=\E3,
+       rs1=\E3\Eb\Ej\E\El\EG\Ec\Ek\EX, sgr0=\E3\Eb, smacs=\EF,
+       smkx=\E=, smso=\E4, tbc=\Eg, use=vt52+arrows,
 # The older Visuals didn't come with function keys. This entry uses
 # <smkx> and <rmkx> so that the keypad keys can be used as function keys.
 # If your version of vi doesn't support function keys you may want
 # to use vi200-f.
 vi200-f|Visual 200 no function keys,
-       is2=\E3\Eb\Ej\E\\\El\EG\Ed\Ek, kf0=\E?p, kf1=\E?q,
-       kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, kf7=\E?w,
-       kf8=\E?x, kf9=\E?y, rmkx=\E>, rmso@, smkx=\E=, smso@,
-       use=vi200,
+       is2=\E3\Eb\Ej\E\\\El\EG\Ed\Ek, rmso@, smso@, use=vi200,
 vi200-rv|Visual 200 reverse video,
-       cnorm@, cvvis@, ri@, rmso=\E3, smso=\E4, use=vi200,
+       cnorm@, cvvis@, ri@, use=vi200,
 
 # the function keys are programmable but we don't reprogram them to their
 # default values with <is2> because programming them is very verbose. maybe
@@ -12161,17 +12135,17 @@ vi200-rv|Visual 200 reverse video,
 vi300|Visual 300 ANSI x3.64,
        am, bw, mir, xenl,
        cols#80, lines#24,
-       bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       dch1=\E[P$<40>, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
-       il1=\E[L, ind=\n,
+       bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, dch1=\E[P$<40>, dl1=\E[M, ed=\E[J,
+       el=\E[K, home=\E[H, ht=^I, il1=\E[L, ind=\n,
        is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[1Q\E[0;1(D\E[8s,
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
        kf1=\E_A\E\\, kf2=\E_B\E\\, kf3=\E_C\E\\, kf4=\E_D\E\\,
        kf5=\E_E\E\\, kf6=\E_F\E\\, kf7=\E_G\E\\, kf8=\E_H\E\\,
        kf9=\E_I\E\\, khome=\E[H, ri=\EM, rmam=\E[?7l, rmir=\E[4l,
        rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
-       smso=\E[1m, smul=\E[4m,
+       smso=\E[1m, smul=\E[4m, use=ansi+local1,
+
 # some of the vi300s have older firmware that has the command
 # sequence for setting editing extent reversed.
 vi300-old|Visual 300 with old firmware (set edit extent reversed),
@@ -12196,9 +12170,9 @@ vi500|Visual 500,
        el=\Ex$<16/>, home=\EH, ht=\011$<8/>, il1=\EL\Ex$<3*/>,
        ind=\n,
        is2=\E3\E\001\E\007\E\003\Ek\EG\Ed\EX\El\E>\Eb\E\\,
-       kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
-       khome=\EH, nel=\r\n, rmacs=^O, rmir=\Ej, rmso=\E^G,
+       kbs=^H, khome=\EH, nel=\r\n, rmacs=^O, rmir=\Ej, rmso=\E^G,
        rmul=\E^C, smacs=^N, smir=\Ei, smso=\E^H, smul=\E^D,
+       use=vt52+arrows,
 
 # The visual 550 is a visual 300 with Tektronix graphics,
 # and with 33 lines. clear screen is modified here to
@@ -12209,14 +12183,14 @@ vi550|Visual 550 ANSI x3.64,
 
 vi603|visual603|Visual 603,
        hs, mir,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
+       blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
        csr=\E[%i%p1%d;%p2%dr, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
-       dsl=\EP2;1~\E\\, ed=\E[J, el=\E[K, fsl=\E\\, il1=\E[L,
-       ind=\ED, is1=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r,
-       rev=\E[7m, ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
+       dsl=\EP2;1~\E\\, ed=\E[J, el=\E[K, fsl=\E\\, ind=\ED,
+       is1=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r, rev=\E[7m,
+       ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
        sgr0=\E[m\017$<2>, smir=\E[4h, smso=\E[7m, smul=\E[4m,
-       tsl=\EP2~, use=decid+cpr, use=vt100+4bsd,
+       tsl=\EP2~, use=ansi+idl1, use=decid+cpr, use=vt100+4bsd,
 
 #### Wyse (wy)
 #
@@ -12586,9 +12560,9 @@ wy60-42|wyse60-42|Wyse 60 80-column 42-lines,
        ri=\Ej$<10>, rs3=\Ee*$<150>, use=wy60,
 wy60-42-w|wyse60-42-w|Wyse 60 132-column 42-lines,
        cols#132, lw#7, nlab#16, wsl#97,
-       clear=\E+$<260>, cup=\Ea%i%p1%dR%p2%dC$<2>,
-       dch1=\EW$<19>, ed=\Ey$<260>, home=\036$<2>, ip=$<6>,
-       nel=\r\n$<11>, rs2=\EeF$<150>\E`;$<150>, use=wy60-42,
+       cup=\Ea%i%p1%dR%p2%dC$<2>, dch1=\EW$<19>,
+       home=\036$<2>, ip=$<6>, nel=\r\n$<11>,
+       rs2=\EeF$<150>\E`;$<150>, use=wy60-42,
 #
 wy60-43|wyse60-43|Wyse 60 80-column 43-lines,
        lh@, lines#43, lw@, nlab@,
@@ -12620,8 +12594,7 @@ wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell,
 wy99gt|wyse99gt|Wyse 99gt,
        msgr@,
        clear=\E+$<130>, dch1=\EW$<7>, dl1=\ER$<4>, ed=\Ey$<130>,
-       el=\Et$<5>, flash=\E`8$<100/>\E`9, ht=\011$<1>,
-       il1=\EE$<4>, ind=\n$<4>, ip=$<2>, is3=\Ew0$<20>, nel@,
+       el=\Et$<5>, ind=\n$<4>, ip=$<2>, is3=\Ew0$<20>, nel@,
        ri=\Ej$<3>, rmcup=\Ew0, rs2=\E`:$<150>, smcup=\Ew1,
        u0=\E~>\E8, u1=\E[42h, use=wy60,
 #
@@ -12633,7 +12606,7 @@ wy99gt-w|wyse99gt-w|Wyse 99gt 132-column,
 #
 wy99gt-25|wyse99gt-25|Wyse 99gt 80-column 25-lines,
        lh@, lines#25, lw@, nlab@,
-       pln@, rs2=\E`:$<150>, rs3=\EwG\Ee)$<200>, use=wy99gt,
+       pln@, rs3=\EwG\Ee)$<200>, use=wy99gt,
 #
 wy99gt-25-w|wyse99gt-25-w|Wyse 99gt 132-column 25-lines,
        lh@, lines#25, lw@, nlab@,
@@ -12660,20 +12633,18 @@ wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell,
 # not, so smir and rmir are commented out as well.
 # From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
 wy99-ansi|Wyse WY-99GT in ANSI mode (int'l PC keyboard),
-       am, km, mc5i, mir, msgr, xenl,
+       am, km, mir, msgr, xenl,
        cols#80, it#8, lines#25, vt#3,
        acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
-       clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<1>,
+       bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[J$<200>,
+       cnorm=\E[34h\E[?25h, cr=\r, cub=\E[%p1%dD$<1>,
        cub1=\010$<1>, cud=\E[%p1%dB, cud1=\ED,
        cuf=\E[%p1%dC$<1>, cuf1=\E[C$<1>,
        cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
-       cvvis=\E[34l\E[?25h, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
-       ech=\E[%p1%dX, ed=\E[J$<8*>, el=\E[K$<1>, el1=\E[1K$<1>,
-       enacs=\E)0, flash=\E[?5h$<30/>\E[?5l, home=\E[H,
-       hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL,
-       il1=\E[L, ind=\n$<1>, invis=\E[8m,
+       cvvis=\E[34l\E[?25h, dim=\E[2m, ech=\E[%p1%dX,
+       ed=\E[J$<8*>, el=\E[K$<1>, el1=\E[1K$<1>, enacs=\E)0,
+       flash=\E[?5h$<30/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
+       ht=^I, ich=\E[%p1%d@, ind=\n$<1>,
        is2=\E7\E[1r\E8\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4
            ;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[4i,
        kbs=^H, kcbt=\E[z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
@@ -12682,17 +12653,16 @@ wy99-ansi|Wyse WY-99GT in ANSI mode (int'l PC keyboard),
        kf20=\E[33~, kf21=\E[34~, kf22=\E[35~, kf23=\E[1~,
        kf24=\E[2~, kf3=\EOR, kf4=\EOS, kf5=\E[M, kf6=\E[17~,
        kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, ll=\E[24E, mc0=\E[?19h,
-       mc4=\E[4i, mc5=\E[5i, nel=\EE, prot=\E[1"q, rc=\E8,
-       rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
-       rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m,
+       nel=\EE, prot=\E[1"q, ri=\EM, rmacs=^O, rmam=\E[?7l,
+       rmir=\E[4l, rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m,
        rs2=\E[61"p\E[40h\E[?6l\E[1r\E[2;3;4;13;20;34;39;36l\E[12;16
            ;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[24E
            \E[4i,
-       sc=\E7,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%O%t;7%;%?%p4%t;5%;%?
            %p5%t;2%;%?%p7%t;8%;m\E[%?%p8%t1%;"q%?%p9%t\016%e\017%;,
        sgr0=\E[m\017\E["q, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
+       smkx=\E[?1h, vpa=\E[%i%p1%dd, use=ansi+csr, use=ansi+idl,
+       use=ansi+pp, use=ansi+sgrbold,
 
 #   This is the american terminal. Here tabs work fine.
 # From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
@@ -12845,41 +12815,38 @@ wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell,
 #      to correctly handle multiple attributes on a screen.
 #
 wy75|wyse75|Wyse 75,
-       am, hs, mc5i, mir, msgr, xenl, xon,
+       am, hs, mir, msgr, xenl, xon,
        cols#80, lines#24, ma#1, pb#1201, wsl#78,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, cbt=\E[Z, clear=\E[H\E[J$<30>, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr$<2>, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[0t\E[2m,
-       dl=\E[%p1%dM$<1*>, dl1=\E[M,
-       dsl=\E[>\,\001\001\E[>-\001\001, ech=\E[%p1%dX,
-       ed=\E[J$<30>, el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E)0,
-       flash=\E[30h\E\,$<250/>\E[30l, fsl=^A, home=\E[H,
-       hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@$<1*>,
+       bel=^G, clear=\E[H\E[J$<30>, cr=\r,
+       csr=\E[%i%p1%d;%p2%dr$<2>, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP$<3*>,
+       dch1=\E[P$<3>, dim=\E[0t\E[2m, dl=\E[%p1%dM$<1*>,
+       dl1=\E[M, dsl=\E[>\,\001\001\E[>-\001\001,
+       ech=\E[%p1%dX, ed=\E[J$<30>, el=\E[K$<3>, el1=\E[1K$<3>,
+       enacs=\E)0, flash=\E[30h\E\,$<250/>\E[30l, fsl=^A,
+       home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@$<1*>,
        il=\E[%p1%dL$<2*>, il1=\E[L$<2>, ind=\n$<2>, ip=$<1>,
        is1=\E[2;4;20;30l\E[?1;10l\E[12h\E[?7;8;25h,
-       is2=\E>\E(B\E)0\017, is3=\E[m, kbs=^H, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\E[M, kel=\E[K,
+       is2=\E>\E(B\E)0\017, is3=\E[m, kdl1=\E[M, kel=\E[K,
        kf1=\E[?5i, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
        kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
        kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[?3i,
        kf20=\E[34~, kf21=\E[35~, kf3=\E[2i, kf4=\E[@, kf5=\E[M,
        kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
-       khlp=\E[28~, khome=\E[H, kich1=\E[@, kil1=\E[L, knp=\E[6~,
-       kpp=\E[5~, kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, mc4=\E[4i,
-       mc5=\E[5i, rc=\E8, rev=\E[1t\E[7m, ri=\EM$<2>, rmacs=^O,
-       rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m,
-       rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<80>, rs3=\E[?5l,
-       sc=\E7,
+       khlp=\E[28~, kich1=\E[@, kil1=\E[L, knp=\E[6~, kpp=\E[5~,
+       kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, rc=\E8, rev=\E[1t\E[7m,
+       ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>,
+       rmso=\E[m, rmul=\E[m, rs1=\E[13l\E[3l\E!p,
+       rs2=\E[35h\E[?3l$<80>, rs3=\E[?5l, sc=\E7,
        sgr=%?%p5%t\E[0t%;%?%p3%p1%|%t\E[1t%;%?%p2%t\E[2t%;%?%p4%t
            \E[3t%;%?%p1%p2%p3%p4%p5%|%|%|%|%t\E[7m%e\E[m%;%?%p9%t
            \016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
        smkx=\E[?1l\E[?7h\E=, smso=\E[1t\E[7m, smul=\E[2t\E[4m,
-       tbc=\E[3g, tsl=\E[>\,\001, use=decid+cpr, use=vt220+cvis,
-       use=vt220+keypad,
+       tsl=\E[>\,\001, use=ansi+arrows, use=ansi+local,
+       use=ansi+pp, use=ansi+tabs, use=decid+cpr,
+       use=vt220+cvis, use=vt220+keypad,
 #
 #      This terminal description uses the non-hidden attribute mode
 #      (with magic cookie).
@@ -12917,38 +12884,33 @@ wy75-wvb|wyse75-wvb|Wyse 75 with visible bell 132 columns,
 #      <dch> leave trash on the screen when used without XON/XOFF.
 #
 wy85|wyse85|Wyse 85,
-       am, hs, mc5i, mir, msgr, xenl, xon,
-       cols#80, it#8, lines#24, wsl#80,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
-       clear=\E[H\E[J$<110>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<1>,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP$<3*>,
+       hs, mir, xenl, xon,
+       wsl#80,
+       clear=\E[H\E[J$<110>, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH$<1>, dch=\E[%p1%dP$<3*>,
        dch1=\E[P$<3>, dim=\E[2m, dl=\E[%p1%dM$<3*>,
        dl1=\E[M$<3>, dsl=\E[40l, ech=\E[%p1%dX, ed=\E[J$<110>,
        el=\E[K$<1>, el1=\E[1K, enacs=\E)0,
        flash=\E[30h\E\,$<300/>\E[30l, fsl=\E[1;24r\E8,
-       home=\E[H, ht=\011$<1>, hts=\EH, ich=\E[%p1%d@$<4*>,
-       il=\E[%p1%dL$<5*>, il1=\E[L$<5>, ind=\n$<3>, invis=\E[8m,
-       ip=$<3>, is1=\E[62;1"p\E[?5W,
+       ht=\011$<1>, ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>,
+       il1=\E[L$<5>, ind=\n$<3>, ip=$<3>, is1=\E[62;1"p\E[?5W,
        is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>,
-       is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kf10=\E[21~, kf11=\E[23~,
+       is3=\E>\E(B\E)0\017\E[m, kf10=\E[21~, kf11=\E[23~,
        kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
        kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
        kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
        kf9=\E[20~, khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2,
-       lf3=PF3, lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8,
-       rev=\E[7m, ri=\EM$<3>, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
-       rmkx=\E>, rmso=\E[m, rmul=\E[m, rs1=\E[13l\E[3l\E!p,
-       rs2=\E[35h\E[?3l$<70>, rs3=\E[?5l, sc=\E7,
+       lf3=PF3, lf4=PF4, mc0=\E[0i, ri=\EM$<3>, rmam=\E[?7l,
+       rmir=\E[4l, rmkx=\E>, rs1=\E[13l\E[3l\E!p,
+       rs2=\E[35h\E[?3l$<70>, rs3=\E[?5l,
        sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?
            %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       tsl=\E[40h\E7\E[25;%i%p1%dH, use=decid+cpr,
-       use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad,
+       sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h, smkx=\E[?1l\E=,
+       tsl=\E[40h\E7\E[25;%i%p1%dH, use=ansi+arrows,
+       use=ansi+csr, use=ansi+inittabs, use=ansi+local,
+       use=ansi+pp, use=ansi+sgrbold, use=decid+cpr,
+       use=vt100+4bsd, use=vt220+vtedit, use=vt220+cvis,
+       use=vt220+keypad,
 #
 #      Wyse 85 with visual bell.
 wy85-vb|wyse85-vb|Wyse 85 with visible bell,
@@ -12974,42 +12936,35 @@ wy85-wvb|wyse85-wvb|Wyse 85 with visible bell 132-columns,
 # terminfo should reflect the manufacturer's intended behaviour of the terminal
 # or the actual."
 wy85-8bit|wyse85-8bit|Wyse 85 in 8-bit mode,
-       am, hs, mc5i, mir, msgr, xenl, xon,
-       cols#80, it#8, lines#24, wsl#80,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
-       clear=\E[H\E[J$<110>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<1>,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP$<3*>,
+       hs, mir, xenl, xon,
+       wsl#80,
+       clear=\E[H\E[J$<110>, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH$<1>, dch=\E[%p1%dP$<3*>,
        dch1=\E[P$<3>, dim=\E[2m, dl=\E[%p1%dM$<3*>,
        dl1=\E[M$<3>, dsl=\E[40l, ech=\E[%p1%dX, ed=\E[J$<110>,
        el=\E[K$<1>, el1=\E[1K, enacs=\E)0,
        flash=\E[30h\E\,$<300/>\E[30l, fsl=\E[1;24r\E8,
-       home=\E[H, ht=\011$<1>, hts=\EH, ich=\E[%p1%d@$<4*>,
-       il=\E[%p1%dL$<5*>, il1=\E[L$<5>, ind=\n$<3>, invis=\E[8m,
-       ip=$<3>, is1=\E[62;1"p\E[?5W,
+       ht=\011$<1>, ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>,
+       il1=\E[L$<5>, ind=\n$<3>, ip=$<3>, is1=\E[62;1"p\E[?5W,
        is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>,
        is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOy, kb2=\EOu,
-       kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B,
-       kcuf1=\233C, kcuu1=\233A, kdch1=\2333~, kent=\EOM,
-       kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~,
-       kf13=\23325~, kf14=\23326~, kf15=\23328~, kf16=\23329~,
-       kf17=\23331~, kf18=\23332~, kf19=\23333~, kf2=\EOQ,
-       kf20=\23334~, kf3=\EOR, kf4=\EOS, kf6=\23317~, kf7=\23318~,
-       kf8=\23319~, kf9=\23320~, kfnd=\2331~, khlp=\23328~,
-       khome=\23326~, kich1=\2332~, knp=\2336~, kpp=\2335~,
-       kslt=\2334~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i,
-       mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>,
-       rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m,
-       rmul=\E[m, rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<70>,
-       rs3=\E[?5l, sc=\E7,
+       kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
+       kcuu1=\233A, kdch1=\2333~, kf10=\23321~, kf11=\23323~,
+       kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
+       kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
+       kf20=\23334~, kf6=\23317~, kf7=\23318~, kf8=\23319~,
+       kf9=\23320~, kfnd=\2331~, khlp=\23328~, khome=\23326~,
+       kich1=\2332~, knp=\2336~, kpp=\2335~, kslt=\2334~, lf1=PF1,
+       lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, ri=\EM$<3>,
+       rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rs1=\E[13l\E[3l\E!p,
+       rs2=\E[35h\E[?3l$<70>, rs3=\E[?5l,
        sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?
            %p6%t;1%;%?%p7%t;8%;+m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       tsl=\E[40h\E7\E[25;%i%p1%dH, use=decid+cpr,
-       use=vt220+cvis,
+       sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h, smkx=\E[?1l\E=,
+       tsl=\E[40h\E7\E[25;%i%p1%dH, use=ansi+csr,
+       use=ansi+inittabs, use=ansi+local, use=ansi+pp,
+       use=ansi+sgrbold, use=decid+cpr, use=vt100+4bsd,
+       use=vt100+pfkeys, use=vt220+cvis,
 #
 #      Wyse 185 emulating a VT320 7 bit mode.
 #
@@ -13022,41 +12977,36 @@ wy85-8bit|wyse85-8bit|Wyse 85 in 8-bit mode,
 #      by set-up.
 #
 wy185|wyse185|Wyse 185,
-       am, hs, km, mc5i, mir, msgr, xenl, xon,
-       cols#80, it#8, lines#24, wsl#80,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
-       clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+       hs, km, mir, xenl, xon,
+       wsl#80,
+       civis=\E[?25l, clear=\E[H\E[J$<40>,
+       cnorm=\E[34h\E[?25h, csr=\E[%i%p1%d;%p2%dr$<20>,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
        cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<3>, dch1=\E[P$<3>,
        dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>,
        dsl=\E7\E[99;0H\E[K\E8, ech=\E[%p1%dX, ed=\E[J$<40>,
        el=\E[K, el1=\E[1K, enacs=\E)0,
        flash=\E[30h\E\,$<100/>\E[30l, fsl=\E[1;24r\E8,
-       home=\E[H, hpa=\E[%i%p1%d`, ht=^I, hts=\EH,
-       ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>,
-       ind=\n$<2>, invis=\E[8m, ip=$<4>, is1=\E[?5W,
+       hpa=\E[%i%p1%d`, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>,
+       il1=\E[L$<3>, ind=\n$<2>, ip=$<4>, is1=\E[?5W,
        is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h,
-       is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[21~,
+       is3=\E>\E(B\E)0\017\E[m, kcbt=\E[Z, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
        kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
-       kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS,
-       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3,
-       lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
-       ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l,
-       rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
+       kf19=\E[33~, kf20=\E[34~, kf6=\E[17~, kf7=\E[18~,
+       kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, khome=\E[26~, lf1=PF1,
+       lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, rc=\E8, ri=\EM$<2>,
+       rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l, rmkx=\E>,
+       rmso=\E[27m, rmul=\E[24m,
        rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l,
        rs3=\E[?5l\E[47h\E[40l\E[r, sc=\E7,
        sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?
            %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[ Q,
-       smir=\E[4h, smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m,
-       tbc=\E[3g, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd,
-       use=decid+cpr, use=vt220+vtedit, use=vt220+keypad,
+       sgr0=\E[m\017, smam=\E[?7h, smcup=\E[ Q, smir=\E[4h,
+       smkx=\E[?1l\E=, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd,
+       use=ansi+arrows, use=ansi+inittabs, use=ansi+local,
+       use=ansi+pp, use=ansi+sgrbold, use=decid+cpr,
+       use=vt100+4bsd, use=vt220+vtedit, use=vt220+keypad,
 #
 #      Wyse 185 with 24 data lines and top status (terminal status)
 wy185-24|wyse185-24|Wyse 185 with 24 data lines,
@@ -13201,20 +13151,18 @@ wy325-43w-vb|wy325-43wvb|Wyse-325 43 lines wide mode visual bell,
 #
 # Bug: The <op> capability resets attributes.
 wy370-nk|Wyse 370 without function keys,
-       am, ccc, hs, mc5i, mir, msgr, xenl, xon,
-       colors#64, cols#80, it#8, lines#24, ncv#48, pairs#64, wsl#80,
+       am, ccc, hs, mir, msgr, xenl, xon,
+       colors#64, cols#80, lines#24, ncv#48, pairs#64, wsl#80,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
-       clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<1*>, dch1=\E[P$<1>,
-       dclk=\E[31h, dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>,
-       dsl=\E[40l, ech=\E[%p1%dX$<.1*>, ed=\E[J$<40>,
-       el=\E[K$<10>, el1=\E[1K$<12>, enacs=\E)0,
+       bel=^G, civis=\E[?25l, clear=\E[H\E[J$<40>,
+       cnorm=\E[34h\E[?25h, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH$<1>, cvvis=\E[?25h\E[34l,
+       dch=\E[%p1%dP$<1*>, dch1=\E[P$<1>, dclk=\E[31h,
+       dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>, dsl=\E[40l,
+       ech=\E[%p1%dX$<.1*>, ed=\E[J$<40>, el=\E[K$<10>,
+       el1=\E[1K$<12>, enacs=\E)0,
        flash=\E[30h\E\,$<300/>\E[30l, fsl=\E[1;24r\E8,
-       home=\E[H, hpa=\E[%i%p1%d`, ht=\011$<1>, hts=\EH,
+       home=\E[H, hpa=\E[%i%p1%d`, ht=\011$<1>,
        ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>,
        ind=\n$<2>,
        initc=\E[66;%p1%d;%?%p2%{250}%<%t%{0}%e%p2%{500}%<%t%{16}%e
@@ -13222,58 +13170,56 @@ wy370-nk|Wyse 370 without function keys,
              %{500}%<%t%{4}%e%p3%{750}%<%t%{8}%e%{12}%;%?%p4%{250}
              %<%t%{0}%e%p4%{500}%<%t%{1}%e%p4%{750}%<%t%{2}%e%{3}%;
              %{1}%+%+%+%dw,
-       invis=\E[8m, ip=$<1>, is1=\E[90;1"p\E[?5W$<6>,
+       ip=$<1>, is1=\E[90;1"p\E[?5W$<6>,
        is2=\E[2;4;20;30;40l\E[?1;10;16l\E[12h\E[?7;8;25h,
-       is3=\E>\017\E)0\E(B\E[63;0w\E[m, mc0=\E[0i, mc4=\E[4i,
-       mc5=\E[5i,
+       is3=\E>\017\E)0\E(B\E[63;0w\E[m, mc0=\E[0i,
        oc=\E[60w\E[63;0w\E[66;1;4w\E[66;2;13w\E[66;3;16w\E[66;4;49w
           \E[66;5;51w\E[66;6;61w\E[66;7;64w,
-       op=\E[m, rc=\E8, rev=\E[7m, ri=\EM$<2>, rmacs=^O,
-       rmam=\E[?7l, rmclk=\E[31l, rmcup=\E[ R, rmir=\E[4l,
-       rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
-       rs1=\E[13l\E[3l\E!p\E[?4i, rs2=\E[35h\E[?3l$<8>,
-       rs3=\E[?5l, sc=\E7, setb=\E[62;%p1%dw, setf=\E[61;%p1%dw,
+       op=\E[m, ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmclk=\E[31l,
+       rmcup=\E[ R, rmir=\E[4l, rmkx=\E>, rmso=\E[27m,
+       rmul=\E[24m, rs1=\E[13l\E[3l\E!p\E[?4i,
+       rs2=\E[35h\E[?3l$<8>, rs3=\E[?5l, setb=\E[62;%p1%dw,
+       setf=\E[61;%p1%dw,
        sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?
            %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E[ Q,
-       smir=\E[4h, smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m,
-       tbc=\E[3g, tsl=\E[40l\E[40h\E7\E[99;%i%p1%dH,
-       u0=\E[?38h\E8, u1=\E[?38l\E)0, u2=\E[92;52"p, u3=\E~B,
-       u4=\E[92;76"p, u5=\E%!1\E[90;1"p, vpa=\E[%i%p1%dd,
-       use=decid+cpr,
+       smir=\E[4h, smkx=\E[?1l\E=,
+       tsl=\E[40l\E[40h\E7\E[99;%i%p1%dH, u0=\E[?38h\E8,
+       u1=\E[?38l\E)0, u2=\E[92;52"p, u3=\E~B, u4=\E[92;76"p,
+       u5=\E%!1\E[90;1"p, vpa=\E[%i%p1%dd, use=ansi+csr,
+       use=ansi+inittabs, use=ansi+local, use=ansi+pp,
+       use=ansi+sgrbold, use=decid+cpr,
 #
 #      Function key set for the ASCII (wy-50 compatible) keyboard
 #      This is the default 370.
 #
 wy370|wyse370|wy370-101k|Wyse 370 with 101 key keyboard,
-       kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kdch1=\EOQ, kdl1=\EOQ, kent=\EOM, kf1=\E[?4i,
+       kcbt=\E[Z, kdch1=\EOQ, kdl1=\EOQ, kent=\EOM, kf1=\E[?4i,
        kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
        kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf2=\E[?3i,
        kf3=\E[2i, kf4=\E[@, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
-       kf8=\E[19~, kf9=\E[20~, khome=\E[H, kich1=\EOP, kil1=\EOP,
-       knp=\E[U, kpp=\E[V, use=wy370-nk,
+       kf8=\E[19~, kf9=\E[20~, kich1=\EOP, kil1=\EOP, knp=\E[U,
+       kpp=\E[V, use=ansi+arrows, use=wy370-nk,
 #
 #      Function key set for the VT-320 (and wy85) compatible keyboard
 #
 wy370-105k|Wyse 370 with 105 key keyboard,
-       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
        kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
        kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
        kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kf6=\E[17~,
        kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
        khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3,
-       lf4=PF4, use=vt220+vtedit, use=wy370-nk,
+       lf4=PF4, use=ansi+arrows, use=vt220+vtedit, use=wy370-nk,
        use=vt220+keypad,
 #
 #      Function key set for the PC compatible keyboard
 #
 wy370-EPC|Wyse 370 with 102 key keyboard,
-       kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kend=\E[1~, kent=\EOM, kf1=\EOP, kf10=\E[21~,
+       kcbt=\E[Z, kend=\E[1~, kent=\EOM, kf1=\EOP, kf10=\E[21~,
        kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
        kf5=\E[M, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khome=\E[H, kich1=\E[2~, knp=\E[U, kpp=\E[V, use=wy370-nk,
+       kich1=\E[2~, knp=\E[U, kpp=\E[V, use=ansi+arrows,
+       use=wy370-nk,
 #
 #      Wyse 370 with visual bell.
 wy370-vb|Wyse 370 with visible bell,
@@ -13365,40 +13311,36 @@ wy370-tek|Wyse 370 Tektronix 4010/4014 emulator,
 #         with SCO applications.
 #
 wy520|wyse520|Wyse 520,
-       am, hs, km, mc5i, mir, xenl, xon,
+       am, hs, km, mir, xenl, xon,
        cols#80, it#8, lines#24, wsl#80,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
-       clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+       bel=^G, civis=\E[?25l, clear=\E[H\E[J$<40>,
+       cnorm=\E[34h\E[?25h, cr=\r, csr=\E[%i%p1%d;%p2%dr$<20>,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
        cvvis=\E[?25h\E[34l, dch=\E[%p1%dP$<3>, dch1=\E[P$<30>,
        dim=\E[2m, dl=\E[%p1%dM$<2*>, dl1=\E[M$<2>, dsl=\E[0$~,
        ech=\E[%p1%dX, ed=\E[J$<40>, el=\E[K, el1=\E[1K,
-       enacs=\E)0, fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%d`, ht=^I,
-       hts=\EH, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>,
-       il1=\E[L$<3>, ind=\n$<2>, invis=\E[8m, ip=$<4>, is1=\E[?5W,
+       enacs=\E)0, fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%d`,
+       ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>,
+       ind=\n$<2>, ip=$<4>, is1=\E[?5W,
        is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25;67h,
-       is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[1~, kel=\E[4~,
-       kent=\EOM, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
-       kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
-       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~,
-       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khlp=\E[28~, khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3,
-       lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
+       is3=\E>\E(B\E)0\017\E[m, kcbt=\E[Z, ked=\E[1~, kel=\E[4~,
+       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+       kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+       kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kf6=\E[17~,
+       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khlp=\E[28~,
+       khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i,
        ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l,
-       rmso=\E[m, rmul=\E[24m,
-       rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p, rs2=\E[35h\E[?3l,
-       rs3=\E[?5l\E[47h\E[40l\E[r, sc=\E7,
+       rmul=\E[24m, rs1=\E[13l\E[3l\E\\\E[63;1"p\E[!p,
+       rs2=\E[35h\E[?3l, rs3=\E[?5l\E[47h\E[40l\E[r,
        sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?
            %p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h,
-       smcup=\E[ Q\E[?67;8h, smir=\E[4h, smso=\E[7m, smul=\E[4m,
-       tbc=\E[3g, tsl=\E[2$~\E[1$}\E[%i%p1%d`,
-       vpa=\E[%i%p1%dd, use=decid+cpr, use=vt220+vtedit,
-       use=vt220+keypad,
+       smcup=\E[ Q\E[?67;8h, smir=\E[4h,
+       tsl=\E[2$~\E[1$}\E[%i%p1%d`, vpa=\E[%i%p1%dd,
+       use=ansi+arrows, use=ansi+csr, use=ansi+local,
+       use=ansi+pp, use=ansi+sgrbold, use=ansi+tabs,
+       use=decid+cpr, use=vt220+vtedit, use=vt220+keypad,
 #
 #       Wyse 520 with 24 data lines and status (terminal status)
 wy520-24|wyse520-24|Wyse 520 with 24 data lines,
@@ -13581,9 +13523,8 @@ pckermit|pckermit12|UCB IBMPC Kermit 1.2,
 # Does not use :am: because autowrap is lost when kermit dropped and restarted.
 # From: greg small <gts@populi.berkeley.edu> 12-19-84
 pckermit120|UCB IBMPC Kermit 1.20,
-       it#8, lines#24,
-       cud1=\EB, cvvis=\EO\Eq\EEK3, dch1=\EN, dl1=\EM, ht=^I,
-       il1=\EL,
+       it#8,
+       cvvis=\EO\Eq\EEK3, dch1=\EN, dl1=\EM, ht=^I, il1=\EL,
        is2=\EO\Eq\EJ\EY7\sK3\sUCB\sIBMPC\sKermit\s1.20\s\s12-19-84
            \n,
        rmir@, rmso=\Eq, smir@, smso=\Ep, use=kermit,
@@ -13632,31 +13573,30 @@ msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC,
 # Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu.
 # (vt320-k3: I added <rmam>/<smam> based on the init string -- esr)
 vt320-k3|MS-Kermit 3.00's VT320 emulation,
-       am, eslok, hs, km, mir, msgr, xenl,
+       am, km, mir, msgr, xenl,
        cols#80, it#8, lines#49, pb#9600, vt#3,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cmdch=\E,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+       bel=^G, blink=\E[5m, bold=\E[1m, cmdch=\E, cr=\r, cub1=^H,
+       cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       ech=\E[%p1%dX,
        flash=\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[
              ?5l,
-       fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       is2=\E>\E F\E[?1h\E[?7h\E[r\E[2$~, kbs=^H, kcub1=\EOD,
-       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdl1=\E[3~, kf0=\E[21~,
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
-       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kich1=\E[2~, knp=\E[6~,
-       kpp=\E[5~, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, nel=\r\n, rc=\E8,
-       rev=\E[7m, ri=\EM, rin=\E[%p1%dL, rmacs=\E(B, rmam=\E[?7l,
-       rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
+       home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+       ind=\n, is2=\E>\E F\E[?1h\E[?7h\E[r\E[2$~, kbs=^H,
+       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdl1=\E[3~,
+       kf0=\E[21~, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+       kich1=\E[2~, knp=\E[6~, kpp=\E[5~, mc0=\E[0i, mc4=\E[4i,
+       mc5=\E[5i, nel=\r\n, rev=\E[7m, ri=\EM, rin=\E[%p1%dL,
+       rmacs=\E(B, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
+       rmso=\E[27m, rmul=\E[24m,
        rs1=\E(B\E)B\E>\E\sF\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h
            \E[4i\E[?4i\E[m\E[r\E[2$~,
-       sc=\E7, sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
+       sgr0=\E[m, smacs=\E(0, smam=\E[?7h, smir=\E[4h,
        smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       tsl=\E[1$}\r\E[K, vpa=\E[%i%p1%dd, use=vt220+cvis,
+       tsl=\E[1$}\r\E[K, vpa=\E[%i%p1%dd, use=ansi+csr,
+       use=ansi+erase, use=ansi+idl, use=ansi+local, use=dec+sl,
+       use=vt220+cvis,
 
 # From: Joseph Gil <yogi@cs.ubc.ca> 13 Dec 1991
 # ACS capabilities from Philippe De Muyter  <phdm@info.ucl.ac.be> 30 May 1996
@@ -13666,25 +13606,21 @@ vt320-k311|DEC VT320 series as defined by kermit 3.11,
        cols#80, it#8, lines#24, vt#3,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
+       dch1=\E[P, dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K,
        flash=\E[?5h$<100/>\E[?5l, fsl=\E[$}, home=\E[H, ht=^I,
-       hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L$<3/>,
-       ind=\ED,
+       hts=\EH, ich=\E[%p1%d@, il1=\E[L$<3/>, ind=\ED,
        is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
        kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
        kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, lf1=pf1, lf2=pf2,
-       lf3=pf3, lf4=pf4, nel=\r\ED, rc=\E8, rev=\E[7m,
+       lf3=pf3, lf4=pf4, nel=\r\ED, rev=\E[7m,
        rf=/usr/share/tabset/vt100, ri=\EM, rmacs=^O,
        rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
-       rmul=\E[24m, rs1=\E[?3l, sc=\E7, sgr0=\E[m, smacs=^N,
-       smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, tsl=\E[2$~\E[1$}\E[1;%dH,
-       use=vt220+cvis,
+       rmul=\E[24m, rs1=\E[?3l, sgr0=\E[m, smacs=^N, smam=\E[?7h,
+       smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+       tbc=\E[3g, tsl=\E[2$~\E[1$}\E[1;%dH, use=ansi+csr,
+       use=ansi+idl, use=ansi+local, use=vt220+cvis,
 
 ######## NON-ANSI TERMINAL EMULATIONS
 #
@@ -13779,27 +13715,28 @@ rbcomm|IBM PC with RBcomm and EMACS keybindings,
        am, bw, mir, msgr, xenl,
        cols#80, it#8, lines#25,
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=^L, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^C, cuf1=^B,
+       cub1=^H, cud1=^C, cuf1=^B,
        cup=\037%p2%{32}%+%c%p1%{32}%+%c, cuu1=^^, dch1=^W,
        dl=\E[%p1%dM, dl1=^Z, ech=\E[%p1%dX, ed=^F5, el=^P^P, ht=^I,
        il=\E[%p1%dL, il1=^K, ind=\ED, invis=\E[8m,
        is2=\017\035\E(B\E)0\E[?7h\E[?3l\E[>8g, kbs=^H,
        kcub1=^B, kcud1=^N, kcuf1=^F, kcuu1=^P, khome=^A, nel=\r\ED,
-       rc=\E8, rep=\030%p1%c%p2%c, rev=^R, ri=\EM, rmcup=, rmdc=,
-       rmir=^], rmkx=\E>, rmso=^U, rmul=^U,
-       rs1=\017\E(B\E)0\025\E[?3l\E[>8g, sc=\E7, sgr0=\E[m,
-       smcup=, smdc=, smir=^\, smkx=\E=, smso=^R, smul=^T,
+       rep=\030%p1%c%p2%c, rev=^R, ri=\EM, rmcup=, rmdc=, rmir=^],
+       rmkx=\E>, rmso=^U, rmul=^U,
+       rs1=\017\E(B\E)0\025\E[?3l\E[>8g, sgr0=\E[m, smcup=,
+       smdc=, smir=^\, smkx=\E=, smso=^R, smul=^T, use=ansi+csr,
        use=vt220+cvis,
+
 rbcomm-nam|IBM PC with RBcomm without autowrap,
        am@,
-       bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n,
-       is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kbs=^H,
-       kcub1=^H, kcud1=\n, nel=\r\n, use=rbcomm,
+       cud1=\n, ind=\n,
+       is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kcub1=^H,
+       kcud1=\n, nel=\r\n, use=rbcomm,
 rbcomm-w|IBM PC with RBcomm in 132 column mode,
        cols#132,
-       bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n,
-       is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kbs=^H,
-       kcub1=^H, kcud1=\n, nel=\r\n, use=rbcomm,
+       cud1=\n, ind=\n,
+       is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kcub1=^H,
+       kcud1=\n, nel=\r\n, use=rbcomm,
 
 ######## LCD DISPLAYS
 #
@@ -13858,20 +13795,18 @@ MtxOrb162|16x2 Matrix Orbital LCD display,
 att2300|sv80|AT&T 2300 Video Information Terminal 80 column mode,
        am, eo, mir, msgr, xon,
        cols#80, it#8, lines#24,
-       bel=^G, clear=\E[H\E[J, cr=\r, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcbt=\E[Z, kclr=\E[J,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
+       bel=^G, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
+       dch=\E[%p1%dP, dch1=\E[P, el1=\E[1K, home=\E[H, ht=^I,
+       ich=\E[%p1%d@, ind=\n, kcbt=\E[Z, kclr=\E[J, kdch1=\E[P,
        kdl1=\E[M, kf1=\E[1r, kf10=\E[10r, kf11=\E[11r,
        kf12=\E[12r, kf13=\E[13r, kf14=\E[14r, kf15=\E[15r,
        kf16=\E[16r, kf2=\E[2r, kf3=\E[3r, kf4=\E[4r, kf5=\E[5r,
-       kf6=\E[6r, kf7=\E[7r, kf8=\E[8r, kf9=\E[9r, khome=\E[H,
-       kich1=\E[@, kil1=\E[L, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
-       rev=\E[7m, rmir=\E[4l, rmso=\E[m, sgr0=\E[m, smir=\E[4h,
-       smso=\E[7m, use=ansi+cpr,
+       kf6=\E[6r, kf7=\E[7r, kf8=\E[8r, kf9=\E[9r, kich1=\E[@,
+       kil1=\E[L, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rev=\E[7m,
+       rmir=\E[4l, rmso=\E[m, sgr0=\E[m, smir=\E[4h, smso=\E[7m,
+       use=ansi+arrows, use=ansi+cpr, use=ansi+erase,
+       use=ansi+idl, use=ansi+local,
+
 att2350|AT&T 2350 Video Information Terminal 80 column mode,
        mc0@, mc4@, mc5@, use=att2300,
 
@@ -13891,11 +13826,10 @@ att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1,
        cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
        acsc=++\,\,--..00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyz
             z{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[2;7m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dim=\E[2m,
-       dl1=\E[M, ed=\E[J, el=\E[K, fsl=\E8, home=\E[H, ht=^I,
-       ich1=\E[@, il1=\E[L, ind=\n, invis=\E[8m, is1=\E[?3l\E)0,
+       bel=^G, bold=\E[2;7m, cr=\r, cub1=^H, cuf1=\E[C,
+       cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dim=\E[2m, dl1=\E[M,
+       fsl=\E8, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\n,
+       is1=\E[?3l\E)0,
        is3=\E[1;03q\s\s\sf1\s\s\s\s\s\s\s\s\s\s\s\EOP\E[2;03q\s\s
            \sf2\s\s\s\s\s\s\s\s\s\s\s\EOQ\E[3;03q\s\s\sf3\s\s\s\s
            \s\s\s\s\s\s\s\EOR\E[4;03q\s\s\sf4\s\s\s\s\s\s\s\s\s\s
@@ -13903,19 +13837,18 @@ att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1,
            \s\s\sf6\s\s\s\s\s\s\s\s\s\s\s\EOU\E[7;03q\s\s\sf7\s\s
            \s\s\s\s\s\s\s\s\s\EOV\E[8;03q\s\s\sf8\s\s\s\s\s\s\s\s
            \s\s\s\EOW,
-       kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT,
-       kf6=\EOU, kf7=\EOV, kf8=\EOW, khome=\E[H, kll=\E[24;1H,
-       ll=\E[24H, nel=\r\n,
+       kclr=\E[2J, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT,
+       kf6=\EOU, kf7=\EOV, kf8=\EOW, kll=\E[24;1H, ll=\E[24H,
+       nel=\r\n,
        pfx=\E[%p1%1d;%p2%l%2.2dq\s\s\sf%p1%1d\s\s\s\s\s\s\s\s\s\s
            \s%p2%s,
-       pln=\E[%p1%d;00q%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
-       rmacs=^O, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y,
-       sc=\E7,
+       pln=\E[%p1%d;00q%p2%:-16s, ri=\EM, rmacs=^O,
+       rs2=\Ec\E[?3l\E[2;0y,
        sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
            %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m,
-       tsl=\E7\E[25;%p1%{1}%+%dH,
+       sgr0=\E[m\017, smacs=^N, tsl=\E7\E[25;%p1%{1}%+%dH,
+       use=ansi+arrows, use=ansi+csr, use=ansi+erase,
+       use=ansi+local1, use=ansi+sgrbold,
 
 att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1,
        cols#132, wsl#132,
@@ -13937,21 +13870,20 @@ v5410|att5410 in terms of a VT100,
        cols#80, it#8, lines#24, vt#3,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
-       clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub1=^H, cud1=\n, cuf1=\E[C$<2>,
-       cup=\E[%i%p1%d;%p2%dH$<5>, cuu1=\E[A$<2>, dch1=\E[P,
-       dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
-       enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ich1=\E[@,
-       il1=\E[L, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
-       kcuu1=\EOA, rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O,
-       rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>,
-       rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
-       sc=\E7,
+       clear=\E[H\E[J$<50>, cr=\r, cub1=^H, cud1=\n,
+       cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>,
+       cuu1=\E[A$<2>, dch1=\E[P, dl1=\E[M, ed=\E[J$<50>,
+       el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H,
+       ht=^I, hts=\EH, ich1=\E[@, il1=\E[L, ind=\n, kbs=^H,
+       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+       rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
+       rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;m%?%p9%t\016%e\017%;$<2>,
        sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
        smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
-       use=decid+cpr, use=vt100+fnkeys,
+       use=ansi+csr, use=decid+cpr, use=vt100+fnkeys,
 
 #
 # Teletype Model 5420 -- A souped up 5410, with multiple windows,
@@ -13991,15 +13923,12 @@ v5410|att5410 in terms of a VT100,
 # when pressed in SYS PF mode.
 # (att4415: I added <rmam>/<smam> based on the init string -- esr)
 att4415|tty5420|att5420|AT&T 4415/5420 80 cols,
-       OTbs, db, mir, xon,
-       lh#2, lm#78, lw#8, nlab#8, wsl#55,
-       cbt=\E[Z, clear=\E[x\E[J, cnorm=\E[11;0j, cub=\E[%p1%dD,
-       cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dx,
-       cuu=\E[%p1%dA, cvvis=\E[11;1j, dch=\E[%p1%dP,
-       dl=\E[%p1%dM, ech=\E[%p1%ds\E[%p1%dD,
-       flash=\E[?5h$<200>\E[?5l, home=\E[x,
-       hpa=\E[%p1%{1}%+%dG, hts=\EH, ich=\E[%p1%d@, ich1@,
-       il=\E[%p1%dL, indn=\E[%p1%dE, is1=\E[?3l$<100>,
+       db,
+       lm#78, wsl#55,
+       clear=\E[x\E[J, cnorm=\E[11;0j, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dx, cvvis=\E[11;1j,
+       ech=\E[%p1%ds\E[%p1%dD, flash=\E[?5h$<200>\E[?5l,
+       home=\E[x, ich1@, indn=\E[%p1%dE, is1=\E[?3l$<100>,
        is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h
            \E[4i\Ex\E[21;1j\212,
        is3=\E[?5l, kbeg=\Et, kcbt=\E[Z, kdch1=\E[P, kdl1=\E[M,
@@ -14011,14 +13940,14 @@ att4415|tty5420|att5420|AT&T 4415/5420 80 cols,
        mc5=\E[?4i, mrcup=\E[%i%p1%d;%p2%dt,
        pfx=\E[%p1%d;%p2%l%02dq   F%p1%d           %p2%s,
        pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV,
-       rin=\E[%p1%dF, rmam=\E[?7l, rmir=\E[4l,
-       rmkx=\E[19;0j\E[21;1j\212, rmln=\E|,
+       rin=\E[%p1%dF, rmam=\E[?7l, rmkx=\E[19;0j\E[21;1j\212,
+       rmln=\E|,
        sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
            %|%p6%|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[19;1j\E[21;4j\Eent, smln=\E~, tbc=\E[3g,
-       tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
-       use=att4410,
+       sgr0=\E[m\017, smam=\E[?7h, smkx=\E[19;1j\E[21;4j\Eent,
+       smln=\E~, tsl=\E7\E[25;%p1%{8}%+%dH, use=ansi+idc,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
+       use=ansi+rca, use=att4410,
 
 att4415-w|tty5420-w|att5420-w|AT&T 4415/5420 132 cols,
        cols#132, lm#54, wsl#97,
@@ -14059,41 +13988,38 @@ att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse wit
 
 att5420_2|AT&T 5420 model 2 80 cols,
        am, db, hs, mir, msgr, xon,
-       cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
+       cols#80, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       blink=\E[5m, cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j,
-       cr=\EG, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A,
-       cvvis=\E[11;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[0J,
-       el=\E[0K, el1=\E[1K, flash=\E[?5h$<200>\E[?5l, fsl=\E8,
-       home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       indn=\E[%p1%dE, invis=\E[8m,
+       cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j, cr=\EG, cub1=^H,
+       cud1=\E[1B, cuf1=\E[1C, cup=\E[%i%p1%d;%p2%dH,
+       cuu1=\E[1A, cvvis=\E[11;1j, dch=\E[%p1%dP, dch1=\E[P,
+       ech=\E[%p1%ds\E[%p1%dD, ed=\E[0J, el=\E[0K, el1=\E[1K,
+       flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H,
+       hpa=\E[%p1%{1}%+%dG, ich=\E[%p1%d@, ich1=\E[@, ind=\n,
+       indn=\E[%p1%dE,
        is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;0j\E[6;0j\E[7;0j
            \E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j
            \E[29;0j\E[1;24r,
-       kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
+       kbeg=\Et, kcbt=\E[Z, kclr=\E[2J, kdch1=\E[P, kdl1=\E[M,
        kel=\E[2K, kend=\Ez, kent=\n, kf1=\EOc, kf2=\EOd, kf3=\EOe,
-       kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, khome=\E[H,
+       kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
        kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U,
        kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5,
        lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?;2i, mc4=\E[4i,
        mc5=\E[5i, mrcup=\E[%i%p1%d;%p2%dt, nel=\r\n,
        pfx=\E[%p1%d;%p2%l%02dq\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s\s%p2
            %s\E~,
-       pln=\E[%p1%d;0;0;0q%p2%:-16.16s\E~, prot=\EV, rc=\E8,
-       rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmkx=\E[19;0j,
-       rmln=\E|, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y,
-       sc=\E7,
+       pln=\E[%p1%d;0;0;0q%p2%:-16.16s\E~, prot=\EV, ri=\EM,
+       rin=\E[%p1%dF, rmacs=^O, rmkx=\E[19;0j, rmln=\E|,
+       rs2=\Ec\E[?3l\E[2;0y,
        sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1
            %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;%?%p8%t\EV%;,
        sgr0=\E[m\017, smacs=^N, smkx=\E[19;1j, smln=\E~,
-       smso=\E[7m, smul=\E[4m, tbc=\E[3g,
        tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
+       use=ansi+arrows, use=ansi+csr, use=ansi+idl,
+       use=ansi+inittabs, use=ansi+local, use=ansi+sgrdim,
        use=decid+cpr,
+
 att5420_2-w|AT&T 5420 model 2 in 132 column mode,
        cols#132,
        is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;1j\E[6;0j\E[7;0j
@@ -14105,20 +14031,20 @@ att4418|att5418|AT&T 5418 80 cols,
        am, xon,
        cols#80, lines#24,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, clear=\E[H\E[2J, cr=\r, cub=\E[%p1%dD,
-       cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
-       cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H,
-       ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\n,
-       is1=\E[?3l, is2=\E)0\E?6l\E?5l, kclr=\E[%%, kcub1=\E@,
-       kcud1=\EU, kcuf1=\EA, kcuu1=\ES, kent=\E[, kf1=\E[h,
-       kf10=\E[m, kf11=\E[n, kf12=\E[o, kf13=\E[H, kf14=\E[I,
-       kf15=\E[J, kf18=\E[K, kf19=\E[L, kf2=\E[i, kf20=\E[E,
-       kf21=\E[_, kf22=\E[M, kf23=\E[N, kf24=\E[O, kf3=\E[j,
-       kf6=\E[k, kf7=\E[l, kf8=\E[f, kf9=\E[w, khome=\Ec, rc=\E8,
-       rev=\E[7m, rmacs=^O, rmso=\E[m, rmul=\E[m, sc=\E7,
-       sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m,
+       bel=^G, blink=\E[5m, clear=\E[H\E[2J, cr=\r,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[1P,
+       dim=\E[2m, ed=\E[0J, el=\E[0K, home=\E[H, ich=\E[%p1%d@,
+       ich1=\E[1@, il1=\E[1L, ind=\n, is1=\E[?3l,
+       is2=\E)0\E?6l\E?5l, kclr=\E[%%, kcub1=\E@, kcud1=\EU,
+       kcuf1=\EA, kcuu1=\ES, kent=\E[, kf1=\E[h, kf10=\E[m,
+       kf11=\E[n, kf12=\E[o, kf13=\E[H, kf14=\E[I, kf15=\E[J,
+       kf18=\E[K, kf19=\E[L, kf2=\E[i, kf20=\E[E, kf21=\E[_,
+       kf22=\E[M, kf23=\E[N, kf24=\E[O, kf3=\E[j, kf6=\E[k,
+       kf7=\E[l, kf8=\E[f, kf9=\E[w, khome=\Ec, rc=\E8, rev=\E[7m,
+       rmacs=^O, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m\017,
+       smacs=^N, smso=\E[7m, smul=\E[4m, use=ansi+idl,
+       use=ansi+local,
+
 att4418-w|att5418-w|AT&T 5418 132 cols,
        cols#132,
        is1=\E[?3h, use=att5418,
@@ -14129,11 +14055,10 @@ att4420|tty4420|Teletype 4420,
        bel=^G, clear=\EH\EJ, cr=\EG, cub1=\ED, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
        dl1=\EM, ed=\EJ, el=\Ez, home=\EH, il1=\EL, ind=\EH\EM\EY7\s,
-       kcbt=\EO, kclr=\EJ, kcub1=^H, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kdch1=\EP, kdl1=\EM, kf0=\EU, kf3=\E@, khome=\EH,
-       kich1=\E\^, kil1=\EL, kind=\ES, kri=\ET,
+       kcbt=\EO, kclr=\EJ, kcub1=^H, kdch1=\EP, kdl1=\EM, kf0=\EU,
+       kf3=\E@, khome=\EH, kich1=\E\^, kil1=\EL, kind=\ES, kri=\ET,
        lf0=segment advance, lf3=cursor tab, rmdc@, rmso=\E~,
-       rmul=\EZ, smdc@, smso=\E}, smul=\E\\,
+       rmul=\EZ, smdc@, smso=\E}, smul=\E\\, use=vt52+arrows,
 
 #  The following is a terminfo entry for the Teletype 4424
 #  asynchronous keyboard-display terminal.  It supports
@@ -14155,20 +14080,17 @@ att4424|tty4424|Teletype 4424,
        cols#80, lines#24,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\EB, cuf=\E[%p1%dC, cuf1=\EC,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EA,
-       dch=\E[%p1%dP, dch1=\EP, dim=\EW, dl=\E[%p1%dM, dl1=\EM,
-       ed=\EJ, el=\Ez, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       ich1=\E\^, il=\E[%p1%dL, il1=\EL, ind=\n, is2=\E[20l\E[?7h,
-       kbs=^H, kclr=\EJ, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
-       khome=\E[H, nel=\EE, rev=\E}, ri=\ET, rmacs=\E(B, rmso=\E~,
-       rmul=\EZ,
+       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\EB, cuf1=\EC,
+       cup=\E[%i%p1%d;%p2%dH, cuu1=\EA, dch=\E[%p1%dP, dch1=\EP,
+       dim=\EW, dl=\E[%p1%dM, dl1=\EM, ed=\EJ, el=\Ez, home=\E[H,
+       ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E\^, il=\E[%p1%dL,
+       il1=\EL, ind=\n, is2=\E[20l\E[?7h, kclr=\EJ, kf1=\EOP,
+       kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rev=\E}, ri=\ET,
+       rmacs=\E(B, rmso=\E~, rmul=\EZ,
        sgr=\EX\E~\EZ\E4\E(B%?%p1%p3%|%t\E}%;%?%p2%t\E\\%;%?%p4%p6%|
            %t\E3%;%?%p5%t\EW%;%?%p9%t\E(0%;,
        sgr0=\EX\E~\EZ\E4\E(B, smacs=\E(0, smso=\E}, smul=\E\\,
-       tbc=\EF,
+       tbc=\EF, use=ansi+arrows, use=ansi+local,
 
 att4424-1|tty4424-1|Teletype 4424 in display function group I,
        kclr@, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome@,
@@ -14186,10 +14108,9 @@ att4424m|tty4424m|Teletype 4424M,
        bel=^G, clear=\E[2;H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
        cup=\E[%i%p1%2d;%p2%2dH\E[B, cuu1=\E[A, dch1=\EP,
        dl1=\EM, el=\E[K, ht=^I, ich1=\E\^, il1=\EL, ind=\n, ip=$<2/>,
-       is2=\E[m\E[2;24r, kbs=^H, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
-       kf4=\EOS, khome=\E[H, nel=\r\n, ri=\ET, rmso=\E[m, rmul=\E[m,
-       sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+       is2=\E[m\E[2;24r, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+       nel=\r\n, ri=\ET, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+       smso=\E[7m, smul=\E[4m, use=ansi+arrows,
 
 # The Teletype 5425 is really version 2 of the Teletype 5420. It
 # is quite similar, except for some minor differences. No page
@@ -14201,41 +14122,33 @@ att4424m|tty4424m|Teletype 4424M,
 #
 # (att5425: added <rmam>/<smam> based on the init string -- esr)
 att5425|tty5425|att4425|AT&T 4425/5425,
-       am, da, db, hs, mir, msgr, xenl, xon,
-       cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
-       clear=\E[H\E[J, cnorm=\E[12;0j, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[12;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[J,
-       el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
-       flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H,
-       hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, indn=\E[%p1%dE,
-       invis=\E[8m, is1=\E<\E[?3l$<100>,
+       da, db, hs, mir, xenl, xon,
+       lh#2, lm#78, lw#8, nlab#8, wsl#55,
+       bold=\E[2;7m, cnorm=\E[12;0j, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, cvvis=\E[12;1j, dch=\E[%p1%dP,
+       dch1=\E[P, dim=\E[2m, ech=\E[%p1%ds\E[%p1%dD, el1=\E[1K,
+       flash=\E[?5h$<200>\E[?5l, fsl=\E8, hpa=\E[%p1%{1}%+%dG,
+       ich=\E[%p1%d@, indn=\E[%p1%dE, is1=\E<\E[?3l$<100>,
        is2=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h
            \E[4i\Ex\E[25;1j\212,
-       is3=\E[?5l, kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[J,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
+       is3=\E[?5l, kbeg=\Et, kcbt=\E[Z, kclr=\E[J, kdch1=\E[P,
        kdl1=\E[M, kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc,
        kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi,
-       kf8=\EOj, khome=\E[H, kich1=\E[4h, kil1=\E[L, kind=\E[T,
-       kri=\E[S, ll=\E[24H, mc0=\E[?2i, mc4=\E[?9i, mc5=\E[?4i,
-       nel=\r\n,
+       kf8=\EOj, kich1=\E[4h, kil1=\E[L, kind=\E[T, kri=\E[S,
+       ll=\E[24H, mc0=\E[?2i, mc4=\E[?9i, mc5=\E[?4i, nel=\r\n,
        pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
-       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, rc=\E8,
-       rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmam=\E[?7l,
-       rmir=\E[4l, rmkx=\E[21;0j\E[25;1j\212, rmln=\E|,
-       rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7,
+       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, ri=\EM,
+       rin=\E[%p1%dF, rmam=\E[?7l, rmir=\E[4l,
+       rmkx=\E[21;0j\E[25;1j\212, rmln=\E|,
+       rs2=\Ec\E[?3l\E[2;0y,
        sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6
            %|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, tsl=\E7\E[25;%p1%{8}%+%dH,
-       vpa=\E[%p1%{1}%+%dd, use=decid+cpr,
+       sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h,
+       smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~,
+       tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
+       use=ansi+arrows, use=ansi+csr, use=ansi+erase,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
+       use=ansi+sgrbold, use=decid+cpr, use=vt100+4bsd,
 
 att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels,
        smkx=\E[21;1j\E[25;4j\Eent, use=att4425,
@@ -14251,20 +14164,17 @@ att4426|tty4426|Teletype 4426S,
        cols#80, lines#24, lm#48,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, bold=\E[5m, clear=\E[H\E[2J\E[1U\E[H\E[2J\E[1V,
-       cr=\r, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\EP,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[0K, home=\E[H,
-       hpa=\E[%p1%dG, ht=^I, hts=\E1, ich=\E[%p1%d@, ich1=\E\^,
-       il=\E[%p1%dL, il1=\EL, ind=\n, is1=\Ec\E[?7h,
-       is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO, kclr=\E[2J, kcub1=\ED,
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\EOP, kf2=\EOQ,
-       kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
-       khome=\E[H, kll=\E[24;1H, ll=\E[24H, nel=\r\n, rc=\E8,
-       rev=\E[7m, ri=\ET, rmacs=\E(B, rmam=\E[?7l, rmso=\E[m,
-       rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7, sgr0=\E[m\E(B,
-       smacs=\E(0, smam=\E[?7h, smso=\E[5m, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%p1%dd, use=ecma+index,
+       cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\EP,
+       ed=\E[J, el=\E[0K, home=\E[H, hpa=\E[%p1%dG, ht=^I, hts=\E1,
+       ich=\E[%p1%d@, ich1=\E\^, il1=\EL, ind=\n, is1=\Ec\E[?7h,
+       is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO, kclr=\E[2J, kf1=\EOP,
+       kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV,
+       kf8=\EOW, khome=\E[H, kll=\E[24;1H, ll=\E[24H, nel=\r\n,
+       rc=\E8, rev=\E[7m, ri=\ET, rmacs=\E(B, rmam=\E[?7l,
+       rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7,
+       sgr0=\E[m\E(B, smacs=\E(0, smam=\E[?7h, smso=\E[5m,
+       smul=\E[4m, tbc=\E[3g, vpa=\E[%p1%dd, use=ansi+idl,
+       use=ansi+local, use=ecma+index, use=vt52+arrows,
 
 # Terminfo entry for the AT&T 510 A Personal Terminal
 # Function keys 9 - 16 are available only after the
@@ -14278,26 +14188,25 @@ att510a|bct510a|AT&T 510A Personal Terminal,
        am, mir, msgr, xenl, xon,
        cols#80, lh#2, lines#24, lw#7, nlab#8,
        acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
-       civis=\E[11;0|, clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP,
-       dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J,
-       el=\E[0K, el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, ht=^I,
-       hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n, is1=\E(B\E)1\E[2l,
-       is3=\E[21;1|\212, kLFT=\E[u, kRIT=\E[v, kbs=^H, kcbt=\E[Z,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm,
-       kf10=\EOd, kf11=\EOe, kf12=\EOf, kf13=\EOg, kf14=\EOh,
-       kf15=\EOi, kf16=\EOj, kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe,
-       kf6=\ENf, kf7=\ENh, kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T,
-       mc0=\E[0i, mc4=\E[?8i, mc5=\E[?4i, nel=\EE,
-       pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
-       rmacs=^O, rmkx=\E[19;0|, rmso=\E[m, rmul=\E[m, sc=\E7,
+       bel=^G, blink=\E[5m, bold=\E[2;7m, civis=\E[11;0|,
+       clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, cvvis=\E[11;2|, dch=\E[%p1%dP,
+       dch1=\E[P, dim=\E[2m, ed=\E[0J, el=\E[0K, el1=\E[1K,
+       enacs=\E(B\E)1, ff=^L, home=\E[H, ind=\n,
+       is1=\E(B\E)1\E[2l, is3=\E[21;1|\212, kLFT=\E[u,
+       kRIT=\E[v, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
+       kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm, kf10=\EOd, kf11=\EOe,
+       kf12=\EOf, kf13=\EOg, kf14=\EOh, kf15=\EOi, kf16=\EOj,
+       kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe, kf6=\ENf, kf7=\ENh,
+       kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T, mc0=\E[0i,
+       mc4=\E[?8i, mc5=\E[?4i, nel=\EE, pln=\E[%p1%dp%p2%:-16s,
+       rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E[19;0|,
+       rmso=\E[m, rmul=\E[m, sc=\E7,
        sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6
            %|%t;7%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smkx=\E[19;1|, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, use=ansi+cpr,
+       smul=\E[4m, use=ansi+cpr, use=ansi+idl, use=ansi+local,
+       use=ansi+tabs,
 
 # Terminfo entry for the AT&T 510 D Personal Terminal
 # Function keys 9 through 16 are accessed by bringing up the
@@ -14312,15 +14221,11 @@ att510d|bct510d|AT&T 510D Personal Terminal,
        am, da, db, mir, msgr, xenl, xon,
        cols#80, lh#2, lines#24, lm#48, lw#7, nlab#8,
        acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
-       clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r, cub=\E[%p1%dD,
-       cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
-       cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP, dch1=\E[P,
-       dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K,
+       bel=^G, bold=\E[2;7m, clear=\E[H\E[J, cnorm=\E[11;3|,
+       cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[11;2|,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ed=\E[0J, el=\E[0K,
        el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H,
-       hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
+       hpa=\E[%p1%{1}%+%dG, ich=\E[%p1%d@, ind=\n,
        is1=\E(B\E)1\E[5;0|, is3=\E[21;1|\212, kLFT=\E[u,
        kRIT=\E[v, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
        kcuf1=\E[C, kcuu1=\E[A, kf1=\EOm, kf10=\EOd, kf11=\EOe,
@@ -14328,44 +14233,40 @@ att510d|bct510d|AT&T 510D Personal Terminal,
        kf2=\EOV, kf3=\EOu, kf4=\ENj, kf5=\ENe, kf6=\ENf, kf7=\ENh,
        kf8=\E[H, kf9=\EOc, kind=\E[S, kri=\E[T, ll=\E#2, mc0=\E[0i,
        mc4=\E[?8i, mc5=\E[?4i, mgc=\E:, nel=\EE,
-       pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
-       rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|, rmln=\E<, rmso=\E[m,
-       rmul=\E[m, rmxon=\E[29;1|, rs2=\E[5;0|, sc=\E7,
+       pln=\E[%p1%dp%p2%:-16s, rc=\E8, ri=\EM, rmacs=^O,
+       rmir=\E[4l, rmkx=\E[19;0|, rmln=\E<, rmxon=\E[29;1|,
+       rs2=\E[5;0|, sc=\E7,
        sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6
            %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smgl=\E4, smgr=\E5, smir=\E[4h,
-       smkx=\E[19;1|, smln=\E?, smso=\E[7m, smul=\E[4m,
-       smxon=\E[29;0|, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
-       use=ansi+cpr, use=ansi+rep, use=ecma+index,
+       smkx=\E[19;1|, smln=\E?, smxon=\E[29;0|,
+       vpa=\E[%p1%{1}%+%dd, use=ansi+cpr, use=ansi+idl,
+       use=ansi+local, use=ansi+rep, use=ansi+sgrbold,
+       use=ansi+tabs, use=ecma+index,
 
 # (att500: I merged this with the att513 entry, att500 just used att513 -- esr)
 att500|att513|AT&T 513 using page mode,
        am, chts, mir, msgr, xenl, xon,
        cols#80, lh#2, lines#24, lw#8, nlab#8,
        acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z,
-       clear=\E[H\E[J, cnorm=\E[11;0|, cr=\r,
-       csr=%i\E[%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[11;1|, dch=\E[%p1%dP, dch1=\E[P$<1>, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
-       enacs=\E(B\E)1, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I,
-       hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       indn=\E[%p1%dE, invis=\E[8m,
+       bel=^G, bold=\E[2;7m, cnorm=\E[11;0|, cr=\r,
+       csr=%i\E[%p1%d;%p2%dr, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, cvvis=\E[11;1|, dch=\E[%p1%dP,
+       dch1=\E[P$<1>, dim=\E[2m, el1=\E[1K, enacs=\E(B\E)1,
+       home=\E[H, hpa=\E[%p1%{1}%+%dG, ich=\E[%p1%d@, ind=\n,
+       indn=\E[%p1%dE,
        is1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l,
        kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
        kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
        kFND=\EOX, kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, kLFT=\ENK,
        kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, kOPT=\EOR, kPRT=\EOZ,
        kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, kRIT=\ENL, kRPL=\EOY,
-       kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, kbs=^H, kcan=\EOw,
+       kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, kcan=\EOw,
        kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd,
-       kcrt=\EOn, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\Eent,
-       kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
-       kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, khlp=\EOm,
-       khome=\E[H, kich1=\ENj, kind=\E[S, kmov=\ENc, kmrk=\ENi,
+       kcrt=\EOn, kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0,
+       kent=\Eent, kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe,
+       kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx,
+       khlp=\EOm, kich1=\ENj, kind=\E[S, kmov=\ENc, kmrk=\ENi,
        kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr,
        kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb,
        kres=\EOq, krfr=\ENa, kri=\E[T, krpl=\EOy, krst=\EOB,
@@ -14377,19 +14278,19 @@ att500|att513|AT&T 513 using page mode,
        pfloc=\E[%p1%d;%p2%l%d;2;0p\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s
              \s%p2%s,
        pfx=\E[%p1%d;%p2%l%d;1;0p   F%p1%d           %p2%s,
-       pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM,
-       rin=\E[%p1%dF, rmacs=^O, rmir=\E[4l,
-       rmkx=\E[19;0|\E[21;1|\212, rmln=\E<, rmso=\E[m,
-       rmul=\E[m,
+       pln=\E[%p1%dp%p2%:-16s, rc=\E8, ri=\EM, rin=\E[%p1%dF,
+       rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|\E[21;1|\212,
+       rmln=\E<,
        rs1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l\E[2;0|
            \E[6;1|\E[8;0|\E[19;0|\E[1{\E[?99l,
        rs2=\E[5;0|, sc=\E7,
        sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
            %|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smir=\E[4h,
-       smkx=\E[19;1|\E[21;4|\Eent, smln=\E?, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
-       use=decid+cpr, use=ansi+rep,
+       smkx=\E[19;1|\E[21;4|\Eent, smln=\E?,
+       vpa=\E[%p1%{1}%+%dd, use=ansi+arrows, use=ansi+erase,
+       use=ansi+idl, use=ansi+local, use=ansi+rep,
+       use=ansi+sgrbold, use=ansi+tabs, use=decid+cpr,
 
 # 01-07-88:
 # printer must be set to EMUL ANSI to accept ESC codes
@@ -14439,13 +14340,12 @@ att5310|att5320|AT&T Model 53210 or 5320 matrix printer,
 att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs,
        am, xon,
        cols#88, it#8, lines#70, vt#3,
-       bel=^G, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
-       dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
-       home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
-       il1=\E[L, ind=\n, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kll=\E[70;1H, nel=\r\n,
-       rc=\E8, ri=\E[T, rs1=\Ec, sc=\E7, use=ecma+index,
+       bel=^G, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
+       dch=\E[%p1%dP, dch1=\E[P, home=\E[H, ht=^I, ich=\E[%p1%d@,
+       ich1=\E[@, ind=\n, kclr=\E[2J, kll=\E[70;1H, nel=\r\n,
+       rc=\E8, ri=\E[T, rs1=\Ec, sc=\E7, use=ansi+arrows,
+       use=ansi+erase, use=ansi+idl, use=ansi+local1,
+       use=ecma+index,
 
 # 5620 terminfo  (2.0 or later ROMS with char attributes)
 # The following SET-UP modes are assumed for normal operation:
@@ -14462,16 +14362,15 @@ att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs,
 att5620|dmd|tty5620|ttydmd|5620|AT&T 5620 terminal 88 columns,
        OTbs, am, msgr, npc, xon,
        cols#88, it#8, lines#70,
-       bel=^G, bold=\E[2m, clear=\E[H\E[J, cr=\r, cub1=^H,
-       cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@,
-       ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kbs=^H,
-       kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       khome=\E[H, kll=\E[70;1H, nel=\n,
-       pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\E[T,
-       rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7, sgr0=\E[0m,
-       smso=\E[7m, smul=\E[4m, use=ecma+index,
+       bel=^G, bold=\E[2m, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, home=\E[H, ht=^I,
+       ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, kclr=\E[2J,
+       kll=\E[70;1H, nel=\n, pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8,
+       rev=\E[7m, ri=\E[T, rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7,
+       sgr0=\E[0m, smso=\E[7m, smul=\E[4m, use=ansi+arrows,
+       use=ansi+erase, use=ansi+idl, use=ansi+local1,
+       use=ecma+index,
+
 att5620-24|tty5620-24|dmd-24|Teletype dmd 5620 in a 24x80 layer,
        lines#24, use=att5620,
 att5620-34|tty5620-34|dmd-34|Teletype dmd 5620 in a 34x80 layer,
@@ -14482,9 +14381,8 @@ att5620-s|tty5620-s|layer|vitty|AT&T 5620 S layer,
        cols#80, it#8, lines#72,
        bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n,
        cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=^K, dl1=\ED,
-       el=\EK, flash=\E^G, ht=^I, il1=\EI, ind=\n, kbs=^H, kclr=\E[2J,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
-       kll=\E[70;1H,
+       el=\EK, flash=\E^G, ht=^I, il1=\EI, ind=\n, kclr=\E[2J,
+       khome=\E[H, kll=\E[70;1H, use=ansi+arrows,
 
 # Entries for <kf15> thru <kf28> refer to the shifted system pf keys.
 #
@@ -14494,15 +14392,11 @@ att605|AT&T 605 80 column 102key keyboard,
        am, eo, xon,
        cols#80, lines#24, lw#8, nlab#8, wsl#80,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
-       dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K, el1=\E[1K, fsl=\E8, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
-       il1=\E[L, ind=\n, invis=\E[8m,
+       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
+       el1=\E[1K, fsl=\E8, ht=^I, il1=\E[L, ind=\n, invis=\E[8m,
        is1=\E[8;0|\E[?\E[13;20l\E[?\E[12h, is2=\E[m\017,
-       kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z, kclr=\E[2J,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
+       kLFT=\E[ A, kRIT=\E[ @, kcbt=\E[Z, kclr=\E[2J, kdch1=\E[P,
        kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, kf11=\ENq,
        kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD,
        kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH,
@@ -14512,26 +14406,24 @@ att605|AT&T 605 80 column 102key keyboard,
        kf35=\EOy, kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv,
        kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs,
        kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh,
-       kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, kich1=\E[@,
-       kil1=\E[L, kind=\E[S, knp=\E[U, kpp=\E[V, ll=\E[24H,
-       mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
+       kf7=\EOi, kf8=\EOj, kf9=\ENo, kich1=\E[@, kil1=\E[L,
+       kind=\E[S, knp=\E[U, kpp=\E[V, ll=\E[24H, mc4=\E[?4i,
+       mc5=\E[?5i, nel=\EE,
        pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
        pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
-       rmacs=^O, rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m,
-       rs2=\Ec\E[?3l, sc=\E7, sgr0=\E[m\017, smacs=\E)0\016,
-       smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m,
-       tsl=\E7\E[25;%i%p1%dx, use=ansi+cpr,
+       rmacs=^O, rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l,
+       sc=\E7, sgr0=\E[m\017, smacs=\E)0\016, smln=\E[p,
+       smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx,
+       use=ansi+arrows, use=ansi+cpr, use=ansi+erase,
+       use=ansi+idc, use=ansi+local1,
+
 att605-pc|AT&T 605 in pc term mode,
        acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
             \263,
-       cbt=\E[Z, cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A,
-       dch1=\E[P, dl1=\E[M, ich1=\E[@, il1=\E[L, kcbt=\E[Z,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
-       kdl1=\E[M, kend=\E[F, kf1=\E[M, kf10=\E[V, kf2=\E[N,
+       cub1=\E[D, kend=\E[F, kf1=\E[M, kf10=\E[V, kf2=\E[N,
        kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T,
-       kf9=\E[U, khome=\E[H, kich1=\E[@, knp=\E[G, kpp=\E[I,
-       rmsc=\E[50;0|$<400>, smsc=\E[?11l\E[50;1|$<250>,
-       xoffc=g, xonc=e, use=att605,
+       kf9=\E[U, knp=\E[G, kpp=\E[I, rmsc=\E[50;0|$<400>,
+       smsc=\E[?11l\E[50;1|$<250>, xoffc=g, xonc=e, use=att605,
 att605-w|AT&T 605-w 132 column 102 key keyboard,
        cols#132, wsl#132,
        is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h\E(B\E)0, use=att605,
@@ -14543,32 +14435,28 @@ att610|AT&T 610; 80 column; 98key keyboard,
        am, eslok, hs, mir, msgr, xenl, xon,
        cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
-       flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I,
-       ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
-       invis=\E[8m,
+       bel=^G, cbt=\E[Z, cr=\r, cub1=^H, cvvis=\E[?12;25h,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, el1=\E[1K,
+       flash=\E[?5h$<200>\E[?5l, fsl=\E8, ht=^I, ich=\E[%p1%d@,
+       ind=\ED,
        is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0,
-       is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H,
-       kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
-       kf13=\ENs, kf14=\ENt, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
-       kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
+       is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A,
+       kcbt=\E[Z, kclr=\E[2J, kf1=\EOc, kf10=\ENp, kf11=\ENq,
+       kf12=\ENr, kf13=\ENs, kf14=\ENt, kf2=\EOd, kf3=\EOe,
+       kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo,
        kind=\E[S, kri=\E[T, ll=\E[24H, mc4=\E[?4i, mc5=\E[?5i,
        nel=\EE,
        pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
-       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
-       ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmln=\E[2p,
-       rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7,
+       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, ri=\EM, rmacs=^O,
+       rmam=\E[?7l, rmir=\E[4l, rmln=\E[2p, rs2=\Ec\E[?3l,
        sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
            %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smln=\E[p, smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx,
-       use=decid+cpr, use=ecma+index, use=att610+cvis,
+       smln=\E[p, tsl=\E7\E[25;%i%p1%dx, use=ansi+arrows,
+       use=ansi+csr, use=ansi+cup, use=ansi+erase, use=ansi+idl,
+       use=ansi+local, use=ansi+sgrbold, use=decid+cpr,
+       use=ecma+index, use=att610+cvis,
+
 att610-w|AT&T 610; 132 column; 98key keyboard,
        cols#132, wsl#132,
        is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
@@ -14618,39 +14506,36 @@ att620|AT&T 620; 80 column; 98key keyboard,
        am, eslok, hs, mir, msgr, xenl, xon,
        cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
-       flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I,
-       ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
-       invis=\E[8m,
+       bel=^G, cbt=\E[Z, cr=\r, cub1=^H, cvvis=\E[?12;25h,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, el1=\E[1K,
+       flash=\E[?5h$<200>\E[?5l, fsl=\E8, ht=^I, ich=\E[%p1%d@,
+       ind=\ED,
        is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h,
-       is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H,
-       kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
-       kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, kf17=\EOE,
-       kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, kf21=\EOI,
-       kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR,
-       kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, kf30=\EOQ,
-       kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, kf35=\EOy,
-       kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, kf4=\EOf,
-       kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, kf44=\EOp,
-       kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
-       kf9=\ENo, khome=\E[H, kind=\E[S, kri=\E[T, ll=\E[24H,
+       is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @,
+       kcbt=\E[Z, kclr=\E[2J, kf1=\EOc, kf10=\ENp, kf11=\ENq,
+       kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD,
+       kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH,
+       kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ,
+       kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe,
+       kf30=\EOQ, kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx,
+       kf35=\EOy, kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv,
+       kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs,
+       kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh,
+       kf7=\EOi, kf8=\EOj, kf9=\ENo, kind=\E[S, kri=\E[T, ll=\E[24H,
        mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
        pfx=\E[%p1%d;%p2%l%02dq   F%p1%1d           %p2%s,
-       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
-       ri=\EM, rmacs=\E(B\017, rmam=\E[?7l, rmir=\E[4l,
-       rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7,
+       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, ri=\EM,
+       rmacs=\E(B\017, rmam=\E[?7l, rmir=\E[4l, rmln=\E[2p,
+       rs2=\Ec\E[?3l,
        sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
            %|%t;7%;%?%p7%t;8%;m%?%p9%t\E)0\016%e\E(B\017%;,
        sgr0=\E[m\E(B\017, smacs=\E)0\016, smam=\E[?7h,
-       smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m,
-       tsl=\E7\E[25;%i%p1%dx, use=decid+cpr, use=ecma+index,
+       smir=\E[4h, smln=\E[p, tsl=\E7\E[25;%i%p1%dx,
+       use=ansi+arrows, use=ansi+csr, use=ansi+cup,
+       use=ansi+erase, use=ansi+idl, use=ansi+local,
+       use=ansi+sgrbold, use=decid+cpr, use=ecma+index,
        use=att610+cvis,
+
 att620-w|AT&T 620; 132 column; 98key keyboard,
        cols#132, wsl#132,
        is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
@@ -14691,25 +14576,22 @@ att620-103k-w|AT&T 620; 132 column; 103key keyboard,
 att630|AT&T 630 windowing terminal,
        OTbs, am, da, db, mir, msgr, npc, xon,
        cols#80, it#8, lines#60, lm#0,
-       bel=^G, blink=\E[5m, cbt=\E[Z, clear=\E[H\E[J, cr=\r,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
-       el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
-       il=\E[%p1%dL, il1=\E[L, ind=\ED, is2=\E[m, kbs=^H, kcbt=\E[Z,
-       kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kdch1=\E[P, kdl1=\E[M, kent=\r, kf10=\ENp, kf11=\ENq,
-       kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv,
-       kf17=\ENw, kf18=\ENx, kf19=\ENy, kf20=\ENz, kf21=\EN{,
-       kf22=\EN|, kf23=\EN}, kf24=\EN~, kf9=\ENo, khome=\E[H,
-       kich1=\E[@, kil1=\E[L, mc4=\E[?4i, mc5=\E[?5i, nel=\r\n,
+       bel=^G, blink=\E[5m, cbt=\E[Z, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, el1=\E[1K, home=\E[H,
+       ht=^I, ind=\ED, is2=\E[m, kcbt=\E[Z, kclr=\E[2J, kdch1=\E[P,
+       kdl1=\E[M, kent=\r, kf10=\ENp, kf11=\ENq, kf12=\ENr,
+       kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, kf17=\ENw,
+       kf18=\ENx, kf19=\ENy, kf20=\ENz, kf21=\EN{, kf22=\EN|,
+       kf23=\EN}, kf24=\EN~, kf9=\ENo, kich1=\E[@, kil1=\E[L,
+       mc4=\E[?4i, mc5=\E[?5i, nel=\r\n,
        pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\EM,
-       rmir=\E[4l, rmso=\E[m, rmul=\E[m, rs2=\Ec, sc=\E7,
+       rmso=\E[m, rmul=\E[m, rs2=\Ec, sc=\E7,
        sgr=\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%p4%|%t;7
            %;m,
-       sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
-       use=ansi+cpr, use=ecma+index,
+       sgr0=\E[m, smso=\E[7m, smul=\E[4m, use=ansi+arrows,
+       use=ansi+cpr, use=ansi+erase, use=ansi+idc, use=ansi+idl,
+       use=ansi+local, use=ecma+index,
+
 att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
        lines#24, use=att630,
 
@@ -14792,44 +14674,38 @@ att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
 #
 att700|AT&T 700 24x80 column display w/102key keyboard,
        am, eslok, hs, mir, msgr, xenl, xon,
-       cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
+       cols#80, lh#2, lines#24, lw#8, nlab#8, wsl#80,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+       bel=^G, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
        cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
-       enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fln=4\,4,
-       fsl=\E8, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       il=\E[%p1%dL, il1=\E[L, ind=\ED, invis=\E[8m,
+       el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l,
+       fln=4\,4, fsl=\E8, home=\E[H, ich=\E[%p1%d@, ind=\ED,
        is2=\E[50;4|\E[53;0|\E[8;0|\E[?4;13;15l\E[13;20l\E[?7h\E[12h
            \E(B\E)0\E[?31l\E[0m\017,
-       is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z,
-       kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp,
-       kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC,
-       kf16=\EOD, kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd,
-       kf20=\EOH, kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP,
-       kf25=\ENQ, kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOq,
-       kf3=\EOe, kf30=\EOr, kf31=\EOs, kf32=\EOt, kf33=\EOu,
-       kf34=\EOv, kf35=\EOw, kf36=\EOx, kf37=\EOy, kf38=\EOu,
-       kf39=\EOv, kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr,
-       kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg,
-       kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
-       kich1=\E[@, kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H,
-       mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
+       is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kcbt=\E[Z,
+       kclr=\E[2J, kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc,
+       kf10=\ENp, kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt,
+       kf15=\EOC, kf16=\EOD, kf17=\EOE, kf18=\EOF, kf19=\EOG,
+       kf2=\EOd, kf20=\EOH, kf21=\EOI, kf22=\EOJ, kf23=\ENO,
+       kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS, kf28=\ENT,
+       kf29=\EOq, kf3=\EOe, kf30=\EOr, kf31=\EOs, kf32=\EOt,
+       kf33=\EOu, kf34=\EOv, kf35=\EOw, kf36=\EOx, kf37=\EOy,
+       kf38=\EOu, kf39=\EOv, kf4=\EOf, kf40=\EOl, kf41=\EOq,
+       kf42=\EOr, kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM,
+       kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, kich1=\E[@,
+       kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H, nel=\EE,
        pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t\s\s\sF%p1%1d\s\s\s\s\s
            \s\s\s\s\s\s%;%p2%s,
-       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
-       ri=\EM, rmacs=^O, rmir=\E[4l, rmln=\E[2p, rmso=\E[27m,
-       rmul=\E[24m, rmxon=\E[53;3|, rs1=\Ec\E[?3;5l\E[56;0|,
-       sc=\E7,
+       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, ri=\EM, rmacs=^O,
+       rmir=\E[4l, rmln=\E[2p, rmso=\E[27m, rmul=\E[24m,
+       rmxon=\E[53;3|, rs1=\Ec\E[?3;5l\E[56;0|,
        sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
            %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
-       sgr0=\E[m\017, smacs=^N, smir=\E[4h, smln=\E[p, smso=\E[7m,
-       smul=\E[4m, smxon=\E[53;0|, tbc=\E[3g,
-       tsl=\E7\E[99;%i%p1%dx, use=decid+cpr, use=ansi+rep,
+       sgr0=\E[m\017, smacs=^N, smir=\E[4h, smln=\E[p,
+       smxon=\E[53;0|, tsl=\E7\E[99;%i%p1%dx, use=ansi+arrows,
+       use=ansi+csr, use=ansi+erase, use=ansi+idl,
+       use=ansi+inittabs, use=ansi+local, use=ansi+rep,
+       use=ansi+sgrbold, use=decid+cpr, use=dec+pp,
        use=att610+cvis0,
 
 # This entry was modified 3/13/90 by JWE.
@@ -14849,43 +14725,38 @@ att730|AT&T 730 windowing terminal,
        am, da, db, eslok, hs, mir, msgr, npc, xenl, xon,
        cols#80, it#8, lh#2, lines#60, lm#0, lw#8, nlab#24, wsl#80,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
-       enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fsl=\E8,
-       home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
-       ind=\ED, invis=\E[8m,
+       bel=^G, cbt=\E[Z, cr=\r, cub1=^H, dch=\E[%p1%dP, dch1=\E[P,
+       dim=\E[2m, el1=\E[1K, enacs=\E(B\E)0,
+       flash=\E[?5h$<200>\E[?5l, fsl=\E8, ht=^I, ich=\E[%p1%d@,
+       ind=\ED,
        is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)B,
-       is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H,
-       kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
-       kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, kf17=\ENw,
-       kf18=\ENx, kf19=\ENy, kf2=\EOd, kf20=\ENz, kf21=\EN{,
-       kf22=\EN|, kf23=\EN}, kf24=\EN~, kf25=\EOC, kf26=\EOD,
-       kf27=\EOE, kf28=\EOF, kf29=\EOG, kf3=\EOe, kf30=\EOH,
-       kf31=\EOI, kf32=\EOJ, kf33=\ENO, kf34=\ENP, kf35=\ENQ,
-       kf36=\ENR, kf37=\ENS, kf38=\ENT, kf39=\EOU, kf4=\EOf,
-       kf40=\EOV, kf41=\EOW, kf42=\EOX, kf43=\EOY, kf44=\EOZ,
-       kf45=\EO[, kf46=\EO\s, kf47=\EO], kf48=\EO\^, kf5=\EOg,
-       kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
-       kich1=\E[@, kil1=\E[L, kind=\E[S, kri=\E[T,
-       mc0=\E[?19h\E[0i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
+       is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A,
+       kcbt=\E[Z, kclr=\E[2J, kf1=\EOc, kf10=\ENp, kf11=\ENq,
+       kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv,
+       kf17=\ENw, kf18=\ENx, kf19=\ENy, kf2=\EOd, kf20=\ENz,
+       kf21=\EN{, kf22=\EN|, kf23=\EN}, kf24=\EN~, kf25=\EOC,
+       kf26=\EOD, kf27=\EOE, kf28=\EOF, kf29=\EOG, kf3=\EOe,
+       kf30=\EOH, kf31=\EOI, kf32=\EOJ, kf33=\ENO, kf34=\ENP,
+       kf35=\ENQ, kf36=\ENR, kf37=\ENS, kf38=\ENT, kf39=\EOU,
+       kf4=\EOf, kf40=\EOV, kf41=\EOW, kf42=\EOX, kf43=\EOY,
+       kf44=\EOZ, kf45=\EO[, kf46=\EO\s, kf47=\EO], kf48=\EO\^,
+       kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, kich1=\E[@,
+       kil1=\E[L, kind=\E[S, kri=\E[T, mc0=\E[?19h\E[0i, nel=\EE,
        pfx=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}
            %<%tq\s\s\sSYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s,
        pfxl=\E[%p1%d;%p2%l%02d;0;0q%p3%:-16.16s%p2%s,
-       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, rev=\E[7m,
-       ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmln=\E[?13h,
-       rmso=\E[27m, rmul=\E[24m, rmxon=\E[?21l, rs2=\Ec\E[?3l,
-       sc=\E7,
+       pln=\E[%p1%d;0;0;0q%p2%:-16.16s, ri=\EM, rmacs=^O,
+       rmam=\E[?7l, rmir=\E[4l, rmln=\E[?13h, rmso=\E[27m,
+       rmul=\E[24m, rmxon=\E[?21l, rs2=\Ec\E[?3l,
        sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1
            %|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smln=\E[?13l, smso=\E[7m, smul=\E[4m, smxon=\E[?21h,
-       swidm=\E#6, tsl=\E7\E[;%i%p1%dx, use=decid+cpr,
-       use=ansi+rep, use=att610+cvis,
+       smln=\E[?13l, smxon=\E[?21h, swidm=\E#6,
+       tsl=\E7\E[;%i%p1%dx, use=ansi+arrows, use=ansi+csr,
+       use=ansi+cup, use=ansi+erase, use=ansi+idl,
+       use=ansi+local, use=ansi+rep, use=ansi+sgrbold,
+       use=decid+cpr, use=dec+pp, use=att610+cvis,
+
 # "MGT" is "Multi-Tasking Graphics Terminal"
 att730-41|730MTG-41|AT&T 730-41 windowing terminal,
        lines#41, use=att730,
@@ -15066,12 +14937,9 @@ att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal,
        cols#80, it#8, lines#24,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H,
-       cnorm=\E[>l, cr=\r, cub=\E[%p1%dD, cub1=\E[D,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[>h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[0J, el=\E[0K, el1=\E[2K, home=\E[H, ht=^I,
-       il=\E[%p1%dL, il1=\E[L, ind=\n,
+       cnorm=\E[>l, cr=\r, cup=\E[%p1%d;%p2%dH, cvvis=\E[>h,
+       dch=\E[%p1%dP, dch1=\E[P, ed=\E[0J, el=\E[0K, el1=\E[2K,
+       home=\E[H, ht=^I, ind=\n,
        is1=\EPr\\E[0u\E[2J\E[0;0H\E[m\E[3l\E[<l\E[4l\E[>l\E[=l\E[?l,
        kbs=^H, kcmd=\E!, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
        kcuu1=\E[A, kf0=\E[00s, kf1=\E[01s, kf18=\E[18s,
@@ -15082,7 +14950,7 @@ att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal,
        rmacs=\E[10m, rmam=\E[11;1j, rmir=\E[4l, rmso=\E[m,
        rmul=\E[m, rs1=\Ec, sc=\E7, sgr0=\E[m, smacs=\E[11m,
        smam=\E[11;0j, smir=\E[4h, smso=\E[1m, smul=\E[4m,
-       use=ansi+cpr,
+       use=ansi+cpr, use=ansi+idl, use=ansi+local,
 
 # The following Terminfo entry describes functions which are supported by
 # the AT&T 5430/pt505 terminal software version 1.
@@ -15168,9 +15036,9 @@ ampex219|ampex-219|amp219|Ampex with automargins,
        rmso=\E[m$<2>, rmul=\E[m$<2>, sgr0=\E[m$<2>, smam=\E[?7h,
        smkx=\E=, smso=\E[7m$<2>, smul=\E[4m$<2>,
 ampex219w|ampex-219w|amp219w|Ampex 132 cols,
-       cols#132, lines#24,
-       bel=^G, cr=\r, cud1=\n, ind=\n,
-       is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, use=ampex219,
+       cols#132,
+       cud1=\n, is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h,
+       use=ampex219,
 # (ampex232: removed <if=/usr/share/tabset/ampex>, no file and no <hts> --esr)
 ampex232|ampex-232|Ampex Model 232,
        am,
@@ -15185,7 +15053,7 @@ ampex232|ampex-232|Ampex Model 232,
        kf9=^AI\r, khome=^^, use=adm+sgr,
 # (ampex: removed <if=/usr/share/tabset/amp-132>, no file and no <hts> -- esr)
 ampex232w|Ampex Model 232 / 132 columns,
-       cols#132, lines#24,
+       cols#132,
        is2=\E\034Eg\El, use=ampex232,
 
 #### Ann Arbor (aa)
@@ -15344,34 +15212,31 @@ aas1901|Ann Arbor K4080 w/S1901 mod,
 # The generic Ann Arbor entry is the only one that uses this.
 aaa+unk|aaa-unk|Ann Arbor Ambassador (internal - don't use this directly),
        OTbs, am, km, mc5i, mir, xon,
-       cols#80, it#8,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
-       clear=\E[H\E[J$<156>, cr=\r, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
-       el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I,
-       hts=\EH, ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il=\E[%p1%dL,
-       il1=\E[L$<3>, ind=^K, invis=\E[8m, is1=\E[m\E7\E[H\E9\E8,
-       is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, kbs=^H, kcbt=\E[Z,
-       kclr=\E[J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+       cols#80,
+       bel=^G, clear=\E[H\E[J$<156>, cr=\r, cub1=^H, cud1=^K,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P, ed=\E[J,
+       el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG,
+       ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il1=\E[L$<3>, ind=^K,
+       is1=\E[m\E7\E[H\E9\E8,
+       is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, kcbt=\E[Z, kclr=\E[J,
        kdch1=\E[P, kdl1=\E[M, kf1=\EOA, kf10=\EOJ, kf11=\EOK,
        kf12=\EOL, kf13=\EOM, kf14=\EON, kf15=\EOO, kf16=\EOP,
        kf17=\EOQ, kf18=\EOR, kf19=\EOS, kf2=\EOB, kf20=\EOT,
        kf21=\EOU, kf22=\EOV, kf23=\EOW, kf24=\EOX, kf3=\EOC,
        kf4=\EOD, kf5=\EOE, kf6=\EOF, kf7=\EOG, kf8=\EOH, kf9=\EOI,
-       khome=\E[H, kich1=\E[@, kil1=\E[L, krmir=\E6, mc0=\E[0i,
-       mc4=^C, mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8, rev=\E[7m,
+       kich1=\E[@, kil1=\E[L, krmir=\E6, mc0=\E[0i, mc4=^C,
+       mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8,
        rmkx=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E
             \\,
-       rmm=\E[>52l, rmso=\E[m, rmul=\E[m, sc=\E7,
+       rmm=\E[>52l, sc=\E7,
        sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;
            %;%?%p7%t8;%;m,
        sgr0=\E[m,
        smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E
             \\,
-       smm=\E[>52h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%p1%{1}%+%dd, use=ansi+rep,
+       smm=\E[>52h, vpa=\E[%p1%{1}%+%dd, use=ansi+arrows,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
+       use=ansi+rep, use=ansi+sgrbold,
 
 aaa+rv|Ann Arbor Ambassador in reverse video,
        blink=\E[5;7m, bold=\E[1;7m, invis=\E[7;8m,
@@ -15749,24 +15614,26 @@ adds980|a980|ADDS Consul 980,
 cit80|cit-80|citoh 80,
        OTbs, am,
        cols#80, lines#24,
-       clear=\E[H\EJ, cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L,
-       ind=\n, is2=\E>, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
-       kcuu1=\EOA, rmkx=\E[?1l\E>, smkx=\E[?1h\E=,
+       clear=\E[H\EJ, cr=\r, cub1=^H, cup=\E[%i%p1%2d;%p2%2dH,
+       ed=\EJ, el=\EK, ff=^L, ind=\n, is2=\E>, kcub1=\EOD, kcud1=\EOB,
+       kcuf1=\EOC, kcuu1=\EOA, rmkx=\E[?1l\E>, smkx=\E[?1h\E=,
+       use=ansi+local1,
+
 # From: Tim Wood <mtxinu!sybase!tim> Fri Sep 27 09:39:12 PDT 1985
 # (cit101: added <rmam>/<smam> based on init string, merged this with c101 -- esr)
 cit101|citc|C. Itoh fast VT100,
        OTbs, am, xenl,
        cols#80, lines#24,
-       bel=^G, clear=\E[H\E[2J, cnorm=\E[V\E8, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       cvvis=\E7\E[U, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K,
-       flash=\E[?5h$<200/>\E[?5l, ich1=\E[@, il1=\E[L,
+       bel=^G, clear=\E[H\E[2J, cnorm=\E[V\E8, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, cvvis=\E7\E[U, dch1=\E[P,
+       dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h$<200/>\E[?5l,
+       ich1=\E[@, il1=\E[L,
        is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g,
        kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
        sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
-       smul=\E[4m,
+       smul=\E[4m, use=ansi+local1,
+
 # CIE Terminals CIT-101e from Geoff Kuenning <callan!geoff> via BRL
 # The following termcap entry was created from the Callan cd100 entry.  The
 # last two lines (with the capabilities in caps) are used by RM-cobol to allow
@@ -15777,15 +15644,16 @@ cit101|citc|C. Itoh fast VT100,
 cit101e|C. Itoh CIT-101e,
        OTbs, OTpt, am, mir, msgr,
        cols#80, it#8, lines#24,
-       acsc=, clear=\E[H\E[J, cnorm=, csr=\E[%i%p1%2d;%p2%2dr,
-       cub1=\E[D, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH,
-       cuu1=\E[A, cvvis=\E[?1l\E[?4l\E[?7h, dch1=\E[P, dl1=\E[M,
-       ed=\E[J, el=\E[K, if=/usr/share/tabset/vt100, il1=\E[L,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOT,
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOm, kf6=\EOl,
-       kf7=\EOM, kf8=\EOn, rc=\E8, ri=\EM, rmacs=^O, rmir=\E[4l,
-       rmkx=\E>, rmso=\E[m, rmul=\E[m, sc=\E7, smacs=^N, smir=\E[4h,
-       smkx=\E=, smso=\E[7m, smul=\E[4m,
+       acsc=, cnorm=, csr=\E[%i%p1%2d;%p2%2dr,
+       cup=\E[%i%p1%2d;%p2%2dH, cvvis=\E[?1l\E[?4l\E[?7h,
+       dch1=\E[P, dl1=\E[M, if=/usr/share/tabset/vt100,
+       il1=\E[L, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+       kf0=\EOT, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOm,
+       kf6=\EOl, kf7=\EOM, kf8=\EOn, rc=\E8, ri=\EM, rmacs=^O,
+       rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m, sc=\E7, smacs=^N,
+       smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
+       use=ansi+erase, use=ansi+local1,
+
 # From: David S. Lawyer, June 1997:
 # The CIT 101-e was made in Japan in 1983-4 and imported by CIE
 # Terminals in Irvine, CA.  It was part of CITOH Electronics.  In the
@@ -15805,25 +15673,22 @@ cit101e|C. Itoh CIT-101e,
 # (cit101e-rv: added empty <rmcup> to suppress a tic warning. --esr)
 cit101e-rv|C. Itoh CIT-101e (sets reverse video),
        am, eo, mir, msgr, xenl, xon,
-       cols#80, it#8, lines#24,
-       OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
-       civis=\E[1v, clear=\E[H\E[J, cnorm=\E[0;3;4v, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[3;5v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h,
-       home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
+       cols#80, lines#24,
+       OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[1v,
+       cnorm=\E[0;3;4v, cr=\r, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
+       cvvis=\E[3;5v, flash=\E[?5l$<200/>\E[?5h, home=\E[H,
+       hpa=\E[%i%p1%dG, ind=\n,
        is2=\E<\E>\E[?1l\E[?3l\E[?4l\E[?5h\E[?7h\E[?8h\E[3g\E[>5g\E(
            B\E[m\E[20l\E[1;24r\E[24;1H,
        kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8,
-       rev=\E[7m, ri=\EM, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
-       rs1=\Ec\E[?7h\E[>5g, sc=\E7, sgr0=\E[m,
-       smcup=\E[>5g\E[?7h\E[?5h, smir=\E[4h, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR, u8=\E[?6c,
-       use=ansi+enq, use=ecma+index,
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rev=\E[7m,
+       ri=\EM, rmcup=, rmso=\E[m, rmul=\E[m, rs1=\Ec\E[?7h\E[>5g,
+       sgr0=\E[m, smcup=\E[>5g\E[?7h\E[?5h, smso=\E[7m,
+       smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u8=\E[?6c,
+       use=ansi+enq, use=ansi+csr, use=ansi+erase, use=ansi+idc,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
+       use=ecma+index,
+
 cit101e-n|CIT-101e w/o am,
        am@,
        cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=\n,
@@ -15849,25 +15714,22 @@ cit101e-n132|CIT-101e with 132 cols w/o am,
 # (cit500: I added <rmam>/<smam> based on the init string -- esr)
 cit500|CIE Terminals CIT-500,
        OTbs, OTpt, mir, msgr, xon,
-       OTkn#10, cols#80, it#8, lines#64, vt#3,
-       acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
-       clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\EM, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       ed=\EJ, el=\EK, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL,
-       il1=\E[L, ind=\n, is2=\E<\E)0, kbs=^H, kcbt=\E[Z, kcub1=\EOD,
-       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[P, kdl1=\E[M,
-       ked=\EJ, kel=\EK, kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS,
-       kf4=\EOU, kf5=\EOV, kf6=\EOW, kf7=\EOX, kf8=\EOY, kf9=\EOZ,
-       khome=\E[H, kich1=\E[4h, kil1=\E[L, krmir=\E[4l, lf0=PF1,
-       lf1=PF2, lf2=PF3, lf3=PF4, lf4=F15, lf5=F16, lf6=F17, lf7=F18,
-       lf8=F19, lf9=F20, ll=\E[64H, nel=\EE, rc=\E8, rev=\E[7m,
-       ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
-       rmso=\E[m, rmul=\E[m,
+       OTkn#10, cols#80, lines#64, vt#3,
+       acsc=, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
+       cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
+       dch1=\E[P, ed=\EJ, el=\EK, home=\E[H, ind=\n, is2=\E<\E)0,
+       kcbt=\E[Z, kdch1=\E[P, kdl1=\E[M, ked=\EJ, kel=\EK, kf0=\EOP,
+       kf1=\EOQ, kf2=\EOR, kf3=\EOS, kf4=\EOU, kf5=\EOV, kf6=\EOW,
+       kf7=\EOX, kf8=\EOY, kf9=\EOZ, khome=\E[H, kich1=\E[4h,
+       kil1=\E[L, krmir=\E[4l, lf0=PF1, lf1=PF2, lf2=PF3, lf3=PF4,
+       lf4=F15, lf5=F16, lf6=F17, lf7=F18, lf8=F19, lf9=F20,
+       ll=\E[64H, nel=\EE, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l,
+       rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
        rs1=\E<\E2\E[20l\E[?6l\E[r\E[m\E[q\E(B\017\E)0\E>,
-       sc=\E7, sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+       sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h,
+       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+       use=ansi+apparrows, use=ansi+csr, use=ansi+idl,
+       use=ansi+inittabs, use=ansi+local,
 
 # C. Itoh printers begin here
 citoh|ci8510|8510|C. Itoh 8510a,
@@ -16005,26 +15867,23 @@ visa50|Geveke VISA 50 terminal in ANSI 80 character mode,
        cols#80, lines#25,
        acsc=0_aaffggh jjkkllmmnnooqqssttuuvvwwxx, bel=^G,
        blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dX, dch1=\E[X, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h$<100/>\E[?5l,
-       home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
-       ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m,
+       csr=\E[%i%p1%d;%p2%dr, cup=\E[%i%p1%d;%p2%dH,
+       dch=\E[%p1%dX, dch1=\E[X, dim=\E[2m, ed=\E[J, el=\E[K,
+       flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
+       ht=^I, ind=\n, invis=\E[8m,
        is2=\E0;2m\E[1;25r\E[25;1H\E[?3l\E[?7h\E[?8h,
-       ka1=\E[f, ka3=\EOQ, kb2=\EOP, kbs=^H, kc1=\EOR, kc3=\EOS,
-       kcub1=\E[D, kcud1=\E[A, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?,
+       ka1=\E[f, ka3=\EOQ, kb2=\EOP, kc1=\EOR, kc3=\EOS, kdch1=^?,
        kdl1=\EOS, kf0=\E010, kf1=\E001, kf10=\E011, kf2=\E002,
        kf3=\E003, kf4=\E004, kf5=\E005, kf6=\E006, kf7=\E007,
        kf8=\E008, kf9=\E009, khome=\E[f, lf2=A delete char,
        lf3=A insert line, lf4=A delete line, lf5=A clear,
        lf6=A ce of/cf gn, lf7=A print, lf8=A on-line,
        lf9=A funcl0=A send, nel=\r\n, rev=\E[7m, rmacs=\E[3l,
-       rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[0;2m,
-       rmul=\E[0m, sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h,
-       smir=\E[4h, smkx=\E=, smso=\E[2;7m, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%i%p1%dd,
+       rmam=\E[?7l, rmkx=\E>, rmso=\E[0;2m, rmul=\E[0m,
+       sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h, smkx=\E=,
+       smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
+       use=ansi+arrows, use=ansi+idc, use=ansi+idl,
+       use=ansi+local,
 
 #### Human Designed Systems (Concept)
 #
@@ -16079,13 +15938,13 @@ c108|concept108|c108-8p|concept108-8p|Concept 108 w/8 pages,
            \Ep\n,
        rmcup=\Ev  \001\177p\Ep\r\n, use=c108-4p,
 c108-4p|concept108-4p|Concept 108 w/4 pages,
-       OTbs, eslok, hs, xon,
+       eslok, hs, xon,
        pb@,
        acsc=jEkTl\\mMqLxU, cnorm=\Ew, cr=\r,
        cup=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95}
            %>%t\001%{96}%-%;%{32}%+%c,
        cvvis=\EW, dch1=\E 1$<16*>, dsl=\E ;\177, fsl=\Ee\E z\s,
-       ind=\n, is1=\EK\E!\E F,
+       is1=\EK\E!\E F,
        is3=\EU\E z"\Ev\177 !p\E ;"\E z \Ev  \001 p\Ep\n,
        rmacs=\Ej\s, rmcup=\Ev  \001 p\Ep\r\n, smacs=\Ej!,
        smcup=\EU\Ev  8p\Ep\r\E\025,
@@ -16411,26 +16270,19 @@ oc100|oconcept|c100-1p|old 1-page Concept 100,
 
 hds200|Human Designed Systems HDS200,
        am, bw, eslok, hs, km, mir, msgr, xenl, xon, NQ,
-       cols#80, it#8, lines#24, lm#0,
+       cols#80, lines#24, lm#0,
        acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
-       blink=\E[0;5m, bold=\E[0;1m, cbt=\E[Z, civis=\E[6+{,
-       clear=\E[H\E[J, cnorm=\E[+{, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       dsl=\E[2!w\r\n\E[!w, ed=\E[J, el=\E[K, el1=\E[1K,
-       fsl=\E[!w, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
-       ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
-       invis=\E[0;8m,
+       blink=\E[0;5m, bold=\E[0;1m, civis=\E[6+{, cnorm=\E[+{,
+       cr=\r, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       dsl=\E[2!w\r\n\E[!w, el1=\E[1K, fsl=\E[!w, home=\E[H,
+       hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ind=\ED, invis=\E[0;8m,
        is2=\E)0\017\E[m\E[=107;207h\E[90;3u\E[92;3u\E[43;1u\177\E$P
            \177\E[44;1u\177\E$Q\177\E[45;1u\177\E$R\177\E[46;1u
            \177\E$S\177\E[200;1u\177\E$A\177\E[201;1u\177\E$B\177
            \E[202;1u\177\E$C\177\E[203;1u\177\E$D\177\E[204;1u\177
            \E$H\177\E[212;1u\177\E$I\177\E[213;1u\177\E$\010\177\E[
            214;1u"\E$\177"\E[2!w\E[25;25w\E[!w\E[2*w\E[2+x\E[;3+},
-       kDC=\E$^?, kHOM=\E$H, kLFT=\E$D, kRIT=\E$C, kbs=^H,
-       kcbt=\E$I, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+       kDC=\E$^?, kHOM=\E$H, kLFT=\E$D, kRIT=\E$C, kcbt=\E$I,
        kdch1=^?, kent=\r, kf1=^\001\r, kf10=^\010\r, kf11=^\011\r,
        kf12=^\012\r, kf13=\EOP, kf14=\EOQ, kf15=\EOR, kf16=\EOS,
        kf17=^\017\r, kf18=^\018\r, kf19=^\019\r, kf2=^\002\r,
@@ -16442,49 +16294,48 @@ hds200|Human Designed Systems HDS200,
        kf45=\E$R, kf46=\E$S, kf47=^\047\r, kf48=^\048\r,
        kf49=^\049\r, kf5=^\005\r, kf50=^\050\r, kf51=^\051\r,
        kf52=^\052\r, kf53=^\053\r, kf6=^\006\r, kf7=^\007\r,
-       kf8=^\008\r, kf9=^\009\r, khome=\E[H, kind=\E[T, knp=\E[U,
-       kpp=\E[V, kri=\E[S, ll=\E[H\E[A, nel=\E[E, rc=\E8,
-       rev=\E[0;7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmso=\E[m\017,
-       rmul=\E[m\017, sc=\E7,
+       kf8=^\008\r, kf9=^\009\r, kind=\E[T, knp=\E[U, kpp=\E[V,
+       kri=\E[S, ll=\E[H\E[A, nel=\E[E, rev=\E[0;7m, ri=\EM,
+       rmacs=^O, rmir=\E[4l, rmso=\E[m\017, rmul=\E[m\017,
        sgr=\E[0%?%p1%p6%O%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%O%t;7
            %;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smir=\E[4h, smso=\E[0;1;7m,
-       smul=\E[0;4m, tbc=\E[3g, tsl=\E[2!w\E[%i%p1%dG,
-       vpa=\E[%i%p1%dd, use=ansi+pp,
+       smul=\E[0;4m, tsl=\E[2!w\E[%i%p1%dG, vpa=\E[%i%p1%dd,
+       use=ansi+arrows, use=ansi+csr, use=ansi+erase,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
+       use=ansi+pp,
 
 # <ht> through <el> included to specify padding needed in raw mode.
 # (avt-ns: added empty <acsc> to suppress a tic warning --esr)
 avt-ns|Concept AVT no status line,
        OTbs, am, eo, mir, ul, xenl, xon,
-       cols#80, it#8, lines#24, lm#192,
-       acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
-       clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[=119h, dch1=\E[P, dim=\E[1!{, dl=\E[%p1%dM$<4*>,
-       dl1=\E[M$<4>, ed=\E[J$<96>, el=\E[K$<6>, home=\E[H,
-       hpa=\E[%p1%{1}%+%dG, ht=\011$<4>, hts=\EH, ich=\E[%p1%d@,
-       ich1=\E[@, il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>,
-       invis=\E[8m, ip=$<4>, is1=\E[=103l\E[=205l,
+       cols#80, lines#24, lm#192,
+       acsc=, bel=^G, clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=\r,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cvvis=\E[=119h,
+       dim=\E[1!{, dl=\E[%p1%dM$<4*>, dl1=\E[M$<4>,
+       ed=\E[J$<96>, el=\E[K$<6>, home=\E[H,
+       hpa=\E[%p1%{1}%+%dG, ht=\011$<4>, ich=\E[%p1%d@,
+       il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>, ip=$<4>,
+       is1=\E[=103l\E[=205l,
        is2=\E[1*q\E[2!t\E[7!t\E[=4;101;119;122l\E[=107;118;207h\E)1
            \E[1Q\EW\E[!y\E[!z\E>\E[0:0:32!r\E[0*w\E[w\E2\r\n\E[2;27
            !t,
-       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
        kdch1=\E\002\r, ked=\E\004\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
-       kf4=\EOS, khome=\E[H, kich1=\E\001\r, kil1=\E\003\r,
-       ll=\E[24H, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+       kf4=\EOS, kich1=\E\001\r, kil1=\E\003\r, ll=\E[24H,
+       mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
        pfloc=\E[%p1%d;0u#%p2%s#, pfx=\E[%p1%d;1u#%p2%s#,
-       prot=\E[99m, rc=\E8, rev=\E[7m, ri=\EM$<4>, rmacs=\016$<1>,
-       rmcup=\E[w\E2\r\n, rmir=\E[4l, rmkx=\E[!z\E[0;2u,
-       rmso=\E[7!{, rmul=\E[4!{, sc=\E7,
+       prot=\E[99m, ri=\EM$<4>, rmacs=\016$<1>,
+       rmcup=\E[w\E2\r\n, rmkx=\E[!z\E[0;2u, rmso=\E[7!{,
+       rmul=\E[4!{,
        sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;
            %;%?%p7%t8;%;%?%p8%t99;%;m%?%p5%t\E[1!{%;%?%p9%t\017%e
            \016%;$<1>,
        sgr0=\E[m\016$<1>, smacs=\017$<1>,
-       smcup=\E[=4l\E[1;24w\E2\r, smir=\E[4h,
-       smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%p1%{1}%+%dd, use=ansi+rep,
+       smcup=\E[=4l\E[1;24w\E2\r, smkx=\E[1!z\E[0;3u,
+       vpa=\E[%p1%{1}%+%dd, use=ansi+arrows, use=ansi+csr,
+       use=ansi+idc1, use=ansi+inittabs, use=ansi+local,
+       use=ansi+rep, use=ansi+sgrbold,
+
 avt-rv-ns|Concept AVT in reverse video mode/no status line,
        flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h,
        use=avt-ns,
@@ -16647,14 +16498,7 @@ dgkeys+15|Private entry describing 15 DG mode special keys,
 #      u8=^^F}20^^Fi^^F}21,
 #
 dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode,
-       bce,
-       colors#16, ncv#53, pairs#0x100,
-       op=\036Ad\036Bd,
-       setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1
-             %{4}%&%t%{1}%|%;%;%{48}%+%c,
-       setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1
-             %{4}%&%t%{1}%|%;%;%{48}%+%c,
-       setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,
+       ncv#53, use=dgmode+color,
 
 dg+fixed|Fixed color info for DG D430C terminals in DG mode,
        use=dgunix+fixed,
@@ -16767,11 +16611,11 @@ dg200|Data General DASHER 200,
 dg210|dg-ansi|Data General 210/211,
        am,
        cols#80, lines#24,
-       OTnl=\E[B, clear=\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
-       home=\E[H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       khome=\E[H, nel=\r\E[H\E[A\n, rmso=\E[0;m, rmul=\E[0;m,
-       smso=\E[7;m, smul=\E[4;m,
+       OTnl=\E[B, clear=\E[2J, cup=\E[%i%p1%d;%p2%dH, ed=\E[J,
+       el=\E[K, home=\E[H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+       kcuu1=\E[A, khome=\E[H, nel=\r\E[H\E[A\n, rmso=\E[0;m,
+       rmul=\E[0;m, smso=\E[7;m, smul=\E[4;m, use=ansi+local1,
+
 # From: Peter N. Wan <ihnp4!gatech!gacsr!wan>
 # courtesy of Carlos Rucalde of Vantage Software, Inc.
 # (dg211: this had <cup=\020%r%.%>., which was an ancient termcap hangover.
@@ -16797,20 +16641,19 @@ dg450|dg6134|Data General 6134,
 dg460-ansi|Data General Dasher 460 in ANSI-mode,
        OTbs, am, msgr, ul,
        cols#80, it#8, lines#24,
-       OTnl=\ED, blink=\E[5m, clear=\E[2J, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P,
-       dim=\E[2m, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
-       ich1=\E[@, il1=\E[L, ind=\E[S, is2=^^F@, kbs=\E[D,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kf0=\E[001z, kf1=\E[002z, kf2=\E[003z, kf3=\E[004z,
-       kf4=\E[005z, kf5=\E[006z, kf6=\E[007z, kf7=\E[008z,
-       kf8=\E[009z, kf9=\E[00:z, khome=\E[H, lf0=f1, lf1=f2, lf2=f3,
-       lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, mc0=\E[i,
-       rev=\E[7m, ri=\E[T, rmso=\E[m, rmul=\E[05,
+       OTnl=\ED, blink=\E[5m, clear=\E[2J, cub1=^H,
+       cup=\E[%i%p1%2d;%p2%2dH, dch1=\E[P, dim=\E[2m, dl1=\E[M,
+       ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L,
+       ind=\E[S, is2=^^F@, kbs=\E[D, kf0=\E[001z, kf1=\E[002z,
+       kf2=\E[003z, kf3=\E[004z, kf4=\E[005z, kf5=\E[006z,
+       kf6=\E[007z, kf7=\E[008z, kf8=\E[009z, kf9=\E[00:z, lf0=f1,
+       lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10,
+       mc0=\E[i, rev=\E[7m, ri=\E[T, rmso=\E[m, rmul=\E[05,
        sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;
            %?%p1%p3%|%t;7%;m,
        sgr0=\E(B\E[m, smso=\E[7m, smul=\E[4m, u8=\E[5n, u9=\E[0n,
-       use=ansi+cpr,
+       use=ansi+arrows, use=ansi+cpr, use=ansi+local1,
+
 # From: Wayne Throop <mcnc!rti-sel!rtp47!throopw> (not official)
 # Data General 605x
 # Ought to work for a Model 6242, Type D210 as well as a 605x.
@@ -16852,14 +16695,13 @@ d210|d214|Data General DASHER D210 series,
        am, bw, msgr, xon,
        cols#80, lines#24,
        bel=^G, blink=\E[5m, bold=\E[4;7m, clear=\E[2J, cr=\r,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dim=\E[2m, ed=\E[J, el=\E[K,
-       el1=\E[1K, home=\E[H, ind=\n, is1=\E[<0;<1;<4l,
+       cub1=^H, cup=\E[%i%p1%d;%p2%dH, dim=\E[2m, ed=\E[J,
+       el=\E[K, el1=\E[1K, home=\E[H, ind=\n, is1=\E[<0;<1;<4l,
        ll=\E[H\E[A, nel=\n, rev=\E[7m, rmso=\E[m, rmul=\E[m,
        sgr=\E[%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;%?%p1%p3%|
            %p6%|%t7;%;m,
-       sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=dgkeys+7b,
+       sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=ansi+local,
+       use=dgkeys+7b,
 
 # DASHER D210 series terminals in DG mode.
 # Like D200, but adds clear to end-of-screen and needs XON/XOFF.
@@ -17057,17 +16899,17 @@ d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series,
 #      \E)4            - default secondary character set (international)
 #
 d410|d411|d460|d461|Data General DASHER D410/D460 series,
-       mc5i,
        acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\E[3;0v,
-       cnorm=\E[3;2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
+       cnorm=\E[3;2v, dch=\E[%p1%dP, dch1=\E[P, ich=\E[%p1%d@,
+       ich1=\E[@,
        is1=\E[<0;<1;<2;<4l\E[5;0v\E[1;1;80w\E[1;6;<2h,
-       is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i,
-       ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h,
+       is2=\E[3;2;2;1;1;1v\E(B\E)4\017, ri=\EM,
+       rmacs=\E)4\017, rs1=\Ec\E[<2h,
        rs2=\E[4;0;2;1;1;1v\E(B\E)4,
        sgr=\E[%?%p1%t2;7%;%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p1%p5
            %|%t2;%;%?%p6%t4;7;%;m\E)%?%p9%t6\016%e4\017%;,
        sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211,
+       use=ansi+idl, use=ansi+pp,
 
 # Initialization string 2 sets:
 #      \E[3;2;2;0;1;0v
@@ -17330,11 +17172,12 @@ d578-7b|Data General DASHER D578 in 7-bit mode,
 cs10|colorscan|Datamedia Color Scan 10,
        msgr,
        cols#80, lines#24,
-       bel=^G, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
-       cup=\E[%i%p1%02d;%p2%02dH, cuu1=\E[A, ed=\E[J, el=\E[K,
-       ind=\n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rmso=\E[m, rmul=\E[m,
-       sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+       bel=^G, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C,
+       cup=\E[%i%p1%02d;%p2%02dH, cuu1=\E[A, ind=\n, kcub1=\E[D,
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
+       kf3=\EOR, kf4=\EOS, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+       smso=\E[7m, smul=\E[4m, use=ansi+erase,
+
 cs10-w|Datamedia Color Scan 10 with 132 columns,
        cols#132,
        cup=\E[%i%p1%02d;%p2%03dH, use=cs10,
@@ -17379,12 +17222,10 @@ dm3025|Datamedia 3025a,
        is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP,
        smir=\EP, smso=\EO1,
 dm3045|Datamedia 3045a,
-       OTbs, am, eo, km@, ul, xenl,
+       am, eo, km@, ul, xenl,
        dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA,
-       kf0=\Ey\r, kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r,
-       kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, kf9=\Ex\r,
-       khome=\EH, pad=^?, rmdc@, rmir=\EP, rmso@, smdc@, smso@,
-       use=dm3025,
+       kf0=\Ey\r, kf9=\Ex\r, khome=\EH, pad=^?, rmdc@, rmir=\EP,
+       rmso@, smdc@, smso@, use=dm3025, use=hp+pfk+cr,
 # Datamedia DT80 soft switches:
 # 1    0=Jump  1=Smooth
 #      Autorepeat      0=off  1=on
@@ -17417,11 +17258,10 @@ dm3045|Datamedia 3045a,
 #      CRT Saver       0=Off  1=On
 # dm80/1 is a VT100 lookalike, but it doesn't seem to need any padding.
 dm80|dmdt80|dt80|Datamedia dt80/1,
-       clear=\E[2J\E[H, cud1=\n, cuf1=\E[C,
-       cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
-       home=\E[H, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, ri=\EM,
-       rmso=\E[m, rmul=\E[m, sgr0=\E[m\017$<2>, smso=\E[7m,
-       smul=\E[4m, use=vt100+4bsd,
+       clear=\E[2J\E[H, cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH,
+       cuu1=\E[A, ed=\E[J, el=\E[K, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+       ri=\EM, rmso=\E[m, rmul=\E[m, sgr0=\E[m\017$<2>,
+       smso=\E[7m, smul=\E[4m, use=vt100+4bsd,
 # except in 132 column mode, where it needs a little padding.
 # This is still less padding than the VT100, and you can always turn on
 # the ^S/^Q handshaking, so you can use VT100 flavors for things like
@@ -17495,35 +17335,26 @@ falco|ts1|ts-1|Falco ts-1,
 falco-p|ts1p|ts-1p|Falco ts-1 with paging option,
        OTbs, am, da, db, mir, msgr, ul,
        cols#80, it#8, lines#24,
-       bel=^G, cbt=\EI, clear=\E*, cr=\r, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E[A,
-       dch1=\EW, dl1=\ER, ed=\EY, el=\ET\EG0\010\Eg0, ht=^I,
-       il1=\EE, ind=\n, is2=\EZ\E3\E_c, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rmcup=\E_b, rmir=\Er,
-       rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, smcup=\E_d, smir=\Eq,
-       smso=\Eg4, smul=\Eg1,
+       bel=^G, cbt=\EI, clear=\E*, cr=\r, cub1=^H,
+       cup=\E=%p1%{32}%+%c%p2%{32}%+%c, dch1=\EW, dl1=\ER,
+       ed=\EY, el=\ET\EG0\010\Eg0, ht=^I, il1=\EE, ind=\n,
+       is2=\EZ\E3\E_c, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+       kcuu1=\E[A, khome=\E[H, rmcup=\E_b, rmir=\Er, rmso=\Eg0,
+       rmul=\Eg0, sgr0=\Eg0, smcup=\E_d, smir=\Eq, smso=\Eg4,
+       smul=\Eg1, use=ansi+local1,
+
 # (ts100: I added <rmam>/<smam> based on the init string -- esr)
 ts100|ts100-sp|Falco ts100-sp,
-       am, mir, msgr, xenl, xon,
-       cols#80, it#8, lines#24, vt#3,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
-       clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C$<2>,
-       cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
-       cuu1=\E[A$<2>, dch1=\E~W, dl1=\E~R, ed=\E[J$<50>,
-       el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H,
-       ht=^I, hts=\EH, ich1=\E~Q, il1=\E~E, ind=\n, is1=\E~)\E~ea,
-       kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
-       rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
-       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
-       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
-           %;m%?%p9%t\016%e\017%;$<2>,
-       sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
-       smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
-       use=decid+cpr, use=vt100+fnkeys,
+       mir, xenl, xon,
+       vt#3,
+       cub1=^H, cud1=\n, cuf1=\E[C$<2>, cuu1=\E[A$<2>, dch1=\E~W,
+       dl1=\E~R, ich1=\E~Q, il1=\E~E, is1=\E~)\E~ea, kcub1=\EOD,
+       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmam=\E[?7l,
+       rmkx=\E[?1l\E>,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, smam=\E[?7h,
+       smkx=\E[?1h\E=, use=ansi+csr, use=ansi+local,
+       use=decid+cpr, use=vt100+4bsd, use=vt100+fnkeys,
+
 ts100-ctxt|Falco ts-100 saving context,
        rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100,
 
@@ -17560,11 +17391,11 @@ beacon|FCG Beacon System,
 f1720|f1720a|fluke 1720A,
        xt,
        cols#80, lines#16, xmc#1,
-       bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J,
-       el=\E[K, ind=\ED, is2=\E[H\E[2J, kcub1=^_, kcud1=^],
-       kcuf1=^^, kcuu1=^\, ri=\EM, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
-       smso=\E[7m, smul=\E[4m,
+       bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, ind=\ED,
+       is2=\E[H\E[2J, kcub1=^_, kcud1=^], kcuf1=^^, kcuu1=^\,
+       ri=\EM, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m,
+       smul=\E[4m, use=ansi+local1,
 
 #### Liberty Electronics (Freedom)
 #
@@ -17666,8 +17497,8 @@ f200vi-w|Liberty Freedom 200 - 132 cols for vi,
 go140|graphon go-140,
        OTbs,
        cols#80, it#8, lines#24,
-       clear=\E[H\E[2J$<10/>, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+       clear=\E[H\E[2J$<10/>, cub1=^H,
+       cup=\E[%i%p1%2d;%p2%2dH, dch1=\E[P, dl1=\E[M,
        ed=\E[J$<10/>, el=\E[K, ht=^I,
        if=/usr/share/tabset/vt100, il1=\E[L,
        is2=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q,
@@ -17675,7 +17506,8 @@ go140|graphon go-140,
        kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
        rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
        rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+local1,
+
 go140w|graphon go-140 in 132 column mode,
        am,
        cols#132,
@@ -17687,18 +17519,17 @@ go140w|graphon go-140 in 132 column mode,
 go225|go-225|Graphon 225,
        OTbs, am, mir, xenl,
        cols#80, it#8, lines#25, vt#3,
-       blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
-       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
+       blink=\E[5m, bold=\E[1m, cub1=^H, cud1=\n, cuf1=\E[C,
        cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
-       ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[L, ind=\ED,
-       is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^H,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
-       kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, rc=\E8, rev=\E[7m,
+       home=\E[H, ht=^I, il1=\E[L, ind=\ED,
+       is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kf1=\EOP,
+       kf2=\EOQ, kf3=\EOR, kf4=\EOS, rev=\E[7m,
        rf=/usr/share/tabset/vt100, ri=\EM, rmam=\E[?7l,
        rmcup=\E[!p\E[?7h\E[2;1;1#w, rmir=\E[4l, rmkx=\E>,
        rmso=\E[27m, rmul=\E[24m, rs1=\E[!p\E[?7h\E[2;1;1#w,
-       sc=\E7, sgr0=\E[m, smam=\E[?7h, smcup=\E[2;0#w\E[1;25r,
+       sgr0=\E[m, smam=\E[?7h, smcup=\E[2;0#w\E[1;25r,
        smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
+       use=ansi+arrows, use=ansi+csr, use=ansi+erase,
 
 #### Harris (Beehive)
 #
@@ -17776,12 +17607,12 @@ sb1|Beehive SuperBee,
            \s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
            \s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s
            \s\s\s\s\s\EP$<3>\s\EO\ER\EA$<3>,
-       ind=\n, is2=\EE$<3>\EX\EZ\EO\Eb\Eg\ER, kbs=^_, kcub1=\ED,
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdl1=\EM, ked=\EJ, kel=\EK,
-       kf0=\E2, kf9=\E1, khome=\EH, kich1=\EQ\EO, krmir=\ER,
-       lf0=TAB CLEAR, lf9=TAB SET, rmcup=, rmir=\ER, rmso=\E_3,
-       rmul=\E_3, sgr0=\E_3, smcup=\EO, smir=\EQ\EO, smso=\E_1,
-       smul=\E_0, tbc=\E3, use=hp+pfk-cr,
+       ind=\n, is2=\EE$<3>\EX\EZ\EO\Eb\Eg\ER, kbs=^_, kdl1=\EM,
+       ked=\EJ, kel=\EK, kf0=\E2, kf9=\E1, khome=\EH, kich1=\EQ\EO,
+       krmir=\ER, lf0=TAB CLEAR, lf9=TAB SET, rmcup=, rmir=\ER,
+       rmso=\E_3, rmul=\E_3, sgr0=\E_3, smcup=\EO, smir=\EQ\EO,
+       smso=\E_1, smul=\E_0, tbc=\E3, use=hp+pfk-cr,
+       use=vt52+arrows,
 sbi|superbee|Beehive SuperBee at Indiana U.,
        xsb,
        cr=\r$<1>, il1=\EN$<1>\EL$<9>\EQ \EP$<9> \EO\ER\EA,
@@ -17804,8 +17635,8 @@ superbee-xsb|Beehive SuperBee (improved),
        dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>, el=\EK$<3>,
        home=\EH, ht=^I, hts=\E1,
        ind=\n\0\0\0\n\0\0\0\EA\EK\0\0\0\ET\ET, is2=\EH\EJ,
-       kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH,
-       rmso=\E_3, sgr0=\E_3, smso=\E_1, tbc=\E3, use=hp+pfk-cr,
+       khome=\EH, rmso=\E_3, sgr0=\E_3, smso=\E_1, tbc=\E3,
+       use=hp+pfk-cr, use=vt52+arrows,
 # This loses on lines > 80 chars long, use at your own risk
 superbeeic|SuperBee with insert char,
        ich1=, rmir=\ER, smir=\EQ, use=superbee-xsb,
@@ -17832,10 +17663,9 @@ beehive|bee|Harris Beehive,
        cbt=\E>, clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
        cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
        dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, kbs=^H, kcbt=\E>,
-       kclr=\EE, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
-       kdch1=\EP, kdl1=\EM, kel=\EK, khome=\EH, kich1=\EQ, kil1=\EL,
-       krmir=\E@, rmir=\E@, rmso=\Ed@, rmul=\Ed@, sgr0=\Ed@,
-       smir=\EQ, smso=\EdP, smul=\Ed`,
+       kclr=\EE, kdch1=\EP, kdl1=\EM, kel=\EK, khome=\EH, kich1=\EQ,
+       kil1=\EL, krmir=\E@, rmir=\E@, rmso=\Ed@, rmul=\Ed@,
+       sgr0=\Ed@, smir=\EQ, smso=\EdP, smul=\Ed`, use=vt52+arrows,
 # set tab is ^F, clear (one) tab is ^V, no way to clear all tabs.
 # good grief - does this entry make :sg:/:ug: when it doesn't have to?
 # look at those spaces in <rmso>/<smso>.  Seems strange to me...
@@ -17860,9 +17690,9 @@ microb|microbee|Micro Bee series,
        cols#80, it#8, lines#24,
        bel=^G, clear=\EE, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
        cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
-       el=\EK, ht=^I, ind=\n, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kf9=\Ex, khome=\EH, rmso=\Ed@, rmul=\Ed@,
-       sgr0=\Ed@, smso=\s\EdP, smul=\Ed`, use=hp+pfk-cr,
+       el=\EK, ht=^I, ind=\n, kf9=\Ex, khome=\EH, rmso=\Ed@,
+       rmul=\Ed@, sgr0=\Ed@, smso=\s\EdP, smul=\Ed`,
+       use=hp+pfk-cr, use=vt52+arrows,
 
 # 8675, 8686, and bee from Cyrus Rahman
 # (8675: changed k10, k11...k16 to k;, F1...F6 -- esr)
@@ -18025,18 +17855,17 @@ hazel|exec80|h80|he80|Hazeltine Executive 80,
        OTbs, OTpt, am,
        cols#80, it#8, lines#24, vt#3,
        OTnl=\n, bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
-       clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub1=^H, cud1=\n, cuf1=\E[C$<2/>,
-       cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
-       ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I,
-       is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD, kcud1=\EOB,
-       kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
-       kf4=\EOS, rc=\E8, rev=\E[7m$<2/>,
+       clear=\E[;H\E[2J$<50/>, cr=\r, cub1=^H, cud1=\n,
+       cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
+       cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
+       ht=^I, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD,
+       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ,
+       kf3=\EOR, kf4=\EOS, rev=\E[7m$<2/>,
        rf=/usr/share/tabset/vt100, ri=\EM$<5/>,
        rmkx=\E[?1l\E>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
-       rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+       rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>,
-       smul=\E[4m$<2/>,
+       smul=\E[4m$<2/>, use=ansi+csr,
 
 #### IBM
 #
@@ -18050,14 +17879,14 @@ ibm3101|i3101|IBM 3101-10,
        cols#80, lines#24,
        bel=^G, clear=\EK, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
-       el=\EI, home=\EH, hts=\E0, ind=\n, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, nel=\r\n, tbc=\EH,
+       el=\EI, home=\EH, hts=\E0, ind=\n, nel=\r\n, tbc=\EH,
+       use=vt52+arrows,
 ibm3151|IBM 3151 display,
-       is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B,
+       is2=\E S, rmacs=\E>B, rs2=\E S,
        sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;
            %?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t
            %{80}%|%;%c%?%p9%t\E>A%e\E>B%;,
-       sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162,
+       sgr0=\E4@\E>B, smacs=\E>A, use=ibm3162,
 # From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992
 # removed kend, knp, kpp -TD
 #
@@ -18075,9 +17904,8 @@ ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display,
        cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
        cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH,
        ich1=\EP \010, il1=\EN, ind=\n, invis=\E4P, kbs=^H, kcbt=\E2,
-       kclr=\EL\r, kctab=\E1, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kdch1=\EQ, kdl1=\EO, ked=\EJ, kel=\EI, kf1=\Ea\r,
-       kf10=\Ej\r, kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r,
+       kclr=\EL\r, kctab=\E1, kdch1=\EQ, kdl1=\EO, ked=\EJ, kel=\EI,
+       kf1=\Ea\r, kf10=\Ej\r, kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r,
        kf14=\E!b\r, kf15=\E!c\r, kf16=\E!d\r, kf17=\E!e\r,
        kf18=\E!f\r, kf19=\E!g\r, kf2=\Eb\r, kf20=\E!h\r,
        kf21=\E!i\r, kf22=\E!j\r, kf23=\E!k\r, kf24=\E!l\r,
@@ -18089,6 +17917,7 @@ ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display,
            %?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t
            %{80}%|%;%c%?%p9%t\E>A%e\E<@%;,
        sgr0=\E4@\E<@, smcup=\E>A, smso=\E4A, smul=\E4B,
+       use=vt52+arrows,
 
 ibm3161-C|IBM 3161-C NLS terminal using cartridge,
        rmcup=\E>B, s0ds=\E>B, s1ds=\E>A, smcup=\E>B, use=ibm3161,
@@ -18117,14 +17946,9 @@ ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display,
        cols#80, it#8, lines#25,
        acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
             \263,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H,
-       hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
-       invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z, kclr=\E[144q,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
+       bel=^G, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH,
+       dch1=\E[P, ech=\E[%p1%dX, home=\E[H, hpa=\E[%i%p1%dG,
+       ind=\E[S, is2=\Ec, kcbt=\E[Z, kclr=\E[144q, kdch1=\E[P,
        ked=\E[148q, kel=\E[142q, kend=\E[146q, kf1=\E[001q,
        kf10=\E[010q, kf11=\E[011q, kf12=\E[012q, kf13=\E[013q,
        kf14=\E[014q, kf15=\E[015q, kf16=\E[016q, kf17=\E[017q,
@@ -18134,13 +17958,13 @@ ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display,
        kf29=\E[029q, kf3=\E[003q, kf30=\E[030q, kf31=\E[031q,
        kf32=\E[032q, kf33=\E[033q, kf34=\E[034q, kf35=\E[035q,
        kf36=\E[036q, kf4=\E[004q, kf5=\E[005q, kf6=\E[006q,
-       kf7=\E[007q, kf8=\E[008q, kf9=\E[009q, khome=\E[H,
-       kich1=\E[139q, kil1=\E[140q, kind=\E[151q, knp=\E[154q,
-       kpp=\E[150q, kri=\E[155q, krmir=\E[4l, rev=\E[7m, ri=\E[T,
-       rmir=\E[4l, rmso=\E[m, rmul=\E[m, rs2=\Ec,
+       kf7=\E[007q, kf8=\E[008q, kf9=\E[009q, kich1=\E[139q,
+       kil1=\E[140q, kind=\E[151q, knp=\E[154q, kpp=\E[150q,
+       kri=\E[155q, krmir=\E[4l, ri=\E[T, rmir=\E[4l, rs2=\Ec,
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
            %;%?%p7%t;8%;m,
-       sgr0=\E[0m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+       smir=\E[4h, use=ansi+arrows, use=ansi+erase,
+       use=ansi+idl, use=ansi+local, use=ansi+sgrbold,
        use=ecma+index,
 
 ibmaed|IBM Experimental display,
@@ -18149,8 +17973,8 @@ ibmaed|IBM Experimental display,
        clear=\EH\EK, cub1=^H, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
        dl1=\EO, ed=\EJ, el=\EI, flash=\EG, home=\EH, ht=^I, ich1=\EP,
-       il1=\EN, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
-       rmso=\E0, sgr0=\E0, smso=\E0,
+       il1=\EN, kbs=^H, rmso=\E0, sgr0=\E0, smso=\E0,
+       use=vt52+arrows,
 ibm-apl|apl|IBM apl terminal simulator,
        lines#25, use=dm1520,
 # (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'.
@@ -18165,8 +17989,7 @@ ibmmono|IBM workstation monochrome,
        sgr0=\Ew\Eq\Ez\EB, smso=\EZ, smul=\EW, tsl=\Ej\EY8%+ \Eo,
        use=ibm3101,
 ibmega|IBM Enhanced Color Display,
-       cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
-       nel=\r\n, use=ibmmono,
+       ht=^I, kcub1=^H, kcud1=\n, use=ibmmono,
 # This color scheme is assumed in some recent IBM terminal descriptions
 # (green on black, emulated on a 16-color terminal).
 ibm+color|IBM color definitions,
@@ -18187,18 +18010,16 @@ ibm+16color|IBM aixterm color definitions,
        setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e
             %ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
 ibm5154|IBM 5154 Color display,
-       colors#8, ncv@, pairs#64,
+       ncv@,
        bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
        use=ibm+color,
 ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline,
        rmso=\EB, rmul=\EB, smso=\EF\Ef3;, smul=\EF\Ef2;,
        use=ibmmono,
 ibmvga-c|IBM VGA display color termcap,
-       cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
-       nel=\r\n, use=ibmega-c,
+       ht=^I, kcub1=^H, kcud1=\n, use=ibmega-c,
 ibmvga|IBM VGA display,
-       cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n,
-       nel=\r\n, use=ibmega,
+       use=ibmega,
 # ibmapa* and ibmmono entries come from ACIS 4.3 distribution
 rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display,
        lines#32,
@@ -18229,44 +18050,32 @@ ibm6153-90|IBM 6153 Black & White display (36-line),
 ibm6153-40|IBM 6153 Black & White display (12-line),
        cols#40, lines#12, use=ibm6153-90,
 ibm8512|ibm8513|IBM color VGA Terminal,
-       am, mir, msgr,
-       cols#80, it#8, lines#25,
-       acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m,
-       clear=\E[H\E[J, cub1=\E[D, cud1=\n, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M,
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, il=\E[%p1%dL,
-       il1=\E[L, is2=\Eb\E[m\017\E[?7h, kcud1=\E[B, kcuu1=\E[A,
-       kf0=\E[010q, kf1=\E[001q, kf2=\E[002q, kf3=\E[003q,
-       kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
-       kf8=\E[008q, kf9=\E[009q, khome=\E[H, rc=\E[u, rev=\E[7m,
+       mir,
+       cub1=\E[D, is2=\Eb\E[m\017\E[?7h, kf0=\E[010q, rc=\E[u,
        rmacs=^O, rmam=\E[?7l, rmcup=\E[20h, rmdc=\E[4l,
-       rmir=\E[4l, rmso=\E[m, rmul=\E[m,
        rs1=\Eb\E[m\017\E[?7h\E[H\E[J, sc=\E[s, sgr0=\E[m,
        smacs=^N, smam=\E[?7h, smcup=\E[20;4l\E[?7h\Eb,
-       smdc=\E[4h, smir=\E[4h, smso=\E[7m, smul=\E[4m,
-       use=ibm8503,
+       smdc=\E[4h, use=ibm8503,
 hft-c|HFT with Color,
-       colors#8, pairs#64,
        acsc=jjkkllmmnnqqttuuvvwwxx, s0ds=\E(B, s1ds=\E(0,
        setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m\E(B,
        use=ibm5151, use=ibm+color,
 hft-c-old|HFT with Color PC850,
-       colors#8, pairs#64,
        setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
        use=ibm+color,
 hft-old|AIWS High Function Terminal,
        am, xon,
        cols#80, lines#25,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
-       ht=^I, ich1=\E[@, il1=\E[L, ind=\n, invis=\E[8m, kbs=^H,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kf1=\E[001q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q,
-       kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
-       kf9=\E[009q, khome=\E[H, knp=\E[153q, kpp=\E[159q,
+       bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
+       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
+       dl1=\E[M, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\n,
+       invis=\E[8m, kf1=\E[001q, kf2=\E[002q, kf3=\E[003q,
+       kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
+       kf8=\E[008q, kf9=\E[009q, knp=\E[153q, kpp=\E[159q,
        ktbc=\E[010q, rev=\E[7m, rmir=\E6, rmso=\E[m, rmul=\E[m,
-       sgr0=\E[m, smir=\E6, smso=\E[7m, smul=\E[4m, use=ibm+color,
+       sgr0=\E[m, smir=\E6, smso=\E[7m, smul=\E[4m,
+       use=ansi+arrows, use=ansi+erase, use=ibm+color,
+
 ibm-system1|system1|IBM system/1 computer,
        am, xt,
        cols#80, lines#24,
@@ -18282,53 +18091,47 @@ lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device,
        cols#80, it#8, lines#25,
        acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
             \263,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[2J, el=\E[0K,
-       home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, il=\E[%p1%dL,
-       il1=\E[L, ind=\ED, invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z,
-       kclr=\E[144q, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kdch1=\E[P, ked=\E[148q, kel=\E[142q,
-       kend=\E[146q, kf1=\E[001q, kf10=\E[010q, kf11=\E[011q,
-       kf12=\E[012q, kf13=\E[013q, kf14=\E[014q, kf15=\E[015q,
-       kf16=\E[016q, kf17=\E[017q, kf18=\E[018q, kf19=\E[019q,
-       kf2=\E[002q, kf20=\E[020q, kf21=\E[021q, kf22=\E[022q,
-       kf23=\E[023q, kf24=\E[024q, kf25=\E[025q, kf26=\E[026q,
-       kf27=\E[027q, kf28=\E[028q, kf29=\E[029q, kf3=\E[003q,
-       kf30=\E[030q, kf31=\E[031q, kf32=\E[032q, kf33=\E[033q,
-       kf34=\E[034q, kf35=\E[035q, kf36=\E[036q, kf4=\E[004q,
-       kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
-       kf9=\E[009q, khome=\E[H, kich1=\E[139q, kil1=\E[140q,
+       bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       ech=\E[%p1%dX, ed=\E[2J, el=\E[0K, home=\E[H,
+       hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ind=\ED, is2=\Ec,
+       kcbt=\E[Z, kclr=\E[144q, kdch1=\E[P, ked=\E[148q,
+       kel=\E[142q, kend=\E[146q, kf1=\E[001q, kf10=\E[010q,
+       kf11=\E[011q, kf12=\E[012q, kf13=\E[013q, kf14=\E[014q,
+       kf15=\E[015q, kf16=\E[016q, kf17=\E[017q, kf18=\E[018q,
+       kf19=\E[019q, kf2=\E[002q, kf20=\E[020q, kf21=\E[021q,
+       kf22=\E[022q, kf23=\E[023q, kf24=\E[024q, kf25=\E[025q,
+       kf26=\E[026q, kf27=\E[027q, kf28=\E[028q, kf29=\E[029q,
+       kf3=\E[003q, kf30=\E[030q, kf31=\E[031q, kf32=\E[032q,
+       kf33=\E[033q, kf34=\E[034q, kf35=\E[035q, kf36=\E[036q,
+       kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
+       kf8=\E[008q, kf9=\E[009q, kich1=\E[139q, kil1=\E[140q,
        kind=\E[151q, knp=\E[154q, kpp=\E[150q, kri=\E[155q,
-       krmir=\E[4l, rev=\E[7m, ri=\EL, rmacs=\E(B, rmir=\E[4l,
-       rmso=\E[0m, rmul=\E[0m, rs2=\Ec,
+       krmir=\E[4l, ri=\EL, rmacs=\E(B, rmir=\E[4l, rmso=\E[0m,
+       rmul=\E[0m, rs2=\Ec,
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
            %;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
-       sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smso=\E[7m, smul=\E[4m,
-       tbc=\E[3g, use=ecma+index,
+       smacs=\E(0, smir=\E[4h, tbc=\E[3g, use=ansi+arrows,
+       use=ansi+idl, use=ansi+local, use=ansi+sgrbold,
+       use=ecma+index,
+
 # "Megapel" refers to the display adapter, which was used with the IBM RT
 # aka IBM 6150.
 ibm5081|hft|IBM Megapel Color display,
        acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B,
        s1ds=\E(0, sgr0=\E[0m\E(B, use=ibm5154,
 ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display,
-       eslok, hs,
        lines#33,
-       dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo,
-       use=ibmega-c,
+       dsl=\Ej\EYA \EI\Ek, tsl=\Ej\EYA%+ \Eo, use=ibmega-c,
 ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display,
        use=hft-c,
 ibm8514|IBM 8514/a color VGA display,
        eslok, hs,
        dsl=\Ej\EYI \EI\Ek, fsl=\Ek, tsl=\Ej\EYI%+ \Eo, use=hft,
 ibm8514-c|IBM 8514 color display with standout and underline,
-       eslok, hs,
        lines#41,
-       cr=\r, cud1=\n, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=\n,
-       kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, tsl=\Ej\EYI%+ \Eo,
-       use=ibmega-c,
+       dsl=\Ej\EYI \EI\Ek, ht=^I, kcub1=^H, kcud1=\n,
+       tsl=\Ej\EYI%+ \Eo, use=ibmega-c,
 
 #
 # AIX entries.  IBM ships these with AIX 3.2.5.
@@ -18714,9 +18517,9 @@ intext|Interactive Systems Corporation modified owl 1200,
 intext2|intextii|INTERACTIVE modified owl 1251,
        am, bw, ul,
        cols#80, lines#24, xmc#0,
-       bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, cub1=\E[D,
-       cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K,
+       bel=^G, cbt=\E[Z, clear=\E[H\E[2J, cr=\r,
+       cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, ed=\E[J,
+       el=\E[K,
        flash=\E[;;;;;;;;;2;;u$<200/>\E[;;;;;;;;;1;;u,
        hpa=\E[%p1%{1}%+%dG, ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S,
        kbs=^H, kcub1=\ED\r, kcud1=\EB\r, kcuf1=\EC\r, kcuu1=\EA\r,
@@ -18725,7 +18528,7 @@ intext2|intextii|INTERACTIVE modified owl 1251,
        khome=\ER\r, lf0=REFRSH, lf1=DEL CH, lf2=TABSET, lf3=GOTO,
        lf4=+PAGE, lf5=+SRCH, lf6=-PAGE, lf7=-SRCH, lf8=LEFT,
        lf9=RIGHT, ri=\E[T, rmso=\E[2 D, rmul=\E[2 D, smso=\E[6 D,
-       smul=\E[18 D,
+       smul=\E[18 D, use=ansi+local1,
 
 #### Kimtron (abm, kt)
 #
@@ -18827,13 +18630,13 @@ kt7ix|kimtron model kt-7 or 70 in IX mode,
        cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
        dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, fsl=\r,
        home=^^, ht=^I, ich1=\EQ, il1=\EE, ind=\n,
-       is2=\EG0\E s\017\E~, kbs=^H, kcbt=\EI, kclr=\E*,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\ER,
-       ked=\EY, kel=\ET, kend=\EY, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r,
+       is2=\EG0\E s\017\E~, kcbt=\EI, kclr=\E*, kdl1=\ER, ked=\EY,
+       kel=\ET, kend=\EY, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r,
        kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
        kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, knp=\EJ,
        nel=\r\n, pulse=\EK, rmacs=\E%%, rmir=, rmso=\EG0, rmul=\EG0,
        sgr0=\EG0, smacs=\E$, smir=, smso=\EG4, smul=\EG8, tsl=\Ef,
+       use=ansi+arrows,
 
 #### Microdata/MDIS
 #
@@ -19010,31 +18813,27 @@ prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode,
 #
 prism9|p9|P9|MDC Prism-9 in ANSI mode,
        am, bw, hs, msgr, xenl, xon,
-       cols#80, it#8, lines#24, vt#3, wsl#72,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[<4l,
-       clear=^L, cnorm=\E[<4h, cr=\r, csr=\E[%i%p1%d;%p2%d%%v,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dl=\E[%p1%dM, dl1=\E[M, dsl=\E[%}\024, ech=\E[%p1%dX,
-       ed=\E[J$<10>, el=\E[K, fsl=^T, home=\E[H, hpa=\E[%i%p1%d`,
-       ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       is2=\E[&p\E[<12l\E F, kbs=^H, kclr=^L, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[11~,
-       kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
-       kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
-       kf18=\E[32~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
-       kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khome=\E[H, nel=\r\n, prot=\E[32%{, rc=\E[%z,
-       rep=\E[%p2%db%p1%c, rev=\E[7m, ri=\E[L, rmir=\E[4l,
-       rmso=\E[27m, rmul=\E[24m,
+       cols#80, lines#24, vt#3, wsl#72,
+       bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[<4l, clear=^L,
+       cnorm=\E[<4h, cr=\r, csr=\E[%i%p1%d;%p2%d%%v, cub1=^H,
+       cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       dsl=\E[%}\024, ech=\E[%p1%dX, ed=\E[J$<10>, el=\E[K,
+       fsl=^T, home=\E[H, hpa=\E[%i%p1%d`, ind=\n,
+       is2=\E[&p\E[<12l\E F, kclr=^L, kf1=\E[11~, kf10=\E[21~,
+       kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+       kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+       kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~,
+       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, nel=\r\n, prot=\E[32%{,
+       rc=\E[%z, rep=\E[%p2%db%p1%c, rev=\E[7m, ri=\E[L,
+       rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
        rs2=\E[&p\E[<12l\E\sF\E[3g\E[9;17;25;33;41;49;57;65;73
            \sN,
        sc=\E[%y,
        sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;m%?
            %p8%t\E[32%%{%;%?%p9%t\016%e\017%;,
        sgr0=\E[0m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m,
-       tbc=\E[3g, tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd,
+       tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd, use=ansi+arrows,
+       use=ansi+idl, use=ansi+inittabs, use=ansi+local,
        use=ansi+pp,
 
 # p9-w: Prism-9 in 132 column mode
@@ -19055,8 +18854,8 @@ prism9-w|p9-w|P9-W|MDC Prism-9 in 132 column mode,
 # Insertion and deletion operations possible.
 #
 prism9-8|p9-8|P9-8|MDC Prism-9 in P8 mode,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8,
+       dch=\E[%p1%dP, dch1=\E[P, ich=\E[%p1%d@, ich1=\E[@,
+       use=ansi+idl, use=p8,
 
 # p9-8-w: Prism-9 in P8 and 132 column modes
 # ------------------------------------------
@@ -19064,8 +18863,8 @@ prism9-8|p9-8|P9-8|MDC Prism-9 in P8 mode,
 # P9 terminal in P8 emulation mode and 132 column mode.
 #
 prism9-8-w|p9-8-w|P9-8-W|MDC Prism-9 in Prism 8 emulation and 132 column mode,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8-w,
+       dch=\E[%p1%dP, dch1=\E[P, ich=\E[%p1%d@, ich1=\E[@,
+       use=ansi+idl, use=p8-w,
 
 # p12: Prism-12 in ANSI mode
 # ---------------------------
@@ -19178,8 +18977,7 @@ act4|microterm|microterm act iv,
 # The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)...
 # (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr)
 act5|microterm5|microterm act v,
-       kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA,
-       use=act4,
+       ri=\EH$<3>, uc=^H\EA, use=act4,
 # Mimes using brightness for standout.  Half bright is really dim unless
 # you turn up the brightness so far that lines show up on the screen.
 mime-fb|full bright mime1,
@@ -19215,13 +19013,13 @@ mime2a|mime2a-v|microterm mime2a (emulating an enhanced VT52),
        bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=^N,
        dl1=\027$<20*>, ed=\EQ$<20*>, el=\EP, home=\EH, ht=^I,
-       il1=\001$<20*>, ind=\n, ip=$<2>, is2=^Y, kcub1=\ED,
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EA, rmir=^Z, rmso=\E9,
-       rmul=\E5, smir=^O, smso=\E8, smul=\E4,
+       il1=\001$<20*>, ind=\n, ip=$<2>, is2=^Y, ri=\EA, rmir=^Z,
+       rmso=\E9, rmul=\E5, smir=^O, smso=\E8, smul=\E4,
+       use=vt52+arrows,
 # (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr)
 mime3a|mime1 emulating 3a,
        am@,
-       kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a,
+       kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a,
 mime3ax|mime-3ax|mime1 emulating enhanced 3a,
        it#8,
        dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>,
@@ -19254,23 +19052,19 @@ mm340|mime340|mime 340,
 mt4520-rv|micro-term 4520 reverse video,
        am, hs, msgr, xenl, xon,
        cols#80, it#8, lines#24, wsl#80,
-       bel=^G, clear=\E[H\E[J, cnorm=\E[0V\E8, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h,
-       fsl=\E[?5l\E[?5h, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
-       ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+       bel=^G, cnorm=\E[0V\E8, cr=\r, cup=\E[%i%p1%d;%p2%dH,
+       cvvis=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P,
+       flash=\E[?5l$<200/>\E[?5h, fsl=\E[?5l\E[?5h, home=\E[H,
+       ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, ind=\ED,
        is2=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[1;24r\E[24;1H\E[H
            \E[J,
-       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H,
-       ll=\E[24;1H, nel=\EE, rc=\E8, rf=/usr/share/tabset/vt100,
-       ri=\EM, rmam=\E[?7l, rmso=\E[0m, rmul=\E[24m,
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, ll=\E[24;1H, nel=\EE,
+       rf=/usr/share/tabset/vt100, ri=\EM, rmam=\E[?7l,
+       rmso=\E[0m, rmul=\E[24m,
        rs1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J,
-       sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m,
-       tbc=\E[g, tsl=\E[25;1H,
+       sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[g,
+       tsl=\E[25;1H, use=ansi+arrows, use=ansi+csr,
+       use=ansi+erase, use=ansi+idl, use=ansi+local,
 
 # Fri Aug  5 08:11:57 1983
 # This entry works for the ergo 4000 with the following setups:
@@ -19284,17 +19078,17 @@ mt4520-rv|micro-term 4520 reverse video,
 ergo4000|microterm ergo 4000,
        da, db, msgr,
        cols#80, lines#66,
-       bel=^G, clear=\E[H\E[2J$<80>, cr=\r, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       dch1=\E[1P$<80>, dl1=\E[1M$<5*>, ed=\E[0J$<15>,
-       el=\E[0K$<13>, ht=^I, il1=\E[1L$<5*>, ind=\ED$<20*>,
+       bel=^G, clear=\E[H\E[2J$<80>, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, dch1=\E[1P$<80>, dl1=\E[1M$<5*>,
+       ed=\E[0J$<15>, el=\E[0K$<13>, ht=^I, il1=\E[1L$<5*>,
+       ind=\ED$<20*>,
        is2=\E<\E=\E[?1l\E[?4l\E[?5l\E[?7h\E[?8h$<300>,
        kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
        kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=pf1, lf2=pf2, lf3=pf3,
        lf4=pf4, ri=\EM$<20*>, rmam=\E[?7l, rmir=\E[4l,
        rmkx=\E=$<4>, rmso=\E[m$<20>, sgr0=\E[m$<20>,
        smam=\E[?7m, smir=\E[4h$<6>, smkx=\E=$<4>,
-       smso=\E[7m$<20>,
+       smso=\E[7m$<20>, use=ansi+local1,
 
 #### NCR
 #
@@ -19389,8 +19183,7 @@ ncr260vt100an|NCR 2900/260 VT100 with ANSI keyboard,
        am, mir, msgr, xenl, xon,
        cols#80, lines#24, nlab#32,
        acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
-       blink=\E[5m, bold=\E[1m, clear=\E[2J\E[1;1H$<20>,
-       cr=\r$<1>, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<5>,
+       clear=\E[2J\E[1;1H$<20>, cr=\r$<1>, cub=\E[%p1%dD$<5>,
        cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
        cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
        cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
@@ -19399,22 +19192,23 @@ ncr260vt100an|NCR 2900/260 VT100 with ANSI keyboard,
        ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>, home=\E[H$<1>,
        hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, ich=\E[%p1%d@$<5>,
        il=\E[%p1%dL$<5>, il1=\E[L$<5>, ind=\ED$<5>,
-       indn=\E[%p1%dE$<5>, invis=\E[8m,
+       indn=\E[%p1%dE$<5>,
        is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
            200>,
        kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       khlp=\E[28~, kich1=\E[2~, krdo=\E[29~, nel=\EE$<5>, rc=\E8,
-       rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l,
-       rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m,
+       khlp=\E[28~, kich1=\E[2~, krdo=\E[29~, nel=\EE$<5>,
+       ri=\EM$<5>, rmacs=^O, rmir=\E[4l, rmkx=\E[?1l\E>,
+       rmso=\E[0m, rmul=\E[0m,
        rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
            200>,
-       sc=\E7,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
        sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%p1%dd$<40>, use=decid+cpr, use=vt220+vtedit,
-       use=vt220+cvis, use=vt220+keypad, use=ncr260vt+sl,
+       smkx=\E[?1h\E=, smso=\E[1;7m, tbc=\E[3g,
+       vpa=\E[%p1%dd$<40>, use=ansi+csr, use=ansi+sgrbold,
+       use=decid+cpr, use=vt220+vtedit, use=vt220+cvis,
+       use=vt220+keypad, use=ncr260vt+sl,
+
 ncr260vt+sl|NCR 2900/260 VT100 status line,
        hs,
        dsl=\E[0$~\E[1$~, fsl=\E[0$}, tsl=\E[2$~\E[1$},
@@ -19427,15 +19221,11 @@ ncr260vt100wan|NCR 2900/260 VT100 wide mode ANSI keyboard,
            200>,
        use=ncr260vt100an,
 ncr260vt100pp|NCR 2900/260 VT100 with PC+ keyboard,
-       is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
-           200>,
        ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
        kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
-       kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~,
-       lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>,
-       rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
-           200>,
-       smkx=\E=, use=ncr260vt100an,
+       kend=\E[5~, khome=\E[2~, kich1=\E[1~, kpp=\E[3~, lf1=pf1,
+       lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
+       use=ncr260vt100an,
 ncr260vt100wpp|NCR 2900/260 VT100 wide mode PC+  keyboard,
        cols#132,
        cup=\E[%i%p1%d;%p2%dH$<30>,
@@ -19448,42 +19238,42 @@ ncr260vt200an|NCR 2900/260 VT200 with ANSI keyboard,
        am, mir, msgr, xenl, xon,
        cols#80, lines#24, nlab#32,
        acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
-       blink=\E[5m, bold=\E[1m, clear=\E[2J\E[1;1H$<20>,
-       cr=\r$<1>, csr=\E[%i%p1%d;%p2%dr$<5>,
-       cub=\E[%p1%dD$<5>, cub1=\E[D$<5>, cud=\E[%p1%dB$<5>,
-       cud1=\E[B$<5>, cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
+       clear=\E[2J\E[1;1H$<20>, cr=\r$<1>,
+       csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>,
+       cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
+       cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
        cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
        cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
        dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, ech=\E[%p1%dX$<5>,
        ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, home=\E[H,
        hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, ich=\E[%p1%d@$<5>,
        il=\E[%p1%dL$<5>, il1=\E[L$<5>, ind=\ED$<5>,
-       indn=\E[%p1%dE$<5>, invis=\E[8m,
+       indn=\E[%p1%dE$<5>,
        is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
            200>,
        kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kf0=\EOy, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
        kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
-       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
-       kf20=\E[34~, kf21=\E[31~, kf22=\E[32~, kf23=\E[33~,
-       kf24=\E[34~, kf25=\E[35~, kf26=\E[1~, kf27=\E[2~,
-       kf28=\E[3~, kf29=\E[4~, kf3=\EOR, kf30=\E[5~, kf31=\E[6~,
-       kf32=\E[7~, kf33=\E[8~, kf34=\E[9~, kf35=\E[10~, kf4=\EOS,
-       kf5=\E[M, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
-       khlp=\E[28~, krdo=\E[29~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
-       nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=\017$<20>,
-       rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
-       rmul=\E[24m,
+       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~,
+       kf21=\E[31~, kf22=\E[32~, kf23=\E[33~, kf24=\E[34~,
+       kf25=\E[35~, kf26=\E[1~, kf27=\E[2~, kf28=\E[3~,
+       kf29=\E[4~, kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~,
+       kf34=\E[9~, kf35=\E[10~, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
+       kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, krdo=\E[29~, mc0=\E[i,
+       mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, ri=\EM$<5>,
+       rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
+       rmso=\E[27m, rmul=\E[24m,
        rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<
            200>,
        sc=\E7,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
        sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
-       smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
-       tbc=\E[3g, vpa=\E[%p1%dd$<40>, use=decid+cpr,
+       smir=\E[4h, smkx=\E[?1h\E=, tbc=\E[3g,
+       vpa=\E[%p1%dd$<40>, use=ansi+sgrbold, use=decid+cpr,
        use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad,
        use=ncr260vt+sl,
+
 ncr260vt200wan|NCR 2900/260 VT200 wide mode ANSI keyboard,
        cols#132,
        cup=\E[%i%p1%d;%p2%dH$<30>,
@@ -19492,9 +19282,8 @@ ncr260vt200wan|NCR 2900/260 VT200 wide mode ANSI keyboard,
 ncr260vt200pp|NCR 2900/260 VT200 with PC+ keyboard,
        ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
        kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
-       kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
-       lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
-       use=ncr260vt200an,
+       kend=\E[1~, khome=\E[H, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
+       rmkx=\E>, smkx=\E=, use=ncr260vt200an,
 ncr260vt200wpp|NCR 2900/260 VT200 wide mode PC+  keyboard,
        cols#132,
        cup=\E[%i%p1%d;%p2%dH$<30>,
@@ -19507,17 +19296,17 @@ ncr260vt300an|NCR 2900/260 VT300 with ANSI keyboard,
        am, mir, msgr, xenl, xon,
        cols#80, lines#24, nlab#32,
        acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
-       blink=\E[5m, bold=\E[1m, clear=\E[2J\E[1;1H$<20>,
-       cr=\r$<1>, csr=\E[%i%p1%d;%p2%dr$<5>,
-       cub=\E[%p1%dD$<5>, cub1=\E[D$<5>, cud=\E[%p1%dB$<5>,
-       cud1=\E[B$<5>, cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
+       clear=\E[2J\E[1;1H$<20>, cr=\r$<1>,
+       csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>,
+       cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
+       cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
        cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
        cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
        dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, ech=\E[%p1%dX$<5>,
        ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, home=\E[H,
        hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, ich=\E[%p1%d@$<5>,
        il=\E[%p1%dL$<5>, il1=\E[L$<5>, ind=\ED$<5>,
-       indn=\E[%p1%dE$<5>, invis=\E[8m,
+       indn=\E[%p1%dE$<5>,
        is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1
            ;1H\E>$<200>,
        kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
@@ -19529,7 +19318,7 @@ ncr260vt300an|NCR 2900/260 VT300 with ANSI keyboard,
        kf29=\E[4~, kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~,
        kf34=\E[9~, kf35=\E[10~, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
        kf8=\E[19~, kf9=\E[20~, khlp=\E[28~, krdo=\E[29~, mc0=\E[i,
-       mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>,
+       mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, ri=\EM$<5>,
        rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
        rmso=\E[27m, rmul=\E[24m,
        rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1
@@ -19538,10 +19327,11 @@ ncr260vt300an|NCR 2900/260 VT300 with ANSI keyboard,
        sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
            %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
        sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
-       smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
-       tbc=\E[3g, vpa=\E[%p1%dd$<40>, use=decid+cpr,
+       smir=\E[4h, smkx=\E[?1h\E=, tbc=\E[3g,
+       vpa=\E[%p1%dd$<40>, use=ansi+sgrbold, use=decid+cpr,
        use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad,
        use=ncr260vt+sl,
+
 ncr260vt300wan|NCR 2900/260 VT300 wide mode ANSI keyboard,
        cols#132,
        cup=\E[%i%p1%d;%p2%dH$<30>,
@@ -19553,9 +19343,8 @@ ncr260vt300wan|NCR 2900/260 VT300 wide mode ANSI keyboard,
 ncr260vt300pp|NCR 2900/260 VT300 with PC+ keyboard,
        ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
        kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
-       kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
-       lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
-       use=ncr260vt300an,
+       kend=\E[1~, khome=\E[H, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
+       rmkx=\E>, smkx=\E=, use=ncr260vt300an,
 ncr260vt300wpp|NCR260VT300WPP|NCR 2900/260 VT300 wide mode PC+  keyboard,
        cols#132,
        cup=\E[%i%p1%d;%p2%dH$<30>,
@@ -19641,31 +19430,14 @@ ncr260wy325wpp|NCR 2900/260 Wyse 325 wide mode,
 #          have it included, Un-comment it and recompile (using 'tic').
 #
 ncr260wy350pp|NCR 2900/260 Wyse 350,
-       am, bw, km, mc5i, mir, msgr, xon,
-       colors#16, cols#80, lines#24, ncv#33, nlab#32, pairs#16, xmc#1,
-       acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, blink=\EG2,
-       cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r,
-       cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
-       cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>,
-       cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>,
-       ed=\Ey$<5>, el=\Et$<5>, home=\036$<10>, ht=^I, hts=\E1,
-       il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
+       colors#16, ncv#33, pairs#16,
+       acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, cbt=\EI,
+       cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, ed=\Ey$<5>,
+       el=\Et$<5>, ht=^I, hts=\E1,
        is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9
            \Ee7$<100>,
-       kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
-       kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L,
-       kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
-       kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
-       kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
-       kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
-       kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
-       kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
-       kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
-       khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
-       mc0=\EP$<10>, mc4=^T, mc5=^R,
        mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>,
-       nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
-       rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+       rmacs=\EH\003\EcB0,
        rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9
            \Ee7$<100>,
        setb=\s,
@@ -19675,9 +19447,8 @@ ncr260wy350pp|NCR 2900/260 Wyse 350,
             %e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t
             %{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1
             %{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>,
-       sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/,
-       smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
-       use=ncr260vp+sl,
+       sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, tbc=\E0,
+       use=ncr260vp+sl, use=ncr160wy50+pp,
 ncr260wy350wpp|NCR 2900/260 Wyse 350 wide mode,
        cols#132,
        cup=\Ea%i%p1%dR%p2%dC$<30>,
@@ -19811,26 +19582,24 @@ ncr160wy60pp|NCR 2900/160 Wyse 60,
 ncr160wy60wpp|NCR 2900/160 Wyse 60 wide mode,
        use=ncr260wy60wpp,
 ncrvt100an|ncrvt100pp|NCR VT100 for the 2900 terminal,
-       am, hs, mc5i, mir, msgr, xon,
-       cols#80, it#8, lines#24, nlab#32,
+       hs, mc5i, mir, xon,
+       nlab#32,
        acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~,
-       bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>,
-       clear=\E[2J\E[1;1H$<300>, cr=\r,
+       blink=\E[5m$<30>, bold=\E[1m$<30>,
+       clear=\E[2J\E[1;1H$<300>,
        csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>,
        cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>,
-       cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>,
-       cup=\E[%i%p1%d;%p2%dH$<100>, cuu=\E[%p1%dA$<30>,
-       cuu1=\E[A$<2>, dch=\E[%p1%dP$<40>, dch1=\E[1P$<10>,
-       dl=\E[%p1%dM$<70>, dl1=\E[M$<40>, dsl=\E[31l$<25>,
-       ed=\E[0J$<300>, el=\E[0K$<30>, el1=\E[1K$<30>,
-       enacs=\E(B\E)0$<40>, fsl=1$<10>, home=\E[H$<2>$<80>,
-       ht=^I, hts=\EH, il=\E[%p1%dL$<80>, il1=\E[B\E[L$<80>,
-       ind=\ED,
+       cuf=\E[%p1%dC$<30>, cup=\E[%i%p1%d;%p2%dH$<100>,
+       cuu=\E[%p1%dA$<30>, dch=\E[%p1%dP$<40>,
+       dch1=\E[1P$<10>, dl=\E[%p1%dM$<70>, dl1=\E[M$<40>,
+       dsl=\E[31l$<25>, ed=\E[0J$<300>, el=\E[0K$<30>,
+       el1=\E[1K$<30>, enacs=\E(B\E)0$<40>, fsl=1$<10>,
+       home=\E[H$<2>$<80>, il=\E[%p1%dL$<80>,
+       il1=\E[B\E[L$<80>, ind=\ED,
        is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3l\E(B\E)0$<200>,
-       kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kbs=^H, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=\r, kf1=\EOP,
-       kf2=\EOQ, kf3=\EOR, kf4=\EOS, mc0=\E[i$<100>, nel=\EE,
-       rc=\E8, rev=\E[7m$<30>, ri=\EM$<50>, rmacs=\017$<90>,
+       kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kent=\r, kf1=\EOP, kf2=\EOQ,
+       kf3=\EOR, kf4=\EOS, mc0=\E[i$<100>, nel=\EE, rc=\E8,
+       rev=\E[7m$<30>, ri=\EM$<50>, rmacs=\017$<90>,
        rmir=\E[4l$<80>, rmso=\E[0m$<30>, rmul=\E[0m$<30>,
        rs2=\Ec\E[12;31h\E[?3;4;5;10l\E[?6;7;19;25h\E[33;34l\E[0m\E(
            B\E)0\E%/0n\E[P\031$<200>,
@@ -19839,7 +19608,7 @@ ncrvt100an|ncrvt100pp|NCR VT100 for the 2900 terminal,
            %p3%|%t;7%;%?%p4%t;5%;m$<120>,
        sgr0=\017\E[0m$<120>, smacs=\016$<90>, smir=\E[4h$<80>,
        smso=\E[7m$<30>, smul=\E[4m$<30>, tbc=\E[3g$<40>,
-       tsl=\E[>+1$<70>, use=decid+cpr,
+       tsl=\E[>+1$<70>, use=decid+cpr, use=vt100+4bsd,
 ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
        cols#132,
        is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3h\E(B\E)0$<200>,
@@ -19919,10 +19688,9 @@ ncr7900iv|NCR 7900 model 4,
        bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n,
        cup=\013%p1%{64}%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1,
        fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=\n, kbs=^H,
-       kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET,
-       kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
-       khome=\EH, lf6=blue, lf7=red, lf8=white, nel=\r\n,
-       tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo,
+       kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ,
+       kf8=\ER, khome=\EH, lf6=blue, lf7=red, lf8=white, nel=\r\n,
+       tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo, use=vt52+arrows,
 # Warning: This terminal will lock out the keyboard when it receives a CTRL-D.
 #         The user can enter a CTRL-B to get out of this locked state.
 # In <hpa>, we want to output the character given by the formula:
@@ -20006,7 +19774,7 @@ ndr9500-mc|NDR 9500 with magic cookies (enables underline inverse video invisibl
        blink=\EG2, invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0,
        sgr=\E%%\E(%?%p5%p8%|%t\E)%;%?%p9%t\E$%;\EG%{48}%?%p7%t%{1}
            %+%;%?%p4%t%{2}%+%;%?%p3%p1%|%t%{4}%+%;%?%p2%t%{8}%+%;%c,
-       sgr0=\EG0\E%%\E(, smso=\EG4, smul=\EG8, use=ndr9500,
+       smso=\EG4, smul=\EG8, use=ndr9500,
 
 ndr9500-25-mc|NDR 500 with 25 lines and magic cookies,
        lines#25, use=ndr9500-mc,
@@ -20089,18 +19857,17 @@ uts30|Sperry UTS30 with cp/m@1R1,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\ER, clear=^L,
        cnorm=\ES, cr=\r, csr=\EU%p1%{32}%+%c%p2%{32}%+%c,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\EM,
-       dl=\E[%p1%dM, dl1=\EL, ed=\E[J, el=\E[K, fsl=\r, home=\E[H,
-       ht=^I, ich=\E[%p1%d@, ich1=\EO, il=\E[%p1%dL, il1=\EN,
-       ind=\n, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H, kbs=^H,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\E[H,
-       rc=\EX, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EI,
-       rin=\E[%p1%dA, rmacs=\Ed, rmam=\E[?7l, rmso=\E[m,
-       rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
-       sc=\EW, sgr0=\E[m, smacs=\EF, smam=\E[?7m, smso=\E[7m,
-       smul=\E[4m, tsl=\E], uc=\EPB,
+       cub1=^H, cud1=\E[B, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP,
+       dch1=\EM, dl=\E[%p1%dM, dl1=\EL, ed=\E[J, el=\E[K, fsl=\r,
+       home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\EO, il=\E[%p1%dL,
+       il1=\EN, ind=\n, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H,
+       khome=\E[H, rc=\EX, rev=\E[7m,
+       rf=/usr/share/tabset/vt100, ri=\EI, rin=\E[%p1%dA,
+       rmacs=\Ed, rmam=\E[?7l,
+       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\EW,
+       sgr0=\E[m, smacs=\EF, smam=\E[?7m, tsl=\E], uc=\EPB,
+       use=ansi+apparrows, use=ansi+local, use=ansi+sgrso,
+       use=ansi+sgrul,
 
 #### Tandem
 #
@@ -20137,44 +19904,42 @@ dmterm|deskmate terminal,
        bel=^G, civis=\EG5, clear=\Ej, cnorm=\EG6, cr=\r, cub1=^H,
        cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
        cuu1=\EA, dch1=\ES, dl1=\ER, ed=\EJ, el=\EK, home=\EH, ht=^I,
-       ich1=\EQ, il1=\EP, ind=\EX, invis@, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, kf0=\E1, kf1=\E2, kf2=\E3, kf3=\E4,
-       kf4=\E5, kf5=\E6, kf6=\E7, kf7=\E8, kf8=\E9, kf9=\E0,
+       ich1=\EQ, il1=\EP, ind=\EX, invis@, kf0=\E1, kf1=\E2, kf2=\E3,
+       kf3=\E4, kf4=\E5, kf5=\E6, kf6=\E7, kf7=\E8, kf8=\E9, kf9=\E0,
        khome=\EH, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6,
        lf6=f7, lf7=f8, lf8=f9, lf9=f10, ll=\EE, rmul@, smul@,
-       use=adm+sgr,
+       use=adm+sgr, use=vt52+arrows,
 dt100|dt-100|Tandy DT-100 terminal,
        xon,
        cols#80, lines#24, xmc#1,
        acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, clear=\E[H\E[2J,
-       cr=\r, csr=\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
-       ich1=\E[@, il1=\E[L, ind=\n, is2=\E[?3l\E)0\E(B,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\E[?3i,
-       kf10=\E[?5i, kf2=\E[2i, kf3=\E[@, kf4=\E[M, kf5=\E[17~,
-       kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, khome=\E[H,
-       knp=\E[29~, kpp=\E[28~, lf1=f1, lf2=f2, lf3=f3, lf4=f4, lf5=f5,
-       lf6=f6, lf7=f7, lf8=f8, ri=\EM, rmacs=^O, rmso=\E[m, rmul=\E[m,
-       sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m,
-       use=vt220+cvis,
+       cr=\r, csr=\E[%p1%2d;%p2%2dr, cub1=^H,
+       cup=\010\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, ed=\E[J,
+       el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\n,
+       is2=\E[?3l\E)0\E(B, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+       kcuu1=\E[A, kf1=\E[?3i, kf10=\E[?5i, kf2=\E[2i, kf3=\E[@,
+       kf4=\E[M, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~,
+       kf9=\E[21~, khome=\E[H, knp=\E[29~, kpp=\E[28~, lf1=f1,
+       lf2=f2, lf3=f3, lf4=f4, lf5=f5, lf6=f6, lf7=f7, lf8=f8, ri=\EM,
+       rmacs=^O, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smacs=^N,
+       smso=\E[7m, smul=\E[4m, use=ansi+local1, use=vt220+cvis,
 dt100w|dt-100w|Tandy DT-100 terminal (wide mode),
        cols#132, use=dt100,
 dt110|Tandy DT-110 emulating ANSI,
        xon,
        cols#80, lines#24,
        acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, clear=\E[H\E[2J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       dch1=\E[0P, dl1=\E[0M, ed=\E[0J, el=\E[0K, enacs=\E(B\E)0,
-       home=\E[H, ht=^I, ich1=\E[0@, il1=\E[0L, ind=\n,
-       is2=\E[?3l\E)0\E(B, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kend=\E[K, kf1=\E[1~, kf10=\E[10~, kf2=\E[2~,
-       kf3=\E[3~, kf4=\E[4~, kf5=\E[5~, kf6=\E[6~, kf7=\E[7~,
-       kf8=\E[8~, kf9=\E[9~, khome=\E[G, kich1=\E[@, knp=\E[26~,
-       kpp=\E[25~, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6,
-       lf6=f7, lf7=f8, lf8=f9, lf9=f10, ri=\EM, rmacs=^O, rmso=\E[m,
-       rmul=\E[m, sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m,
+       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H,
+       cup=\010\E[%i%p1%d;%p2%dH, dch1=\E[0P, dl1=\E[0M,
+       ed=\E[0J, el=\E[0K, enacs=\E(B\E)0, home=\E[H, ht=^I,
+       ich1=\E[0@, il1=\E[0L, ind=\n, is2=\E[?3l\E)0\E(B,
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[K,
+       kf1=\E[1~, kf10=\E[10~, kf2=\E[2~, kf3=\E[3~, kf4=\E[4~,
+       kf5=\E[5~, kf6=\E[6~, kf7=\E[7~, kf8=\E[8~, kf9=\E[9~,
+       khome=\E[G, kich1=\E[@, knp=\E[26~, kpp=\E[25~, lf0=f1,
+       lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf8=f9,
+       lf9=f10, ri=\EM, rmacs=^O, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+       smacs=^N, smso=\E[7m, smul=\E[4m, use=ansi+local1,
        use=vt220+cvis,
 pt210|TRS-80 PT-210 printing terminal,
        hc, os,
@@ -20337,25 +20102,13 @@ tek4105|Tektronix 4105,
 
 # (tek4105-30: I added <rmam>/<smam> based on the init string -- esr)
 tek4105-30|Tektronix 4015 emulating 30 line VT100,
-       am, mir, msgr, xenl, xon,
-       cols#80, it#8, lines#30, vt#3,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
-       clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C$<2>,
-       cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
-       cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
-       enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
-       rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
-       rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>,
-       rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
-       sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5
-           %;m%?%p9%t\016%e\017%;$<2>,
-       sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
-       smso=\E[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
-       use=vt100+fnkeys,
+       mir, xenl, xon,
+       lines#30, vt#3,
+       cub1=^H, cud1=\n, cuf1=\E[C$<2>, cuu1=\E[A$<2>, kcub1=\EOD,
+       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmam=\E[?7l,
+       rmkx=\E[?1l\E>, rmso=\E[m$<2>, smam=\E[?7h,
+       smkx=\E[?1h\E=, use=ansi+csr, use=ansi+local,
+       use=vt100+4bsd, use=vt100+fnkeys,
 
 # Tektronix 4105 from BRL
 # The following setup modes are assumed for normal operation:
@@ -20380,30 +20133,26 @@ tek4105-30|Tektronix 4015 emulating 30 line VT100,
 # "tek4105a" is just a guess:
 tek4105a|Tektronix 4105 (BRL),
        OTbs, OTpt, msgr, xon,
-       OTkn#8, cols#80, it#8, lines#30, vt#3,
-       acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
-       civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J,
-       cnorm=\E%!0\ETD10\E%!1, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E%!1, kbs=^H,
+       OTkn#8, cols#80, lines#30, vt#3,
+       acsc=, bel=^G, blink=\E[5m, bold=\E[1m,
+       civis=\E%!0\ETD00\E%!1, cnorm=\E%!0\ETD10\E%!1, cr=\r,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
+       cvvis=\E%!0\ETD70\E%!1, dch=\E[%p1%dP, dch1=\E[P,
+       ech=\E[%p1%dX, home=\E[H, ind=\n, is2=\E%!1, kbs=^H,
        kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOA,
        kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ, kf6=\EOR,
        kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F8,
-       ll=\E[30;H, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+       ll=\E[30;H, nel=\EE, rev=\E[7m, ri=\EM, rmacs=^O,
        rmcup=\E%!0\ELBH=\E%!1, rmir=\E[4l, rmkx=\E[?1l\E>,
        rmso=\E[m, rmul=\E[m,
        rs2=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40
            \ELI100\ELLA>\ELM0\EKE0\ENF1\EKS0\END0\E%!1\Ec\E[?3;5l
            \E[?7;8h\E[r\E[m\E>,
-       sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       use=ecma+index,
+       sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
+       smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, use=ansi+csr,
+       use=ansi+erase, use=ansi+idl, use=ansi+inittabs,
+       use=ansi+local, use=ecma+index,
 
-#
 # Tektronix 4106/4107/4109 from BRL
 # The following setup modes are assumed for normal operation:
 #      CODE ansi               COLUMNMODE 80           CRLF no
@@ -20427,28 +20176,25 @@ tek4105a|Tektronix 4105 (BRL),
 # "IC" cannot be used in combination with "im" & "ei".
 tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109,
        msgr, xon,
-       cols#80, it#8, lines#32, vt#3,
-       acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
-       civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J,
-       cnorm=\E%!0\ETD10\E%!1, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
-       il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E%!1, kbs=^H,
+       cols#80, lines#32, vt#3,
+       acsc=, bel=^G, blink=\E[5m, bold=\E[1m,
+       civis=\E%!0\ETD00\E%!1, cnorm=\E%!0\ETD10\E%!1, cr=\r,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
+       cvvis=\E%!0\ETD70\E%!1, dch=\E[%p1%dP, dch1=\E[P,
+       ech=\E[%p1%dX, home=\E[H, ind=\n, is2=\E%!1, kbs=^H,
        kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOA,
        kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EOP, kf5=\EOQ, kf6=\EOR,
        kf7=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F8,
-       ll=\E[32;H, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+       ll=\E[32;H, nel=\EE, rev=\E[7m, ri=\EM, rmacs=^O,
        rmcup=\E%!0\ELBH=\E%!1, rmir=\E[4l, rmkx=\E[?1l\E>,
        rmso=\E[m, rmul=\E[m,
        rs1=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40
            \ELI100\ELLB0\ELM0\EKE0\ENF1\EKS0\END0\ERE0\E%!1\Ec\E[?3
            ;5l\E[?7;8h\E[r\E[m\E>,
-       sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
-       smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, tbc=\E[3g,
-       use=ecma+index,
+       sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
+       smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, use=ansi+csr,
+       use=ansi+erase, use=ansi+idl, use=ansi+inittabs,
+       use=ansi+local, use=ecma+index,
 
 # Refer to:
 # TEK Programmer's Reference
@@ -20476,13 +20222,12 @@ tek4107|tek4109|Tektronix terminals 4107 4109,
        cub1=^H, cud1=\n, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E%!3,
        dim=\E%!1\E[<0m$<2>\E%!0, ed=\EJ, el=\EK, ht=^I, ind=\n,
-       kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
-       rev=\E%!1\E[7m$<2>\E%!0, ri=\EI,
+       kbs=^H, rev=\E%!1\E[7m$<2>\E%!0, ri=\EI,
        rmso=\E%!1\E[m$<2>\E%!0, rmul=\E%!1\E[m$<2>\E%!0,
        sgr=\E%%!1\E[%?%p1%t;7;5%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;
            %?%p5%t<0%;%?%p6%t;1%;m$<2>\E%%!0,
        sgr0=\E%!1\E[m$<2>\E%!0, smso=\E%!1\E[7;5m$<2>\E%!0,
-       smul=\E%!1\E[4m$<2>\E%!0,
+       smul=\E%!1\E[4m$<2>\E%!0, use=vt52+arrows,
 # Tektronix 4207 with sysline.  In the ancestral termcap file this was 4107-s;
 # see the note attached to tek4207.
 tek4207-s|Tektronix 4207 with sysline but no memory,
@@ -20559,34 +20304,27 @@ otek4115|Tektronix 4115 (old),
        OTbs, am, da, db, eo,
        cols#80, it#8, lines#34,
        cbt=\E[Z, clear=\E[H\E[2J,
-       cnorm=\E%!0\ELBG8\E%!1\E[34;1H, cub1=\E[D, cud1=\E[B,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
-       cvvis=\E%!0\ELBB2\E%!1, dch1=\E[P, dl1=\E[M, ed=\E[J,
-       el=\E[K, home=\E[H, ht=^I, if=/usr/share/tabset/vt100,
-       il1=\E[L,
+       cnorm=\E%!0\ELBG8\E%!1\E[34;1H,
+       cup=\E[%i%p1%d;%p2%dH, cvvis=\E%!0\ELBB2\E%!1,
+       dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+       if=/usr/share/tabset/vt100, il1=\E[L,
        is2=\E%!0\E%\014\ELV0\EKA1\ELBB2\ENU@=\ELLB2\ELM0\ELV1\EKYA?
            \E%!1\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[m,
        kbs=^H, ri=\EM, rmam=\E[?7l,
        rmcup=\E%!0\ELBG8\E%!1\E[34;1H\E[J, rmir=\E[4l,
        rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
        smcup=\E%!0\ELBB2\E%!1, smir=\E[4h, smkx=\E=, smso=\E[7m,
-       smul=\E[4m,
+       smul=\E[4m, use=ansi+local1,
 tek4115|Tektronix 4115 entry with more ANSI capabilities (new),
        am, xon,
        cols#80, lines#34,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
-       cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%p1%{1}%+%dG,
-       ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
-       il1=\E[L, ind=\n, invis=\E[8m, kbs=^H, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rev=\E[7m,
-       rmam=\E[?7l, rmso=\E[m, rmul=\E[m,
-       sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;
-           %;%?%p7%t8;%;m,
-       sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       vpa=\E[%p1%{1}%+%dd, use=ansi+rep,
+       bel=^G, cr=\r, cub1=^H, cud1=\n, dch1=\E[P, ich=\E[%p1%d@,
+       ich1=\E[@, ind=\n, kcuu1=\E[A, rmam=\E[?7l, sgr0=\E[m,
+       smam=\E[?7h, use=ansi+arrows, use=ansi+cup,
+       use=ansi+erase, use=ansi+idl, use=ansi+local,
+       use=ansi+rep, use=ansi+rca, use=ansi+sgrbold,
+       use=ansi+tabs,
+
 # The tek4125 emulates a VT100 incorrectly - the scrolling region
 # command is ignored.  The following entry replaces <csr> with the needed
 # <il>, <il>, and <smir>; removes some cursor pad commands that the tek4125
@@ -20630,15 +20368,15 @@ tek4207|Tektronix 4207 graphics terminal with memory,
 tek4404|Tektronix 4404,
        OTbs,
        cols#80, it#8, lines#32,
-       blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
-       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[1M,
-       ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\E[2I, il1=\E[1L,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rc=\E8,
+       blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cub1=^H, cud1=\n,
+       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
+       dl1=\E[1M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\E[2I,
+       il1=\E[1L, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
        rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l,
-       rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sc=\E7, sgr0=\E[m,
+       rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sgr0=\E[m,
        smcup=\E%\E!1\E[1;32r\E[?6l\E>, smir=\E[4h,
-       smkx=\E[?1l, smso=\E[7m, smul=\E[4m,
+       smkx=\E[?1l, smso=\E[7m, smul=\E[4m, use=ansi+csr,
+
 # Some unknown person wrote:
 # I added the is string - straight Unix has ESC ; in the login
 # string which sets a ct8500 into monitor mode (aka 4025 snoopy
@@ -20671,9 +20409,7 @@ tek4205|Tektronix 4205,
        colors#8, cols#80, it#8, lines#30, ncv#49, pairs#63,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink=\E[5m, bold=\E[=7;<4m, cbt=\E[Z,
-       clear=\E[2J\E[H, cr=\r, cub=\E[%p1%dD, cub1=\E[D,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+       clear=\E[2J\E[H, cr=\r, cup=\E[%i%p1%d;%p2%dH,
        dch1=\E[1P, dim=\E[=1;<6m, dl=\E[%p1%dM, dl1=\E[1M,
        ech=\E%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
        home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[1L,
@@ -20704,7 +20440,7 @@ tek4205|Tektronix 4205,
             %e1m%;,
        sgr0=\E[=0;<1m\E[24;25;27m\017, smacs=^N,
        smcup=\E%%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m,
-       smul=\E[4m, tbc=\E[1g,
+       smul=\E[4m, tbc=\E[1g, use=ansi+local,
 
 #### Teletype (tty)
 #
@@ -20761,9 +20497,9 @@ scanset|sc410|sc415|Tymshare Scan Set,
        cols#80, lines#24,
        acsc=j%k4l<m-q\,x5, bel=^G, clear=\EH\EJ, cr=\r, cub1=^H,
        cud1=\n, cuf1=^I, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
-       cuu1=^K, ed=\EJ, el=\EK, home=\EH, ind=\n, kcub1=\ED,
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, mc0=\E;3, mc4=\E;0,
+       cuu1=^K, ed=\EJ, el=\EK, home=\EH, ind=\n, mc0=\E;3, mc4=\E;0,
        mc5=\E;0, rc=^C, rmacs=^O, rs1=\E>, sc=^B, smacs=^N,
+       use=vt52+arrows,
 
 #### Volker-Craig (vc)
 #
@@ -20851,21 +20587,18 @@ ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX,
        cols#80, it#8, lines#24,
        acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x
             \263,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r,
-       cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
-       home=\E[H, hpa=\E[%i%p1%dG, ind=\E[S\E[B,
-       indn=\E[%p1%dS\E[%p1%dB, invis=\E[30;40m, kbs=^H,
-       kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kdch1=^?, kend=\E[Y, kf1=\240, kf10=\251, kf2=\241, kf3=\242,
-       kf4=\243, kf5=\244, kf6=\245, kf7=\246, kf8=\247, kf9=\250,
-       khome=\E[H, kich1=\E[^H, knp=\E[U, kpp=\E[V, ll=\E[24;1H,
-       nel=\r, rev=\E[7m, ri=\E[T\E[A, rin=\E[%p1%dT\E[%p1%dA,
-       rmso=\E[m, rmul=\E[m,
+       bel=^G, clear=\Ec, cr=\r, cup=\E[%i%p1%d;%p2%dH,
+       ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H,
+       hpa=\E[%i%p1%dG, ind=\E[S\E[B, indn=\E[%p1%dS\E[%p1%dB,
+       invis=\E[30;40m, kcbt=^], kdch1=^?, kend=\E[Y, kf1=\240,
+       kf10=\251, kf2=\241, kf3=\242, kf4=\243, kf5=\244, kf6=\245,
+       kf7=\246, kf8=\247, kf9=\250, kich1=\E[^H, knp=\E[U,
+       kpp=\E[V, ll=\E[24;1H, nel=\r, rev=\E[7m, ri=\E[T\E[A,
+       rin=\E[%p1%dT\E[%p1%dA,
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
            %;%?%p7%t30;40%;m,
-       sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+       sgr0=\E[m, use=ansi+arrows, use=ansi+local,
+       use=ansi+sgrbold,
 
 #### Apple II
 #
@@ -20906,8 +20639,7 @@ apple2e|Apple //e,
 # mcvax!vu44!vu45!wilcke uses the "ap" entry together with Ascii Express Pro
 # 4.20, with incoming and outgoing terminals both on 0, emulation On.
 apple2e-p|Apple //e via Pascal,
-       cup=\036%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, kcub1=^H,
-       kcud1=\n, use=apple2e,
+       cup=\036%p2%{32}%+%c%p1%{32}%+%c, use=apple2e,
 # (ASCII Express) MouseTalk "Standard Apple //" emulation from BRL
 # Enable DC3/DC1 flow control with "stty ixon -ixany".
 apple-ae|ASCII Express,
@@ -21012,9 +20744,9 @@ apple-videx3|vapple|Apple II with 80 col card,
        cols#80, lines#24,
        clear=\Ev, cub1=\ED, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\Ex,
-       home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
-       kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!, kf5=\E", kf6=\E#,
-       kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH,
+       home=\EH, kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!,
+       kf5=\E", kf6=\E#, kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH,
+       use=vt52+arrows,
 #From: decvax!cbosgd!cbdkc1!mww Mike Warren via BRL
 aepro|Apple II+ running ASCII Express Pro--vt52,
        OTbs,
@@ -21038,12 +20770,12 @@ lisa|Apple Lisa console display (black on white),
        OTbs, am, eo, msgr,
        cols#88, it#8, lines#32,
        acsc=jdkclfmenbqattuvvuwsx`, civis=\E[5h, clear=^L,
-       cnorm=\E[5l, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
-       ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L,
-       is2=\E>\E[m\014, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+       cnorm=\E[5l, cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P,
+       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
+       il1=\E[L, is2=\E>\E[m\014, kbs=^H, kcub1=\E[D, kcud1=\E[B,
        kcuf1=\E[C, kcuu1=\E[A, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
        sgr0=\E[m, smacs=\E[11m, smso=\E[7m, smul=\E[4m,
+       use=ansi+local1,
 liswb|Apple Lisa console display (white on black),
        is2=\E>\E[0;7m\014, rmso=\E[0;7m, rmul=\E[0;7m,
        smso=\E[m, smul=\E[4m, use=lisa,
@@ -21063,16 +20795,15 @@ lisaterm|Apple Lisa or Lisa/2 running LisaTerm VT100 emulation,
        OTbs, OTpt, am, xenl, xon,
        OTkn#4, cols#80, it#8, lines#24, vt#3,
        bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
-       el=\E[K, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H, kcub1=\EOD,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K,
+       home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H, kcub1=\EOD,
        kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP, kf1=\EOQ,
-       kf2=\EOR, kf3=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, rc=\E8,
-       rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+       kf2=\EOR, kf3=\EOS, lf0=F1, lf1=F2, lf2=F3, lf3=F4, rev=\E[7m,
+       ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
        rs1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r,
-       sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
-       tbc=\E[3g,
+       sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+       tbc=\E[3g, use=ansi+csr, use=ansi+local,
+
 # Lisaterm in 132 column ("wide") mode.
 lisaterm-w|Apple Lisa with Lisaterm in 132 column mode,
        cols#132,
@@ -21126,11 +20857,11 @@ trs16|trs-80 model 16 console,
        cnorm=\ERC, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
        dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL,
-       ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
-       kf0=^A, kf1=^B, kf2=^D, kf3=^L, kf4=^U, kf5=^P, kf6=^N, kf7=^S,
-       khome=^W, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7,
-       lf7=f8, mc4=\E]+, mc5=\E]=, rmacs=\ERg, rmso=\ER@, sgr0=\ER@,
-       smacs=\ERG, smso=\ERD,
+       ind=\n, kbs=^H, kf0=^A, kf1=^B, kf2=^D, kf3=^L, kf4=^U, kf5=^P,
+       kf6=^N, kf7=^S, khome=^W, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5,
+       lf5=f6, lf6=f7, lf7=f8, mc4=\E]+, mc5=\E]=, rmacs=\ERg,
+       rmso=\ER@, sgr0=\ER@, smacs=\ERG, smso=\ERD,
+       use=vt52+arrows,
 
 #### Commodore Business Machines
 #
@@ -21163,18 +20894,16 @@ amiga|Amiga ANSI,
        OTbs, am, bw, xenl,
        cols#80, lines#24,
        acsc=, bel=^G, blink=\E[7;2m, bold=\E[1m, cbt=\E[Z,
-       civis=\E[0 p, clear=\E[H\E[J, cnorm=\E[ p, cub=\E[%p1%dD,
-       cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
-       cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
-       invis=\E[8m, is2=\E[20l, kbs=^H, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kf0=\E[9~, kf1=\E[0~, kf2=\E[1~,
-       kf3=\E[2~, kf4=\E[3~, kf5=\E[4~, kf6=\E[5~, kf7=\E[6~,
-       kf8=\E[7~, kf9=\E[8~, rev=\E[7m, ri=\E[T, rmacs=^O,
-       rmso=\E[m, rmul=\E[m, rs1=\Ec, sgr0=\E[m, smacs=^N,
-       smso=\E[7m, smul=\E[4m, use=ecma+index,
+       civis=\E[0 p, cnorm=\E[ p, cup=\E[%i%p1%d;%p2%dH,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, home=\E[H,
+       ich=\E[%p1%d@, ich1=\E[@, ind=\E[S, invis=\E[8m,
+       is2=\E[20l, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+       kcuu1=\E[A, kf0=\E[9~, kf1=\E[0~, kf2=\E[1~, kf3=\E[2~,
+       kf4=\E[3~, kf5=\E[4~, kf6=\E[5~, kf7=\E[6~, kf8=\E[7~,
+       kf9=\E[8~, rev=\E[7m, ri=\E[T, rmacs=^O, rmso=\E[m,
+       rmul=\E[m, rs1=\Ec, sgr0=\E[m, smacs=^N, smso=\E[7m,
+       smul=\E[4m, use=ansi+erase, use=ansi+idl, use=ansi+local,
+       use=ecma+index,
 
 # From: Hans Verkuil <hans@wyst.hobby.nl>, 4 Dec 1995
 # (amiga: added empty <acsc> to suppress a warning.
@@ -21217,17 +20946,13 @@ amiga-vnc|Amiga using VNC console (black on light gray),
        am, da, db, msgr, ndscr,
        btns#1, colors#16, cols#80, lines#24, lm#0, ncv#0, pairs#0x100,
        bel=^G, blink=\E[7;2m, bold=\E[1m, civis=\E[0p,
-       clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\E[>?6h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[1M, ed=\E[J, el=\E[K, flash=^G,
+       cnorm=\E[p\E[>?6l, cr=\r, csr=\E[%i%p1%d;%p2%dr,
+       cup=\E[%i%p1%d;%p2%dH, cvvis=\E[>?6h, dch=\E[%p1%dP,
+       dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[1M, flash=^G,
        ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[1L, ind=\ED,
        invis=\E8m,
        is2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h,
-       kbs=^H, kcbt=\233Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kdch1=^?, kf0=\E[9~, kf1=\E[0~, kf2=\E[1~,
+       kcbt=\233Z, kdch1=^?, kf0=\E[9~, kf1=\E[0~, kf2=\E[1~,
        kf3=\E[2~, kf4=\E[3~, kf5=\E[4~, kf6=\E[5~, kf7=\E[6~,
        kf8=\E[7~, kf9=\E[8~, khlp=\E[?~, khome=\E[44~, kll=\E[45~,
        kmous=\E[M, knp=\E[42~, kpp=\E[41~, nel=\EE, oc=\E[0m,
@@ -21237,7 +20962,8 @@ amiga-vnc|Amiga using VNC console (black on light gray),
        setab=\E[%?%p1%{8}%>%t%'F'%p1%+%d%e4%p1%d%;m,
        setaf=\E[%?%p1%{8}%>%t%'2'%p1%+%d%e3%p1%d%;m,
        sgr0=\E[0m\017\E[30;85;>15m, smcup=\E[?7h, smkx=\E[?1h,
-       smso=\E[1m, smul=\E[4m, use=ecma+index,
+       smso=\E[1m, smul=\E[4m, use=ansi+arrows, use=ansi+erase,
+       use=ansi+local, use=ecma+index,
 
 # MorphOS on Genesi Pegasos
 # By Pavel Fedin <sonic_amiga@rambler.ru>
@@ -21376,15 +21102,13 @@ minix-old|minix-1.5|minix console (v1.5),
        xon, NQ,
        cols#80, it#8, lines#25,
        bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=\r,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, home=\E[H, ht=^I,
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
-       kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, kf4=\E[S, kf5=\E[G,
-       khome=\E[H, nel=\r\n, rev=\E[7m, ri=\EM, rmso=\E[0m,
+       cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       ed=\E[0J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@,
+       ich1=\E[@, ind=\n, kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T,
+       kf4=\E[S, kf5=\E[G, nel=\r\n, rev=\E[7m, ri=\EM, rmso=\E[0m,
        rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
+       use=ansi+arrows, use=ansi+idl, use=ansi+local,
+
 # The linewrap option can be specified by editing /usr/include/minix/config.h
 # before recompiling the minix 1.5 kernel.
 minix-old-am|minix console with linewrap,
@@ -21402,9 +21126,9 @@ pc-coherent|pcz19|coherent|IBM PC console running Coherent,
        cols#80, it#8, lines#25,
        bel=^G, clear=\EE, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EN,
-       ed=\EJ, el=\EK, home=\EH, ht=^I, ind=\n, kbs=^H, kcub1=\ED,
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, ri=\EI, rmir=\EO,
-       rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep,
+       ed=\EJ, el=\EK, home=\EH, ht=^I, ind=\n, kbs=^H, khome=\EH,
+       ri=\EI, rmir=\EO, rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep,
+       use=vt52+arrows,
 
 # According to the Venix 1.1 manual, the PC console is similar
 # to a DEC VT52.  Differences seem to be (1) arrow keys send
@@ -21436,16 +21160,17 @@ mai|basic4|MAI Basic Four in ANSI mode,
        am, da, db, mir, msgr,
        cols#82, it#8, lines#25,
        bel=^G, blink=\E[5m, bold=\E[1m, clear=^]^_, cnorm=\E[?7h,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=^X,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, cvvis=\E[?7l, dch1=\E[1P,
-       dl1=\E[M, ed=^_, el=^^, home=^], ht=^I,
-       if=/usr/share/tabset/vt100, il1=\E[L, ind=\ED,
+       cr=\r, cub1=^H, cud1=\n, cuf1=^X, cup=\E[%i%p1%d;%p2%dH,
+       cuu1=^Z, cvvis=\E[?7l, dch1=\E[1P, dl1=\E[M, ed=^_, el=^^,
+       home=^], ht=^I, if=/usr/share/tabset/vt100, il1=\E[L,
+       ind=\ED,
        is2=\E>\E[?1h\E[?7h\E[?5l\017\E(B\E[m\E[20l\E[1;24r\E[24;1H,
        kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
        kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU,
-       kf7=\EOV, kf8=\EOW, nel=\r\ED, rc=\E8, rev=\E[7m, ri=\E[T,
-       rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m,
-       smir=\E[4h, smso=\E[7m, smul=\E[4m,
+       kf7=\EOV, kf8=\EOW, nel=\r\ED, rev=\E[7m, ri=\E[T,
+       rmir=\E[4l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smir=\E[4h,
+       smso=\E[7m, smul=\E[4m, use=ansi+csr,
+
 # basis from Peter Harrison, Computer Graphics Lab, San Francisco
 #   ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA
 #
@@ -21464,8 +21189,7 @@ mai|basic4|MAI Basic Four in ANSI mode,
 # (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr)
 basis|BASIS108 computer with terminal translation table active,
        clear=\E*$<300/>, cud1=\n$<5000/>, ed=\EY, el=\ET, kbs=^H,
-       kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E),
-       smso=\E(, use=adm3a,
+       rmso=\E), sgr0=\E), smso=\E(, use=adm3a,
 # luna's BMC terminal emulator
 luna|luna68k|LUNA68K Bitmap console,
        cols#88, lines#46, use=ansi-mini,
@@ -21496,24 +21220,20 @@ m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'infor
        OTbs, eslok, hs, xenl,
        cols#80, it#8, lines#24, wsl#72, xmc#0,
        acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G,
-       blink=\E[5m, bold=\E[1m, civis=\E[<1h, clear=\E[H\E[J,
-       cnorm=\E[<1l, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, flash=^G, fsl=\n,
-       home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\n, ip=$<7/>,
+       blink=\E[5m, bold=\E[1m, civis=\E[<1h, cnorm=\E[<1l, cr=\r,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       flash=^G, fsl=\n, home=\E[H, ht=^I, ind=\n, ip=$<7/>,
        is1=\E:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0,
-       is3=\E[?3l, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, kf0=\EOp,
+       is3=\E[?3l, kclr=\E[2J, kdch1=\E[P, kdl1=\E[M, kf0=\EOp,
        kf1=\EOq, kf10=\EOp, kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu,
-       kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, khome=\E[H,
-       kich1=\E[4h, kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H,
-       mc0=\E[i, nel=\r\n, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
-       rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
-       rs1=\Ec\E[?4l\E[12h, rs2=\Ec\E)0, sc=\E7, sgr0=\E[m,
-       smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=^_@A,
-       use=ansi+cpr,
+       kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, kich1=\E[4h,
+       kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H, mc0=\E[i,
+       nel=\r\n, rev=\E[7m, ri=\EM, rmacs=^O, rmir=\E[4l,
+       rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E[?4l\E[12h,
+       rs2=\Ec\E)0, sgr0=\E[m, smacs=^N, smir=\E[4h, smso=\E[7m,
+       smul=\E[4m, tsl=^_@A, use=ansi+arrows, use=ansi+cpr,
+       use=ansi+csr, use=ansi+erase, use=ansi+idl,
+       use=ansi+local,
 
 # From: Alexandre Montaron <canal@mygale.org>, 18 Jun 1998, updated 19 Sep 2016
 #
@@ -21559,27 +21279,26 @@ minitel1|minitel 1,
           \177\,--,
 minitel1b|minitel 1-bistandard (in 40cols mode),
        mir,
-       cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
-       cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L,
-       is1=\E;iYA\E;jYC, kbs@, kcan@, kclr=\E[2J, kctab=^I,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P,
-       kdl1=\E[M, kent@, kf1=^SD, kf10=^Y0, kf11=^Y1, kf12=^Y/,
-       kf13=^Y{1, kf14=^Y{2, kf15=^Y{3, kf16=^Y{4, kf17=^Y{5,
-       kf18=^Y{6, kf19=^Y{7, kf2=^SC, kf20=^Y{8, kf21=^Y{9,
-       kf22=^Y{0, kf23=^Y{*, kf24=^Y{#, kf3=^SF, kf4=^SA, kf5=^SG,
-       kf6=^SE, kf7=^Y8, kf8=^Y\,, kf9=^Y., khlp@, khome=\E[H,
-       kich1=\E[4h, kil1=\E[L, krfr@, lf1=Guide, lf2=Repetition,
-       lf3=Sommaire, lf4=Envoi, lf5=Correction, lf6=Annulation,
-       rmir=\E[4l, smir=\E[4h,
+       cub1=^H, cud1=\n, cuf1=^I, cuu1=^K, dch=\E[%p1%dP, dch1=\E[P,
+       ed=\E[J, el1=\E[1K, is1=\E;iYA\E;jYC, kbs@, kcan@,
+       kclr=\E[2J, kctab=^I, kdch1=\E[P, kdl1=\E[M, kent@, kf1=^SD,
+       kf10=^Y0, kf11=^Y1, kf12=^Y/, kf13=^Y{1, kf14=^Y{2,
+       kf15=^Y{3, kf16=^Y{4, kf17=^Y{5, kf18=^Y{6, kf19=^Y{7,
+       kf2=^SC, kf20=^Y{8, kf21=^Y{9, kf22=^Y{0, kf23=^Y{*,
+       kf24=^Y{#, kf3=^SF, kf4=^SA, kf5=^SG, kf6=^SE, kf7=^Y8,
+       kf8=^Y\,, kf9=^Y., khlp@, kich1=\E[4h, kil1=\E[L, krfr@,
+       lf1=Guide, lf2=Repetition, lf3=Sommaire, lf4=Envoi,
+       lf5=Correction, lf6=Annulation, rmir=\E[4l, smir=\E[4h,
        u8=\001%[ABCPtuvwxyz0123456789:;<=>?]\004,
        .ich=\E[%p1%d@, .ich1=\E[@, .kLFT=\E[P, .kRIT=\E[4h,
        .kb2=^Y{g, .kcbt=^Y{i, .kel=^X, .mc0=\E:|k, .rmkx=\E;jYA,
        .rs1=\E[4l\E[2l, .smkx=\E;iYA\E;jYC, .u8=^ACu<^D,
+       use=ansi+arrows, use=ansi+idl, use=ansi+local,
        use=minitel1,
+
 # rmkx posait des problemes (logout en sortant de vi).
 minitel1b-80|minitel 1-bistandard (standard teleinformatique),
-       am@, bw@, eslok@, hz@, msgr, G0,
+       am@, bw@, eslok@, hz@, msgr,
        colors@, cols#80, it#8, pairs@,
        acsc@, blink=\E[5m, bold=\E[1m, civis=\037@A\024\n,
        clear=\E[H\E[J, cnorm=\037@A\021\n, cuf1=\E[C,
@@ -21610,7 +21329,6 @@ minitel1b-80|minitel 1-bistandard (standard teleinformatique),
        .sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1
             ;%;m,
        .smacs=^N, C0=}#f[j+k+l+m+n+o~q=s_t+u+v+w+x!0\032,
-       E0=^O, S0=^N,
        XC=B\016%\017\,\243#\,\247]\,\260[\,\340@\,\347\\\\\,\351{\,
           \350}\,\371|\,\300A\,\301A\,\302A\,\303A\,\304A\,\305A\,
           \306E\,\307C\,\310E\,\311E\,\312E\,\313E\,\314I\,\315I\,
@@ -21662,10 +21380,9 @@ minitel1b-nb|minitel 1b (40cols) noir & blanc sans couleurs avec bold et dim ...
 # Fonctionne par exemple avec Midnight Commander (mc).
 
 minitel2-80|minitel 2 (80cols) avec filets VT100 (DEC),
-       G0,
        acsc=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}},
        enacs=\E)0, rmacs=^O, smacs=^N, u6=\E[%i%d;%dR,
-       C0=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}}, E0=^O,
+       C0=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}},
        S0=\E)0\016,
        XC=B%\E(B\,\243\E(3}\,\247\E(R[\,\257\E(3v\,\260\E(3f\,\261
           \E(3g\,\265\E(3Y\,\267\E(3~\,\274\E(3O\,\275\E(3P\,\276
@@ -21683,7 +21400,6 @@ minitel2-80|minitel 2 (80cols) avec filets VT100 (DEC),
        use=minitel12-80,
 
 minitel12-80|minitel 12 (80cols),
-       G0,
        civis=\E[<1h, cnorm=\E[<1l, is2=\E[12h, u6=\E[%i%d;%dH,
        u7=\E[6n,
        .acsc=ffggj+k+l+m+n+ovq-swt+u+v+w+xx}}\,m+k.l-j0
@@ -21691,7 +21407,7 @@ minitel12-80|minitel 12 (80cols),
        .enacs=\E)3, .rmacs=^O, .rs3=\E[?4l, .scs=\E(%p1%c,
        .smacs=^N,
        C0=ffggj+k+l+m+n+ovq-swt+u+v+w+xx}}\,m+k.l-j0\177,
-       E0=^O, S0=\E)3\016,
+       S0=\E)3\016,
        XC=B%\E(B\,\243\E(3}\,\247\E(R[\,\257\E(3v\,\260\E(3f\,\261
           \E(3g\,\267\E(3~\,\274\E(3O\,\275\E(3P\,\276\E(3Q\,\300A
           \,\301A\,\302A\,\303A\,\304A\,\305A\,\306E\,\307C\,\310E
@@ -21745,7 +21461,7 @@ screen.minitel1b-80|screen.minitel2-80|screen.minitel12-80|Screen specific for m
 
 screen.minitel1-nb|Screen specific for minitel1-nb,
        colors@, ncv@, pairs@,
-       bold=\E[1m, dim=\E[2m, op@, setab@, setaf@, setb@, setf@,
+       bold=\E[1m, op@, setab@, setaf@, setb@, setf@,
        use=screen.minitel1,
 
 screen.minitel1b-nb|Screen specific for minitel1b-nb,
@@ -21757,30 +21473,26 @@ screen.minitel1b-nb|Screen specific for minitel1b-nb,
 
 linux-m1|Linux Minitel 1 "like" Couleurs,
        am, bw@, ccc, mir, msgr, xenl,
-       colors#8, it#8, ncv#16, pairs#64,
+       it#8, ncv#16,
        acsc=a\261f\370g\361h\260j\274k\273l\311m\310n\316q\315t
             \314u\271v\312w\313x\272y\363z\362{\343|\252~\372,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
-       dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
-       ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)U,
-       flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%d`,
-       ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n,
+       bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
+       el1=\E[1K, enacs=\E)U, flash=\E[?5h$<100/>\E[?5l,
+       hpa=\E[%i%p1%d`, ht=^I, hts=\EH, ind=\n,
        initc=\E]P%p1%{15}%&%X%p2%{255}%&%02X%p3%{255}%&%02X%p4
              %{255}%&%02X,
        is2=\E]R\E]P3FFFF80\E[?8c, ka1=\EOw, ka3=\EOy, kb2=\E[G,
-       kbs=^?, kc1=\EOq, kc3=\EOs, kcbt=\E^I, kclr=\E\r, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\E\E[A, kent=\EOM,
-       kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
-       kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
-       kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\E[[B,
-       kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~,
-       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kil1=\E\E[B,
-       kmous=\E[M, nel=\EE, oc=\E]R\E]P3FFFF80, op=\E[39;49m,
-       rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
-       rmpch=\E[10m, rmso=\E[27m, rs1=\Ec, rs3=\E[37;40m\E[8],
-       sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m,
+       kbs=^?, kc1=\EOq, kc3=\EOs, kcbt=\E^I, kclr=\E\r,
+       kdl1=\E\E[A, kent=\EOM, kf1=\E[[A, kf10=\E[21~,
+       kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+       kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+       kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
+       kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+       khome=\E[1~, kil1=\E\E[B, kmous=\E[M, nel=\EE,
+       oc=\E]R\E]P3FFFF80, op=\E[39;49m, rev=\E[7m, ri=\EM,
+       rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmpch=\E[10m,
+       rmso=\E[27m, rs1=\Ec, rs3=\E[37;40m\E[8], sgr0=\E[m,
        smacs=^N, smam=\E[?7h, smir=\E[4h, smpch=\E[11m,
        smso=\E[7m, tbc=\E[3g, vpa=\E[%i%p1%dd, .VN=\E[?5l,
        .VR=\E[?5h, .am@, .ich=\E[%p1%d@, .ich1=\E[@, .ll=\E[99H,
@@ -21794,7 +21506,10 @@ linux-m1|Linux Minitel 1 "like" Couleurs,
           \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
           \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
           \n\n\n\n\n\n\n\n\n\n,
-       use=vt220+pcedit, use=vt220+cvis, use=linux+decid,
+       use=ansi+arrows, use=ansi+csr, use=ansi+cup,
+       use=ansi+erase, use=ansi+idl, use=ansi+local1,
+       use=klone+color, use=vt220+pcedit, use=vt220+cvis,
+       use=linux+decid,
 
 # 1. Using double-shapes for VT100 graphical chars (eg: mc).
 # 2. Native brown color corrected to good yellow color.
@@ -21829,8 +21544,7 @@ linux-m2|Linux Minitel 2 "like" Couleurs (Vert/Blanc/Noir+Bleu),
            900\E]P600A900\E]P700A900\E]P80000FF\E]P9FFFFFF\E]PAFFFF
            FF\E]PBFFFFFF\E]PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF\E]PFFFFFF
            F\E[;37m,
-       oc@, op@, rmacs=^O, setab=^A, setaf=^A, sgr0=\E[;37m, smacs=^N,
-       .setab@, .setaf@,
+       oc@, op@, setab=^A, setaf=^A, sgr0=\E[;37m, .setab@, .setaf@,
        .smcup=\E]R\E]P100A900\E]P200A900\E]P3FFFFFF\E]P400A900\E]P5
               00A900\E]P600A900\E]P700A900\E]P80000FF\E]P9FFFFFF\E]
               PAFFFFFF\E]PBFFFFFF\E]PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF
@@ -21852,10 +21566,10 @@ linux-s|Linux console with added status line at bottom,
 
 screen.linux-m1|Linux m1 specific for screen,
        ncv@,
-       dim=\E[2m, kbs=^?, kclr=\E\r, kdl1=\E\E[A, kf13=\E[25~,
-       kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
-       kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kil1=\E\E[B, rmul@,
-       smul@, u8=\E[?1;2c,
+       kclr=\E\r, kdl1=\E\E[A, kf13=\E[25~, kf14=\E[26~,
+       kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+       kf19=\E[33~, kf20=\E[34~, kil1=\E\E[B, rmul@, smul@,
+       u8=\E[?1;2c,
        E3=\E[99H\E[2J\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
           \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
           \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
@@ -21878,21 +21592,18 @@ screen.linux-m2|Linux m2 specific for screen,
 # Putty :
 
 putty-m1|Putty Minitel 1 "like" Couleurs,
-       hs,
        dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
        kf5=\E[15~, rmul=\E[24m, smul=\E[4m, .E3=\E[300S,
        use=xterm+alt47, use=putty+screen, use=xterm+sl-twm,
        use=ecma+index, use=linux-m1,
 
 putty-m1b|Putty Minitel 1B "like" Monochrome (Gris/Blanc/Noir),
-       hs,
        dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
        kf5=\E[15~, rmul=\E[24m, smul=\E[4m, .E3=\E[300S,
        use=xterm+alt47, use=putty+screen, use=xterm+sl-twm,
        use=ecma+index, use=linux-m1b,
 
 putty-m2|Putty Minitel 2 "like" Couleurs (Vert/Blanc/Noir),
-       hs,
        acsc=``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{
             {||}}~~,
        dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
@@ -22008,8 +21719,8 @@ blit|jerq|blit running teletype rom,
        cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA,
        dch=\Ee%p1%{32}%+%c, dch1=\Ee!, dl=\EE%p1%{32}%+%c,
        dl1=\EE!, el=\EK, ht=^I, ich=\Ef%p1%{32}%+%c, ich1=\Ef!,
-       il=\EF%p1%{32}%+%c, il1=\EF!, ind=\n, kbs=^H, kcub1=\ED,
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ex, kf2=\Ey, kf3=\Ez,
+       il=\EF%p1%{32}%+%c, il1=\EF!, ind=\n, kbs=^H, kf1=\Ex,
+       kf2=\Ey, kf3=\Ez, use=vt52+arrows,
 
 # (cbblit: here's a BSD termcap that says <cud1=\EG> -- esr)
 cbblit|fixterm|blit running columbus code,
@@ -22066,14 +21777,13 @@ bg2.0rv|bg3.10rv|BBn BitGraph 2.0 (reverse video),
 bg2.0|bg3.10|BBN BitGraph 2.0 or later (no init),
        OTbs, xenl,
        cols#85, lines#64,
-       bel=^G, clear=\E[H\E[J$<150>, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, dl1=\E[M$<2*>,
-       ed=\E[J$<150>, el=\E[K$<2>, ht=^I, il1=\E[L$<2*>,
-       ind=\n$<280>, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=PF1,
-       lf2=PF2, lf3=PF3, lf4=PF4, rc=\E8, rmkx=\E>, rmso=\E[m, sc=\E7,
-       sgr0=\E[m, smkx=\E=, smso=\E[7m,
+       bel=^G, clear=\E[H\E[J$<150>, cr=\r, cub1=^H,
+       cup=%i\E[%p1%d;%p2%dH, dl1=\E[M$<2*>, ed=\E[J$<150>,
+       el=\E[K$<2>, ht=^I, il1=\E[L$<2*>, ind=\n$<280>,
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
+       kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=PF1, lf2=PF2, lf3=PF3,
+       lf4=PF4, rmkx=\E>, rmso=\E[m, sgr0=\E[m, smkx=\E=,
+       smso=\E[7m, use=ansi+csr, use=ansi+local1,
 
 bg1.25rv|BBN BitGraph 1.25 (reverse video),
        flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h,
@@ -22084,14 +21794,13 @@ bg1.25nv|BBN BitGraph 1.25 (normal video),
 # (bg1.25: I added <rmam>/<smam> based on the init string -- esr)
 bg1.25|BBN BitGraph 1.25,
        cols#85, lines#64,
-       bel=^G, clear=\E[H\E[J$<150>, cr=\r, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A,
-       dl1=\E[M$<2*>, ed=\E[J$<150>, el=\E[K$<2>, ht=^I,
-       il1=\E[L$<2*>, ind=\n$<280>, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\ES,
-       lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, ll=\E[64;1H, rmam=\E[?7l,
-       rmkx=\E>, rmso=\E[m, sgr0=\E[m, smam=\E[?7h, smkx=\E=,
-       smso=\E[7m,
+       bel=^G, clear=\E[H\E[J$<150>, cr=\r, cub1=^H,
+       cup=%i\E[%p1%d;%p2%dH, dl1=\E[M$<2*>, ed=\E[J$<150>,
+       el=\E[K$<2>, ht=^I, il1=\E[L$<2*>, ind=\n$<280>, kf1=\EP,
+       kf2=\EQ, kf3=\ER, kf4=\ES, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4,
+       ll=\E[64;1H, rmam=\E[?7l, rmkx=\E>, rmso=\E[m, sgr0=\E[m,
+       smam=\E[?7h, smkx=\E=, smso=\E[7m, use=ansi+local1,
+       use=vt52+arrows,
 
 #### Bull (bq, dku, vip)
 #
@@ -22162,32 +21871,31 @@ bg1.25|BBN BitGraph 1.25,
 # dku7102, tws2102, and tws models 2105 to 2112
 tws-generic|dku7102|Bull Questar tws terminals,
        am, eslok, hs, mir, msgr, xenl, xhp@, xon,
-       cols#80, it#8, lines#24, wsl#80,
+       cols#80, lines#24, wsl#80,
        acsc=``aaffggj)k\,l&m#n/ooppq*rrsst'u-v+w.x%yyzz{{||}}~~,
-       bel=^G, blink=\E[0;5m, cbt=\E[Z, civis=\E[1r, clear=\E[2J,
-       cnorm=\E[r, cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
-       cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dim=\E[0;2m, dl=\E[%p1%dM, dl1=\E[M,
-       dsl=\EPY99:98\E\\\E[0;98v\E[2J\E[v, ed=\E[J, el=\E[K,
-       fsl=\E[v, home=\E[H, ht=\E[I, hts=\EH, il=\E[%p1%dL,
-       il1=\E[L, ind=\n, invis=\E[0;8m,
+       bel=^G, blink=\E[0;5m, civis=\E[1r, clear=\E[2J,
+       cnorm=\E[r, cr=\r, cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%df,
+       dch=\E[%p1%dP, dch1=\E[P, dim=\E[0;2m,
+       dsl=\EPY99:98\E\\\E[0;98v\E[2J\E[v, fsl=\E[v,
+       home=\E[H, ht=\E[I, ind=\n, invis=\E[0;8m,
        is1=\E[?=h\Ec\E`\E[?>h\EPY99:98\E\\,
        is2=\E[5;>;12;18;?<l\E[=h\EP1s\E\\\E[\027p,
-       is3=\Eb\E[?<h, kbs=^H, kcbt=\E[Z, kctab=\E[g, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
-       ked=\E[J, kel=\E[K, kf1=\E[1u\027, kf2=\E[2u\027,
-       kf3=\E[3u\027, kf4=\E[4u\027, kf5=\E[5u\027,
-       kf6=\E[6u\027, kf7=\E[7u\027, kf8=\E[8u\027, khome=\E[H,
-       khts=\EH, kil1=\E[L, krmir=\E[4l, ll=\E[H\E[A, mc0=\E[0i,
-       mc4=\r\E[4i, mc5=\E[5i, rev=\E[0;7m, rmacs=^O,
-       rmcup=\E[0;98v\E[2J\E[v, rmir=\E[4l, rmso=\E[m,
-       rmul=\E[m, rs2=\E[?=h\Ec, s0ds=^O, s1ds=^N,
+       is3=\Eb\E[?<h, kcbt=\E[Z, kctab=\E[g, kdch1=\E[P,
+       kdl1=\E[M, ked=\E[J, kel=\E[K, kf1=\E[1u\027,
+       kf2=\E[2u\027, kf3=\E[3u\027, kf4=\E[4u\027,
+       kf5=\E[5u\027, kf6=\E[6u\027, kf7=\E[7u\027,
+       kf8=\E[8u\027, khts=\EH, kil1=\E[L, krmir=\E[4l,
+       ll=\E[H\E[A, mc0=\E[0i, mc4=\r\E[4i, mc5=\E[5i,
+       rev=\E[0;7m, rmacs=^O, rmcup=\E[0;98v\E[2J\E[v,
+       rmir=\E[4l, rs2=\E[?=h\Ec, s0ds=^O, s1ds=^N,
        sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?
            %p7%t;8%;m%?%p9%t\016%e\017%;,
        sgr0=\E[m\017, smacs=^N, smcup=\E[?>h\EPY99:98\E\\,
-       smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g,
-       tsl=\EPY99:98\E\\\E[0;98v\E[2;7m,
+       smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m,
+       tsl=\EPY99:98\E\\\E[0;98v\E[2;7m, use=ansi+arrows,
+       use=ansi+erase, use=ansi+idl, use=ansi+inittabs,
+       use=ansi+local, use=ansi+sgrdim,
+
 tws2102-sna|dku7102-sna|Bull Questar tws2102 for SNA,
        dsl=\E[0;98v\E[2J\E[v, fsl=\E[v, is3=\Eb, tsl=\E[0;98v,
        use=tws-generic,
@@ -22283,39 +21991,33 @@ dku7202|Bull Questar 200 DKU7202 (colour/character attributes),
 
 # This entry covers BQ303, BQ306, BQ310, Q303, Q306, Q310
 bq300|Bull VT320 ISO Latin 1 80 columns terminal,
-       am, eo, eslok, hs, km, mir, msgr, xenl, xon,
-       cols#80, it#8, lines#24, vt#3, wsl#80,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
-       dsl=\E[1$}\E[2$~\n\E[0$}, ech=\E[%p1%dX, ed=\E[J,
-       el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
-       flash=\E[?5h$<50>\E[?5l, fsl=\E[0$}, home=\E[H, ht=^I,
-       hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
-       is1=\E[63;1"p\E[2h,
+       eo, km, mir, xenl, xon,
+       vt#3, wsl#80,
+       blink=\E[5m, bold=\E[1m, cup=\E[%i%p1%d;%p2%dH,
+       dch=\E[%p1%dP, dch1=\E[P, dsl=\E[1$}\E[2$~\n\E[0$},
+       ech=\E[%p1%dX, el1=\E[1K, flash=\E[?5h$<50>\E[?5l,
+       ich=\E[%p1%d@, ind=\ED, is1=\E[63;1"p\E[2h,
        is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
            l,
        is3=\E[0$}\E[?25h\E[2l\E[H\E[J, ka1=\EOw, ka3=\EOy,
-       kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
-       kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
-       kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
-       kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
-       kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khlp=\E[28~,
-       krdo=\E[29~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, nel=\EE,
-       rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l,
+       kb2=\EOu, kc1=\EOq, kc3=\EOs, kf1=\EOP, kf10=\E[21~,
+       kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+       kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+       kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS,
+       kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+       khlp=\E[28~, krdo=\E[29~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
+       nel=\EE, rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l,
        rmcup=\E[?7h, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
        rmul=\E[24m, rs1=\E[!p, rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0,
-       sc=\E7,
        sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1
            %;m%?%p9%t\E(0%e\E(B%;,
        sgr0=\E[0m\E(B, smacs=\E(0, smam=\E[?7h,
        smcup=\E[?7l\E[?1l\E(B, smir=\E[4h, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, tsl=\E[1$}\E[2$~, use=ansi+enq,
-       use=vt220+vtedit, use=ansi+pp, use=vt220+cvis,
+       smul=\E[4m, tsl=\E[1$}\E[2$~, use=ansi+enq, use=ansi+csr,
+       use=ansi+erase, use=ansi+idl, use=ansi+local,
+       use=ansi+pp, use=dec+sl, use=vt100+4bsd, use=vt220+cvis,
+       use=vt220+vtedit,
+
 bq300-rv|Bull VT320 reverse 80 columns,
        flash=\E[?5l$<50>\E[?5h,
        is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4
@@ -22388,28 +22090,26 @@ bq300-w-rv|Bull VT320 reverse mode 132 columns,
 # and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
 # (bq300-8: <cub1>,<cuf1>,<cuu1>,<cud1>,<dl1>,<il1> to get under 1024 --esr)
 bq300-8|Bull VT320 full 8 bits 80 columns,
-       am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
-       cols#80, it#8, lines#24, vt#3, wsl#80,
-       acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=\r,
+       eo, eslok, hs, km, mc5i, mir, xenl, xon,
+       vt#3, wsl#80,
+       blink=\2335m, bold=\2331m, clear=\233H\233J,
        csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=\2331D,
        cud=\233%p1%dB, cud1=\2331B, cuf=\233%p1%dC, cuf1=\2331C,
        cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\2331A,
        dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
        dsl=\2331$}\2332$~\n\2330$}, ech=\233%p1%dX, ed=\233J,
-       el=\233K, el1=\2331K, enacs=\E(B\E)0,
-       flash=\233?5h$<50>\233?5l, fsl=\2330$}, home=\233H,
-       ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, il1=\233L,
-       ind=\ED, is1=\E[63;2"p\E[2h,
+       el=\233K, el1=\2331K, flash=\233?5h$<50>\233?5l,
+       fsl=\2330$}, home=\233H, ich=\233%p1%d@, il=\233%p1%dL,
+       il1=\233L, ind=\ED, is1=\E[63;2"p\E[2h,
        is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
            l,
        is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w,
-       ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s,
-       kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
-       kdch1=\2333~, kf1=\217P, kf10=\23321~, kf11=\23323~,
-       kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
-       kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
-       kf2=\217Q, kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~,
+       ka3=\217y, kb2=\217u, kc1=\217q, kc3=\217s, kcub1=\233D,
+       kcud1=\233B, kcuf1=\233C, kcuu1=\233A, kdch1=\2333~,
+       kf1=\217P, kf10=\23321~, kf11=\23323~, kf12=\23324~,
+       kf13=\23325~, kf14=\23326~, kf15=\23328~, kf16=\23329~,
+       kf17=\23331~, kf18=\23332~, kf19=\23333~, kf2=\217Q,
+       kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~,
        kf7=\23318~, kf8=\23319~, kf9=\23320~, kfnd=\2331~,
        khlp=\23328~, kich1=\2332~, knp=\2336~, kpp=\2335~,
        krdo=\23329~, kslt=\2334~, lf1=pf1, lf2=pf2, lf3=pf3,
@@ -22423,7 +22123,7 @@ bq300-8|Bull VT320 full 8 bits 80 columns,
        sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h,
        smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m,
        smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~,
-       use=vt220+cvis8,
+       use=vt100+4bsd, use=vt220+cvis8,
 bq300-8rv|Bull VT320 8-bit reverse mode 80 columns,
        flash=\233?5l$<50>\233?5h,
        is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
@@ -22472,13 +22172,12 @@ bq300-pc-w-rv|Questar 303 with PC keyboard reverse mode 132 columns,
 #    8 bit Control Characters,
 #    80 columns screen.
 bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns,
-       kbs=^H, kdch1=\2333~, kend=\2334~, kf1=\23317~,
-       kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13@, kf14@,
-       kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\23318~, kf20@,
-       kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
-       kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@, khlp@,
-       khome=\2331~, kich1=\2332~, knp=\2336~, kpp=\2335~, krdo@,
-       kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300-8,
+       kend=\2334~, kf1=\23317~, kf10=\23328~, kf11=\23329~,
+       kf12=\23331~, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@,
+       kf2=\23318~, kf20@, kf3=\23319~, kf4=\23320~, kf5=\23321~,
+       kf6=\23323~, kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@,
+       khlp@, khome=\2331~, krdo@, kslt@, lf1@, lf2@, lf3@, lf4@,
+       use=bq300-8,
 bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns,
        flash=\E[?5l$<50>\E[?5h,
        is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4
@@ -22551,17 +22250,15 @@ bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns,
 # This covers the vip7800 and BQ3155-vip7800
 vip|Bull Questar 3155-7800,
        am, eslok, hs, km, mc5i, msgr, xenl, xon,
-       cols#80, it#8, lines#24, vt#3, wsl#80,
-       acsc=0pjdkblamcnkqitgufvhwexj, bel=^G, blink=\EsB,
-       cbt=\E[Z, clear=\E`, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
-       cup=\E[%i%p1%03d%p2%03df, cuu1=\EA, dch1=\E[P, dim=\EsL,
-       dl1=\E[M, dsl=\Ev, ed=\EJ, el=\EK,
-       flash=\007$<80>\007$<80>\007, fsl=\EO, home=\EH, ht=^I,
-       hts=\Ep, ich1=\E[I, ind=\n, invis=\EsH,
+       vt#3, wsl#80,
+       acsc=0pjdkblamcnkqitgufvhwexj, blink=\EsB, clear=\E`,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%03d%p2%03df, dch1=\E[P,
+       dim=\EsL, dl1=\E[M, dsl=\Ev,
+       flash=\007$<80>\007$<80>\007, fsl=\EO, hts=\Ep,
+       ich1=\E[I, invis=\EsH,
        is2=\E[00u\E[<>001001024080024080u\E[01u,
-       is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kbs=^H,
-       kcbt=\E[Z, kclr=\E`, kctab=\E[g, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, kdch1=\E[P, kdl1=\E[M, ked=\EJ,
+       is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kcbt=\E[Z,
+       kclr=\E`, kctab=\E[g, kdch1=\E[P, kdl1=\E[M, ked=\EJ,
        kel=\EK, kf1=\E0, kf10=\ET, kf11=\E\\, kf12=\E\^, kf13@, kf14@,
        kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E2, kf20@, kf21=\E1,
        kf22=\E5, kf23=\E7, kf24=\E9, kf25=\E;, kf26=\E=, kf27=\E?,
@@ -22574,7 +22271,8 @@ vip|Bull Questar 3155-7800,
        ri=\EA\EJ\EH\E[L$<10>, rmacs=\EF, rmir=\E[J, rmso=\EsR,
        rmul=\EsR, rs1=\Ec, rs2=\E[G, s0ds=\EF, s1ds=\EG,
        sgr0=\EsR\EsU\EF, smacs=\EG, smir=\E[I, smso=\EsI,
-       smul=\Es_, tbc=\E[N, tsl=\Ew,
+       smul=\Es_, tbc=\E[N, tsl=\Ew, use=ansi+inittabs,
+       use=vt52-basic,
 # normal screen, 8 bits, 132 columns terminal.
 vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide,
        cols#132, wsl#132,
@@ -22753,8 +22451,7 @@ vt50|DEC VT50,
        cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=\n, u8=\E/A, u9=\EZ,
 vt50h|DEC VT50h,
        cub1=\ED, cud1=\EB, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
-       kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, u8=\E/[HJ],
-       use=vt52+keypad, use=vt50,
+       u8=\E/[HJ], use=vt52+keypad, use=vt50, use=vt52+arrows,
 
 # (vt61: there's a BSD termcap that claims <dl1=\EPd>, <il1=\EPf.> <kbs=^H>)
 vt61|vt-61|vt61.5|DEC VT61,
@@ -22762,24 +22459,21 @@ vt61|vt-61|vt61.5|DEC VT61,
        bel=^G, clear=\EH\EJ$<120>, cr=\r$<20>, cub1=^H, cud1=\n,
        cuf1=\EC$<20>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>,
        cuu1=\EA$<20>, ed=\EJ$<120>, el=\EK$<70>, ht=^I,
-       ind=\n$<20>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
-       ri=\E$<20>I,
+       ind=\n$<20>, ri=\E$<20>I, use=vt52+arrows,
 
 # The gigi does standout with red!
 # (gigi: I added <rmam>/<smam> based on the init string, corrected cub1 -- esr)
 gigi|vk100|DEC gigi graphics terminal,
        OTbs, am, xenl,
        cols#84, lines#24,
-       bel=^G, clear=\E[H\E[2J, cr=\r, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
-       el=\E[K, ht=^I, ind=\n,
+       bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, ht=^I, ind=\n,
        is2=\E>\E[?3l\E[?4l\E[?5l\E[?20l\E[?7h\E[?8h,
        kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
        kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
        rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
        sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7;31m,
-       smul=\E[4m,
+       smul=\E[4m, use=ansi+local,
 
 # DEC PRO-350 console (VT220-style).  The 350 was DEC's attempt to produce
 # a PC differentiated from the IBM clones.  It was a total, ludicrous,
@@ -22792,10 +22486,10 @@ pro350|decpro|DEC pro console,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        clear=\EH\EJ, cub1=^H, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
-       el=\EK, home=\EH, ht=^I, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kf0=\EE, kf1=\EF, kf2=\EG, kf3=\EH, kf4=\EI,
-       kf5=\EJ, kf6=\Ei, kf7=\Ej, khome=\EH, ri=\EI, rmacs=\EG,
-       rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D,
+       el=\EK, home=\EH, ht=^I, kf0=\EE, kf1=\EF, kf2=\EG, kf3=\EH,
+       kf4=\EI, kf5=\EJ, kf6=\Ei, kf7=\Ej, khome=\EH, ri=\EI,
+       rmacs=\EG, rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H,
+       smul=\E^D, use=vt52+arrows,
 
 dw1|DECwriter I,
        OTbs, hc, os,
@@ -22844,8 +22538,7 @@ ln03|DEC ln03 laser printer,
        smul=\E[4m,
 ln03-w|DEC ln03 laser printer 132 cols,
        cols#132,
-       bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H,
-       kcud1=\n, nel=\r\n, use=ln03,
+       kbs=^H, kcub1=^H, kcud1=\n, use=ln03,
 
 #### Delta Data (dd)
 #
@@ -22870,17 +22563,17 @@ ddr|rebus3180|ddr3180|Rebus/DDR 3180 VT100 emulator,
        OTbs, am, xenl,
        cols#80, it#8, lines#24, vt#3,
        blink=\E[5m$<2/>, bold=\E[1m$<2/>,
-       clear=\E[H\E[2J$<50/>, csr=\E[%i%p1%d;%p2%dr, cub1=^H,
-       cud1=\n, cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
-       cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
-       ht=^I, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H, kbs=^H,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
-       kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m$<2/>,
+       clear=\E[H\E[2J$<50/>, cub1=^H, cud1=\n, cuf1=\E[C$<2/>,
+       cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
+       ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I,
+       ind=\ED$<5/>, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\E[D,
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
+       kf3=\EOR, kf4=\EOS, rev=\E[7m$<2/>,
        rf=/usr/share/tabset/vt100, ri=\EM$<5/>, rmam=\E[7l,
        rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m$<2/>,
-       rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+       rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
        sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m,
-       smul=\E[4m$<2/>,
+       smul=\E[4m$<2/>, use=ansi+csr,
 
 #### Evans & Sutherland
 #
@@ -22986,11 +22679,11 @@ h19|heath|h19-b|heathkit|heath-19|z19|zenith|Heathkit h19,
        clear=\EE, cnorm=\Ey4, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ex4,
        dch1=\EN, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, ind=\n,
-       ip=$<1.5/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW,
-       kf6=\EP, kf7=\EQ, kf8=\ER, khome=\EH, lf6=blue, lf7=red,
-       lf8=white, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF,
-       smir=\E@, smso=\Ep, tsl=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo,
+       ip=$<1.5/>, kbs=^H, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV,
+       kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, khome=\EH, lf6=blue,
+       lf7=red, lf8=white, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq,
+       smacs=\EF, smir=\E@, smso=\Ep,
+       tsl=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo, use=vt52+arrows,
 h19-u|Heathkit with underscore cursor,
        cnorm@, cvvis@, use=h19-b,
 h19-g|h19g|Heathkit w/block cursor,
@@ -23048,12 +22741,11 @@ z29|zenith29|z29b|Zenith z29b,
        cvvis=\Ex4, dch1=\EN$<0.1*>, dl1=\EM$<1/>, dsl=\Ey1,
        ed=\EJ$<14>, el=\EK$<1>, fsl=\Ek\Ey5, home=\EH, ht=^I,
        ich1=\E<\E[1@\E[?2h$<1>, il1=\EL$<1/>, ind=\n$<2>,
-       is2=\E<\E[?2h\Ev, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV,
-       kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH,
-       lf0=home, ri=\EI$<2/>, rmacs=\EF, rmir=\EO, rmso=\Eq,
-       rmul=\Es0, smacs=\EG, smir=\E@, smso=\Ep, smul=\Es8,
-       tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,
+       is2=\E<\E[?2h\Ev, kbs=^H, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU,
+       kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I,
+       khome=\EH, lf0=home, ri=\EI$<2/>, rmacs=\EF, rmir=\EO,
+       rmso=\Eq, rmul=\Es0, smacs=\EG, smir=\E@, smso=\Ep,
+       smul=\Es8, tsl=\Ej\Ex5\Ex1\EY8%+ \Eo, use=vt52+arrows,
 # z29 in ANSI mode. Assumes that the cursor is in the correct state, and that
 # the world is stable. <rs1> causes the terminal to be reset to the state
 # indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore
@@ -23065,22 +22757,20 @@ z29a|z29a-kc-bc|h29a-kc-bc|Heath/Zenith 29 in ANSI mode,
        OTbs, OTpt, am, eslok, hs, mir, msgr,
        OTkn#10, cols#80, it#8, lines#24,
        OTbc=\ED, bel=^G, blink=\E[5m, bold=\E[2m, clear=\E[2J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
-       dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM,
-       dl1=\E[M, dsl=\E[>1l, ed=\E[J, el=\E[K, fsl=\E[u\E[>5l,
+       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[1P,
+       dim=\E[2m, dsl=\E[>1l, ed=\E[J, el=\E[K, fsl=\E[u\E[>5l,
        home=\E[H, ht=^I, hts=\EH, if=/usr/share/tabset/vt100,
-       il=\E[%p1%dL, il1=\E[L, ind=\ED, kbs=^H, kclr=\E[J,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, ked=\E[J,
-       kf0=\E[~, kf1=\EOS, kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW,
-       kf6=\EOP, kf7=\EOQ, kf8=\EOR, kf9=\EOX, khome=\E[H, lf0=help,
-       mc0=\E#7, nel=\r\ED, rc=\E[r, rev=\E[7m, ri=\EM,
-       rmcup=\E[?7h, rmso=\E[m, rmul=\E[m,
+       ind=\ED, kclr=\E[J, ked=\E[J, kf0=\E[~, kf1=\EOS, kf2=\EOT,
+       kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ, kf8=\EOR,
+       kf9=\EOX, khome=\E[H, lf0=help, mc0=\E#7, nel=\r\ED, rc=\E[r,
+       rev=\E[7m, ri=\EM, rmcup=\E[?7h, rmso=\E[m, rmul=\E[m,
        rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m
            \E[11m,
        sc=\E[s, sgr0=\E[m, smcup=\E[?7l, smso=\E[7;2m, smul=\E[4m,
        tbc=\E[3g, tsl=\E[s\E[>5;1h\E[25;%i%dH\E[1K,
+       use=ansi+apparrows, use=ansi+idl, use=ansi+local,
+
 z29a-kc-uc|h29a-kc-uc|Zenith z29 ANSI mode with keyclick and underscore cursor,
        rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11
            m,
@@ -23095,27 +22785,24 @@ z29a-nkc-uc|h29a-nkc-uc|Zenith z29 ANSI mode with underscore cursor and no keycl
        use=z29a,
 # From: Jeff Bartig <jeffb@dont.doit.wisc.edu> 31 Mar 1995
 z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode,
-       am, eslok, hs, mc5i, mir, msgr, xon,
+       am, eslok, hs, mir, msgr, xon,
        cols#80, lines#24,
        acsc=0a``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
        blink=\E[5m, bold=\E[1m, cbt=\E[1Z, civis=\E[>5h,
        clear=\E[2J\E[H, cnorm=\E[>5l, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+       csr=\E[%i%p1%d;%p2%dr, cub1=^H, cup=\E[%i%p1%d;%p2%dH,
        dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM,
        dl1=\E[1M, dsl=\E[>1l, ed=\E[0J, el=\E[0K, el1=\E[1K,
-       fsl=\E[u, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[1L,
-       ind=\n, is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, ka1=\EOw,
-       ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D,
-       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[J, kf1=\EOS,
-       kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ,
-       kf8=\EOR, kf9=\EOX, khlp=\E[~, khome=\E[H, ll=\E[24;1H,
-       mc0=\E[?19h\E[i, mc4=\E[4i, mc5=\E[5i, rc=\E[u, rev=\E[7m,
-       rmacs=\E(B, rmir=\E[4l, rmkx=\E[>7l, rmso=\E[0m,
+       fsl=\E[u, home=\E[H, il=\E[%p1%dL, il1=\E[1L, ind=\n,
+       is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, ka1=\EOw, ka3=\EOu,
+       kb2=\EOy, kc1=\EOq, kc3=\EOs, ked=\E[J, kf1=\EOS, kf2=\EOT,
+       kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ, kf8=\EOR,
+       kf9=\EOX, khlp=\E[~, ll=\E[24;1H, mc0=\E[?19h\E[i, rc=\E[u,
+       rev=\E[7m, rmacs=\E(B, rmir=\E[4l, rmkx=\E[>7l, rmso=\E[0m,
        rmul=\E[0m, rs2=\E<\Ec\0, sc=\E[s, sgr0=\E[0m, smacs=\E(0,
-       smir=\E[4h, smkx=\E[>7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       tsl=\E[s\E[>1h\E[25;%i%p1%dH,
+       smir=\E[4h, smkx=\E[>7h, smso=\E[7m, smul=\E[4m,
+       tsl=\E[s\E[>1h\E[25;%i%p1%dH, use=ansi+arrows,
+       use=ansi+local, use=ansi+pp, use=ansi+tabs,
 
 # From: Brad Brahms <Brahms@USC-ECLC>
 z100|h100|z110|z-100|h-100|Heath/Zenith z-100 pc with color monitor,
@@ -23128,11 +22815,10 @@ z100bw|h100bw|z110bw|z-100bw|h-100bw|Heath/Zenith z-100 pc,
        clear=\EE$<5*/>, cnorm=\Ey4, cub1=^H, cud1=\EB, cuf1=\EC,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<1*/>, cuu1=\EA,
        cvvis=\Ex4, dch1=\EN$<1*/>, dl1=\EM$<5*/>, ed=\EJ, el=\EK,
-       home=\EH, ht=^I, il1=\EL$<5*/>, kbs=^H, kcub1=\ED, kcud1=\EB,
-       kcuf1=\EC, kcuu1=\EA, kf0=\EJ, kf1=\ES, kf2=\ET, kf3=\EU,
-       kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EOI,
-       khome=\EH, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF,
-       smir=\E@, smso=\Ep,
+       home=\EH, ht=^I, il1=\EL$<5*/>, kbs=^H, kf0=\EJ, kf1=\ES,
+       kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
+       kf9=\EOI, khome=\EH, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq,
+       smacs=\EF, smir=\E@, smso=\Ep, use=vt52+arrows,
 p19|h19-b with il1/dl1,
        dl1=\EM$<2*/>, il1=\EL$<2*/>, use=h19-b,
 # From: <ucscc!B.fiatlux@ucbvax.berkeley.edu>
@@ -23144,10 +22830,9 @@ ztx|ztx11|zt-1|htx11|ztx-1-a|Heath/Zenith ztx-10 or 11,
        cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
        dsl=\Ey1, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I,
        il1=\EL, is2=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>,
-       kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\ES,
-       kf1=\EB, kf2=\EU, kf3=\EV, kf4=\EW, kf5=\EP, kf6=\EQ, kf7=\ER,
-       ri=\EI, rmso=\Eq, rmul=\Eq, smso=\Es5, smul=\Es2,
-       tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,
+       kbs=^H, kf0=\ES, kf1=\EB, kf2=\EU, kf3=\EV, kf4=\EW, kf5=\EP,
+       kf6=\EQ, kf7=\ER, ri=\EI, rmso=\Eq, rmul=\Eq, smso=\Es5,
+       smul=\Es2, tsl=\Ej\Ex5\Ex1\EY8%+ \Eo, use=vt52+arrows,
 
 #### IMS International (ims)
 #
@@ -23236,16 +22921,14 @@ graphos|graphos III,
        am, mir,
        cols#80, it#8, lines#24,
        clear=\E[H\E[2J, cnorm=\Ez56;2;0;0z\Ez73z\Ez4;1;1z,
-       cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A,
-       cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, dl=\E[%p1%dM,
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL,
-       il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
-       kf4=\EOS, khome=\E[H, nel=\r\ED, rc=\E8, ri=\EM, rmdc=\E[4l,
-       rmir=\E[4l, rmso=\E[m, sc=\E7, sgr0=\E[m, smdc=\E[4h,
-       smir=\E[4h, smso=\E[7m,
+       cr=\r, cub1=^H, cud=\E[%p1%dB, cup=\E[%i%p1%d;%p2%dH,
+       cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, ed=\E[J,
+       el=\E[K, home=\E[H, ht=^I, ind=\ED, kf1=\EOP, kf2=\EOQ,
+       kf3=\EOR, kf4=\EOS, nel=\r\ED, rc=\E8, ri=\EM, rmdc=\E[4l,
+       rmir=\E[4l, sc=\E7, sgr0=\E[m, smdc=\E[4h, smir=\E[4h,
+       use=ansi+arrows, use=ansi+idl, use=ansi+local,
+       use=ansi+sgrso,
+
 graphos-30|graphos III with 30 lines,
        lines#30,
        cvvis=\Ez4;2;1z\Ez56;2;80;30z, use=graphos,
@@ -23275,7 +22958,6 @@ graphos-30|graphos III with 30 lines,
 
 modgraph|mod24|modgraph terminal emulating VT100,
        xenl@,
-       cols#80, lines#24,
        cvvis=\E\^9;0s\E\^7;1s,
        is2=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11
            ;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s
@@ -23310,15 +22992,15 @@ modgraph48|mod|Modgraph w/48 lines,
        OTbs, OTpt, am, xenl,
        cols#80, it#8, lines#48, vt#3,
        OTnl=\n, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K,
+       cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+       cuu1=\E[A, ed=\E[J, el=\E[K,
        flash=\E[?5h\E[0q\E[1;2q\E[?5l\E[0q\E[4;3q,
        home=\E[H, ht=^I, is2=\E<\E[1;48r\E[0q\E[3;4q\E=\E[?1h,
        kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
-       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m,
-       ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
-       rs1=\E=\E[0q\E>, sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=,
-       smso=\E[7m, smul=\E[4m,
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rev=\E[7m, ri=\EM,
+       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, rs1=\E=\E[0q\E>,
+       sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+       use=ansi+csr,
 
 #### Morrow Designs
 #
@@ -23399,21 +23081,20 @@ rt6221|Ramtek 6221 80x24,
        OTbs, OTpt, msgr, xon,
        OTkn#4, cols#80, it#8, lines#24, vt#3,
        acsc=, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[>5l,
-       clear=\E[1;1H\E[J, cnorm=\E[>5h\E[>9h, cr=\r,
-       csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
+       clear=\E[1;1H\E[J, cnorm=\E[>5h\E[>9h, cr=\r, cub1=^H,
+       cud1=^K, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
        cvvis=\E[>7h\E[>9l, ed=\E[J, el=\E[K, home=\E[1;1H, ht=^I,
        hts=\EH, ind=\n, is2=\E)0, kbs=^H, kcub1=\E[D, kcud1=\E[B,
        kcuf1=\E[C, kcuu1=\E[A, kf0=\EOP, kf1=\EOQ, kf2=\EOR,
        kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3, lf3=PF4, ll=\E[24;1H,
-       nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>,
-       rmso=\E[m, rmul=\E[m,
+       nel=\EE, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>, rmso=\E[m,
+       rmul=\E[m,
        rs1=\E[1w\E[>37m\E[>39m\E[1v\E[20l\E[?3l\E[?6l\E[>5h\E[>6h
            \E[>7h\E[>8l\E[>9h\E[>10l\E[1;24r\E[m\E[q\E(B\017\E)0\E#
            5\E>,
-       sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g,
+       sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m, smul=\E[4m,
+       tbc=\E[3g, use=ansi+csr, use=ansi+local,
+
 # [TO DO: Check out: short forms of ho/cl and ll; reset (\Ec)].
 rt6221-w|Ramtek 6221 160x48,
        cols#160, lines#48,
@@ -23448,21 +23129,20 @@ rca|RCA vp3301/vp3501,
 hirez100|Selanar HiREZ-100,
        OTbs, OTpt, mir, msgr, xon,
        OTkn#4, cols#80, it#8, lines#48, vt#3,
-       acsc=, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
-       cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
-       hts=\EH, il=\E[%p1%dL, il1=\E[L, is2=\E<\E)0, kbs=^H,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP,
-       kf1=\EOQ, kf2=\EOR, kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3,
-       lf3=PF4, ll=\E[48H, mc0=\E[i, mc4=\E[4i\E[?4i,
-       mc5=\E[?5i\E[5i, nel=\EE, rc=\E8, rev=\E[7m, rmacs=^O,
-       rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+       acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub=\E[%p1%dD,
+       cub1=^H, cud1=\n, cup=\E[%i%p1%d;%p2%dH, cuu1=\EM,
+       dch=\E[%p1%dP, dch1=\E[P, home=\E[H, ht=^I, hts=\EH,
+       is2=\E<\E)0, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+       kcuu1=\EOA, kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS, lf0=PF1,
+       lf1=PF2, lf2=PF3, lf3=PF4, ll=\E[48H, mc0=\E[i,
+       mc4=\E[4i\E[?4i, mc5=\E[?5i\E[5i, nel=\EE, rc=\E8,
+       rev=\E[7m, rmacs=^O, rmkx=\E[?1l\E>,
        rs1=\030\E2\E<\E[4i\E[?4i\E[12h\E[2;4;20l\E[?0;7h\E[?1;3;6;1
            9l\E[r\E[m\E(B\017\E)0\E>,
-       sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g,
+       sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, tbc=\E[3g,
+       use=ansi+erase, use=ansi+idl, use=ansi+local,
+       use=ansi+sgrso, use=ansi+sgrul,
+
 hirez100-w|Selanar HiREZ-100 in 132-column mode,
        cols#132, use=hirez100,
 
@@ -23501,8 +23181,7 @@ vsc|Signetics Vsc Video driver by RMC,
 
 # (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr)
 soroc120|iq120|soroc|Soroc iq120,
-       clear=\E*$<2>, cud1=\n, ed=\EY, el=\ET, kcub1=^H, kcud1=\n,
-       kcuf1=^L, kcuu1=^K, use=adm3a,
+       clear=\E*$<2>, ed=\EY, el=\ET, use=adm3a,
 soroc140|iq140|Soroc iq140,
        OTbs, am, mir,
        cols#80, lines#24,
@@ -23603,11 +23282,10 @@ synertek|ktm|synertek380|Synertek KTM 3/80 tubeless terminal,
 #      Also the terminal understands a selection of Tektronix 4027 commands. 
 tab132|tab|tab132-15|tab 132/15,
        da, db,
-       OTdN@, cols#80, lines#24, lm#96,
-       cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M,
-       il1=\E[L, is2=\E[?7h\E[?3l\E[?5l, kcub1=\E[D, kcud1=\E[B,
-       kcuu1=\E[A, rmir=\E[4l, rmkx@, smir=\E[4h, smkx@,
-       use=decid+cpr, use=vt100+4bsd,
+       OTdN@, lm#96,
+       cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, il1=\E[L,
+       is2=\E[?7h\E[?3l\E[?5l, rmir=\E[4l, rmkx@, smir=\E[4h,
+       smkx@, use=decid+cpr, use=vt100+4bsd,
 tab132-w|tab132 in wide mode,
        cols#132,
        is2=\E[?7h\E[?3h\E[?5l, use=tab132,
@@ -23685,14 +23363,14 @@ t10|Teleray 10 special,
 t16|Teleray 16,
        am, da, db, mir, xhp, xt,
        cols#80, lines#24,
-       bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=%i\E[%p1%d;%p2%df, cuu1=\E[A, dch1=\E[P,
-       dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H, ht=^I, il1=\E[L,
-       ind=\n, kf1=^Z1, kf10=^Z0, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5,
-       kf6=^Z6, kf7=^Z7, kf8=^Z8, kf9=^Z9, ri=\E[T,
-       rmcup=\E[V\E[24;1f\E[?38h, rmir=\E[4l, rmso=\E[m,
-       rmul=\E[m, sgr0=\E[m, smcup=\E[U\E[?38l, smir=\E[4h,
-       smso=\E[7m, smul=\E[4m,
+       bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H,
+       cup=%i\E[%p1%d;%p2%df, dch1=\E[P, dl1=\E[M, ed=\E[0J,
+       el=\E[0K, home=\E[H, ht=^I, il1=\E[L, ind=\n, kf1=^Z1,
+       kf10=^Z0, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5, kf6=^Z6, kf7=^Z7,
+       kf8=^Z8, kf9=^Z9, ri=\E[T, rmcup=\E[V\E[24;1f\E[?38h,
+       rmir=\E[4l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+       smcup=\E[U\E[?38l, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+       use=ansi+local1,
 
 #### Texas Instruments (ti)
 #
@@ -23729,12 +23407,10 @@ ti703-w|ti707-w|Texas Instruments Silent 703/707 (132 column),
 # Texas Instruments 916 VDT 7 bit control mode
 #
 ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 VT220 mode 7 bit CTRL,
-       da, db, in, msgr,
-       cbt=\E[Z, clear=\E[H\E[2J$<6>, cub=\E[%p1%dD,
-       cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, dch=\E[%p1%dP$<250>, dch1=\E[P,
-       dl=\E[%p1%dM, ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K,
-       el1=\E[1K, enacs=\E(B\E)0, ff=^L, flash=\E[?5h\E[?5l$<6>,
+       da, db, in,
+       cbt=\E[Z, clear=\E[H\E[2J$<6>, dch=\E[%p1%dP$<250>,
+       ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K,
+       enacs=\E(B\E)0, ff=^L, flash=\E[?5h\E[?5l$<6>,
        hpa=\E[%p1%{1}%+%dG, hts=\E[0W, ich=\E[%p1%d@$<250>,
        il=\E[%p1%dL$<36>, ip=$<10>, is2=\E[1;24r\E[24;1H,
        kcmd=\E[29~, kdch1=\E[P, kent=\n, kf1=\E[17~, kf10=\E[28~,
@@ -23742,18 +23418,17 @@ ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 VT220 mode 7 bit CTRL,
        kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
        kf9=\E[26~, khome=\E[H, kich1=\E[@, knp=\E[S, kpp=\E[T,
        kprt=^X, prot=\E&, rmacs=\017$<2>, rs2=\E[!p, sgr@,
-       smacs=\016$<2>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
-       use=vt220,
+       smacs=\016$<2>, vpa=\E[%p1%{1}%+%dd, use=vt220,
 #
 # Texas Instruments 916 VDT 8 bit control mode
 #
 ti916-8|ti916-220-8|Texas Instruments 916 VDT 8859/1 8 VT220 mode bit CTRL,
        kcmd=\23329~, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
-       kcuu1=\233A, kdch1=\233P, kent=\n, kf1=\23317~,
-       kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~,
-       kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
-       kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H,
-       kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916,
+       kcuu1=\233A, kdch1=\233P, kf1=\23317~, kf10=\23328~,
+       kf11=\23329~, kf12=\23331~, kf2=\23318~, kf3=\23319~,
+       kf4=\23320~, kf5=\23321~, kf6=\23323~, kf7=\23324~,
+       kf8=\23325~, kf9=\23326~, khome=\233H, kich1=\233@,
+       knp=\233S, kpp=\233T, use=ti916,
 #
 # Texas Instruments 916 VDT 8859/1 7 bit control 132 column mode
 #
@@ -23768,28 +23443,27 @@ ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL,
        OTbs, am, xon,
        cols#80, it#8, lines#24,
        bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H, cr=\r,
-       csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
-       cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?31h,
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
-       il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+       csr=%i\E[%p1%d;%p2%dr, cup=%i\E[%p1%d;%p2%dH,
+       cvvis=\E[?31h, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+       hts=\EH, il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
        kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kf1=\EOP, kf2=\EOQ,
        kf3=\EOR, kf4=\EOS, kf5=\E[16~, kf6=\E[17~, kf7=\E[18~,
        kf8=\E[19~, kf9=\E[20~, kich1=\E[@, rc=\E8, rev=\E[7m,
        ri=\EM, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, smso=\E[7m,
-       smul=\E[4m, tbc=\E[3g, use=vt220+cvis,
+       smul=\E[4m, tbc=\E[3g, use=ansi+local1, use=vt220+cvis,
 ti924-8|Texas Instruments 924 VDT 8859/1 8 bit CTRL,
        am, xon,
        cols#80, it#8, lines#24,
        bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H, cr=\r,
-       csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
-       cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E[?31h,
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH,
-       il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+       csr=%i\E[%p1%d;%p2%dr, cup=%i\E[%p1%d;%p2%dH,
+       cvvis=\E[?31h, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+       hts=\EH, il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B,
        kcuf1=\E[C, kcuu1=\E[A, kdch1=\233P, kf1=\217P, kf2=\217Q,
        kf3=\217R, kf4=\217S, kf5=\23316~, kf6=\23317~,
        kf7=\23318~, kf8=\23319~, kf9=\23320~, kich1=\233@, rc=\E8,
        rev=\E[7m, ri=\EM, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m,
-       smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt220+cvis,
+       smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+local1,
+       use=vt220+cvis,
 ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode,
        cols#132, use=ti924,
 ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode,
@@ -23801,11 +23475,11 @@ ti931|Texas Instruments 931 VDT,
        cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
        cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH,
        ich1=\ER\EP\EM, il1=\EN, ind=\Ea, invis=\E4H,
-       is2=\EGB\E(@B@@\E), kcub1=\ED, kcud1=\EB, kcuf1=\EC,
-       kcuu1=\EA, kdch1=\EQ, kdl1=\EO, kf1=\Ei1, kf2=\Ei2, kf3=\Ei3,
-       kf4=\Ei4, kf5=\Ei5, kf6=\Ei6, kf7=\Ei7, kf8=\Ei8, kf9=\Ei9,
-       kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb, rmso=\E4@, rmul=\E4@,
-       sgr0=\E4@, smso=\E4A, smul=\E4D,
+       is2=\EGB\E(@B@@\E), kdch1=\EQ, kdl1=\EO, kf1=\Ei1,
+       kf2=\Ei2, kf3=\Ei3, kf4=\Ei4, kf5=\Ei5, kf6=\Ei6, kf7=\Ei7,
+       kf8=\Ei8, kf9=\Ei9, kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb,
+       rmso=\E4@, rmul=\E4@, sgr0=\E4@, smso=\E4A, smul=\E4D,
+       use=vt52+arrows,
 ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL,
        csr@, ind=\E[1S, ri=\E[1T, use=ti924,
 # (ti926-8: I corrected this from the broken SCO entry -- esr)
@@ -23815,16 +23489,14 @@ ti_ansi|basic entry for ti928,
        am, bce, eo, xenl, xon,
        colors#8, cols#80, it#8, lines#25, pairs#64,
        bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[2J\E[H,
-       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
-       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
-       il1=\E[L, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kend=\E[F, kf0=\E[V, kf1=\E[M,
-       kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S,
-       kf8=\E[T, kf9=\E[U, khome=\E[H, knp=\E[G, kpp=\E[I,
-       op=\E[37;40m, ri=\E[T, rmso=\E[m, rmul=\E[m,
+       cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, ed=\E[J,
+       el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S,
+       kend=\E[F, kf0=\E[V, kf1=\E[M, kf2=\E[N, kf3=\E[O, kf4=\E[P,
+       kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U, knp=\E[G,
+       kpp=\E[I, op=\E[37;40m, ri=\E[T, rmso=\E[m, rmul=\E[m,
        setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m,
-       smso=\E[7m, smul=\E[4m,
+       smso=\E[7m, smul=\E[4m, use=ansi+arrows, use=ansi+local1,
 #
 #       928 VDT 7 bit control mode
 #
@@ -23881,10 +23553,9 @@ cci|cci1|z8001|zen8001|CCI Custom Zentec 8001,
        csr=\ER%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=\n,
        cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
        cvvis=\EF\EQ\EM \ER 7, dim=\EM!, ed=\EJ, el=\EK, home=\EH,
-       invis=\EM(, is2=\EM \EF\ET\EP\ER 7, kbs=^H, kcub1=\ED,
-       kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, mc4=^T, mc5=^R,
-       rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s, sgr0=\EM\s,
-       smso=\EM$, smul=\EM0,
+       invis=\EM(, is2=\EM \EF\ET\EP\ER 7, kbs=^H, khome=\EH,
+       mc4=^T, mc5=^R, rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s,
+       sgr0=\EM\s, smso=\EM$, smul=\EM0, use=vt52+arrows,
 
 ######## OBSOLETE UNIX CONSOLES
 #
@@ -23925,42 +23596,38 @@ apollo_color|Apollo color display,
 # From: Eric Raymond <esr@snark.thyrsus.com> Mon Nov 27 19:00:53 EST 1995
 att6386|at386|386at|AT&T WGS 6386 console,
        am, bw, eo, xon,
-       cols#80, it#8, lines#25,
+       cols#80, lines#25,
        acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[=C,
-       clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r, cub=\E[%p1%dD,
-       cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
-       cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
-       dl=\E[%p1%dM, dl1=\E[1M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
-       home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+       bel=^G, civis=\E[=C, clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       dim=\E[2m, dl=\E[%p1%dM, dl1=\E[1M, ech=\E[%p1%dX, ed=\E[J,
+       el=\E[K, home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@,
        ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\E[S, invis=\E[9m,
-       is2=\E[0;10;39m, kbs=^H, kcbt=^], kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kend=\E[Y, kf1=\EOP,
+       is2=\E[0;10;39m, kcbt=^], kdch1=\E[P, kend=\E[Y, kf1=\EOP,
        kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ, kf3=\EOR,
        kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX,
-       khome=\E[H, kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0,
-       nel=\r\E[S, rc=\E8, rev=\E[7m, ri=\E[T, rmacs=\E[10m,
-       rmso=\E[m, rmul=\E[m, sc=\E7,
+       kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0, nel=\r\E[S,
+       rc=\E8, ri=\E[T, rmacs=\E[10m, sc=\E7,
        sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;
            2%;%?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m,
-       sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
-       tbc=\E[3g, vpa=\E[%i%p1%dd, use=ecma+index,
-       use=klone+color,
+       sgr0=\E[0;10m, smacs=\E[12m, vpa=\E[%i%p1%dd,
+       use=ansi+arrows, use=ansi+inittabs, use=ansi+local,
+       use=ansi+sgrbold, use=ecma+index, use=klone+color,
+
 # (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr)
 pc6300plus|AT&T 6300 plus,
        OTbs, am, xon,
        cols#80, lines#24,
        bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[=C,
-       clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r, cub1=^H, cud1=\E[B,
-       cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A,
-       dch1=\E[1P, dim=\E[2m, dl1=\E[1M, ed=\E[0J, el=\E[0K,
-       home=\E[H, hts=\EH, ich1=\E[1@, il1=\E[1L, ind=\n,
-       invis=\E[9m, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
-       kcuu1=\E[A, kf1=\EOc, kf10=\EOu, kf2=\EOd, kf3=\EOe,
-       kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\EOk,
-       nel=\r\n, rev=\E[7m, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
-       smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+       clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r, cub1=^H,
+       cup=\E[%i%p1%2d;%p2%2dH, dch1=\E[1P, dim=\E[2m,
+       dl1=\E[1M, ed=\E[0J, el=\E[0K, home=\E[H, hts=\EH,
+       ich1=\E[1@, il1=\E[1L, ind=\n, invis=\E[9m, kbs=^H,
+       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOc,
+       kf10=\EOu, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh,
+       kf7=\EOi, kf8=\EOj, kf9=\EOk, nel=\r\n, rev=\E[7m, rmso=\E[m,
+       rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+       use=ansi+local1,
 
 # From: Benjamin C. W. Sittler <bsittler@nmt.edu>
 #
@@ -24083,28 +23750,25 @@ att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300,
        am, xon,
        cols#80, it#8, lines#24,
        bel=^G, blink=\E[9m, bold=\E[1m, cbt=\E^I, civis=\E[=1C,
-       clear=\E[2J\E[H, cnorm=\E[=0C, cr=\r, cub=\E[%p1%dD,
-       cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC,
-       cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
-       cuu1=\E[A, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
-       ed=\E[0J, el=\E[0K, home=\E[H, ich1=\E[@, il=\E[%p1%dL,
-       il1=\E[L, ind=\n, invis=\E[9m, is1=\017\E[=1w, kBEG=\ENB,
-       kCAN=\EOW, kCPY=\END, kCRT=\EON, kDC=\ENF, kDL=\ENE,
-       kEND=\ENN, kEOL=\EOA, kFND=\EOX, kHLP=\EOM, kHOM=\ENM,
-       kIC=\ENJ, kLFT=\ENK, kMOV=\ENC, kNXT=\ENH, kOPT=\EOR,
-       kPRV=\ENG, kRDO=\EOT, kRIT=\ENL, kRPL=\EOY, kSAV=\EOO,
-       kUND=\EOS, kbeg=\ENb, kbs=^H, kcan=\EOw, kcbt=\E[Z,
-       kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\ENf,
-       ked=\E[J, kel=\EOa, kend=\E0, kext=\EOk, kf1=\EOc, kf2=\EOd,
-       kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
-       kfnd=\EOx, khlp=\EOm, khome=\E[H, kich1=\ENj, kind=\E[B,
-       kmov=\ENc, kmrk=\ENi, knp=\E[U, knxt=\ENh, kopn=\EOv,
-       kopt=\EOr, kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt,
-       kref=\EOb, krfr=\ENa, kri=\E[A, krpl=\EOy, krst=\EOB,
-       ksav=\EOo, kslt=\ENI, kund=\EOs, nel=\EE, rev=\E[7m, ri=\EM,
-       rmso=\E[m, rmul=\E[m, sgr0=\E[0;10m, smso=\E[7m,
-       smul=\E[4m,
+       clear=\E[2J\E[H, cnorm=\E[=0C, cr=\r, cub1=^H,
+       cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dim=\E[2m, ed=\E[0J,
+       el=\E[0K, home=\E[H, ich1=\E[@, ind=\n, invis=\E[9m,
+       is1=\017\E[=1w, kBEG=\ENB, kCAN=\EOW, kCPY=\END, kCRT=\EON,
+       kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kFND=\EOX,
+       kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, kLFT=\ENK, kMOV=\ENC,
+       kNXT=\ENH, kOPT=\EOR, kPRV=\ENG, kRDO=\EOT, kRIT=\ENL,
+       kRPL=\EOY, kSAV=\EOO, kUND=\EOS, kbeg=\ENb, kcan=\EOw,
+       kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd,
+       kcrt=\EOn, kdch1=\ENf, ked=\E[J, kel=\EOa, kend=\E0,
+       kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
+       kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, khlp=\EOm,
+       kich1=\ENj, kind=\E[B, kmov=\ENc, kmrk=\ENi, knp=\E[U,
+       knxt=\ENh, kopn=\EOv, kopt=\EOr, kpp=\E[V, kprt=\EOz,
+       kprv=\ENg, krdo=\EOt, kref=\EOb, krfr=\ENa, kri=\E[A,
+       krpl=\EOy, krst=\EOB, ksav=\EOo, kslt=\ENI, kund=\EOs,
+       nel=\EE, rev=\E[7m, ri=\EM, rmso=\E[m, rmul=\E[m,
+       sgr0=\E[0;10m, smso=\E[7m, smul=\E[4m, use=ansi+arrows,
+       use=ansi+idl, use=ansi+local,
 
 #### Convergent Technology
 #
@@ -24200,11 +23864,11 @@ fos|fortune|Fortune system,
 masscomp|masscomp workstation console,
        OTbs, km, mir,
        cols#80, it#8, lines#24,
-       clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
-       ed=\E[J, el=\E[K, ht=^I, il1=\E[L, is2=\EGc\EGb\EGw, kbs=^H,
-       kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmir=\E[4l,
-       rmso=\E[m, rmul=\EGau, smir=\E[4h, smso=\E[7m, smul=\EGu,
+       clear=\E[2J, cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P,
+       dl1=\E[M, ed=\E[J, el=\E[K, ht=^I, il1=\E[L,
+       is2=\EGc\EGb\EGw, kbs=^H, kcub1=\EOD, kcud1=\EOB,
+       kcuf1=\EOC, kcuu1=\EOA, rmir=\E[4l, rmso=\E[m, rmul=\EGau,
+       smir=\E[4h, smso=\E[7m, smul=\EGu, use=ansi+local1,
 masscomp1|masscomp large screen version 1,
        cols#104, lines#36, use=masscomp,
 masscomp2|masscomp large screen version 2,
@@ -24232,10 +23896,9 @@ pmcons|pmconsole|PMAX console,
 pcix|PC/IX console,
        am, bw, eo,
        cols#80, lines#24,
-       clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K,
-       home=\E[H, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m,
-       smul=\E[4m,
+       clear=\Ec, cub1=^H, cup=\E[%i%p1%2d;%p2%2dH, ed=\E[J,
+       el=\E[K, home=\E[H, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+       smso=\E[7m, smul=\E[4m, use=ansi+local1,
 
 # (ibmpcx: this entry used to be known as ibmx.
 # It formerly included the following extension capabilities:
@@ -24251,12 +23914,11 @@ pcix|PC/IX console,
 ibmpcx|xenix|ibmx|IBM PC xenix console display,
        OTbs, am, msgr,
        cols#80, lines#25,
-       clear=^L, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
-       ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, kbs=^H,
-       kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[d,
-       kf1=\E[K, kf2=\E[L, kf3=\E[M, kf4=\E[N, khome=\E[Y, knp=\E[e,
-       kpp=\E[Z, use=klone+acs, use=klone+sgr8,
+       clear=^L, cub1=^H, cup=\E[%p1%d;%p2%dH, dch1=\E[P,
+       dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L,
+       kend=\E[d, kf1=\E[K, kf2=\E[L, kf3=\E[M, kf4=\E[N,
+       khome=\E[Y, knp=\E[e, kpp=\E[Z, use=ansi+arrows,
+       use=ansi+local1, use=klone+acs, use=klone+sgr8,
 
 ######## OTHER OBSOLETE TYPES
 #
@@ -24304,9 +23966,7 @@ ctrm|C terminal emulator,
        cup=\E&a%p2%dc%p1%dY, cuu1=\EA, dch1=\EP$<2>, dl1=\EM,
        ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=\011$<2>, hts=\E1,
        il1=\EL, ind=\n, ip=$<2>, is2=\E&jA\r, kbs=^H, kcub1=\Eu\r,
-       kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1=\Ep\r,
-       kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r,
-       kf7=\Ev\r, kf8=\Ew\r, khome=\Ep\r,
+       kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, khome=\Ep\r,
        op=\E&bn\E&bB\E&bG\E&bR%{0}%PX%{0}%PY%{0}%PZ%{1}%PW%{1}%PV
           %{1}%PU,
        rev=%?%gB%{0}%=%t\E&dB%{1}%PB%;, rmir=\ER, rmkx=\E&jA,
@@ -24323,6 +23983,7 @@ ctrm|C terminal emulator,
            %t\E&dD%;,
        sgr0=\E&d@%{0}%PA%{0}%PB%{0}%PH, smir=\EQ, smkx=\E&jB,
        smso=\E&dD, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
+       use=hp+pfk+cr,
 
 # gs6300 - can't use blue foreground, it clashes with underline;
 # it's simulated with cyan
@@ -24333,19 +23994,17 @@ gs6300|emots|AT&T PC6300 with EMOTS terminal emulator,
        colors#8, cols#80, it#8, lines#24, pairs#63,
        acsc=++\,\,--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyz
             z{{||}}~~,
-       bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r,
-       cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n,
-       cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
-       cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
-       dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
-       ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n,
-       is2=\E[m, kbs=^H, kcbt=^R^I, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s,
-       kf4=\E[23s, kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s,
-       khome=\E[H, mc4=\E[4i, mc5=\E[5i, op=\E[?;m, rev=\E[7m,
-       ri=\E[L, rmacs=\E[10m, rs1=\Ec, setb=\E[?;%p1%dm,
+       bel=^G, blink=\E[5m, bold=\E[1m, cr=\r, cub1=^H, cud1=\n,
+       cup=\E[%i%p1%d;%p2%dH, dch=\E[%p1%dP, dch1=\E[P,
+       home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, ind=\n, is2=\E[m,
+       kcbt=^R^I, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s, kf4=\E[23s,
+       kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s, mc4=\E[4i,
+       mc5=\E[5i, op=\E[?;m, rev=\E[7m, ri=\E[L, rmacs=\E[10m,
+       rs1=\Ec, setb=\E[?;%p1%dm,
        setf=\E[?%?%p1%{0}%=%t0%e%p1%{1}%=%t2%e%p1%{1}%-%d%;m,
        sgr0=\E[m\E[10m, smacs=\E[11m, smso=\E[1m, smul=\E[4m,
+       use=ansi+arrows, use=ansi+erase, use=ansi+idl,
+       use=ansi+local,
 
 # From: <earle@smeagol.UUCP> 29 Oct 85 05:40:18 GMT
 # MS-Kermit with Heath-19 emulation mode enabled
@@ -24363,18 +24022,17 @@ versaterm|VersaTerm VT100 emulator for the Macintosh,
        am, xenl,
        cols#80, it#8, lines#24,
        bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
-       clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr,
-       cub1=^H, cud1=\n, cuf1=\E[C$<2/>,
-       cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>,
-       dch1=\E[1P$<7/>, dl1=\E[1M$<9/>, ed=\E[J$<50/>,
-       el=\E[K$<3/>, home=\E[H, ht=^I, ich1=\E[1@$<7/>,
-       il1=\E[1L$<9/>, is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\EOD,
-       kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ,
-       kf3=\EOR, kf4=\EOS, nel=\r\n, rc=\E8, rev=\E[7m$<2/>,
-       rf=/usr/share/tabset/vt100, ri=\EM$<5/>,
-       rmkx=\E>\E[?1l, rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs1=\E>,
-       sc=\E7, sgr0=\E[m$<2/>, smkx=\E=\E[?1h, smso=\E[7m$<2/>,
-       smul=\E[4m$<2/>,
+       clear=\E[;H\E[2J$<50/>, cr=\r, cub1=^H, cud1=\n,
+       cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
+       cuu1=\E[A$<2/>, dch1=\E[1P$<7/>, dl1=\E[1M$<9/>,
+       ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H, ht=^I,
+       ich1=\E[1@$<7/>, il1=\E[1L$<9/>, is2=\E[1;24r\E[24;1H,
+       kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+       kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\n,
+       rev=\E[7m$<2/>, rf=/usr/share/tabset/vt100,
+       ri=\EM$<5/>, rmkx=\E>\E[?1l, rmso=\E[m$<2/>,
+       rmul=\E[m$<2/>, rs1=\E>, sgr0=\E[m$<2/>, smkx=\E=\E[?1h,
+       smso=\E[7m$<2/>, smul=\E[4m$<2/>, use=ansi+csr,
 
 # From: Rick Thomas <ihnp4!btlunix!rbt>
 # (xtalk: I added <rmam>/<smam> based on the init string.
@@ -24382,9 +24040,8 @@ xtalk|IBM PC with xtalk communication program (versions up to 3.4),
        am, mir, msgr, xon,
        cols#80, it#8, lines#24, vt#3, xmc#1,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
-       bel=^G, clear=\E[H\E[J$<50>, cr=\r, cub=\E[%p1%dD, cub1=^H,
-       cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C$<2>,
-       cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
+       bel=^G, clear=\E[H\E[J$<50>, cr=\r, cub1=^H, cud1=\n,
+       cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>,
        cuu1=\E[A$<2>, dl1=\E[M$<99>, ed=\E[J$<50>, el=\E[K$<3>,
        el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH,
        il1=\E[L$<99>, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB,
@@ -24392,7 +24049,7 @@ xtalk|IBM PC with xtalk communication program (versions up to 3.4),
        rmkx=\E[?1l\E>, rmso=\E[m\s,
        rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m,
        smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s,
-       tbc=\E[3g, use=vt100+fnkeys,
+       tbc=\E[3g, use=ansi+local, use=vt100+fnkeys,
 
 # The official PC terminal emulator program of the AT&T Product Centers.
 # Note - insert mode commented out - doesn't seem to work on AT&T PC.
@@ -24557,17 +24214,13 @@ digilog|digilog 333,
 # The DWK was a terminal manufactured in the Soviet Union c.1986
 dwk|dwk-vt|dwk terminal,
        am,
-       cols#80, it#8, lines#24,
        acsc=+\^\,Q-S.M0\177`+a:f'g#h#i#jXkClJmFnNo~qUs_tEuPv\\wKxW~
             _,
-       bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
-       cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
-       ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=\n, kbs=^?,
-       kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee,
-       kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5,
-       kf6=\Ef6, kf7=\Ef7, kf8=\Ef8, kf9=\Ef9, kich1=\Ed, knp=\Eh,
-       kpp=\Eg, nel=\r\n, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX,
-       sgr0=\EX, smacs=\EF, smso=\ET,
+       clear=\EH\EJ, cub1=^H, cud1=\n, dch1=\EP, ich1=\EQ, kbs=^?,
+       kdch1=\Ee, kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4,
+       kf5=\Ef5, kf6=\Ef6, kf7=\Ef7, kf8=\Ef8, kf9=\Ef9, kich1=\Ed,
+       knp=\Eh, kpp=\Eg, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX,
+       sgr0=\EX, smacs=\EF, smso=\ET, use=vt52-basic,
 env230|envision230|envision 230 graphics terminal,
        xenl@,
        enacs@, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rmacs@,
@@ -24616,14 +24269,13 @@ opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys,
        is2=\E`:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\177\Ezz'\E[B
            \177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177\Ezz`\E[F
            \177\EA1*\EZH12,
-       kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kdch1=\EW, kdl1=\ER, ked=\EY,
-       kel=\ET, kend=\E[F, kent=\E7, kf1=^A@\r, kf10=^AI\r,
-       kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
-       kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
-       kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
-       kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er,
-       mc0=\EP, mc4=^T, mc5=^R, nel=\r\n$<3>,
+       kHOM=\E{, kcbt=\EI, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET,
+       kend=\E[F, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
+       kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
+       kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
+       kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ,
+       kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, mc0=\EP,
+       mc4=^T, mc5=^R, nel=\r\n$<3>,
        pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
        pfx=\EZ1%p1%{63}%+%c%p2%s\177,
        pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>,
@@ -24637,7 +24289,8 @@ opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys,
        smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177
              \Ezz<\E[Q\177,
        smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(,
-       uc=\EG8\EG0, use=adm+sgr,
+       uc=\EG8\EG0, use=ansi+arrows, use=adm+sgr,
+
 teletec|Teletec Datascreen,
        OTbs, am,
        cols#80, lines#24,
@@ -24672,15 +24325,14 @@ teletec|Teletec Datascreen,
 v3220|LANPAR Vision II model 3220/3221/3222,
        OTbs, am, mir, xenl,
        cols#80, it#8, lines#24,
-       clear=\E[H\E[J, cub1=^H, cud1=\E[B, cuf1=\E[C,
-       cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
-       ed=\E[J, el=\E[K, ht=^I, il1=\E[L,
-       is2=\E>\E[?3l\E[?7h\E[?8h\E[p, kcub1=\E[D, kcud1=\E[B,
-       kcuf1=\E[C, kcuu1=\E[A, kf0=\E[1~, kf1=\E[2~, kf2=\E[3~,
-       kf3=\E[4~, kf4=\E[5~, kf5=\E[6~, kf6=\E[OP, kf7=\E[OQ,
-       kf8=\E[OR, kf9=\E[OS, khome=\E[H, ri=\EM, rmam=\E[?7l,
-       rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
-       smam=\E[?7h, smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
+       cub1=^H, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, ht=^I,
+       il1=\E[L, is2=\E>\E[?3l\E[?7h\E[?8h\E[p, kcub1=\E[D,
+       kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[1~, kf1=\E[2~,
+       kf2=\E[3~, kf3=\E[4~, kf4=\E[5~, kf5=\E[6~, kf6=\E[OP,
+       kf7=\E[OQ, kf8=\E[OR, kf9=\E[OS, khome=\E[H, ri=\EM,
+       rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m,
+       sgr0=\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E=, smso=\E[7m,
+       smul=\E[4m, use=ansi+erase, use=ansi+local1,
 ######## ICH/ICH1 VERSUS RMIR/SMIR
 #
 # Some non-curses applications get confused if both ich/ich1 and rmir/smir
@@ -25449,7 +25101,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 # differences, noted in
 #      https://invisible-island.net/ncurses/ncurses-netbsd.html
 #
-# ncurses makes explicit checks for a few user-definable capabilities:  AX,
+# ncurses makes explicit checks for a few user-definable capabilities:  AX, E3,
 # RGB, U8, XM, which are documented in the user_caps(5) manual page.
 #
 #### SCREEN Extensions:
@@ -25529,7 +25181,8 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 # kDC3 kDC4 kDC5 kDC6 kDC7 kDN kDN3 kDN4 kDN5 kDN6 kDN7 kEND3 kEND4 kEND5 kEND6
 # kEND7 kHOM3 kHOM4 kHOM5 kHOM6 kHOM7 kIC3 kIC4 kIC5 kIC6 kIC7 kLFT3 kLFT4
 # kLFT5 kLFT6 kLFT7 kNXT3 kNXT4 kNXT5 kNXT6 kNXT7 kPRV3 kPRV4 kPRV5 kPRV6 kPRV7
-# kRIT3 kRIT4 kRIT5 kRIT6 kRIT7 kUP kUP3 kUP4 kUP5 kUP6 kUP7 ka2 kb1 kb3 kc2
+# kRIT3 kRIT4 kRIT5 kRIT6 kRIT7 kUP kUP3 kUP4 kUP5 kUP6 kUP7 kxIN kxOUT ka2 kb1
+# kb3 kc2
 #
 # Bracketed paste is described with these capabilities in vim:
 #
@@ -25538,6 +25191,11 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 # PS is sent before the pasted text
 # PE is sent after the pasted text
 #
+# vim also uses these names for xterm focus:
+#
+# fe enables focus events
+# fd disables focus events
+#
 # Here are the other xterm-related extensions which are used in this file:
 #
 # Cr is a string capability which resets the cursor color
@@ -25555,6 +25213,13 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #    underline.
 # TS is a string capability which acts like "tsl", but uses no parameter and
 #    goes to the first column of the "status line".
+# XF is set/true for terminals which support the xterm focus-in/focus-out
+#    escape sequences sent from the terminal to the host when private mode
+#    1004 is set.  Those are defined as kxIN and kxOUT, to take advantage of
+#    ncurses keypad mode to interpret them like a function key.  Because the
+#    1004 mode is usually combined with other flags to set the mouse protocol,
+#    this flag provides an application with the information that the focus
+#    mode is assumed to be set, e.g., in XM.
 # XM is a string capability which overrides ncurses's built-in string which
 #    enables/disables xterm mouse mode.
 # xm shows the format of the mouse responses.  Parameters:
@@ -25678,7 +25343,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #      * Replaced Qume QVT and Freedom-series entries with purpose-built
 #        terminfo entries.
 #      * Enhanced vt220, tvi910, tvi924, hpterm, hp2645, adm42, tek
-#        and dg200 entries using caps from from SCO.
+#        and dg200 entries using caps from SCO.
 #      * Added the usual set of function-key mappings to ANSI entry.
 #      * Corrected xterm's function-key capabilities.
 # 9.4.5 (Tue Mar 28 14:27:49 EST 1995):
@@ -27748,13 +27413,13 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #      + correct PS vs PE names in bracketed+paste (report by Bram Moolenaar)
 #        -TD
 #
-# 2022-01-07
+# 2023-01-07
 #      + add comment to bracketed+paste explaining that vim patch 9.0.1117 is
 #        needed for use with the updated xterm descriptions (suggested by Bram
 #        Moolenaar).
 #      + add RV report+version (suggested by Bram Moolenaar).
 #
-# 2022-01-14
+# 2023-01-14
 #      + change RV to XR/xr, to avoid conflict with pre-existing usage in vim,
 #        to use RV/rv to denote DA2 and its response (discussion with Bram
 #        Moolenaar) -TD
@@ -27762,4 +27427,87 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #        of terminals which may support focus in/out -TD
 #      + use xterm+focus in xterm-p370 and tmux -TD
 #
+# 2023-01-28
+#      + document XF, kxIN and kxOUT -TD
+#      + add note on sun/wscons/cmdtool/shelltool -TD
+#
+# 2023-04-01
+#      + remove DECCOLM+DECSCLM from foot (patch by Daniel Ekloef).
+#
+# 2023-04-08
+#      + add xterm+focus to alacritty+common (patch by Christian Duerr).
+#
+# 2023-05-08
+#      + add mode 1004 to xterm+sm+1006 from xterm #380 -TD
+#
+# 2023-06-05
+#      + add xterm+focus to foot+base (patch by Daniel Ekloef).
+#
+# 2023-07-08
+#      + add linux+kbs for terminals which imitate xterm's behavior with
+#        Linux -TD
+#
+# 2023-07-15
+#      + mention E3 in regard to user_caps(5) -TD
+#
+# 2023-08-12
+#      + add/use putty+cursor to reflect amending of modified cursor-keys in
+#        2021 -TD
+#      + add ecma+strikeout to putty -TD
+#
+# 2023-10-21
+#      + use oldxterm+sm+1006 in vte-2014 (report by Benno Schulenberg) -TD
+#      + add ansi+apparrows -TD
+#
+# 2023-10-28
+#      + move xterm focus mode 1004 from xterm+sm+1006 into xterm+focus as
+#        fe/fd capabilities, like vim (vim-pr #13440).
+#
+# 2023-11-11
+#      + used "infocmp -u" to help trim redundant capabilities -TD
+#
+# 2023-12-09
+#      + remove xterm+sm+1006 from tmux (Debian #1057688).
+#      + used "infocmp -u" to help trim redundant capabilities -TD
+#
+# 2023-12-16
+#      + used "infocmp -u" to help trim redundant capabilities -TD
+#
+# 2023-12-30
+#      + add ms-vt100-16color, winconsole -TD
+#      + add rio, rio-direct -TD
+#      + add mostlike -TD
+#      + add wezterm, contour -TD
+#
+# 2024-01-06
+#      + use ansi+arrows, ansi+apparrows, ansi+csr, ansi+erase, ansi+idc,
+#        ansi+idc1, ansi+idl, ansi+idl1, ansi+inittabs to trim -TD
+#
+# 2024-01-07
+#      + restore padding for wy520* and vt320-k311 (report by Sven Joachim).
+#
+# 2024-01-13
+#      + use ansi+local, ansi+local1, ansi+pp, ansi+rca, ansi+rca2, ansi+sgr
+#        to trim -TD
+#
+# 2024-01-14
+#      + use ansi+sgrbold, ansi+sgrdim, ansi+sgrso, ansi+sgrul, ansi+tabs
+#        ecma+color, ecma+sgr, vt100+4bsd, vt100+pfkeys, vt220+pcedit
+#        xterm+256color, xterm+acs, xterm+nopcfkeys, xterm+pcf2 to trim -TD
+#
+# 2024-01-27
+#      + amend change to z39-a (report by Sven Joachim).
+#      + use xterm+nopcfkeys, vt52-basic, dec+pp, dec+sl, vt52+arrows,
+#        hp+pfk+cr, klone+acs, klone+color, klone+sgr, ncr160wy50+pp
+#        to trim -TD
+#      + NetBSD-related fixes for x68k and wsvt52 (patch by Thomas Klausner)
+#
+# 2024-02-11
+#      + add vt100+noapp, vt100+noapp+pc, xterm+app+pc, xterm+decedit from
+#        xterm #389 -TD
+#
+# 2024-03-09
+#      + modify xgterm to work around line-drawing bug -TD
+#      + use CSI 3J in vte-2017 (report by Sven Joachim)
+#
 ######## SHANTIH!  SHANTIH!  SHANTIH!
index 30638c352175e8f3967ea52307cedf3a2cebc55b..6a5eafab26cfa8f5f52375aff1e3b762c2ab4d45 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: mk-1st.awk,v 1.124 2021/10/15 00:50:05 tom Exp $
+# $Id: mk-1st.awk,v 1.125 2023/04/22 15:49:59 tom Exp $
 ##############################################################################
-# Copyright 2018-2020,2021 Thomas E. Dickey                                  #
+# Copyright 2018-2021,2023 Thomas E. Dickey                                  #
 # Copyright 1998-2016,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -354,8 +354,7 @@ BEGIN       {
                 && ( $1 != "link_test" ) \
                 && ( $2 == "lib" \
                   || $2 == "progs" \
-                  || $2 == "c++" \
-                  || $2 == "tack" ))
+                  || $2 == "c++" ))
                {
                        if ( found == 0 )
                        {
index 59e80d05fb865ecda3eca49793358e83cf4b187f..ae198df675a4b5e8b87db3ccf1d17cbadb7f35e6 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.183 2022/10/01 12:47:39 tom Exp $
+# $Id: Makefile.in,v 1.184 2024/01/19 12:00:00 tom Exp $
 ##############################################################################
-# Copyright 2018-2021,2022 Thomas E. Dickey                                  #
+# Copyright 2018-2022,2024 Thomas E. Dickey                                  #
 # Copyright 1998-2017,2018 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -251,7 +251,7 @@ init_keytry.h : make_keys$(BUILD_EXEEXT) keys.list
        ./make_keys$(BUILD_EXEEXT) keys.list > $@
 
 keys.list :    $(tinfo)/MKkeys_list.sh
-       AWK=$(AWK) $(SHELL) $(tinfo)/MKkeys_list.sh $(CAPLIST) | LC_ALL=C sort >$@
+       AWK=$(AWK) USE_SIGWINCH=@cf_cv_enable_sigwinch@ $(SHELL) $(tinfo)/MKkeys_list.sh $(CAPLIST) | LC_ALL=C sort >$@
 
 make_keys$(BUILD_EXEEXT) : \
                build.priv.h \
@@ -288,7 +288,7 @@ report_offsets$(BUILD_EXEEXT) : \
        $(SHELL) -e $(tinfo)/MKuserdefs.sh $(AWK) $(USE_BIG_STRINGS) $(CAPLIST) > $@
 
 ./lib_keyname.c: keys.list $(base)/MKkeyname.awk
-       $(AWK) -f $(base)/MKkeyname.awk bigstrings=$(USE_BIG_STRINGS) keys.list > $@
+       $(AWK) -f $(base)/MKkeyname.awk use_sigwinch=@cf_cv_enable_sigwinch@ bigstrings=$(USE_BIG_STRINGS) keys.list > $@
 
 ./codes.c: $(tinfo)/MKcodes.awk
        $(AWK) -f $(tinfo)/MKcodes.awk bigstrings=$(USE_BIG_STRINGS) $(CAPLIST) >$@
index 9a2a6db63876c9fc4474ac89b979656c59c3722e..e5362bd60d150d400927fe4a954f498b5e247e37 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: MKunctrl.awk,v 1.29 2020/02/02 23:34:34 tom Exp $
+# $Id: MKunctrl.awk,v 1.30 2024/02/03 21:09:14 tom Exp $
 ##############################################################################
-# Copyright 2020 Thomas E. Dickey                                            #
+# Copyright 2020,2024 Thomas E. Dickey                                       #
 # Copyright 1998-2012,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -144,7 +144,7 @@ END {
                print  "\tint check = (int) ChCharOf(ch);"
                print  "\tconst char *result;"
                print  ""
-               print  "(void) sp;"
+               print  "\t(void) sp;"
                print  "\tif (check >= 0 && check < (int)SIZEOF(unctrl_table)) {"
                print  "#if NCURSES_EXT_FUNCS"
                print  "\t\tif ((sp != 0)"
@@ -155,6 +155,7 @@ END {
                print  "\t\telse"
                print  "\t\tif ((check >= 160)"
                print  "\t\t && (check < 256)"
+               print  "\t\t && !_nc_unicode_locale()"
                print  "\t\t && ((sp != 0)"
                print  "\t\t  && ((sp->_legacy_coding > 0)"
                print  "\t\t   || (sp->_legacy_coding == 0"
index 25d5a674e1b8524fef3d2233c9f80cd662288463..147e5fe2db93c9bac85c0acdaa637c5eb2830e50 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 2003-2006,2009 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -32,8 +32,9 @@
  ****************************************************************************/
 
 #include <curses.priv.h>
+#include <tic.h>
 
-MODULE_ID("$Id: key_defined.c,v 1.10 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: key_defined.c,v 1.11 2023/06/24 15:36:32 tom Exp $")
 
 static int
 find_definition(TRIES * tree, const char *str)
@@ -41,7 +42,7 @@ find_definition(TRIES * tree, const char *str)
     TRIES *ptr;
     int result = OK;
 
-    if (str != 0 && *str != '\0') {
+    if (VALID_STRING(str) && *str != '\0') {
        for (ptr = tree; ptr != 0; ptr = ptr->sibling) {
            if (UChar(*str) == UChar(ptr->ch)) {
                if (str[1] == '\0' && ptr->child != 0) {
index ea449794b1ab8b7d3c99c5dad8f4e7754696b7ec..a3753af0d53e80cf90a3706abc4e3aecb7f7f725 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -45,7 +45,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_addstr.c,v 1.58 2022/06/11 20:12:04 tom Exp $")
+MODULE_ID("$Id: lib_addstr.c,v 1.62 2023/11/21 21:47:23 tom Exp $")
 
 NCURSES_EXPORT(int)
 waddnstr(WINDOW *win, const char *astr, int n)
@@ -55,16 +55,18 @@ waddnstr(WINDOW *win, const char *astr, int n)
 
     T((T_CALLED("waddnstr(%p,%s,%d)"), (void *) win, _nc_visbufn(astr, n), n));
 
-    if (win && (str != 0)) {
+    if (win && (str != 0) && (n != 0)) {
+       bool explicit = (n > 0);
+
        TR(TRACE_VIRTPUT | TRACE_ATTRS,
           ("... current %s", _traceattr(WINDOW_ATTRS(win))));
        code = OK;
 
        TR(TRACE_VIRTPUT, ("str is not null, length = %d",
-                          ((n > 0) ? n : (int) strlen(str))));
-       if (n < 0)
+                          (explicit ? n : (int) strlen(str))));
+       if (!explicit)
            n = INT_MAX;
-       while ((*str != '\0') && (n-- > 0)) {
+       while ((n-- > 0) && (*str != '\0')) {
            NCURSES_CH_T ch;
            TR(TRACE_VIRTPUT, ("*str = %#o", UChar(*str)));
            SetChar(ch, UChar(*str++), A_NORMAL);
@@ -144,7 +146,7 @@ wadd_wchnstr(WINDOW *win, const cchar_t *astr, int n)
        _nc_viscbuf(astr, n),
        n));
 
-    if (!win)
+    if (!win || !astr)
        returnCode(ERR);
 
     y = win->_cury;
@@ -228,16 +230,18 @@ waddnwstr(WINDOW *win, const wchar_t *str, int n)
 
     T((T_CALLED("waddnwstr(%p,%s,%d)"), (void *) win, _nc_viswbufn(str, n), n));
 
-    if (win && (str != 0)) {
+    if (win && (str != 0) && (n != 0)) {
+       bool explicit = (n > 0);
+
        TR(TRACE_VIRTPUT | TRACE_ATTRS,
           ("... current %s", _traceattr(WINDOW_ATTRS(win))));
        code = OK;
 
        TR(TRACE_VIRTPUT, ("str is not null, length = %d",
-                          ((n > 0) ? n : (int) wcslen(str))));
-       if (n < 0)
+                          (explicit ? n : (int) wcslen(str))));
+       if (!explicit)
            n = INT_MAX;
-       while ((*str != L('\0')) && (n-- > 0)) {
+       while ((n-- > 0) && (*str != L('\0'))) {
            NCURSES_CH_T ch;
            TR(TRACE_VIRTPUT, ("*str[0] = %#lx", (unsigned long) *str));
            SetChar(ch, *str++, A_NORMAL);
index b61d44a6a46f51bc61fd237ac161d02a7e6785ac..f001b22413fe3e36345ef25e375b901d795d5fbc 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -49,7 +49,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_color.c,v 1.149 2022/04/30 18:36:54 tom Exp $")
+MODULE_ID("$Id: lib_color.c,v 1.150 2023/09/16 16:39:15 tom Exp $")
 
 #ifdef USE_TERM_DRIVER
 #define CanChange      InfoOf(SP_PARM).canchange
@@ -745,7 +745,7 @@ _nc_init_color(SCREEN *sp, int color, int r, int g, int b)
        NCURSES_PUTP2("initialize_color",
                      TIPARM_4(initialize_color, color, r, g, b));
 #endif
-       sp->_color_defs = max(color + 1, sp->_color_defs);
+       sp->_color_defs = Max(color + 1, sp->_color_defs);
 
        result = OK;
     }
index 1136305afb3e9940ad369efbec04fde86fe41816..c96e417a9a487951c4f575cefd4aff2ec4f83c1a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2008,2009 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -43,7 +43,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_delwin.c,v 1.24 2021/12/11 23:56:25 tom Exp $")
+MODULE_ID("$Id: lib_delwin.c,v 1.25 2023/10/21 11:12:44 tom Exp $")
 
 static bool
 cannot_delete(WINDOW *win)
@@ -54,7 +54,7 @@ cannot_delete(WINDOW *win)
        result = FALSE;
     } else {
        WINDOWLIST *p;
-#ifdef USE_SP_WINDOWLIST
+#if NCURSES_SP_FUNCS && defined(USE_SP_WINDOWLIST)
        SCREEN *sp = _nc_screen_of(win);
 #endif
 
index d8f57f292d60067eb31e35d4b7fd6db91bb33544..de7832f4afc1d69769d8e859873adbcaf5b90170 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2000,2009 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -45,7 +45,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_echo.c,v 1.9 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_echo.c,v 1.10 2023/04/29 18:57:12 tom Exp $")
 
 NCURSES_EXPORT(int)
 NCURSES_SP_NAME(echo) (NCURSES_SP_DCL0)
@@ -53,7 +53,7 @@ NCURSES_SP_NAME(echo) (NCURSES_SP_DCL0)
     T((T_CALLED("echo(%p)"), (void *) SP_PARM));
     if (0 == SP_PARM)
        returnCode(ERR);
-    SP_PARM->_echo = TRUE;
+    IsEcho(SP_PARM) = TRUE;
     returnCode(OK);
 }
 
@@ -71,7 +71,7 @@ NCURSES_SP_NAME(noecho) (NCURSES_SP_DCL0)
     T((T_CALLED("noecho(%p)"), (void *) SP_PARM));
     if (0 == SP_PARM)
        returnCode(ERR);
-    SP_PARM->_echo = FALSE;
+    IsEcho(SP_PARM) = FALSE;
     returnCode(OK);
 }
 
index b8a9e4e66a4ddf921ee5afe92dcdaedf2113f339..85d2bdbaac0527cf91502eb38a2311e4a150fbb6 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2014,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -43,7 +43,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_endwin.c,v 1.25 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_endwin.c,v 1.28 2023/11/11 21:27:32 tom Exp $")
 
 NCURSES_EXPORT(int)
 NCURSES_SP_NAME(endwin) (NCURSES_SP_DCL0)
@@ -52,20 +52,24 @@ NCURSES_SP_NAME(endwin) (NCURSES_SP_DCL0)
 
     T((T_CALLED("endwin(%p)"), (void *) SP_PARM));
 
-    if (SP_PARM) {
+    if (SP_PARM != NULL) {
+       if (SP_PARM->_endwin != ewSuspend) {
 #ifdef USE_TERM_DRIVER
-       TERMINAL_CONTROL_BLOCK *TCB = TCBOf(SP_PARM);
+           TERMINAL_CONTROL_BLOCK *TCB = TCBOf(SP_PARM);
 
-       SP_PARM->_endwin = ewSuspend;
-       if (TCB && TCB->drv && TCB->drv->td_scexit)
-           TCB->drv->td_scexit(SP_PARM);
+           SP_PARM->_endwin = ewSuspend;
+           if (TCB && TCB->drv && TCB->drv->td_scexit)
+               TCB->drv->td_scexit(SP_PARM);
 #else
-       SP_PARM->_endwin = ewSuspend;
-       SP_PARM->_mouse_wrap(SP_PARM);
-       _nc_screen_wrap();
-       _nc_mvcur_wrap();       /* wrap up cursor addressing */
+           SP_PARM->_endwin = ewSuspend;
+           SP_PARM->_mouse_wrap(SP_PARM);
+           _nc_screen_wrap();
+           _nc_mvcur_wrap();   /* wrap up cursor addressing */
 #endif
-       code = NCURSES_SP_NAME(reset_shell_mode) (NCURSES_SP_ARG);
+           code = OK;
+       }
+       if (NCURSES_SP_NAME(reset_shell_mode) (NCURSES_SP_ARG) == ERR)
+           code = ERR;
     }
 
     returnCode(code);
index 831ded9d2dd1976dc575194101763de572238ed9..8e4767918bdd49def28c63fddf97a77d2070b06f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -44,7 +44,7 @@
 #define NEED_KEY_EVENT
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_getch.c,v 1.145 2022/12/24 22:38:38 tom Exp $")
+MODULE_ID("$Id: lib_getch.c,v 1.146 2023/04/29 18:57:12 tom Exp $")
 
 #include <fifo_defs.h>
 
@@ -298,8 +298,8 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
     } else
 #endif
 #if USE_KLIBC_KBD
-    if (NC_ISATTY(sp->_ifd) && sp->_cbreak) {
-       ch = _read_kbd(0, 1, !sp->_raw);
+    if (NC_ISATTY(sp->_ifd) && IsCbreak(sp)) {
+       ch = _read_kbd(0, 1, !IsRaw(sp));
        n = (ch == -1) ? -1 : 1;
        sp->_extended_key = (ch == 0);
     } else
@@ -308,7 +308,7 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
 #if defined(USE_TERM_DRIVER)
        int buf;
 # if defined(EXP_WIN32_DRIVER)
-       if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && sp->_cbreak) {
+       if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && IsCbreak(sp)) {
            _nc_set_read_thread(TRUE);
            n = _nc_console_read(sp,
                                 _nc_console_handle(sp->_ifd),
@@ -316,7 +316,7 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
            _nc_set_read_thread(FALSE);
        } else
 # elif defined(_NC_WINDOWS)
-       if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && sp->_cbreak)
+       if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && IsCbreak(sp))
            n = _nc_mingw_console_read(sp,
                                       _nc_get_handle(sp->_ifd),
                                       &buf);
@@ -479,8 +479,8 @@ _nc_wgetch(WINDOW *win,
      */
     if (head == -1 &&
        !sp->_notty &&
-       !sp->_raw &&
-       !sp->_cbreak &&
+       !IsRaw(sp) &&
+       !IsCbreak(sp) &&
        !sp->_called_wgetch) {
        char buf[MAXCOLUMNS], *bufp;
 
@@ -513,13 +513,13 @@ _nc_wgetch(WINDOW *win,
 
     recur_wrefresh(win);
 
-    if (win->_notimeout || (win->_delay >= 0) || (sp->_cbreak > 1)) {
+    if (win->_notimeout || (win->_delay >= 0) || (IsCbreak(sp) > 1)) {
        if (head == -1) {       /* fifo is empty */
            int delay;
 
            TR(TRACE_IEVENT, ("timed delay in wgetch()"));
-           if (sp->_cbreak > 1)
-               delay = (sp->_cbreak - 1) * 100;
+           if (IsCbreak(sp) > 1)
+               delay = (IsCbreak(sp) - 1) * 100;
            else
                delay = win->_delay;
 
@@ -638,7 +638,7 @@ _nc_wgetch(WINDOW *win,
      * However, we provide the same visual result as Solaris, moving the
      * cursor to the left.
      */
-    if (sp->_echo && !IS_PAD(win)) {
+    if (IsEcho(sp) && !IS_PAD(win)) {
        chtype backup = (chtype) ((ch == KEY_BACKSPACE) ? '\b' : ch);
        if (backup < KEY_MIN)
            wechochar(win, backup);
@@ -647,7 +647,7 @@ _nc_wgetch(WINDOW *win,
     /*
      * Simulate ICRNL mode
      */
-    if ((ch == '\r') && sp->_nl)
+    if ((ch == '\r') && IsNl(sp))
        ch = '\n';
 
     /* Strip 8th-bit if so desired.  We do this only for characters that
index 8ddf7651a6719b110cf50f00ad717f252f8f44ff..cac21fc85bd9fa9402aa74c0b0e591cd061e6bdb 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2011,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -42,7 +42,7 @@
 #define NEED_KEY_EVENT
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_getstr.c,v 1.38 2021/10/23 19:02:39 tom Exp $")
+MODULE_ID("$Id: lib_getstr.c,v 1.39 2023/04/29 19:00:17 tom Exp $")
 
 /*
  * This wipes out the last character, no matter whether it was a tab, control
@@ -78,7 +78,7 @@ wgetnstr_events(WINDOW *win,
 {
     SCREEN *sp = _nc_screen_of(win);
     TTY buf;
-    bool oldnl, oldecho, oldraw, oldcbreak;
+    TTY_FLAGS save_flags;
     char erasec;
     char killc;
     char *oldstr;
@@ -94,13 +94,11 @@ wgetnstr_events(WINDOW *win,
 
     NCURSES_SP_NAME(_nc_get_tty_mode) (NCURSES_SP_ARGx &buf);
 
-    oldnl = sp->_nl;
-    oldecho = sp->_echo;
-    oldraw = sp->_raw;
-    oldcbreak = sp->_cbreak;
+    save_flags = sp->_tty_flags;
     NCURSES_SP_NAME(nl) (NCURSES_SP_ARG);
     NCURSES_SP_NAME(noecho) (NCURSES_SP_ARG);
-    NCURSES_SP_NAME(raw) (NCURSES_SP_ARG);
+    if (!save_flags._raw)
+       NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG);
 
     erasec = NCURSES_SP_NAME(erasechar) (NCURSES_SP_ARG);
     killc = NCURSES_SP_NAME(killchar) (NCURSES_SP_ARG);
@@ -122,7 +120,7 @@ wgetnstr_events(WINDOW *win,
            || ch == '\r'
            || ch == KEY_DOWN
            || ch == KEY_ENTER) {
-           if (oldecho == TRUE
+           if (save_flags._echo == TRUE
                && win->_cury == win->_maxy
                && win->_scroll)
                wechochar(win, (chtype) '\n');
@@ -138,18 +136,18 @@ wgetnstr_events(WINDOW *win,
 #endif
        if (ch == erasec || ch == KEY_LEFT || ch == KEY_BACKSPACE) {
            if (str > oldstr) {
-               str = WipeOut(win, y, x, oldstr, str, oldecho);
+               str = WipeOut(win, y, x, oldstr, str, save_flags._echo);
            }
        } else if (ch == killc) {
            while (str > oldstr) {
-               str = WipeOut(win, y, x, oldstr, str, oldecho);
+               str = WipeOut(win, y, x, oldstr, str, save_flags._echo);
            }
        } else if (ch >= KEY_MIN
                   || (str - oldstr >= maxlen)) {
            NCURSES_SP_NAME(beep) (NCURSES_SP_ARG);
        } else {
            *str++ = (char) ch;
-           if (oldecho == TRUE) {
+           if (save_flags._echo == TRUE) {
                int oldy = win->_cury;
                if (waddch(win, (chtype) ch) == ERR) {
                    /*
@@ -159,7 +157,7 @@ wgetnstr_events(WINDOW *win,
                     */
                    win->_flags &= ~_WRAPPED;
                    waddch(win, (chtype) ' ');
-                   str = WipeOut(win, y, x, oldstr, str, oldecho);
+                   str = WipeOut(win, y, x, oldstr, str, save_flags._echo);
                    continue;
                } else if (IS_WRAPPED(win)) {
                    /*
@@ -190,11 +188,7 @@ wgetnstr_events(WINDOW *win,
     /* Restore with a single I/O call, to fix minor asymmetry between
      * raw/noraw, etc.
      */
-    sp->_nl = oldnl;
-    sp->_echo = oldecho;
-    sp->_raw = oldraw;
-    sp->_cbreak = oldcbreak;
-
+    sp->_tty_flags = save_flags;
     NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
 
     *str = '\0';
index dd51a9cd18f9ab41436d57c3b8aa7a33230e7128..caec48e8eb700825e2c61f3e569a075e28af5fa8 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2004-2009,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -41,7 +41,7 @@
 #include <curses.priv.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_insnstr.c,v 1.8 2022/05/21 17:35:15 tom Exp $")
+MODULE_ID("$Id: lib_insnstr.c,v 1.10 2023/11/21 21:58:03 tom Exp $")
 
 NCURSES_EXPORT(int)
 winsnstr(WINDOW *win, const char *s, int n)
@@ -51,7 +51,7 @@ winsnstr(WINDOW *win, const char *s, int n)
 
     T((T_CALLED("winsnstr(%p,%s,%d)"), (void *) win, _nc_visbufn(s, n), n));
 
-    if (win != 0 && str != 0) {
+    if (win != 0 && str != 0 && n != 0) {
        SCREEN *sp = _nc_screen_of(win);
 #if USE_WIDEC_SUPPORT
        /*
@@ -83,7 +83,7 @@ winsnstr(WINDOW *win, const char *s, int n)
            NCURSES_SIZE_T ox = win->_curx;
            const unsigned char *cp;
 
-           for (cp = str; (n <= 0 || (cp - str) < n) && *cp; cp++) {
+           for (cp = str; (n < 0 || (cp - str) < n) && *cp; cp++) {
                _nc_insert_ch(sp, win, (chtype) UChar(*cp));
            }
            win->_curx = ox;
index b9874b7cc8859667afb0e41d38b125695a3b329a..221ebd290400ccf27d436a0561140af6e377ac23 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -42,7 +42,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_instr.c,v 1.25 2021/04/03 22:24:18 tom Exp $")
+MODULE_ID("$Id: lib_instr.c,v 1.26 2023/06/03 12:37:04 tom Exp $")
 
 NCURSES_EXPORT(int)
 winnstr(WINDOW *win, char *str, int n)
@@ -83,7 +83,7 @@ winnstr(WINDOW *win, char *str, int n)
 
                        init_mb(state);
                        n3 = wcstombs(0, wch, (size_t) 0);
-                       if (!isEILSEQ(n3) && (n3 != 0)) {
+                       if (!isEILSEQ(n3) && (n3 != 0) && (n3 <= MB_LEN_MAX)) {
                            size_t need = n3 + 10 + (size_t) i;
                            int have = (int) n3 + i;
 
index f4151b815bec87722f4f7dd33a0e9144aeeb02b7..a03d8b8e1ab0e59f8cf411f42e515c2bc44d9469 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -85,7 +85,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_mouse.c,v 1.197 2022/08/13 14:13:12 tom Exp $")
+MODULE_ID("$Id: lib_mouse.c,v 1.200 2024/02/17 21:13:01 tom Exp $")
 
 #include <tic.h>
 
@@ -380,7 +380,7 @@ handle_sysmouse(int sig GCC_UNUSED)
 }
 #endif /* USE_SYSMOUSE */
 
-#ifndef USE_TERM_DRIVER
+#if !defined(USE_TERM_DRIVER) || defined(EXP_WIN32_DRIVER)
 #define xterm_kmous "\033[M"
 
 static void
@@ -442,6 +442,9 @@ init_xterm_mouse(SCREEN *sp)
 static void
 enable_xterm_mouse(SCREEN *sp, int enable)
 {
+    TPUTS_TRACE(enable
+               ? "xterm mouse initialization"
+               : "xterm mouse deinitialization");
 #if USE_EMX_MOUSE
     sp->_emxmouse_activated = enable;
 #else
@@ -450,6 +453,18 @@ enable_xterm_mouse(SCREEN *sp, int enable)
     sp->_mouse_active = enable;
 }
 
+#if defined(USE_TERM_DRIVER)
+static void
+enable_win32_mouse(SCREEN *sp, int enable)
+{
+#if defined(EXP_WIN32_DRIVER)
+    enable_xterm_mouse(sp, enable);
+#else
+    sp->_mouse_active = enable;
+#endif
+}
+#endif
+
 #if USE_GPM_SUPPORT
 static bool
 allow_gpm_mouse(SCREEN *sp GCC_UNUSED)
@@ -741,7 +756,8 @@ initialize_mousetype(SCREEN *sp)
 
 #ifdef USE_TERM_DRIVER
     CallDriver(sp, td_initmouse);
-#else
+#endif
+#if !defined(USE_TERM_DRIVER) || defined(EXP_WIN32_DRIVER)
     /* we know how to recognize mouse events under "xterm" */
     if (NonEmpty(key_mouse)) {
        init_xterm_mouse(sp);
@@ -760,13 +776,15 @@ _nc_mouse_init(SCREEN *sp)
 {
     bool result = FALSE;
 
+    T((T_CALLED("_nc_mouse_init(%p)"), (void *) sp));
+
     if (sp != 0) {
        if (!sp->_mouse_initialized) {
            int i;
 
            sp->_mouse_initialized = TRUE;
 
-           TR(MY_TRACE, ("_nc_mouse_init() called"));
+           TR(MY_TRACE, ("set _mouse_initialized"));
 
            sp->_mouse_eventp = FirstEV(sp);
            for (i = 0; i < EV_MAX; i++)
@@ -774,11 +792,11 @@ _nc_mouse_init(SCREEN *sp)
 
            initialize_mousetype(sp);
 
-           T(("_nc_mouse_init() set mousetype to %d", sp->_mouse_type));
+           T(("set _mouse_type to %d", sp->_mouse_type));
        }
        result = sp->_mouse_initialized;
     }
-    return result;
+    returnCode(result);
 }
 
 /*
@@ -1388,11 +1406,14 @@ _nc_mouse_inline(SCREEN *sp)
 static void
 mouse_activate(SCREEN *sp, int on)
 {
+    T((T_CALLED("mouse_activate(%p,%s)"),
+       (void *) SP_PARM, on ? "on" : "off"));
+
     if (!on && !sp->_mouse_initialized)
-       return;
+       returnVoid;
 
     if (!_nc_mouse_init(sp))
-       return;
+       returnVoid;
 
     if (on) {
        sp->_mouse_bstate = 0;
@@ -1401,7 +1422,6 @@ mouse_activate(SCREEN *sp, int on)
 #if NCURSES_EXT_FUNCS
            NCURSES_SP_NAME(keyok) (NCURSES_SP_ARGx KEY_MOUSE, on);
 #endif
-           TPUTS_TRACE("xterm mouse initialization");
            enable_xterm_mouse(sp, 1);
            break;
 #if USE_GPM_SUPPORT
@@ -1420,25 +1440,28 @@ mouse_activate(SCREEN *sp, int on)
 #endif
 #ifdef USE_TERM_DRIVER
        case M_TERM_DRIVER:
-           sp->_mouse_active = TRUE;
+           enable_win32_mouse(sp, TRUE);
            break;
 #endif
        case M_NONE:
-           return;
+           returnVoid;
+       default:
+           T(("unexpected mouse mode"));
+           break;
        }
        /* Make runtime binding to cut down on object size of applications that
         * do not use the mouse (e.g., 'clear').
         */
-       sp->_mouse_event = _nc_mouse_event;
+       /* *INDENT-EQLS* */
+       sp->_mouse_event  = _nc_mouse_event;
        sp->_mouse_inline = _nc_mouse_inline;
-       sp->_mouse_parse = _nc_mouse_parse;
+       sp->_mouse_parse  = _nc_mouse_parse;
        sp->_mouse_resume = _nc_mouse_resume;
-       sp->_mouse_wrap = _nc_mouse_wrap;
+       sp->_mouse_wrap   = _nc_mouse_wrap;
     } else {
 
        switch (sp->_mouse_type) {
        case M_XTERM:
-           TPUTS_TRACE("xterm mouse deinitialization");
            enable_xterm_mouse(sp, 0);
            break;
 #if USE_GPM_SUPPORT
@@ -1454,14 +1477,18 @@ mouse_activate(SCREEN *sp, int on)
 #endif
 #ifdef USE_TERM_DRIVER
        case M_TERM_DRIVER:
-           sp->_mouse_active = FALSE;
+           enable_win32_mouse(sp, FALSE);
            break;
 #endif
        case M_NONE:
-           return;
+           returnVoid;
+       default:
+           T(("unexpected mouse mode"));
+           break;
        }
     }
     NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+    returnVoid;
 }
 
 /**************************************************************************
@@ -1963,10 +1990,24 @@ wenclose(const WINDOW *win, int y, int x)
 
     if (win != 0) {
        y -= win->_yoffset;
-       result = ((win->_begy <= y &&
-                  win->_begx <= x &&
-                  (win->_begx + win->_maxx) >= x &&
-                  (win->_begy + win->_maxy) >= y) ? TRUE : FALSE);
+       if (IS_PAD(win)) {
+           if (win->_pad._pad_y >= 0 &&
+               win->_pad._pad_x >= 0 &&
+               win->_pad._pad_top >= 0 &&
+               win->_pad._pad_left >= 0 &&
+               win->_pad._pad_right >= 0 &&
+               win->_pad._pad_bottom >= 0) {
+               result = ((win->_pad._pad_top <= y &&
+                          win->_pad._pad_left <= x &&
+                          win->_pad._pad_right >= x &&
+                          win->_pad._pad_bottom >= y) ? TRUE : FALSE);
+           }
+       } else {
+           result = ((win->_begy <= y &&
+                      win->_begx <= x &&
+                      (win->_begx + win->_maxx) >= x &&
+                      (win->_begy + win->_maxy) >= y) ? TRUE : FALSE);
+       }
     }
     returnBool(result);
 }
@@ -2035,6 +2076,7 @@ wmouse_trafo(const WINDOW *win, int *pY, int *pX, bool to_screen)
        int y = *pY;
        int x = *pX;
 
+       T(("transform input %d,%d", y, x));
        if (to_screen) {
            y += win->_begy + win->_yoffset;
            x += win->_begx;
@@ -2050,6 +2092,7 @@ wmouse_trafo(const WINDOW *win, int *pY, int *pX, bool to_screen)
        if (result) {
            *pX = x;
            *pY = y;
+           T(("output transform %d,%d", y, x));
        }
     }
     returnBool(result);
index df07349fc83c02577715efa2b00c6dcb993e0d80..417b257d0399c7a223810367ec13d0b49e40e8d6 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2000,2009 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -45,7 +45,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_nl.c,v 1.13 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_nl.c,v 1.14 2023/04/29 18:51:49 tom Exp $")
 
 #ifdef __EMX__
 #include <io.h>
@@ -57,7 +57,7 @@ NCURSES_SP_NAME(nl) (NCURSES_SP_DCL0)
     T((T_CALLED("nl(%p)"), (void *) SP_PARM));
     if (0 == SP_PARM)
        returnCode(ERR);
-    SP_PARM->_nl = TRUE;
+    IsNl(SP_PARM) = TRUE;
 #ifdef __EMX__
     _nc_flush();
     _fsetmode(NC_OUTPUT(SP_PARM), "t");
@@ -79,7 +79,7 @@ NCURSES_SP_NAME(nonl) (NCURSES_SP_DCL0)
     T((T_CALLED("nonl(%p)"), (void *) SP_PARM));
     if (0 == SP_PARM)
        returnCode(ERR);
-    SP_PARM->_nl = FALSE;
+    IsNl(SP_PARM) = FALSE;
 #ifdef __EMX__
     _nc_flush();
     _fsetmode(NC_OUTPUT(SP_PARM), "b");
index 6d451d046a852047ea17996944d13efc7ff978d7..6d21c7617047b08939f6889586f21585ec1435ed 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2013,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -41,7 +41,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_overlay.c,v 1.33 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_overlay.c,v 1.34 2023/09/16 16:39:07 tom Exp $")
 
 static int
 overlap(const WINDOW *const src, WINDOW *const dst, int const flag)
@@ -78,12 +78,12 @@ overlap(const WINDOW *const src, WINDOW *const dst, int const flag)
        dy2 = dy1 + dst->_maxy;
 
        if (dx2 >= sx1 && dx1 <= sx2 && dy2 >= sy1 && dy1 <= sy2) {
-           int sminrow = max(sy1, dy1) - sy1;
-           int smincol = max(sx1, dx1) - sx1;
-           int dminrow = max(sy1, dy1) - dy1;
-           int dmincol = max(sx1, dx1) - dx1;
-           int dmaxrow = min(sy2, dy2) - dy1;
-           int dmaxcol = min(sx2, dx2) - dx1;
+           int sminrow = Max(sy1, dy1) - sy1;
+           int smincol = Max(sx1, dx1) - sx1;
+           int dminrow = Max(sy1, dy1) - dy1;
+           int dmincol = Max(sx1, dx1) - dx1;
+           int dmaxrow = Min(sy2, dy2) - dy1;
+           int dmaxcol = Min(sx2, dx2) - dx1;
 
            rc = copywin(src, dst,
                         sminrow, smincol,
index 4579cbf81162053c2a8284120e4c85cf2afc9000..bcaa4624b8a938fe6f3f12924a2ae8d3580e9844 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2010,2011 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -43,7 +43,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_refresh.c,v 1.47 2021/11/06 22:22:03 tom Exp $")
+MODULE_ID("$Id: lib_refresh.c,v 1.48 2023/05/27 20:13:10 tom Exp $")
 
 NCURSES_EXPORT(int)
 wrefresh(WINDOW *win)
@@ -208,7 +208,6 @@ wnoutrefresh(WINDOW *win)
            });
 
            if_WIDEC({
-               static cchar_t blank = BLANK;
                int last_dst = begx + ((last_src < win->_maxx)
                                       ? last_src
                                       : win->_maxx);
@@ -254,6 +253,7 @@ wnoutrefresh(WINDOW *win)
                 */
                if (fix_left < dst_col || fix_right > last_dst) {
                    for (j = fix_left; j <= fix_right; ++j) {
+                       static cchar_t blank = BLANK;
                        nline->text[j] = blank;
                        CHANGED_CELL(nline, j);
                    }
index 81eb368843b8b1f9d1089a9639aa4d28a14a90d0..0c61cb7ea6671634032380ec71f7de1de6e48b54 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2012,2015 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -42,7 +42,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_restart.c,v 1.17 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_restart.c,v 1.18 2023/04/29 19:01:25 tom Exp $")
 
 NCURSES_EXPORT(int)
 NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx
@@ -65,31 +65,28 @@ NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx
     if (TINFO_SETUP_TERM(&new_term, termp, filenum, errret, FALSE) != OK) {
        result = ERR;
     } else if (SP_PARM != 0) {
-       int saveecho = SP_PARM->_echo;
-       int savecbreak = SP_PARM->_cbreak;
-       int saveraw = SP_PARM->_raw;
-       int savenl = SP_PARM->_nl;
+       TTY_FLAGS save_flags = SP_PARM->_tty_flags;
 
 #ifdef USE_TERM_DRIVER
        SP_PARM->_term = new_term;
 #endif
-       if (saveecho) {
+       if (save_flags._echo) {
            NCURSES_SP_NAME(echo) (NCURSES_SP_ARG);
        } else {
            NCURSES_SP_NAME(noecho) (NCURSES_SP_ARG);
        }
 
-       if (savecbreak) {
+       if (save_flags._cbreak) {
            NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG);
            NCURSES_SP_NAME(noraw) (NCURSES_SP_ARG);
-       } else if (saveraw) {
+       } else if (save_flags._raw) {
            NCURSES_SP_NAME(nocbreak) (NCURSES_SP_ARG);
            NCURSES_SP_NAME(raw) (NCURSES_SP_ARG);
        } else {
            NCURSES_SP_NAME(nocbreak) (NCURSES_SP_ARG);
            NCURSES_SP_NAME(noraw) (NCURSES_SP_ARG);
        }
-       if (savenl) {
+       if (save_flags._nl) {
            NCURSES_SP_NAME(nl) (NCURSES_SP_ARG);
        } else {
            NCURSES_SP_NAME(nonl) (NCURSES_SP_ARG);
index 70cf6fd8a5e2d0fc861bc82d0d064a19df37c4c7..e2647b54e2ebad81063bcf5b3f7d2e9f145dbbad 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2019-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -42,7 +42,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_screen.c,v 1.104 2021/10/23 17:12:16 tom Exp $")
+MODULE_ID("$Id: lib_screen.c,v 1.105 2023/04/28 20:58:54 tom Exp $")
 
 #define MAX_SIZE 0x3fff                /* 16k is big enough for a window or pad */
 
@@ -90,7 +90,6 @@ typedef struct {
 typedef struct {
     const char name[17];
     PARAM_TYPE type;
-    size_t size;
     size_t offset;
 } SCR_PARAMS;
 
@@ -120,8 +119,7 @@ static const SCR_ATTRS scr_attrs[] =
 };
 #undef DATA
 
-#define sizeof2(type,name) sizeof(((type *)0)->name)
-#define DATA(name, type) { { #name }, type, sizeof2(WINDOW, name), offsetof(WINDOW, name) }
+#define DATA(name, type) { { #name }, type, offsetof(WINDOW, name) }
 
 static const SCR_PARAMS scr_params[] =
 {
index b25cf908133d55322cca2f9dc71c2ac82b0eec7a..1a2ddb365a58a19b09b1cb74415e30aa3c3cfe50 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2024 Thomas E. Dickey                                *
  * Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -46,7 +46,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: resizeterm.c,v 1.52 2021/10/23 17:12:33 tom Exp $")
+MODULE_ID("$Id: resizeterm.c,v 1.53 2024/04/20 21:54:14 tom Exp $")
 
 /*
  * If we're trying to be reentrant, do not want any local statics.
@@ -409,8 +409,8 @@ NCURSES_SP_NAME(resize_term) (NCURSES_SP_DCLx int ToLines, int ToCols)
 #ifdef USE_TERM_DRIVER
            CallDriver_2(SP_PARM, td_setsize, ToLines, ToCols);
 #else
-           lines = (NCURSES_SIZE_T) ToLines;
-           columns = (NCURSES_SIZE_T) ToCols;
+           lines = (NCURSES_INT2) ToLines;
+           columns = (NCURSES_INT2) ToCols;
 #endif
 
            SP_PARM->_lines_avail = (NCURSES_SIZE_T) (ToLines - was_stolen);
index 3fff2e83c4df473cdc6e92ba888409ec08772b4d..8816e58c2ca8d2a7093f86339992b554358dd627 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2012,2013 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -34,7 +34,7 @@
 #include <curses.priv.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: safe_sprintf.c,v 1.35 2021/10/03 00:25:09 tom Exp $")
+MODULE_ID("$Id: safe_sprintf.c,v 1.37 2023/09/30 10:42:42 tom Exp $")
 
 #if USE_SAFE_SPRINTF
 
@@ -264,11 +264,18 @@ NCURSES_SP_NAME(_nc_printf_string) (NCURSES_SP_DCLx
 # if HAVE_VSNPRINTF
            /* SUSv2, 1997 */
            int used;
-           while ((used = vsnprintf(my_buffer, my_length, fmt, ap))
-                  >= (int) my_length) {
+
+           do {
+               va_list ap2;
+
+               begin_va_copy(ap2, ap);
+               used = vsnprintf(my_buffer, my_length, fmt, ap2);
+               end_va_copy(ap2);
+               if (used < (int) my_length)
+                   break;
                my_length = (size_t) ((3 * used) / 2);
                my_buffer = typeRealloc(char, my_length, my_buffer);
-           }
+           } while (my_buffer != NULL);
 # else
            /* ISO/ANSI C, 1989 */
            vsprintf(my_buffer, fmt, ap);
index 0f309c213c456f87ceb6fdf9889c33a29aab5716..0f8c0516e88f0ab36cebfcec4ef368345d2aa528 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2009,2010 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -39,8 +39,9 @@
 */
 
 #include <curses.priv.h>
+#include <tic.h>
 
-MODULE_ID("$Id: tries.c,v 1.31 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: tries.c,v 1.32 2023/06/24 15:36:23 tom Exp $")
 
 /*
  * Expand a keycode into the string that it corresponds to, returning null if
@@ -124,7 +125,7 @@ _nc_remove_string(TRIES ** tree, const char *string)
 {
     T((T_CALLED("_nc_remove_string(%p,%s)"), (void *) tree, _nc_visbuf(string)));
 
-    if (string == 0 || *string == 0)
+    if (!VALID_STRING(string) || *string == 0)
        returnCode(FALSE);
 
     while (*tree != 0) {
index ef524250c36f358a7821e8c0b52603100d1a9bd9..40ee8bb1d87681456043fb02f032ae6deb3efa29 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2004,2012 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
 
 #if !HAVE_VSSCANF
 
-MODULE_ID("$Id: vsscanf.c,v 1.21 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: vsscanf.c,v 1.22 2023/09/23 18:48:57 tom Exp $")
 
 #if !(HAVE_VFSCANF || HAVE__DOSCAN)
 
 #include <ctype.h>
 
-#define L_SQUARE '['
-#define R_SQUARE ']'
-
 typedef enum {
     cUnknown
     ,cError                    /* anything that isn't ANSI */
@@ -243,7 +240,7 @@ vsscanf(const char *str, const char *format, va_list ap)
                    case sPercent:
                        if (format[n] == '%') {
                            state = sUnknown;
-                       } else if (format[n] == L_SQUARE) {
+                       } else if (format[n] == L_BLOCK) {
                            state = sLeft;
                        } else {
                            state = sNormal;
@@ -258,7 +255,7 @@ vsscanf(const char *str, const char *format, va_list ap)
                        }
                        break;
                    case sRange:
-                       if (format[n] == R_SQUARE) {
+                       if (format[n] == R_BLOCK) {
                            state = sFinal;
                            chunk = cRange;
                        }
index 5eb6a30482f52a20d3d0c787f69fd3eccbcfbb79..6d5589e2794e867de44e1d9ac55e50cfb685b64a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2019-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2010,2011 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -34,7 +34,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: wresize.c,v 1.42 2021/10/23 18:54:16 tom Exp $")
+MODULE_ID("$Id: wresize.c,v 1.43 2023/10/21 11:13:03 tom Exp $")
 
 static int
 cleanup_lines(struct ldat *data, int length)
@@ -55,7 +55,7 @@ repair_subwindows(WINDOW *cmp)
     WINDOWLIST *wp;
     struct ldat *pline = cmp->_line;
     int row;
-#ifdef USE_SP_WINDOWLIST
+#if NCURSES_SP_FUNCS && defined(USE_SP_WINDOWLIST)
     SCREEN *sp = _nc_screen_of(cmp);
 #endif
 
index ff57cbf0ba90a04f584b73583e0294c0ce7c53a7..bf81cf18a1bec95c0fa289ca2486c4c7261614a2 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -35,7 +35,7 @@
  ****************************************************************************/
 
 /*
- * $Id: curses.priv.h,v 1.653 2022/10/23 13:29:26 tom Exp $
+ * $Id: curses.priv.h,v 1.688 2024/05/04 18:30:25 tom Exp $
  *
  *     curses.priv.h
  *
@@ -72,12 +72,6 @@ extern "C" {
 #include <unistd.h>
 #endif
 
-#if HAVE_LIMITS_H
-# include <limits.h>
-#elif HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
-
 #include <assert.h>
 #include <stdio.h>
 
@@ -89,16 +83,6 @@ extern "C" {
 #  endif
 #endif
 
-#ifndef PATH_MAX
-# if defined(_POSIX_PATH_MAX)
-#  define PATH_MAX _POSIX_PATH_MAX
-# elif defined(MAXPATHLEN)
-#  define PATH_MAX MAXPATHLEN
-# else
-#  define PATH_MAX 255 /* the Posix minimum path-size */
-# endif
-#endif
-
 #if DECL_ERRNO
 extern int errno;
 #endif
@@ -141,8 +125,18 @@ extern int errno;
 # endif
 #endif
 
+#if (defined(__USE_MINGW_ANSI_STDIO) && __USE_MINGW_ANSI_STDIO != 0) && (defined(__GNUC__) && (__GNUC__ < 12))
+# undef PRIxPTR                /* gcc bug fixed in 12.x */
+# define PRIxPTR       "lX"
+# define CASTxPTR(n)    (unsigned long)(intptr_t)(void*)(n)
+#else
+# define CASTxPTR(n)    (intptr_t)(n)
+#endif
+
 #ifndef PRIxPTR
 # define PRIxPTR       "lx"
+# undef CASTxPTR
+# define CASTxPTR(n)    (long)(void*)(n)
 #endif
 
 /* include signal.h before curses.h to work-around defect in glibc 2.1.3 */
@@ -210,6 +204,24 @@ extern int errno;
 #  define NCURSES_PATHSEP ';'
 #endif
 
+/*
+ * When the standard handles have been redirected (such as inside a text editor
+ * or the less utility), keystrokes must be read from the console rather than
+ * the redirected handle.  The standard output handle suffers from a similar
+ * problem.  Both handles are not closed once opened.  The console shall be
+ * considered reachable throughout the process.
+ */
+#if defined(_NC_WINDOWS)
+#define GetDirectHandle(fileName, shareMode) \
+       CreateFile(TEXT(fileName), \
+                  GENERIC_READ | GENERIC_WRITE, \
+                  shareMode, \
+                  0, \
+                  OPEN_EXISTING, \
+                  0, \
+                  0)
+#endif
+
 /*
  * Not all platforms have memmove; some have an equivalent bcopy.  (Some may
  * have neither).
@@ -285,7 +297,6 @@ extern NCURSES_EXPORT(void *) _nc_memmove (void *, const void *, size_t);
 #define NO_TERMINAL "unknown"
 #define USE_SP_RIPOFF     1
 #define USE_SP_TERMTYPE   1
-#define USE_SP_WINDOWLIST 1
 #else
 #define NO_TERMINAL 0
 #endif
@@ -296,6 +307,12 @@ extern NCURSES_EXPORT(void *) _nc_memmove (void *, const void *, size_t);
                     : no_terminal), \
         NonEmpty(term_env))
 
+/*
+ * Originally a terminal-driver option, the window-list is per-screen to allow
+ * freeing memory used for windows when a screen is deleted.
+ */
+#define USE_SP_WINDOWLIST 1
+
 /*
  * Note:  ht/cbt expansion flakes out randomly under Linux 1.1.47, but only
  * when we're throwing control codes at the screen at high volume.  To see
@@ -318,6 +335,11 @@ typedef TRIES {
  */
 #define StringOf(ch) {ch, 0}
 
+#define CSI_CHR 0x9b
+#define ESC_CHR 0x1b
+
+#define L_BLOCK '['
+#define R_BLOCK ']'
 #define L_BRACE '{'
 #define R_BRACE '}'
 #define S_QUOTE '\''
@@ -547,10 +569,10 @@ extern NCURSES_EXPORT(void)     _nc_set_no_padding(SCREEN *);
 #define SET_SCREEN_PAIR(s,p)   SetPair(SCREEN_ATTRS(s), p)
 
 #if USE_REENTRANT || NCURSES_SP_FUNCS
-NCURSES_EXPORT(int *)        _nc_ptr_Lines (SCREEN *);
-NCURSES_EXPORT(int *)        _nc_ptr_Cols (SCREEN *);
-NCURSES_EXPORT(int *)        _nc_ptr_Tabsize (SCREEN *);
-NCURSES_EXPORT(int *)        _nc_ptr_Escdelay (SCREEN *);
+extern NCURSES_EXPORT(int *)    _nc_ptr_Lines (SCREEN *);
+extern NCURSES_EXPORT(int *)    _nc_ptr_Cols (SCREEN *);
+extern NCURSES_EXPORT(int *)    _nc_ptr_Tabsize (SCREEN *);
+extern NCURSES_EXPORT(int *)    _nc_ptr_Escdelay (SCREEN *);
 #endif
 
 #if USE_REENTRANT
@@ -714,9 +736,18 @@ extern NCURSES_EXPORT(void) _nc_set_read_thread(bool);
 
 #endif
 
-#if HAVE_GETTIMEOFDAY
+#if HAVE_CLOCK_GETTIME
+# define PRECISE_GETTIME 1
+# define GetClockTime(t) clock_gettime(CLOCK_REALTIME, t)
+# define TimeType struct timespec
+# define TimeScale 1000000000L         /* 1e9 */
+# define sub_secs tv_nsec
+#elif HAVE_GETTIMEOFDAY
 # define PRECISE_GETTIME 1
+# define GetClockTime(t) gettimeofday(t, 0)
 # define TimeType struct timeval
+# define TimeScale 1000000L            /* 1e6 */
+# define sub_secs tv_usec
 #else
 # define PRECISE_GETTIME 0
 # define TimeType time_t
@@ -839,6 +870,12 @@ typedef int (*TYPE_Gpm_GetEvent) (Gpm_Event *);
 #endif /* HAVE_LIBDL */
 #endif /* USE_GPM_SUPPORT */
 
+/*
+ * Limit delay-times to 30 seconds, which is consistent with signed 16-bit
+ * numbers in legacy terminfo.
+ */
+#define MAX_DELAY_MSECS 30000
+
 /*
  * When converting from terminfo to termcap, check for cases where we can trim
  * octal escapes down to 2-character form.  It is useful for terminfo format
@@ -869,6 +906,7 @@ typedef int (*TYPE_Gpm_GetEvent) (Gpm_Event *);
  * string is less than 80 columns, but this buffer size is an absolute
  * limit.
  */
+#define TRACECHR_BUF   40
 #define TRACEMSE_MAX   (80 + (5 * 10) + (32 * 15))
 #define TRACEMSE_FMT   "id %2d  at (%2d, %2d, %2d) state %4lx = {" /* } */
 
@@ -904,11 +942,25 @@ extern NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals;
 extern NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen;
 
 typedef enum {
-    ewInitial = 0,
+    ewUnknown = 0,
+    ewInitial,
     ewRunning,
     ewSuspend
 } ENDWIN;
 
+typedef struct {
+       int             _nl;            /* True if NL -> CR/NL is on        */
+       int             _raw;           /* True if in raw mode              */
+       int             _cbreak;        /* 1 if in cbreak mode              */
+                                       /* > 1 if in halfdelay mode         */
+       int             _echo;          /* True if echo on                  */
+} TTY_FLAGS;
+
+#define IsNl(sp)        (sp)->_tty_flags._nl
+#define IsRaw(sp)       (sp)->_tty_flags._raw
+#define IsCbreak(sp)    (sp)->_tty_flags._cbreak
+#define IsEcho(sp)      (sp)->_tty_flags._echo
+
 /*
  * The SCREEN structure.
  */
@@ -959,11 +1011,7 @@ typedef struct screen {
        int             _cursrow;       /* physical cursor row              */
        int             _curscol;       /* physical cursor column           */
        bool            _notty;         /* true if we cannot switch non-tty */
-       int             _nl;            /* True if NL -> CR/NL is on        */
-       int             _raw;           /* True if in raw mode              */
-       int             _cbreak;        /* 1 if in cbreak mode              */
-                                       /* > 1 if in halfdelay mode         */
-       int             _echo;          /* True if echo on                  */
+       TTY_FLAGS       _tty_flags;
        int             _use_meta;      /* use the meta key?                */
        struct _SLK     *_slk;          /* ptr to soft key struct / NULL    */
        int             slk_format;     /* selected format for this screen  */
@@ -1189,7 +1237,7 @@ typedef struct screen {
 #endif
 
 #ifdef TRACE
-       char            tracechr_buf[40];
+       char            tracechr_buf[TRACECHR_BUF];
        char            tracemse_buf[TRACEMSE_MAX];
 #if USE_REENTRANT
        long            _outchars;
@@ -1223,18 +1271,18 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
 #endif
 
 #define SP_PRE_INIT(sp)                         \
-    sp->_cursrow = -1;                          \
-    sp->_curscol = -1;                          \
-    sp->_nl = TRUE;                             \
-    sp->_raw = FALSE;                           \
-    sp->_cbreak = 0;                            \
-    sp->_echo = TRUE;                           \
-    sp->_fifohead = -1;                         \
-    sp->_endwin = ewSuspend;                    \
-    sp->_cursor = -1;                           \
+    sp->_cursrow           = -1;                \
+    sp->_curscol           = -1;                \
+    IsNl(sp)               = TRUE;              \
+    IsRaw(sp)              = FALSE;             \
+    IsCbreak(sp)           = 0;                 \
+    IsEcho(sp)             = TRUE;              \
+    sp->_fifohead          = -1;                \
+    sp->_endwin            = ewSuspend;         \
+    sp->_cursor            = -1;                \
     SP_INIT_WINDOWLIST(sp);                     \
-    sp->_outch = NCURSES_OUTC_FUNC;             \
-    sp->jump = 0                                \
+    sp->_outch             = NCURSES_OUTC_FUNC; \
+    sp->jump               = 0                  \
 
 /* usually in <limits.h> */
 #ifndef UCHAR_MAX
@@ -1247,12 +1295,12 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
 /* Checks for isprint() should be done on 8-bit characters (non-wide) */
 #define is8bits(c)     ((unsigned)(c) <= UCHAR_MAX)
 
-#ifndef min
-#define min(a,b)       ((a) > (b)  ?  (b)  :  (a))
+#ifndef Min
+#define Min(a,b)       ((a) > (b)  ?  (b)  :  (a))
 #endif
 
-#ifndef max
-#define max(a,b)       ((a) < (b)  ?  (b)  :  (a))
+#ifndef Max
+#define Max(a,b)       ((a) < (b)  ?  (b)  :  (a))
 #endif
 
 /* usually in <unistd.h> */
@@ -1316,11 +1364,8 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
 
 #define TR_PUTC(c)     TR(TRACE_CHARPUT, ("PUTC %#x", UChar(c)))
 
-#ifndef MB_LEN_MAX
-#define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */
-#endif
-
 #if USE_WIDEC_SUPPORT /* { */
+/* true if the status/errno indicate an illegal multibyte sequence */
 #define isEILSEQ(status) (((size_t)status == (size_t)-1) && (errno == EILSEQ))
 
 #define init_mb(state) memset(&(state), 0, sizeof(state))
@@ -1331,7 +1376,20 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
 #define NulColor       /* nothing */
 #endif
 
-#define NulChar                0,0,0,0 /* FIXME: see CCHARW_MAX */
+#if CCHARW_MAX > 6
+#define NulChar                0,0,0,0,0
+#elif CCHARW_MAX > 5
+#define NulChar                0,0,0,0         /* ncurses7 */
+#elif CCHARW_MAX > 4
+#define NulChar                0,0,0           /* ncurses6 */
+#elif CCHARW_MAX > 3
+#define NulChar                0,0
+#elif CCHARW_MAX > 2
+#define NulChar                0
+#else
+#define NulChar                /* nothing */
+#endif
+
 #define CharOf(c)      ((c).chars[0])
 #define AttrOf(c)      ((c).attr)
 
@@ -1342,16 +1400,12 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
 #define NewChar2(c,a)  { a, { c, NulChar } NulColor }
 #define NewChar(ch)    NewChar2(ChCharOf(ch), ChAttrOf(ch))
 
-#if CCHARW_MAX == 5
+#if CCHARW_MAX > 1
 #define CharEq(a,b)    (((a).attr == (b).attr) \
-                      && (a).chars[0] == (b).chars[0] \
-                      && (a).chars[1] == (b).chars[1] \
-                      && (a).chars[2] == (b).chars[2] \
-                      && (a).chars[3] == (b).chars[3] \
-                      && (a).chars[4] == (b).chars[4] \
+                        && !memcmp((a).chars, \
+                                   (b).chars, \
+                                   CCHARW_MAX * sizeof((b).chars[0])) \
                        if_EXT_COLORS(&& (a).ext_color == (b).ext_color))
-#elif CCHARW_MAX > 0
-#error Inconsistent values for CCHARW_MAX
 #else
 #define CharEq(a,b)    (!memcmp(&(a), &(b), sizeof(a)))
 #endif
@@ -1452,7 +1506,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
 #define isWidecExt(ch) (0)
 #define if_WIDEC(code) /* nothing */
 
-#define Charable(ch)   ((ch) >= ' ' && (ch) <= '~')
+#define Charable(ch)   (CharOf(ch) >= ' ' && CharOf(ch) <= '~')
 #define L(ch)          ch
 #endif /* } */
 
@@ -1494,6 +1548,9 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
 
 #define SIZEOF(v) (sizeof(v)/sizeof(v[0]))
 
+#include <nc_alloc.h>
+#include <nc_access.h>
+
 #define FreeIfNeeded(p)  if ((p) != 0) free(p)
 
 /* FreeAndNull() is not a comma-separated expression because some compilers
@@ -1501,8 +1558,18 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
  */
 #define FreeAndNull(p)   do { free(p); p = 0; } while (0)
 
-#include <nc_alloc.h>
-#include <nc_access.h>
+#ifdef EXP_OOM_TESTING
+extern NCURSES_EXPORT(void *)  _nc_oom_malloc(size_t size);
+extern NCURSES_EXPORT(void *)  _nc_oom_calloc(size_t nmemb, size_t size);
+extern NCURSES_EXPORT(void *)  _nc_oom_realloc(void *ptr, size_t size);
+extern NCURSES_EXPORT(void)    _nc_oom_free(void *ptr);
+extern NCURSES_EXPORT(char *)  _nc_oom_strdup(const char *ptr);
+#define malloc(size)           _nc_oom_malloc(size)
+#define calloc(nmemb, size)    _nc_oom_calloc(nmemb, size)
+#define realloc(ptr, size)     _nc_oom_realloc(ptr, size)
+#define free(ptr)              _nc_oom_free(ptr)
+#define strdup(ptr)            _nc_oom_strdup(ptr)
+#endif
 
 /*
  * Use these for tic/infocmp malloc failures.  Generally the ncurses library
@@ -1630,7 +1697,7 @@ typedef void VoidFunc(void);
 #define returnMMask(code)      TRACE_RETURN_SP(code,mmask_t)
 #define returnPtr(code)                TRACE_RETURN1(code,ptr)
 #define returnSP(code)         TRACE_RETURN1(code,sp)
-#define returnVoid             T((T_RETURN(""))); return
+#define returnVoid             { T((T_RETURN(""))); return; }
 #define returnVoidPtr(code)    TRACE_RETURN1(code,void_ptr)
 #define returnWin(code)                TRACE_RETURN1(code,win)
 
@@ -1918,11 +1985,11 @@ extern NCURSES_EXPORT(void) _nc_linedump (void);
 
 /* lib_acs.c */
 extern NCURSES_EXPORT(void) _nc_init_acs (void); /* corresponds to traditional 'init_acs()' */
-extern NCURSES_EXPORT(int)  _nc_msec_cost (const char *const, int);  /* used by 'tack' program */
+extern NCURSES_EXPORT(int)  _nc_msec_cost (const char *const, int);
 
 /* lib_addch.c */
 #if USE_WIDEC_SUPPORT
-NCURSES_EXPORT(int) _nc_build_wch(WINDOW *win, ARG_CH_T ch);
+extern NCURSES_EXPORT(int) _nc_build_wch(WINDOW *win, ARG_CH_T ch);
 #endif
 
 /* lib_addstr.c */
@@ -2035,7 +2102,7 @@ typedef struct {
 /* strings.c */
 extern NCURSES_EXPORT(string_desc *) _nc_str_init (string_desc *, char *, size_t);
 extern NCURSES_EXPORT(string_desc *) _nc_str_null (string_desc *, size_t);
-extern NCURSES_EXPORT(string_desc *) _nc_str_copy (string_desc *, string_desc *);
+extern NCURSES_EXPORT(string_desc *) _nc_str_copy (string_desc *, const string_desc *);
 extern NCURSES_EXPORT(bool) _nc_safe_strcat (string_desc *, const char *);
 extern NCURSES_EXPORT(bool) _nc_safe_strcpy (string_desc *, const char *);
 
@@ -2076,6 +2143,7 @@ extern NCURSES_EXPORT(int) _nc_read_termcap_entry (const char *const, TERMTYPE2
 extern NCURSES_EXPORT(int) _nc_setup_tinfo(const char *, TERMTYPE2 *);
 extern NCURSES_EXPORT(int) _nc_setupscreen (int, int, FILE *, int, int);
 extern NCURSES_EXPORT(int) _nc_timed_wait (SCREEN *, int, int, int * EVENTLIST_2nd(_nc_eventlist *));
+extern NCURSES_EXPORT(int) _nc_trans_string (char *, const char *);
 extern NCURSES_EXPORT(void) _nc_init_termtype (TERMTYPE2 *const);
 extern NCURSES_EXPORT(void) _nc_do_color (int, int, int, NCURSES_OUTC);
 extern NCURSES_EXPORT(void) _nc_flush (void);
@@ -2085,6 +2153,7 @@ extern NCURSES_EXPORT(void) _nc_hash_map (void);
 extern NCURSES_EXPORT(void) _nc_init_keytry (SCREEN *);
 extern NCURSES_EXPORT(void) _nc_keep_tic_dir (const char *);
 extern NCURSES_EXPORT(void) _nc_make_oldhash (int i);
+extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *);
 extern NCURSES_EXPORT(void) _nc_scroll_oldhash (int n, int top, int bot);
 extern NCURSES_EXPORT(void) _nc_scroll_optimize (void);
 extern NCURSES_EXPORT(void) _nc_set_buffer (FILE *, int);
@@ -2099,6 +2168,8 @@ extern NCURSES_EXPORT(const TERMTYPE2 *) _nc_fallback2 (const char *);
 #define _nc_fallback2(tp) _nc_fallback(tp)
 #endif
 
+extern NCURSES_EXPORT(void) _nc_copy_termtype(TERMTYPE *, const TERMTYPE *);
+
 #if NCURSES_EXT_NUMBERS
 extern NCURSES_EXPORT(void) _nc_copy_termtype2 (TERMTYPE2 *, const TERMTYPE2 *);
 extern NCURSES_EXPORT(void) _nc_export_termtype2(TERMTYPE *, const TERMTYPE2 *);
@@ -2121,7 +2192,7 @@ extern NCURSES_EXPORT(void) _nc_comp_userdefs_leaks(void);
 extern NCURSES_EXPORT(void) _nc_db_iterator_leaks(void);
 extern NCURSES_EXPORT(void) _nc_keyname_leaks(void);
 extern NCURSES_EXPORT(void) _nc_names_leaks(void);
-extern NCURSES_EXPORT(void) _nc_tgetent_leak(TERMINAL *);
+extern NCURSES_EXPORT(void) _nc_tgetent_leak(const TERMINAL *);
 extern NCURSES_EXPORT(void) _nc_tgetent_leaks(void);
 #endif
 
@@ -2177,6 +2248,12 @@ extern int __MINGW_NOTHROW _nc_mblen(const char *, size_t);
 
 #endif /* _NC_WINDOWS && !_NC_MSC */
 
+#if defined(_NC_WINDOWS) || defined(_NC_MINGW)
+/* see wcwidth.c */
+extern NCURSES_EXPORT(int) mk_wcwidth(uint32_t);
+#define wcwidth(ucs) _nc_wcwidth(ucs)
+#endif
+
 #if HAVE_MBTOWC && HAVE_MBLEN
 #define reset_mbytes(state) IGNORE_RC(mblen(NULL, (size_t) 0)), IGNORE_RC(mbtowc(NULL, NULL, (size_t) 0))
 #define count_mbytes(buffer,length,state) mblen(buffer,length)
@@ -2454,6 +2531,14 @@ extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_TINFO_DRIVER;
 #define NC_ISATTY(fd) isatty(fd)
 #endif
 
+/*
+ * Perhaps not "real" but possibly not "fake".
+ */
+#define IsRealTty(fd,value) \
+       (NC_ISATTY(fd) \
+        && (value = ttyname(fd)) != NULL \
+        && strncmp(value, "/dev/pts/", 9))
+
 #ifdef USE_TERM_DRIVER
 #  define IsTermInfo(sp)       ((TCBOf(sp) != 0) && ((TCBOf(sp)->drv->isTerminfo)))
 #  define HasTInfoTerminal(sp) ((0 != TerminalOf(sp)) && IsTermInfo(sp))
@@ -2565,8 +2650,8 @@ extern NCURSES_EXPORT(NCURSES_CONST char *) _nc_unctrl (SCREEN *, chtype);
 #endif
 
 #ifdef EXP_XTERM_1005
-NCURSES_EXPORT(int) _nc_conv_to_utf8(unsigned char *, unsigned, unsigned);
-NCURSES_EXPORT(int) _nc_conv_to_utf32(unsigned *, const char *, unsigned);
+extern NCURSES_EXPORT(int) _nc_conv_to_utf8(unsigned char *, unsigned, unsigned);
+extern NCURSES_EXPORT(int) _nc_conv_to_utf32(unsigned *, const char *, unsigned);
 #endif
 
 #ifdef __cplusplus
index 211cf3b760138e0d227b8d4a97d36ae6ad1a2d25..5069c22221a14ecef49b343e936fba3b25b774a9 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019,2021,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -3411,6 +3411,42 @@ int      intrflush(
                NCURSES_BOOL flag)
                { return(*(int *)0); }
 
+#undef is_nl_sp
+int    is_nl_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_raw_sp
+int    is_raw_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_cbreak_sp
+int    is_cbreak_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_echo_sp
+int    is_echo_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_nl
+int    is_nl(void)
+               { return(*(int *)0); }
+
+#undef is_raw
+int    is_raw(void)
+               { return(*(int *)0); }
+
+#undef is_cbreak
+int    is_cbreak(void)
+               { return(*(int *)0); }
+
+#undef is_echo
+int    is_echo(void)
+               { return(*(int *)0); }
+
 /* ./tinfo/lib_setup.c */
 
 #undef ttytype
@@ -3656,6 +3692,21 @@ char     *tiparm(
                ...)
                { return(*(char **)0); }
 
+#undef tiparm_s
+char   *tiparm_s(
+               int     num_expected,
+               int     tparm_type,
+               const char *string,
+               ...)
+               { return(*(char **)0); }
+
+#undef tiscan_s
+int    tiscan_s(
+               int     *num_expected,
+               int     *tparm_type,
+               const char *string)
+               { return(*(int *)0); }
+
 #undef _nc_tiparm
 char   *_nc_tiparm(
                int     expected,
@@ -4106,7 +4157,7 @@ string_desc *_nc_str_null(
 #undef _nc_str_copy
 string_desc *_nc_str_copy(
                string_desc *dst,
-               string_desc *src)
+               const string_desc *const src)
                { return(*(string_desc **)0); }
 
 #undef _nc_safe_strcat
@@ -4332,7 +4383,7 @@ int       _nc_get_token(
 #undef _nc_trans_string
 int    _nc_trans_string(
                char    *ptr,
-               char    *last)
+               const char *const last)
                { return(*(int *)0); }
 
 #undef _nc_push_token
index 1b09d676f021ebd05c18f03f476f3b99b8e5052f..7c8bac9c4076550cacf3b6e25495ce50494374de 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019,2021,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -3466,6 +3466,42 @@ int      intrflush(
                NCURSES_BOOL flag)
                { return(*(int *)0); }
 
+#undef is_nl_sp
+int    is_nl_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_raw_sp
+int    is_raw_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_cbreak_sp
+int    is_cbreak_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_echo_sp
+int    is_echo_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_nl
+int    is_nl(void)
+               { return(*(int *)0); }
+
+#undef is_raw
+int    is_raw(void)
+               { return(*(int *)0); }
+
+#undef is_cbreak
+int    is_cbreak(void)
+               { return(*(int *)0); }
+
+#undef is_echo
+int    is_echo(void)
+               { return(*(int *)0); }
+
 /* ./tinfo/lib_setup.c */
 
 #undef _nc_ttytype
@@ -3741,6 +3777,21 @@ char     *tiparm(
                ...)
                { return(*(char **)0); }
 
+#undef tiparm_s
+char   *tiparm_s(
+               int     num_expected,
+               int     tparm_type,
+               const char *string,
+               ...)
+               { return(*(char **)0); }
+
+#undef tiscan_s
+int    tiscan_s(
+               int     *num_expected,
+               int     *tparm_type,
+               const char *string)
+               { return(*(int *)0); }
+
 #undef _nc_tiparm
 char   *_nc_tiparm(
                int     expected,
@@ -4227,7 +4278,7 @@ string_desc *_nc_str_null(
 #undef _nc_str_copy
 string_desc *_nc_str_copy(
                string_desc *dst,
-               string_desc *src)
+               const string_desc *const src)
                { return(*(string_desc **)0); }
 
 #undef _nc_safe_strcat
@@ -4453,7 +4504,7 @@ int       _nc_get_token(
 #undef _nc_trans_string
 int    _nc_trans_string(
                char    *ptr,
-               char    *last)
+               const char *const last)
                { return(*(int *)0); }
 
 #undef _nc_push_token
index 4576e0fc8f9d010d156c7839ff5af958182f02e4..3aa57eee919acd8480fbf729ee48f1a6ff093e94 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2009-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -4427,6 +4427,42 @@ int      intrflush(
                NCURSES_BOOL flag)
                { return(*(int *)0); }
 
+#undef is_nl_sp
+int    is_nl_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_raw_sp
+int    is_raw_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_cbreak_sp
+int    is_cbreak_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_echo_sp
+int    is_echo_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_nl
+int    is_nl(void)
+               { return(*(int *)0); }
+
+#undef is_raw
+int    is_raw(void)
+               { return(*(int *)0); }
+
+#undef is_cbreak
+int    is_cbreak(void)
+               { return(*(int *)0); }
+
+#undef is_echo
+int    is_echo(void)
+               { return(*(int *)0); }
+
 /* ./tinfo/lib_setup.c */
 
 #undef _nc_ttytype
@@ -4702,6 +4738,21 @@ char     *tiparm(
                ...)
                { return(*(char **)0); }
 
+#undef tiparm_s
+char   *tiparm_s(
+               int     num_expected,
+               int     tparm_type,
+               const char *string,
+               ...)
+               { return(*(char **)0); }
+
+#undef tiscan_s
+int    tiscan_s(
+               int     *num_expected,
+               int     *tparm_type,
+               const char *string)
+               { return(*(int *)0); }
+
 #undef _nc_tiparm
 char   *_nc_tiparm(
                int     expected,
@@ -5206,7 +5257,7 @@ string_desc *_nc_str_null(
 #undef _nc_str_copy
 string_desc *_nc_str_copy(
                string_desc *dst,
-               string_desc *src)
+               const string_desc *const src)
                { return(*(string_desc **)0); }
 
 #undef _nc_safe_strcat
@@ -5454,7 +5505,7 @@ int       _nc_get_token(
 #undef _nc_trans_string
 int    _nc_trans_string(
                char    *ptr,
-               char    *last)
+               const char *const last)
                { return(*(int *)0); }
 
 #undef _nc_push_token
index 127350d2b09147210e04128e7847f8929b4acdbd..dbf535db4b3f36b9217955923d9ab046ab0c1de0 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2001-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -4372,6 +4372,42 @@ int      intrflush(
                NCURSES_BOOL flag)
                { return(*(int *)0); }
 
+#undef is_nl_sp
+int    is_nl_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_raw_sp
+int    is_raw_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_cbreak_sp
+int    is_cbreak_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_echo_sp
+int    is_echo_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_nl
+int    is_nl(void)
+               { return(*(int *)0); }
+
+#undef is_raw
+int    is_raw(void)
+               { return(*(int *)0); }
+
+#undef is_cbreak
+int    is_cbreak(void)
+               { return(*(int *)0); }
+
+#undef is_echo
+int    is_echo(void)
+               { return(*(int *)0); }
+
 /* ./tinfo/lib_setup.c */
 
 #undef ttytype
@@ -4617,6 +4653,21 @@ char     *tiparm(
                ...)
                { return(*(char **)0); }
 
+#undef tiparm_s
+char   *tiparm_s(
+               int     num_expected,
+               int     tparm_type,
+               const char *string,
+               ...)
+               { return(*(char **)0); }
+
+#undef tiscan_s
+int    tiscan_s(
+               int     *num_expected,
+               int     *tparm_type,
+               const char *string)
+               { return(*(int *)0); }
+
 #undef _nc_tiparm
 char   *_nc_tiparm(
                int     expected,
@@ -5085,7 +5136,7 @@ string_desc *_nc_str_null(
 #undef _nc_str_copy
 string_desc *_nc_str_copy(
                string_desc *dst,
-               string_desc *src)
+               const string_desc *const src)
                { return(*(string_desc **)0); }
 
 #undef _nc_safe_strcat
@@ -5333,7 +5384,7 @@ int       _nc_get_token(
 #undef _nc_trans_string
 int    _nc_trans_string(
                char    *ptr,
-               char    *last)
+               const char *const last)
                { return(*(int *)0); }
 
 #undef _nc_push_token
index 0037884deede1336de1047a088e99eafd90607c9..9e87aaeae4a68c5519e2b63b8e9a998c98a8d62c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 2012-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -150,7 +150,7 @@ int _nc_get_token(
 #undef _nc_trans_string
 int    _nc_trans_string(
                char    *ptr,
-               char    *last)
+               const char *const last)
                { return(*(int *)0); }
 
 #undef _nc_push_token
index b9895bcbb972f04e2135e314ef845b2738dd6162..db9090b9125bb29e40419b84b014077d4c50dda4 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 2013-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -150,7 +150,7 @@ int _nc_get_token(
 #undef _nc_trans_string
 int    _nc_trans_string(
                char    *ptr,
-               char    *last)
+               const char *const last)
                { return(*(int *)0); }
 
 #undef _nc_push_token
index 2e407fd0f95a435ff4cbd0d4a3259e8dbb762480..85db89bce08b18797a0d1b4af727408bd44179e7 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 2012-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -150,7 +150,7 @@ int _nc_get_token(
 #undef _nc_trans_string
 int    _nc_trans_string(
                char    *ptr,
-               char    *last)
+               const char *const last)
                { return(*(int *)0); }
 
 #undef _nc_push_token
index 2e407fd0f95a435ff4cbd0d4a3259e8dbb762480..85db89bce08b18797a0d1b4af727408bd44179e7 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 2012-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -150,7 +150,7 @@ int _nc_get_token(
 #undef _nc_trans_string
 int    _nc_trans_string(
                char    *ptr,
-               char    *last)
+               const char *const last)
                { return(*(int *)0); }
 
 #undef _nc_push_token
index a5cd7cd35df572fbe080e9c4602bb44c0ee1fb50..5cfa111a236d68c15770a351a88f37429d9473fe 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2012-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -682,6 +682,42 @@ int        intrflush(
                NCURSES_BOOL flag)
                { return(*(int *)0); }
 
+#undef is_nl_sp
+int    is_nl_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_raw_sp
+int    is_raw_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_cbreak_sp
+int    is_cbreak_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_echo_sp
+int    is_echo_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_nl
+int    is_nl(void)
+               { return(*(int *)0); }
+
+#undef is_raw
+int    is_raw(void)
+               { return(*(int *)0); }
+
+#undef is_cbreak
+int    is_cbreak(void)
+               { return(*(int *)0); }
+
+#undef is_echo
+int    is_echo(void)
+               { return(*(int *)0); }
+
 /* ./tinfo/lib_setup.c */
 
 #undef ttytype
@@ -927,6 +963,21 @@ char       *tiparm(
                ...)
                { return(*(char **)0); }
 
+#undef tiparm_s
+char   *tiparm_s(
+               int     num_expected,
+               int     tparm_type,
+               const char *string,
+               ...)
+               { return(*(char **)0); }
+
+#undef tiscan_s
+int    tiscan_s(
+               int     *num_expected,
+               int     *tparm_type,
+               const char *string)
+               { return(*(int *)0); }
+
 #undef _nc_tiparm
 char   *_nc_tiparm(
                int     expected,
@@ -1375,7 +1426,7 @@ string_desc *_nc_str_null(
 #undef _nc_str_copy
 string_desc *_nc_str_copy(
                string_desc *dst,
-               string_desc *src)
+               const string_desc *const src)
                { return(*(string_desc **)0); }
 
 #undef _nc_safe_strcat
index bd3de8125b59aae5bbc8c41480fbfe51aec14b97..94ca9a7f027259d5b4671fb7612add25effd8dba 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2013-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -728,6 +728,42 @@ int        intrflush(
                NCURSES_BOOL flag)
                { return(*(int *)0); }
 
+#undef is_nl_sp
+int    is_nl_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_raw_sp
+int    is_raw_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_cbreak_sp
+int    is_cbreak_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_echo_sp
+int    is_echo_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_nl
+int    is_nl(void)
+               { return(*(int *)0); }
+
+#undef is_raw
+int    is_raw(void)
+               { return(*(int *)0); }
+
+#undef is_cbreak
+int    is_cbreak(void)
+               { return(*(int *)0); }
+
+#undef is_echo
+int    is_echo(void)
+               { return(*(int *)0); }
+
 /* ./tinfo/lib_setup.c */
 
 #undef _nc_ttytype
@@ -1003,6 +1039,21 @@ char     *tiparm(
                ...)
                { return(*(char **)0); }
 
+#undef tiparm_s
+char   *tiparm_s(
+               int     num_expected,
+               int     tparm_type,
+               const char *string,
+               ...)
+               { return(*(char **)0); }
+
+#undef tiscan_s
+int    tiscan_s(
+               int     *num_expected,
+               int     *tparm_type,
+               const char *string)
+               { return(*(int *)0); }
+
 #undef _nc_tiparm
 char   *_nc_tiparm(
                int     expected,
@@ -1487,7 +1538,7 @@ string_desc *_nc_str_null(
 #undef _nc_str_copy
 string_desc *_nc_str_copy(
                string_desc *dst,
-               string_desc *src)
+               const string_desc *const src)
                { return(*(string_desc **)0); }
 
 #undef _nc_safe_strcat
index 4d35a1e10a662d10347307eacd664ca561760db8..3b21b8765761ce28c97964862d09c88eb7d9d8fe 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2012-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -750,6 +750,42 @@ int        intrflush(
                NCURSES_BOOL flag)
                { return(*(int *)0); }
 
+#undef is_nl_sp
+int    is_nl_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_raw_sp
+int    is_raw_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_cbreak_sp
+int    is_cbreak_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_echo_sp
+int    is_echo_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_nl
+int    is_nl(void)
+               { return(*(int *)0); }
+
+#undef is_raw
+int    is_raw(void)
+               { return(*(int *)0); }
+
+#undef is_cbreak
+int    is_cbreak(void)
+               { return(*(int *)0); }
+
+#undef is_echo
+int    is_echo(void)
+               { return(*(int *)0); }
+
 /* ./tinfo/lib_setup.c */
 
 #undef _nc_ttytype
@@ -1025,6 +1061,21 @@ char     *tiparm(
                ...)
                { return(*(char **)0); }
 
+#undef tiparm_s
+char   *tiparm_s(
+               int     num_expected,
+               int     tparm_type,
+               const char *string,
+               ...)
+               { return(*(char **)0); }
+
+#undef tiscan_s
+int    tiscan_s(
+               int     *num_expected,
+               int     *tparm_type,
+               const char *string)
+               { return(*(int *)0); }
+
 #undef _nc_tiparm
 char   *_nc_tiparm(
                int     expected,
@@ -1527,7 +1578,7 @@ string_desc *_nc_str_null(
 #undef _nc_str_copy
 string_desc *_nc_str_copy(
                string_desc *dst,
-               string_desc *src)
+               const string_desc *const src)
                { return(*(string_desc **)0); }
 
 #undef _nc_safe_strcat
index db846764b97744f6312af1ba473825cead0d1424..fd308180722ad04791d1a9b3638c4ee1c2fd7f8d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2012-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -704,6 +704,42 @@ int        intrflush(
                NCURSES_BOOL flag)
                { return(*(int *)0); }
 
+#undef is_nl_sp
+int    is_nl_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_raw_sp
+int    is_raw_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_cbreak_sp
+int    is_cbreak_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_echo_sp
+int    is_echo_sp(
+               SCREEN  *sp)
+               { return(*(int *)0); }
+
+#undef is_nl
+int    is_nl(void)
+               { return(*(int *)0); }
+
+#undef is_raw
+int    is_raw(void)
+               { return(*(int *)0); }
+
+#undef is_cbreak
+int    is_cbreak(void)
+               { return(*(int *)0); }
+
+#undef is_echo
+int    is_echo(void)
+               { return(*(int *)0); }
+
 /* ./tinfo/lib_setup.c */
 
 #undef ttytype
@@ -949,6 +985,21 @@ char       *tiparm(
                ...)
                { return(*(char **)0); }
 
+#undef tiparm_s
+char   *tiparm_s(
+               int     num_expected,
+               int     tparm_type,
+               const char *string,
+               ...)
+               { return(*(char **)0); }
+
+#undef tiscan_s
+int    tiscan_s(
+               int     *num_expected,
+               int     *tparm_type,
+               const char *string)
+               { return(*(int *)0); }
+
 #undef _nc_tiparm
 char   *_nc_tiparm(
                int     expected,
@@ -1415,7 +1466,7 @@ string_desc *_nc_str_null(
 #undef _nc_str_copy
 string_desc *_nc_str_copy(
                string_desc *dst,
-               string_desc *src)
+               const string_desc *const src)
                { return(*(string_desc **)0); }
 
 #undef _nc_safe_strcat
index 83f6f3815878f360c093cdacb40045b9924596c4..0f82dcf35db7871b183095a2066c87c874314508 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 2017 Free Software Foundation, Inc.                            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  *  Author: Thomas E. Dickey                                                *
  ****************************************************************************/
 
+#define NEW_PAIR_INTERNAL 1
 #include <curses.priv.h>
 
-MODULE_ID("$Id: report_offsets.c,v 1.22 2021/08/19 19:51:33 tom Exp $")
+MODULE_ID("$Id: report_offsets.c,v 1.28 2024/02/24 15:59:09 tom Exp $")
 
 #define show_size(type) \
        flag = 0; \
        last = 0; \
        printf("%5lu   " #type "\n", (unsigned long)sizeof(type))
+#define show_name(name) \
+       printf("%5lu   " #name "\n", (unsigned long)(name))
 #define show_offset(type,member) \
        next = (unsigned long)offsetof(type,member); \
        if (last > next) \
@@ -65,12 +68,7 @@ MODULE_ID("$Id: report_offsets.c,v 1.22 2021/08/19 19:51:33 tom Exp $")
 #define show_MLEAKS(type,member)       /* nothing */
 #endif
 
-#ifdef USE_TERM_DRIVER
-#define show_NORMAL(type,member)       /* nothing */
-#else
 #define show_NORMAL(type,member) { flag = "n"; show_offset(type,member); }
-#endif
-
 #define show_OPTION(type,member) { flag = "+"; show_offset(type,member); }
 
 #if USE_REENTRANT
@@ -116,9 +114,28 @@ main(void)
 #if USE_WIDEC_SUPPORT
     show_size(cchar_t);
 #endif
+    show_size(color_t);
+    show_size(colorpair_t);
     show_size(mmask_t);
+    show_size(rgb_bits_t);
     show_size(MEVENT);
     show_size(NCURSES_BOOL);
+    show_size(TRIES);
+
+    printf("\n");
+    printf("Sizes of buffers/arrays:\n");
+#if USE_WIDEC_SUPPORT
+    show_name(CCHARW_MAX);
+#endif
+    show_name(EV_MAX);
+    show_name(FIFO_SIZE);
+    show_name(NAMESIZE);
+    show_name(MB_LEN_MAX);
+    show_name(PATH_MAX);
+#ifdef TRACE
+    show_name(TRACECHR_BUF);
+    show_name(TRACEMSE_MAX);
+#endif
 
     printf("\n");
     show_size(SCREEN);
@@ -160,7 +177,9 @@ main(void)
 #if USE_SIZECHANGE
     show_OPTION(SCREEN, _resize);
 #endif
-    show_DRIVER(SCREEN, _windowlist);
+#ifdef USE_SP_WINDOWLIST
+    show_NORMAL(SCREEN, _windowlist);
+#endif
     show_REENTR(SCREEN, _ttytype);
     show_SPFUNC(SCREEN, use_tioctl);
     show_WIDECH(SCREEN, _screen_acs_fix);
@@ -210,7 +229,9 @@ main(void)
     show_offset(NCURSES_GLOBALS, cached_tparm);
 #endif
     show_DRIVER(NCURSES_GLOBALS, term_driver);
+#ifndef USE_SP_WINDOWLIST
     show_NORMAL(NCURSES_GLOBALS, _nc_windowlist);
+#endif
 #if USE_HOME_TERMINFO
     show_OPTION(NCURSES_GLOBALS, home_terminfo);
 #endif
@@ -223,6 +244,7 @@ main(void)
 #endif
     show_WIDECH(NCURSES_GLOBALS, key_name);
     show_TRACES(NCURSES_GLOBALS, trace_opened);
+    show_TRACES(NCURSES_GLOBALS, trace_level);
     show_MLEAKS(NCURSES_GLOBALS, leak_checking);
 
     printf("\n");
index 03669cb4bf7792a4f4bf7bbe5784ae43bb4fe54f..1f436b5f8254fb80a6ba7d598ad6d447ac7a45cb 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2021 Thomas E. Dickey                                          *
+ * Copyright 2021-2023,2024 Thomas E. Dickey                                *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  ****************************************************************************/
 
 /*
- * $Id: term.priv.h,v 1.7 2021/11/20 23:33:33 tom Exp $
+ * $Id: term.priv.h,v 1.13 2024/03/02 20:43:06 tom Exp $
  *
  *     term.priv.h
  *
  *     Header file for terminfo library objects which are private to
  *     the library.
- *
  */
 
 #ifndef _TERM_PRIV_H
@@ -46,11 +45,20 @@ extern "C" {
 
 #include <ncurses_cfg.h>
 
+#ifndef __NCURSES_H
+#include <curses.h>
+#endif
+
 #undef NCURSES_OPAQUE
 #define NCURSES_INTERNALS 1
 #define NCURSES_OPAQUE 0
 
-#include <limits.h>            /* PATH_MAX */
+#if HAVE_LIMITS_H
+# include <limits.h>           /* PATH_MAX, MB_LEN_MAX, etc */
+#elif HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
 #include <signal.h>            /* sig_atomic_t */
 #include <time.h>              /* time_t */
 #include <term.h>              /* time_t */
@@ -61,6 +69,28 @@ extern "C" {
 #endif
 #endif
 
+/*
+ * If not properly configured to use the system's limits.h, we get gcc's
+ * fallback for limits.h which sets MB_LEN_MAX to 1, which is never correct.
+ */
+#if !HAVE_CONSISTENT_MB_LEN_MAX
+#undef MB_LEN_MAX
+#endif
+
+#ifndef MB_LEN_MAX
+#define MB_LEN_MAX 16  /* should be >= MB_CUR_MAX, but that may be a function */
+#endif
+
+#ifndef PATH_MAX
+# if defined(_POSIX_PATH_MAX)
+#  define PATH_MAX _POSIX_PATH_MAX
+# elif defined(MAXPATHLEN)
+#  define PATH_MAX MAXPATHLEN
+# else
+#  define PATH_MAX 255 /* the Posix minimum path-size */
+# endif
+#endif
+
 /*
  * State of tparm().
  */
@@ -238,7 +268,6 @@ typedef struct {
 
 #ifdef TRACE
        bool            trace_opened;
-       char            trace_fname[PATH_MAX];
        int             trace_level;
        FILE *          trace_fp;
        int             trace_fd;
old mode 100644 (file)
new mode 100755 (executable)
index c800023..5f41350
@@ -1,6 +1,6 @@
 #!/bin/sh
 ##############################################################################
-# Copyright 2019,2020 Thomas E. Dickey                                       #
+# Copyright 2019-2020,2023 Thomas E. Dickey                                  #
 # Copyright 2007-2010,2011 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -27,7 +27,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: MKcaptab.sh,v 1.19 2020/02/02 23:34:34 tom Exp $
+# $Id: MKcaptab.sh,v 1.20 2023/04/22 15:12:57 tom Exp $
 
 if test $# != 0
 then
@@ -153,7 +153,6 @@ _nc_get_table(bool termcap)
     return termcap ? build_names(cap) : build_names(info);
 }
 
-/* entrypoint used by tack 1.07 */
 NCURSES_EXPORT(const HashValue *)
 _nc_get_hash_table(bool termcap)
 {
old mode 100644 (file)
new mode 100755 (executable)
index 64c65f1..02b36ed
@@ -1,6 +1,6 @@
 #!/bin/sh
 ##############################################################################
-# Copyright 2020 Thomas E. Dickey                                            #
+# Copyright 2020,2023 Thomas E. Dickey                                       #
 # Copyright 1998-2019,2020 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -27,7 +27,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: MKfallback.sh,v 1.25 2020/08/16 15:58:44 tom Exp $
+# $Id: MKfallback.sh,v 1.26 2023/04/22 15:12:57 tom Exp $
 #
 # MKfallback.sh -- create fallback table for entry reads
 #
@@ -146,9 +146,6 @@ cat <<EOF
 #if NCURSES_EXT_NUMBERS
 #undef _nc_fallback
 
-/*
- * This entrypoint is used by tack 1.07
- */
 NCURSES_EXPORT(const TERMTYPE *)
 _nc_fallback (const char *name)
 {
index 0facfbb813a2fb314a719f1a725b28fabfdf870a..05ac8cf625786e96f9302da392d1e4a550de14e9 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
-# $Id: MKkeys_list.sh,v 1.8 2022/02/05 20:40:20 tom Exp $
+# $Id: MKkeys_list.sh,v 1.9 2024/01/19 12:26:30 tom Exp $
 ##############################################################################
-# Copyright 2019-2020,2022 Thomas E. Dickey                                  #
+# Copyright 2019-2022,2024 Thomas E. Dickey                                  #
 # Copyright 2001-2003,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -36,6 +36,7 @@
 # Extract function-key names from the Caps file
 #
 : ${AWK-awk}
+: ${USE_SIGWINCH-0}
 if test $# != 0
 then
        DATA="$*"
@@ -53,8 +54,8 @@ cat <<EOF
 KEY_BREAK
 KEY_SRESET
 KEY_RESET
-KEY_RESIZE
 EOF
+test "$USE_SIGWINCH" = 1 && echo KEY_RESIZE
 
 ${AWK-awk} <$data '
 /^#/           {next;}
old mode 100644 (file)
new mode 100755 (executable)
index a735db26eee600c5fb218c83224de4324aeb75bf..50a5769c3d6358fef4af8f67e9ee7cc8aeddc2b0 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2019-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2011,2012 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
 #endif
 #endif
 
+#if HAVE_GETAUXVAL && HAVE_SYS_AUXV_H && defined(__GLIBC__) && (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19)
+#include <sys/auxv.h>
+#define USE_GETAUXVAL 1
+#else
+#define USE_GETAUXVAL 0
+#endif
+
 #include <tic.h>
 
-MODULE_ID("$Id: access.c,v 1.31 2021/08/29 10:35:17 tom Exp $")
+MODULE_ID("$Id: access.c,v 1.37 2023/06/24 21:55:09 tom Exp $")
 
 #define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c))
 
@@ -63,8 +70,8 @@ _nc_rootname(char *path)
     static char *temp;
     char *s;
 
-    temp = strdup(result);
-    result = temp;
+    if ((temp = strdup(result)) != 0)
+       result = temp;
 #if !MIXEDCASE_FILENAMES
     for (s = result; *s != '\0'; ++s) {
        *s = (char) LOWERCASE(*s);
@@ -177,14 +184,25 @@ _nc_is_file_path(const char *path)
     return result;
 }
 
+#if HAVE_GETEUID && HAVE_GETEGID
+#define is_posix_elevated() \
+       (getuid() != geteuid() \
+        || getgid() != getegid())
+#else
+#define is_posix_elevated() FALSE
+#endif
+
 #if HAVE_ISSETUGID
 #define is_elevated() issetugid()
-#elif HAVE_GETEUID && HAVE_GETEGID
+#elif USE_GETAUXVAL && defined(AT_SECURE)
 #define is_elevated() \
-       (getuid() != geteuid() \
-        || getgid() != getegid())
+       (getauxval(AT_SECURE) \
+        ? TRUE \
+        : (errno != ENOENT \
+           ? FALSE \
+           : is_posix_elevated()))
 #else
-#define is_elevated() FALSE
+#define is_elevated() is_posix_elevated()
 #endif
 
 #if HAVE_SETFSUID
@@ -203,24 +221,30 @@ _nc_is_file_path(const char *path)
 #define resume_elevation()     /* nothing */
 #endif
 
-#ifndef USE_ROOT_ENVIRON
 /*
- * Returns true if we allow application to use environment variables that are
- * used for searching lists of directories, etc.
+ * Returns true if not running as root or setuid.  We use this check to allow
+ * applications to use environment variables that are used for searching lists
+ * of directories, etc.
  */
 NCURSES_EXPORT(int)
 _nc_env_access(void)
 {
     int result = TRUE;
 
+#if HAVE_GETUID && HAVE_GETEUID
+#if !defined(USE_SETUID_ENVIRON)
     if (is_elevated()) {
        result = FALSE;
-    } else if ((getuid() == ROOT_UID) || (geteuid() == ROOT_UID)) {
+    }
+#endif
+#if !defined(USE_ROOT_ENVIRON)
+    if ((getuid() == ROOT_UID) || (geteuid() == ROOT_UID)) {
        result = FALSE;
     }
+#endif
+#endif /* HAVE_GETUID && HAVE_GETEUID */
     return result;
 }
-#endif /* USE_ROOT_ENVIRON */
 
 #ifndef USE_ROOT_ACCESS
 /*
@@ -257,4 +281,4 @@ _nc_safe_open3(const char *path, int flags, mode_t mode)
 #endif
     return result;
 }
-#endif /* USE_ROOT_ENVIRON */
+#endif /* USE_ROOT_ACCESS */
index d41f488300ae3f799d2eab7e69f397e6073ca5df..9d215575fec02f710780bb7fac7d6eff886f8e06 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019,2020 Thomas E. Dickey                                     *
+ * Copyright 2019-2020,2023 Thomas E. Dickey                                *
  * Copyright 1998-2009,2010 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -39,8 +39,9 @@
 */
 
 #include <curses.priv.h>
+#include <tic.h>
 
-MODULE_ID("$Id: add_tries.c,v 1.12 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: add_tries.c,v 1.13 2023/06/24 15:36:13 tom Exp $")
 
 #define SET_TRY(dst,src) if ((dst->ch = *src++) == 128) dst->ch = '\0'
 #define CMP_TRY(a,b) ((a)? (a == b) : (b == 128))
@@ -53,7 +54,7 @@ _nc_add_to_try(TRIES ** tree, const char *str, unsigned code)
 
     T((T_CALLED("_nc_add_to_try(%p, %s, %u)"),
        (void *) *tree, _nc_visbuf(str), code));
-    if (txt == 0 || *txt == '\0' || code == 0)
+    if (!VALID_STRING(str) || *txt == '\0' || code == 0)
        returnCode(ERR);
 
     if ((*tree) != 0) {
index d5148ca6c2518e1e8851d537783dd0d318a97a97..6280ad4a2b2ff8f4382cfaca2d9374e5a933dfc5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2013,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -48,7 +48,7 @@
 
 #include <tic.h>
 
-MODULE_ID("$Id: alloc_entry.c,v 1.77 2022/10/15 19:37:33 tom Exp $")
+MODULE_ID("$Id: alloc_entry.c,v 1.79 2023/09/15 08:16:12 tom Exp $")
 
 #define ABSENT_OFFSET    -1
 #define CANCELLED_OFFSET -2
@@ -158,8 +158,7 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
        /* copy term_names, Strings, uses */
        tp->term_names = _nc_save_str(tp->term_names);
        for_each_string(i, tp) {
-           if (tp->Strings[i] != ABSENT_STRING &&
-               tp->Strings[i] != CANCELLED_STRING) {
+           if (VALID_STRING(tp->Strings[i])) {
                tp->Strings[i] = _nc_save_str(tp->Strings[i]);
            }
        }
@@ -251,7 +250,7 @@ _nc_merge_entry(ENTRY * const target, ENTRY * const source)
     TERMTYPE2 *from = &(source->tterm);
 #if NCURSES_XNAMES
     TERMTYPE2 copy;
-    size_t str_size;
+    size_t str_size, copy_size;
     char *str_table;
 #endif
     unsigned i;
@@ -285,21 +284,27 @@ _nc_merge_entry(ENTRY * const target, ENTRY * const source)
        if ((str_table = malloc(str_size)) == NULL)
            _nc_err_abort(MSG_NO_MEMORY);
        str_copied = str_table;
-       strcpy(str_copied, to->term_names);
+       _nc_STRCPY(str_copied, to->term_names, str_size);
        to->term_names = str_copied;
-       str_copied += strlen(str_copied) + 1;
+       copy_size = strlen(str_copied) + 1;
+       str_copied += copy_size;
+       str_size -= copy_size;
        for_each_string(i, from) {
            if (VALID_STRING(from->Strings[i])) {
-               strcpy(str_copied, from->Strings[i]);
+               _nc_STRCPY(str_copied, from->Strings[i], str_size);
                from->Strings[i] = str_copied;
-               str_copied += strlen(str_copied) + 1;
+               copy_size = strlen(str_copied) + 1;
+               str_copied += copy_size;
+               str_size -= copy_size;
            }
        }
        for_each_string(i, to) {
            if (VALID_STRING(to->Strings[i])) {
-               strcpy(str_copied, to->Strings[i]);
+               _nc_STRCPY(str_copied, to->Strings[i], str_size);
                to->Strings[i] = str_copied;
-               str_copied += strlen(str_copied) + 1;
+               copy_size = strlen(str_copied) + 1;
+               str_copied += copy_size;
+               str_size -= copy_size;
            }
        }
        free(to->str_table);
@@ -330,16 +335,20 @@ _nc_merge_entry(ENTRY * const target, ENTRY * const source)
        str_copied = str_table;
        for (i = 0; i < NUM_EXT_NAMES(from); ++i) {
            if (VALID_STRING(from->ext_Names[i])) {
-               strcpy(str_copied, from->ext_Names[i]);
+               _nc_STRCPY(str_copied, from->ext_Names[i], str_size);
                from->ext_Names[i] = str_copied;
-               str_copied += strlen(str_copied) + 1;
+               copy_size = strlen(str_copied) + 1;
+               str_copied += copy_size;
+               str_size -= copy_size;
            }
        }
        for (i = 0; i < NUM_EXT_NAMES(to); ++i) {
            if (VALID_STRING(to->ext_Names[i])) {
-               strcpy(str_copied, to->ext_Names[i]);
+               _nc_STRCPY(str_copied, to->ext_Names[i], str_size);
                to->ext_Names[i] = str_copied;
-               str_copied += strlen(str_copied) + 1;
+               copy_size = strlen(str_copied) + 1;
+               str_copied += copy_size;
+               str_size -= copy_size;
            }
        }
        free(to->ext_str_table);
index 6220c21051f5e4781a90c83e0d02698748c5fc37..304c1b62f4e691e39675f021bb8d167256c101ea 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1999-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -43,7 +43,7 @@
 
 #include <tic.h>
 
-MODULE_ID("$Id: alloc_ttype.c,v 1.46 2022/09/17 21:44:35 tom Exp $")
+MODULE_ID("$Id: alloc_ttype.c,v 1.51 2023/09/09 23:15:53 tom Exp $")
 
 #if NCURSES_XNAMES
 /*
@@ -378,8 +378,8 @@ adjust_cancels(TERMTYPE2 *to, TERMTYPE2 *from)
     int j, k;
 
     DEBUG(3, (T_CALLED("adjust_cancels(%s), from(%s)"),
-             to ? NonNull(to->term_names) : "?",
-             from ? NonNull(from->term_names) : "?"));
+             NonNull(to->term_names),
+             NonNull(from->term_names)));
     for (j = first; j < last;) {
        char *name = to->ext_Names[j];
        int j_str = to->num_Strings - first - to->ext_Strings;
@@ -530,6 +530,7 @@ copy_termtype(TERMTYPE2 *dst, const TERMTYPE2 *src, int mode)
     unsigned i;
     int pass;
     char *new_table;
+    size_t new_table_size;
 #if NCURSES_EXT_NUMBERS
     short *oldptr = 0;
     int *newptr = 0;
@@ -550,19 +551,24 @@ copy_termtype(TERMTYPE2 *dst, const TERMTYPE2 *src, int mode)
           NUM_STRINGS(dst) * sizeof(dst->Strings[0]));
 
     new_table = NULL;
+    new_table_size = 0;
     for (pass = 0; pass < 2; ++pass) {
        size_t str_size = 0;
        if (src->term_names != NULL) {
            if (pass) {
                dst->term_names = new_table + str_size;
-               strcpy(dst->term_names + str_size, src->term_names);
+               _nc_STRCPY(dst->term_names + str_size,
+                          src->term_names,
+                          new_table_size - str_size);
            }
            str_size += strlen(src->term_names) + 1;
        }
        for_each_string(i, src) {
            if (VALID_STRING(src->Strings[i])) {
                if (pass) {
-                   strcpy(new_table + str_size, src->Strings[i]);
+                   _nc_STRCPY(new_table + str_size,
+                              src->Strings[i],
+                              new_table_size - str_size);
                    dst->Strings[i] = new_table + str_size;
                }
                str_size += strlen(src->Strings[i]) + 1;
@@ -574,6 +580,7 @@ copy_termtype(TERMTYPE2 *dst, const TERMTYPE2 *src, int mode)
            ++str_size;
            if ((new_table = malloc(str_size)) == NULL)
                _nc_err_abort(MSG_NO_MEMORY);
+           new_table_size = str_size;
        }
     }
 
@@ -626,6 +633,7 @@ copy_termtype(TERMTYPE2 *dst, const TERMTYPE2 *src, int mode)
        memcpy(dst->ext_Names, src->ext_Names, i * sizeof(char *));
 
        new_table = NULL;
+       new_table_size = 0;
        for (pass = 0; pass < 2; ++pass) {
            size_t str_size = 0;
            char *raw_data = src->ext_str_table;
@@ -634,7 +642,9 @@ copy_termtype(TERMTYPE2 *dst, const TERMTYPE2 *src, int mode)
                    size_t skip = strlen(raw_data) + 1;
                    if (skip != 1) {
                        if (pass) {
-                           strcpy(new_table + str_size, raw_data);
+                           _nc_STRCPY(new_table + str_size,
+                                      raw_data,
+                                      new_table_size - str_size);
                        }
                        str_size += skip;
                        raw_data += skip;
@@ -644,7 +654,9 @@ copy_termtype(TERMTYPE2 *dst, const TERMTYPE2 *src, int mode)
            for (i = 0; i < NUM_EXT_NAMES(dst); ++i) {
                if (VALID_STRING(src->ext_Names[i])) {
                    if (pass) {
-                       strcpy(new_table + str_size, src->ext_Names[i]);
+                       _nc_STRCPY(new_table + str_size,
+                                  src->ext_Names[i],
+                                  new_table_size - str_size);
                        dst->ext_Names[i] = new_table + str_size;
                    }
                    str_size += strlen(src->ext_Names[i]) + 1;
@@ -656,18 +668,17 @@ copy_termtype(TERMTYPE2 *dst, const TERMTYPE2 *src, int mode)
                ++str_size;
                if ((new_table = calloc(str_size, 1)) == NULL)
                    _nc_err_abort(MSG_NO_MEMORY);
+               new_table_size = str_size;
            }
        }
     } else {
        dst->ext_Names = 0;
     }
 #endif
+    (void) new_table_size;
     DEBUG(2, (T_RETURN("")));
 }
 
-/*
- * This entrypoint is used by tack 1.07
- */
 NCURSES_EXPORT(void)
 _nc_copy_termtype(TERMTYPE *dst, const TERMTYPE *src)
 {
index 48f48784d8db3b563a64faf7540f917af2994d95..3e6b4022a74b37b5668f10ae492cc20a06c0d0a5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019,2020 Thomas E. Dickey                                     *
+ * Copyright 2019-2020,2023 Thomas E. Dickey                                *
  * Copyright 1998-2012,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -42,7 +42,7 @@
 
 #include <tic.h>
 
-MODULE_ID("$Id: comp_error.c,v 1.40 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: comp_error.c,v 1.44 2023/06/15 20:27:02 tom Exp $")
 
 NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings = FALSE;
 NCURSES_EXPORT_VAR(int) _nc_curr_line = 0; /* current line # in input */
@@ -60,8 +60,15 @@ _nc_get_source(void)
 NCURSES_EXPORT(void)
 _nc_set_source(const char *const name)
 {
-    FreeIfNeeded(SourceName);
-    SourceName = strdup(name);
+    if (name == NULL) {
+       free(SourceName);
+       SourceName = NULL;
+    } else if (SourceName == NULL) {
+       SourceName = strdup(name);
+    } else if (strcmp(name, SourceName)) {
+       free(SourceName);
+       SourceName = strdup(name);
+    }
 }
 
 NCURSES_EXPORT(void)
@@ -95,9 +102,9 @@ static NCURSES_INLINE void
 where_is_problem(void)
 {
     fprintf(stderr, "\"%s\"", SourceName ? SourceName : "?");
-    if (_nc_curr_line >= 0)
+    if (_nc_curr_line > 0)
        fprintf(stderr, ", line %d", _nc_curr_line);
-    if (_nc_curr_col >= 0)
+    if (_nc_curr_col > 0)
        fprintf(stderr, ", col %d", _nc_curr_col);
     if (TermType != 0 && TermType[0] != '\0')
        fprintf(stderr, ", terminal '%s'", TermType);
@@ -148,9 +155,7 @@ _nc_syserr_abort(const char *const fmt, ...)
     /* If we're debugging, try to show where the problem occurred - this
      * will dump core.
      */
-#ifndef USE_ROOT_ENVIRON
-    if (getuid() != ROOT_UID)
-#endif
+    if (_nc_env_access())
        abort();
 #endif
     /* Dumping core in production code is not a good idea.
index 724283ce225ce46566b6a5740e3c0ec6ee65c286..e971384f52f29099068d6ca99c46129892dd76b0 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -36,7 +36,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: comp_expand.c,v 1.34 2021/09/04 10:29:15 tom Exp $")
+MODULE_ID("$Id: comp_expand.c,v 1.35 2023/04/28 20:59:06 tom Exp $")
 
 #if 0
 #define DEBUG_THIS(p) DEBUG(9, p)
@@ -129,7 +129,6 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers)
                    if (dst != 0
                        && *dst == R_BRACE
                        && value < 127
-                       && value != '\\'        /* FIXME */
                        && isprint((int) value)) {
                        ch = (int) value;
                        buffer[bufp++] = S_QUOTE;
index 80755f22052cbce5abe4f809b9b8791c99396a05..4b081afa2c2842d1ef18587c53ddd4d766472908 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019,2020 Thomas E. Dickey                                     *
+ * Copyright 2019-2020,2023 Thomas E. Dickey                                *
  * Copyright 1998-2008,2009 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
 #include <tic.h>
 #include <hashsize.h>
 
-MODULE_ID("$Id: comp_hash.c,v 1.53 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: comp_hash.c,v 1.55 2023/06/24 13:29:43 tom Exp $")
 
 /*
  * Finds the entry for the given string in the hash table if present.
  * Returns a pointer to the entry in the table or 0 if not found.
  */
-/* entrypoint used by tack 1.07 */
 NCURSES_EXPORT(struct name_table_entry const *)
 _nc_find_entry(const char *string,
               const HashValue * hash_table)
@@ -104,14 +103,16 @@ _nc_find_type_entry(const char *string,
        && data->table_data[hashvalue] >= 0) {
        const struct name_table_entry *const table = _nc_get_table(termcap);
 
-       ptr = table + data->table_data[hashvalue];
-       while (ptr->nte_type != type
-              || !data->compare_names(ptr->nte_name, string)) {
-           if (ptr->nte_link < 0) {
-               ptr = 0;
-               break;
+       if (table != NULL) {
+           ptr = table + data->table_data[hashvalue];
+           while (ptr->nte_type != type
+                  || !data->compare_names(ptr->nte_name, string)) {
+               if (ptr->nte_link < 0) {
+                   ptr = 0;
+                   break;
+               }
+               ptr = table + (ptr->nte_link + data->table_data[data->table_size]);
            }
-           ptr = table + (ptr->nte_link + data->table_data[data->table_size]);
        }
     }
 
index 53bdf8b069e79890a695bca4692c052901403042..dec4b925625efe1cd364cdd3829929eb92dbb541 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -48,7 +48,7 @@
 
 #include <tic.h>
 
-MODULE_ID("$Id: comp_parse.c,v 1.131 2022/10/23 13:15:58 tom Exp $")
+MODULE_ID("$Id: comp_parse.c,v 1.134 2024/02/10 15:52:11 tom Exp $")
 
 static void sanity_check2(TERMTYPE2 *, bool);
 NCURSES_IMPEXP void (NCURSES_API *_nc_check_termtype2) (TERMTYPE2 *, bool) = sanity_check2;
@@ -225,7 +225,7 @@ _nc_read_entry_source(FILE *fp, char *buf,
          (T_CALLED("_nc_read_entry_source("
                    "file=%p, buf=%p, literal=%d, silent=%d, hook=%#"
                    PRIxPTR ")"),
-          (void *) fp, buf, literal, silent, (intptr_t) hook));
+          (void *) fp, buf, literal, silent, CASTxPTR(hook)));
 
     if (silent)
        _nc_suppress_warnings = TRUE;   /* shut the lexer up, too */
@@ -264,8 +264,9 @@ _nc_read_entry_source(FILE *fp, char *buf,
 
     if (_nc_tail) {
        /* set up the head pointer */
-       for (_nc_head = _nc_tail; _nc_head->last; _nc_head = _nc_head->last)
-           continue;
+       for (_nc_head = _nc_tail; _nc_head->last; _nc_head = _nc_head->last) {
+           /* EMPTY */ ;
+       }
 
        DEBUG(2, ("head = %s", _nc_head->tterm.term_names));
        DEBUG(2, ("tail = %s", _nc_tail->tterm.term_names));
@@ -403,7 +404,7 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
     ENTRY *qp, *rp, *lastread = 0;
     bool keepgoing;
     unsigned i, j;
-    int unresolved, total_unresolved, multiples;
+    int total_unresolved, multiples;
 
     DEBUG(2, (T_CALLED("_nc_resolve_uses2")));
 
@@ -443,7 +444,6 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
     total_unresolved = 0;
     _nc_curr_col = -1;
     for_entry_list(qp) {
-       unresolved = 0;
        for (i = 0; i < qp->nuses; i++) {
            bool foundit;
            char *child = _nc_first_name(qp->tterm.term_names);
@@ -512,7 +512,6 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
 
            /* no good, mark this one unresolvable and complain */
            if (!foundit) {
-               unresolved++;
                total_unresolved++;
 
                _nc_curr_line = (int) lookline;
index 71361c5080d6f9c92a220661a4bc2cb09183db79..3ba0835e2fb807aed6d27d6e9a2625c909d76f55 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
-,* Copyright 2020-2021,2022 Thomas E. Dickey                                *
+,* Copyright 2020-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -51,7 +51,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: comp_scan.c,v 1.119 2022/08/07 00:20:26 tom Exp $")
+MODULE_ID("$Id: comp_scan.c,v 1.122 2023/05/27 20:13:10 tom Exp $")
 
 /*
  * Maximum length of string capability we'll accept before raising an error.
@@ -302,7 +302,7 @@ push_back(int c)
 /* push a character back onto the input stream */
 {
     if (bufptr == bufstart)
-       _nc_syserr_abort("Can't backspace off beginning of line");
+       _nc_syserr_abort("cannot backspace off beginning of line");
     *--bufptr = (char) c;
     _nc_curr_col--;
 }
@@ -311,7 +311,7 @@ static long
 stream_pos(void)
 /* return our current character position in the input stream */
 {
-    return (yyin ? ftell(yyin) : (bufptr ? bufptr - bufstart : 0));
+    return (yyin ? ftell(yyin) : (bufptr ? (long) (bufptr - bufstart) : 0));
 }
 
 static bool
@@ -328,9 +328,11 @@ end_of_stream(void)
 static NCURSES_INLINE int
 eat_escaped_newline(int ch)
 {
-    if (ch == '\\')
-       while ((ch = next_char()) == '\n' || iswhite(ch))
-           continue;
+    if (ch == '\\') {
+       while ((ch = next_char()) == '\n' || iswhite(ch)) {
+           /* EMPTY */ ;
+       }
+    }
     return ch;
 }
 
@@ -434,7 +436,6 @@ _nc_get_token(bool silent)
     while ((ch = next_char()) == '\n' || iswhite(ch)) {
        if (ch == '\n')
            had_newline = TRUE;
-       continue;
     }
 
     ch = eat_escaped_newline(ch);
@@ -459,8 +460,9 @@ _nc_get_token(bool silent)
            dot_flag = TRUE;
            DEBUG(8, ("dot-flag set"));
 
-           while ((ch = next_char()) == '.' || iswhite(ch))
-               continue;
+           while ((ch = next_char()) == '.' || iswhite(ch)) {
+               /* EMPTY */ ;
+           }
        }
 
        if (ch == EOF) {
@@ -601,8 +603,9 @@ _nc_get_token(bool silent)
                /* throw away trailing /, *$/ */
                for (--tok_ptr;
                     iswhite(*tok_ptr) || *tok_ptr == ',';
-                    tok_ptr--)
-                   continue;
+                    tok_ptr--) {
+                   /* EMPTY */ ;
+               }
                tok_ptr[1] = '\0';
            }
 
@@ -831,7 +834,7 @@ _nc_get_token(bool silent)
  */
 
 NCURSES_EXPORT(int)
-_nc_trans_string(char *ptr, char *last)
+_nc_trans_string(char *ptr, const char *const last)
 {
     int count = 0;
     int number = 0;
index e69e0f34e71ccc66ff6ef26a50b790fcb02f3554..db3872e3f90d3e932ddd54bc35f5802026269f1a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2006-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -44,7 +44,7 @@
 #include <hashed_db.h>
 #endif
 
-MODULE_ID("$Id: db_iterator.c,v 1.49 2022/04/23 20:03:15 tom Exp $")
+MODULE_ID("$Id: db_iterator.c,v 1.50 2023/06/24 21:52:32 tom Exp $")
 
 #define HaveTicDirectory _nc_globals.have_tic_directory
 #define KeepTicDirectory _nc_globals.keep_tic_directory
@@ -383,8 +383,11 @@ _nc_first_db(DBDIRS * state, int *offset)
                 */
                for (j = 0; my_list[j] != 0; ++j) {
 #ifdef TERMINFO
-                   if (*my_list[j] == '\0')
-                       my_list[j] = strdup(TERMINFO);
+                   if (*my_list[j] == '\0') {
+                       char *my_copy = strdup(TERMINFO);
+                       if (my_copy != 0)
+                           my_list[j] = my_copy;
+                   }
 #endif
                    trim_formatting(my_list[j]);
                    for (k = 0; k < j; ++k) {
index 8c5e10c00e705a631136a95315a238306279506c..f47fd3fe9eff7d6ef0a4e7b84256374310bf8b54 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2006-2012,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -38,7 +38,7 @@
 
 #include <tic.h>
 
-MODULE_ID("$Id: entries.c,v 1.34 2022/08/13 16:57:35 tom Exp $")
+MODULE_ID("$Id: entries.c,v 1.35 2023/05/27 20:13:10 tom Exp $")
 
 /****************************************************************************
  *
@@ -65,7 +65,7 @@ NCURSES_EXPORT_VAR(ENTRY *) _nc_head = 0;
 NCURSES_EXPORT_VAR(ENTRY *) _nc_tail = 0;
 
 static ENTRY *
-_nc_delink_entry(ENTRY * headp, TERMTYPE2 *tterm)
+_nc_delink_entry(ENTRY * headp, const TERMTYPE2 *const tterm)
 /* delink the allocated storage for the given list entry */
 {
     ENTRY *ep, *last;
index 9622e0e11f4923b1d5a58b759d9217dcaef63458..7935152a79207fb42ff53f704ec43d2c8161fd0c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2022 Thomas E. Dickey                                     *
+ * Copyright 2020-2022,2023 Thomas E. Dickey                                *
  * Copyright 1999-2011,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -43,7 +43,7 @@
 
 #include <tic.h>
 
-MODULE_ID("$Id: free_ttype.c,v 1.21 2022/05/28 18:02:33 tom Exp $")
+MODULE_ID("$Id: free_ttype.c,v 1.22 2023/04/22 15:12:57 tom Exp $")
 
 static void
 really_free_termtype(TERMTYPE2 *ptr, bool freeStrings)
@@ -66,9 +66,6 @@ really_free_termtype(TERMTYPE2 *ptr, bool freeStrings)
     _nc_free_entry(_nc_head, ptr);
 }
 
-/*
- * This entrypoint was used by tack 1.07; deprecated with ncurses 6.2
- */
 NCURSES_EXPORT(void)
 _nc_free_termtype(TERMTYPE *ptr)
 {
index 1669c6414c183c256d3905138e20063c92267b6b..ef20dfb1da08539dcead9a7748d2b134ed32b38b 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1999-2010,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -30,7 +30,7 @@
 #include <curses.priv.h>
 #include <tic.h>               /* struct tinfo_fkeys */
 
-MODULE_ID("$Id: init_keytry.c,v 1.19 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: init_keytry.c,v 1.20 2023/09/16 12:55:01 tom Exp $")
 
 /*
 **      _nc_init_keytry()
@@ -67,6 +67,8 @@ _nc_tinfo_fkeysf(void)
 NCURSES_EXPORT(void)
 _nc_init_keytry(SCREEN *sp)
 {
+    T(("_nc_init_keytry(%p)", (void *) sp));
+
     /* The sp->_keytry value is initialized in newterm(), where the sp
      * structure is created, because we can not tell where keypad() or
      * mouse_activate() (which will call keyok()) are first called.
@@ -95,7 +97,7 @@ _nc_init_keytry(SCREEN *sp)
                char *value = tp->Strings[n];
                if (name != 0
                    && *name == 'k'
-                   && value != 0
+                   && VALID_STRING(value)
                    && NCURSES_SP_NAME(key_defined) (NCURSES_SP_ARGx
                                                     value) == 0) {
                    (void) _nc_add_to_try(&(sp->_keytry),
index 6f6c583a1fc35e583d76b06115d3b2e4488a23ba..b817f49bd78a78c76c48526f4c2ea90ce5b1019d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -43,7 +43,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_data.c,v 1.87 2022/07/09 22:03:21 tom Exp $")
+MODULE_ID("$Id: lib_data.c,v 1.89 2024/02/24 18:11:38 tom Exp $")
 
 /*
  * OS/2's native linker complains if we don't initialize public data when
@@ -196,7 +196,6 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = {
 #endif
 #ifdef TRACE
     FALSE,                     /* trace_opened */
-    CHARS_0s,                  /* trace_fname */
     0,                         /* trace_level */
     NULL,                      /* trace_fp */
     -1,                                /* trace_fd */
index f7cbaba54b2e4bd6b3a538ead9dae59c0d27d399..46f652b0a30a2f6d1ed0cbede036978ecebd91ea 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2022 Thomas E. Dickey                                     *
+ * Copyright 2020-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2009,2010 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -49,7 +49,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_kernel.c,v 1.35 2022/07/28 20:14:51 tom Exp $")
+MODULE_ID("$Id: lib_kernel.c,v 1.36 2023/06/10 13:29:06 tom Exp $")
 
 #ifdef TERMIOS
 static int
@@ -148,34 +148,40 @@ killchar(void)
 }
 #endif
 
+static void
+flush_input(int fd)
+{
+#ifdef TERMIOS
+    tcflush(fd, TCIFLUSH);
+#else /* !TERMIOS */
+    errno = 0;
+    do {
+#if defined(EXP_WIN32_DRIVER)
+       _nc_console_flush(_nc_console_fd2handle(fd));
+#else
+       ioctl(fd, TIOCFLUSH, 0);
+#endif
+    } while
+       (errno == EINTR);
+#endif
+}
+
 /*
  *     flushinp()
  *
- *     Flush any input on cur_term->Filedes
- *
+ *     Flush any input on tty
  */
 
 NCURSES_EXPORT(int)
 NCURSES_SP_NAME(flushinp) (NCURSES_SP_DCL0)
 {
-    TERMINAL *termp = TerminalOf(SP_PARM);
-
     T((T_CALLED("flushinp(%p)"), (void *) SP_PARM));
 
-    if (termp != 0) {
-#ifdef TERMIOS
-       tcflush(termp->Filedes, TCIFLUSH);
-#else
-       errno = 0;
-       do {
-#if defined(EXP_WIN32_DRIVER)
-           _nc_console_flush(_nc_console_fd2handle(termp->Filedes));
-#else
-           ioctl(termp->Filedes, TIOCFLUSH, 0);
-#endif
-       } while
-           (errno == EINTR);
-#endif
+    if (SP_PARM != 0) {
+       if (NC_ISATTY(SP_PARM->_ifd))
+           flush_input(SP_PARM->_ifd);
+       else if (NC_ISATTY(SP_PARM->_ofd))
+           flush_input(SP_PARM->_ofd);
        if (SP_PARM) {
            SP_PARM->_fifohead = -1;
            SP_PARM->_fifotail = 0;
index 3a9fc316878408fac2572a5ae134a17ff2ce8c40..1b89a54c799bc3e0fbffaa3539690000db306abb 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2014,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
 #endif
 #endif
 
-MODULE_ID("$Id: lib_napms.c,v 1.27 2020/08/15 19:45:23 tom Exp $")
+MODULE_ID("$Id: lib_napms.c,v 1.28 2023/09/16 16:09:33 tom Exp $")
 
 NCURSES_EXPORT(int)
 NCURSES_SP_NAME(napms) (NCURSES_SP_DCLx int ms)
 {
     T((T_CALLED("napms(%d)"), ms));
 
+    if (ms > MAX_DELAY_MSECS)
+       ms = MAX_DELAY_MSECS;
+
 #ifdef USE_TERM_DRIVER
     CallDriver_1(SP_PARM, td_nap, ms);
 #else /* !USE_TERM_DRIVER */
index 017a34aac6e712e07899c9bc1c63f3198c2296d7..6a8bb39489ced25d38e6f97bef9a69b796df13aa 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2014,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -47,7 +47,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_options.c,v 1.82 2021/02/14 00:17:35 tom Exp $")
+MODULE_ID("$Id: lib_options.c,v 1.83 2023/04/29 18:56:12 tom Exp $")
 
 NCURSES_EXPORT(int)
 idlok(WINDOW *win, bool flag)
@@ -92,7 +92,7 @@ NCURSES_SP_NAME(halfdelay) (NCURSES_SP_DCLx int t)
        returnCode(ERR);
 
     NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG);
-    SP_PARM->_cbreak = t + 1;
+    IsCbreak(SP_PARM) = t + 1;
     returnCode(OK);
 }
 
index aa65041c71d004a80d46b1eace9a8c2d4e0c6230..e7d8535ef603064326e4f1b5c2b77990b8ddb6de 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2011,2012 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -40,7 +40,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_print.c,v 1.30 2021/04/18 14:58:57 tom Exp $")
+MODULE_ID("$Id: lib_print.c,v 1.31 2023/06/10 12:44:41 tom Exp $")
 
 NCURSES_EXPORT(int)
 NCURSES_SP_NAME(mcprint) (NCURSES_SP_DCLx char *data, int len)
@@ -90,7 +90,7 @@ NCURSES_SP_NAME(mcprint) (NCURSES_SP_DCLx char *data, int len)
      * data has actually been shipped to the terminal.  If the write(2)
      * operation is truly atomic we're protected from this.
      */
-    result = (int) write(TerminalOf(SP_PARM)->Filedes, mybuf, need);
+    result = (int) write(SP_PARM->_ofd, mybuf, need);
 
     /*
      * By giving up our scheduler slot here we increase the odds that the
index 1e47f3b6fbfbabd066180539ed97a8d0814d0552..fda6deada2a7c0e2177b87aebb16c8bed3d1ef68 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -50,7 +50,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_raw.c,v 1.26 2020/11/21 22:07:48 tom Exp $")
+MODULE_ID("$Id: lib_raw.c,v 1.30 2024/03/30 15:54:17 tom Exp $")
 
 #if HAVE_SYS_TERMIO_H
 #include <sys/termio.h>                /* needed for ISC */
@@ -116,8 +116,8 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0)
            KbdSetStatus(&kbdinfo, 0);
 #endif
            if (SP_PARM) {
-               SP_PARM->_raw = TRUE;
-               SP_PARM->_cbreak = 1;
+               IsRaw(SP_PARM) = TRUE;
+               IsCbreak(SP_PARM) = 1;
            }
            termp->Nttyb = buf;
        }
@@ -151,7 +151,6 @@ NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0)
 #ifdef TERMIOS
        buf.c_lflag &= (unsigned) ~ICANON;
        buf.c_iflag &= (unsigned) ~ICRNL;
-       buf.c_lflag |= ISIG;
        buf.c_cc[VMIN] = 1;
        buf.c_cc[VTIME] = 0;
 #elif defined(EXP_WIN32_DRIVER)
@@ -163,7 +162,7 @@ NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0)
        result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
        if (result == OK) {
            if (SP_PARM) {
-               SP_PARM->_cbreak = 1;
+               IsCbreak(SP_PARM) = 1;
            }
            termp->Nttyb = buf;
        }
@@ -255,8 +254,8 @@ NCURSES_SP_NAME(noraw) (NCURSES_SP_DCL0)
            KbdSetStatus(&kbdinfo, 0);
 #endif
            if (SP_PARM) {
-               SP_PARM->_raw = FALSE;
-               SP_PARM->_cbreak = 0;
+               IsRaw(SP_PARM) = FALSE;
+               IsCbreak(SP_PARM) = 0;
            }
            termp->Nttyb = buf;
        }
@@ -298,7 +297,7 @@ NCURSES_SP_NAME(nocbreak) (NCURSES_SP_DCL0)
        result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
        if (result == OK) {
            if (SP_PARM) {
-               SP_PARM->_cbreak = 0;
+               IsCbreak(SP_PARM) = 0;
            }
            termp->Nttyb = buf;
        }
@@ -395,3 +394,46 @@ intrflush(WINDOW *win GCC_UNUSED, bool flag)
     return NCURSES_SP_NAME(intrflush) (CURRENT_SCREEN, win, flag);
 }
 #endif
+
+#if NCURSES_EXT_FUNCS
+/* *INDENT-OFF* */
+
+/*
+ * SCREEN is always opaque, but nl/raw/cbreak/echo set properties in it.
+ * As an extension, provide a way to query the properties.
+ *
+ * There are other properties which could be queried, e.g., filter, keypad,
+ * use_env, use_meta, but these particular properties are saved/restored within
+ * the wgetnstr() and wgetn_wstr() functions, which requires that the higher
+ * level curses library knows about the internal state of the lower level
+ * terminfo library.
+ */
+
+#define is_TEST(show,what) \
+    NCURSES_EXPORT(int) \
+    NCURSES_SP_NAME(show) (NCURSES_SP_DCL0) \
+    { \
+       return ((SP_PARM != NULL) ? (what(SP_PARM) ? 1 : 0) : -1); \
+    }
+
+is_TEST(is_nl, IsNl)
+is_TEST(is_raw, IsRaw)
+is_TEST(is_cbreak, IsCbreak)
+is_TEST(is_echo, IsEcho)
+
+#if NCURSES_SP_FUNCS
+#undef is_TEST
+#define is_TEST(show) \
+    NCURSES_EXPORT(int) \
+    show(void) \
+    { \
+       return NCURSES_SP_NAME(show) (CURRENT_SCREEN); \
+    }
+is_TEST(is_nl)
+is_TEST(is_raw)
+is_TEST(is_cbreak)
+is_TEST(is_echo)
+#endif
+
+/* *INDENT-ON* */
+#endif /* extensions */
index db93a368fda162022a48dda6edda2468e41140f7..99097f00fc1d3e9844a1ae03e9e3f4a93c280991 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -49,7 +49,7 @@
 #include <locale.h>
 #endif
 
-MODULE_ID("$Id: lib_setup.c,v 1.218 2022/08/13 18:12:22 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.240 2024/04/20 17:04:05 tom Exp $")
 
 /****************************************************************************
  *
@@ -272,6 +272,191 @@ use_tioctl(bool f)
 }
 #endif
 
+#if !(defined(USE_TERM_DRIVER) || defined(EXP_WIN32_DRIVER))
+static void
+_nc_default_screensize(TERMINAL *termp, int *linep, int *colp)
+{
+    /* if we can't get dynamic info about the size, use static */
+    if (*linep <= 0) {
+       *linep = (int) lines;
+    }
+    if (*colp <= 0) {
+       *colp = (int) columns;
+    }
+
+    /* the ultimate fallback, assume fixed 24x80 size */
+    if (*linep <= 0) {
+       *linep = 24;
+    }
+    if (*colp <= 0) {
+       *colp = 80;
+    }
+}
+
+#if defined(USE_CHECK_SIZE) && defined(user6) && defined(user7)
+static const char *
+skip_csi(const char *value)
+{
+    if (UChar(*value) == CSI_CHR) {
+       ++value;
+    } else if (*value == ESC_CHR && value[1] == L_BLOCK) {
+       value += 2;
+    }
+    return value;
+}
+
+static bool
+is_expected(const char *value, const char *expected)
+{
+    bool result = FALSE;
+    if (VALID_STRING(value)) {
+       const char *skipped = skip_csi(value);
+       if (skipped != value) {
+           if (!strcmp(skipped, expected))
+               result = TRUE;
+       }
+    }
+    return result;
+}
+
+static bool
+get_position(TERMINAL *termp, int fd, int *row, int *col)
+{
+    bool result = FALSE;
+    size_t need = strlen(user7);
+    int have;
+
+    have = (int) write(fd, user7, need);
+
+    if (have == (int) need) {
+       int y, x;
+       char buf[20];
+       char *s;
+       char cc;
+       const char *skipped;
+       int scanned;
+
+       s = memset(buf, '\0', sizeof(buf));
+       do {
+           size_t ask = (sizeof(buf) - 1 - (size_t) (s - buf));
+           int got = (int) read(fd, s, ask);
+           if (got == 0)
+               break;
+           s += got;
+           *s = '\0';
+       } while (strchr(buf, 'R') == NULL && (size_t) (s + 1 - buf) < sizeof(buf));
+       T(("CPR response %s", _nc_visbuf(buf)));
+       skipped = skip_csi(buf);
+       cc = '\0';
+       if (skipped != buf
+           && *skipped != '\0'
+           && (scanned = sscanf(skip_csi(buf), "%d;%d%c", &y, &x, &cc)) == 3
+           && (cc == 'R')) {
+           *row = y;
+           *col = x;
+           result = TRUE;
+       }
+    }
+    T(("get_position %s %d,%d", result ? "OK" : "ERR", *row, *col));
+    return result;
+}
+
+static bool
+set_position(NCURSES_SP_DCLx TERMINAL *termp, int row, int col)
+{
+    bool result;
+    char *actual = TIPARM_2(cursor_address, row, col);
+    T((T_CALLED("set_position %d,%d)"), row, col));
+#if NCURSES_SP_FUNCS
+    result = (NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "set_position",
+                                        actual) == OK);
+    NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+#else
+    /* This does not support padding because without sp-funcs, we have only
+     * the interface using stdio, but we are not guaranteed that Filedes
+     * is the same as fileno(stdout).
+     */
+    result = FALSE;
+    if (actual != NULL) {
+       size_t want = strlen(actual);
+       int have = (int) write(termp->Filedes, actual, want);
+       result = ((int) want == have);
+    }
+#endif
+    returnBool(result);
+}
+
+/*
+ * This is a little more complicated than one might expect, because we do this
+ * before setting up the terminal modes, etc., and cannot use the timeout or
+ * buffering functions.
+ *
+ * We check if the terminal description has the ECMA-48 CPR (cursor position
+ * report) in u7 and the response in u6.  The two variations of is_expected()
+ * cover the termcap style and terminfo style, and are equivalent as far as we
+ * are concerned.  For analyzing the response, we wait (a short time) for 'R'
+ * to be echoed, and then check if we received two integers in the response.
+ *
+ * In principle, this could run on "any" ECMA-48 terminal, but in practice,
+ * there is a scenario using GNU screen where it uses ncurses with a partially
+ * configured pseudo-terminal, and the CPR response goes to the wrong place.
+ * So we do a simple check to exclude pseudo-terminals.
+ */
+static void
+_nc_check_screensize(SCREEN *sp, TERMINAL *termp, int *linep, int *colp)
+{
+    int fd = termp->Filedes;
+    TTY saved;
+    const char *name = NULL;
+
+    if (IsRealTty(fd, name)
+       && VALID_STRING(cursor_address)
+       && is_expected(user7, "6n")
+       && (is_expected(user6, "%i%d;%dR") ||
+           is_expected(user6, "%i%p1%d;%p2%dR"))
+       && GET_TTY(fd, &saved) == OK) {
+       int current_y = -1, current_x = -1;
+       int updated_y = -1, updated_x = -1;
+       TTY alter = saved;
+
+#if NCURSES_SP_FUNCS
+       if (sp == NULL) {
+           sp = new_prescr();
+           sp->_term = termp;
+           NCURSES_SP_NAME(baudrate) (NCURSES_SP_ARG);
+       }
+#else
+       (void) sp;
+#endif
+
+       T(("trying CPR (u7/u6) with %s", name));
+       alter.c_lflag &= (unsigned) ~(ECHO | ICANON | ISIG | IEXTEN);
+       alter.c_iflag &= (unsigned) ~(IXON | BRKINT | PARMRK);
+       alter.c_cc[VMIN] = 0;
+       alter.c_cc[VTIME] = 1;
+       SET_TTY(fd, &alter);
+
+       if (get_position(termp, fd, &current_y, &current_x)
+           && set_position(NCURSES_SP_ARGx termp, 9999, 9999)
+           && get_position(termp, fd, &updated_y, &updated_x)) {
+           *linep = updated_y;
+           *colp = updated_x;
+           set_position(NCURSES_SP_ARGx termp, current_y, current_x);
+       }
+       /* restore tty modes */
+       SET_TTY(fd, &saved);
+    } else {
+       T(("NOT trying CPR with fd %d (%s): %s",
+          fd, NonNull(name), NC_ISATTY(fd) ? "tty" : "not a tty"));
+    }
+
+    _nc_default_screensize(termp, linep, colp);
+}
+#else /* !USE_CHECK_SIZE */
+#define _nc_check_screensize(sp, termp, linep, colp)   /* nothing */
+#endif
+#endif /* !(defined(USE_TERM_DRIVER) || defined(EXP_WIN32_DRIVER)) */
+
 NCURSES_EXPORT(void)
 _nc_get_screensize(SCREEN *sp,
 #ifdef USE_TERM_DRIVER
@@ -305,6 +490,7 @@ _nc_get_screensize(SCREEN *sp,
     bool useEnv = _nc_prescreen.use_env;
     bool useTioctl = _nc_prescreen.use_tioctl;
 
+    T((T_CALLED("_nc_get_screensize (%p)"), (void *) sp));
 #ifdef EXP_WIN32_DRIVER
     /* If we are here, then Windows console is used in terminfo mode.
        We need to figure out the size using the console API
@@ -326,6 +512,7 @@ _nc_get_screensize(SCREEN *sp,
     }
 #endif
 
+    T(("useEnv:%d useTioctl:%d", useEnv, useTioctl));
     if (useEnv || useTioctl) {
 #ifdef __EMX__
        {
@@ -389,22 +576,10 @@ _nc_get_screensize(SCREEN *sp,
                *colp = value;
                T(("screen size: environment COLUMNS = %d", *colp));
            }
-       }
 
-       /* if we can't get dynamic info about the size, use static */
-       if (*linep <= 0) {
-           *linep = (int) lines;
-       }
-       if (*colp <= 0) {
-           *colp = (int) columns;
-       }
-
-       /* the ultimate fallback, assume fixed 24x80 size */
-       if (*linep <= 0) {
-           *linep = 24;
-       }
-       if (*colp <= 0) {
-           *colp = 80;
+           _nc_default_screensize(termp, linep, colp);
+       } else {
+           _nc_check_screensize(sp, termp, linep, colp);
        }
 
        /*
@@ -419,6 +594,8 @@ _nc_get_screensize(SCREEN *sp,
        OldNumber(termp, lines) = (short) (*linep);
        OldNumber(termp, columns) = (short) (*colp);
 #endif
+    } else {
+       _nc_check_screensize(sp, termp, linep, colp);
     }
 
     T(("screen size is %dx%d", *linep, *colp));
@@ -435,6 +612,7 @@ _nc_get_screensize(SCREEN *sp,
     TABSIZE = my_tabsize;
 #endif
     T(("TABSIZE = %d", TABSIZE));
+    returnVoid;
 #endif /* USE_TERM_DRIVER */
 }
 
@@ -503,6 +681,7 @@ _nc_setup_tinfo(const char *const tn, TERMTYPE2 *const tp)
      */
     if (status == TGETENT_YES) {
        unsigned n;
+       T(("_nc_setup_tinfo - resetting invalid booleans/strings"));
        for_each_boolean(n, tp) {
            if (!VALID_BOOLEAN(tp->Booleans[n]))
                tp->Booleans[n] = FALSE;
@@ -517,9 +696,9 @@ _nc_setup_tinfo(const char *const tn, TERMTYPE2 *const tp)
 #endif
 
 /*
-**     Take the real command character out of the CC environment variable
-**     and substitute it in for the prototype given in 'command_character'.
-*/
+ * Take the real command character out of the CC environment variable
+ * and substitute it in for the prototype given in 'command_character'.
+ */
 void
 _nc_tinfo_cmdch(TERMINAL *termp, int proto)
 {
@@ -535,9 +714,12 @@ _nc_tinfo_cmdch(TERMINAL *termp, int proto)
        char CC = *tmp;
 
        for_each_string(i, &(termp->type)) {
-           for (tmp = termp->type.Strings[i]; tmp && *tmp; tmp++) {
-               if (UChar(*tmp) == proto)
-                   *tmp = CC;
+           tmp = termp->type.Strings[i];
+           if (VALID_STRING(tmp)) {
+               for (; *tmp; ++tmp) {
+                   if (UChar(*tmp) == proto)
+                       *tmp = CC;
+               }
            }
        }
     }
@@ -573,22 +755,27 @@ _nc_get_locale(void)
 NCURSES_EXPORT(int)
 _nc_unicode_locale(void)
 {
-    int result = 0;
+    static bool initialized = FALSE;
+    static int result = 0;
+
+    if (!initialized) {
 #if defined(_NC_WINDOWS) && USE_WIDEC_SUPPORT
-    result = 1;
+       result = 1;
 #elif HAVE_LANGINFO_CODESET
-    char *env = nl_langinfo(CODESET);
-    result = !strcmp(env, "UTF-8");
-    T(("_nc_unicode_locale(%s) ->%d", env, result));
+       char *env = nl_langinfo(CODESET);
+       result = !strcmp(env, "UTF-8");
+       T(("_nc_unicode_locale(%s) ->%d", env, result));
 #else
-    char *env = _nc_get_locale();
-    if (env != 0) {
-       if (strstr(env, ".UTF-8") != 0) {
-           result = 1;
-           T(("_nc_unicode_locale(%s) ->%d", env, result));
+       char *env = _nc_get_locale();
+       if (env != 0) {
+           if (strstr(env, ".UTF-8") != 0) {
+               result = 1;
+               T(("_nc_unicode_locale(%s) ->%d", env, result));
+           }
        }
-    }
 #endif
+       initialized = TRUE;
+    }
     return result;
 }
 
@@ -679,10 +866,9 @@ TINFO_SETUP_TERM(TERMINAL **tp,
 #endif
     }
     myname = strdup(tname);
-
-    if (strlen(myname) > MAX_NAME_SIZE) {
+    if (myname == NULL || strlen(myname) > MAX_NAME_SIZE) {
        ret_error(TGETENT_ERR,
-                 "TERM environment must be <= %d characters.\n",
+                 "TERM environment must be 1..%d characters.\n",
                  MAX_NAME_SIZE,
                  free(myname));
     }
@@ -764,10 +950,14 @@ TINFO_SETUP_TERM(TERMINAL **tp,
 
 #ifdef USE_TERM_DRIVER
        INIT_TERM_DRIVER();
+       /*
+        * _nc_get_driver() will call td_CanHandle() for each driver, and win_driver
+        * needs file descriptor to do the test, so set it before calling.
+        */
+       termp->Filedes = (short) Filedes;
        TCB = (TERMINAL_CONTROL_BLOCK *) termp;
        code = _nc_globals.term_driver(TCB, myname, errret);
        if (code == OK) {
-           termp->Filedes = (short) Filedes;
            termp->_termname = strdup(myname);
        } else {
            ret_error1(errret ? *errret : TGETENT_ERR,
@@ -819,7 +1009,7 @@ TINFO_SETUP_TERM(TERMINAL **tp,
 
        set_curterm(termp);
 
-       if (command_character)
+       if (VALID_STRING(command_character))
            _nc_tinfo_cmdch(termp, UChar(*command_character));
 
        /*
index 5ce43a3c48908f1d2a9a21d210059ae1f3d01be6..2ece985914e982f6e0db11bf52a775707cfa6340 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018,2020 Thomas E. Dickey                                     *
+ * Copyright 2018-2020,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -49,7 +49,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_termcap.c,v 1.88 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_termcap.c,v 1.89 2023/05/27 20:13:10 tom Exp $")
 
 NCURSES_EXPORT_VAR(char *) UP = 0;
 NCURSES_EXPORT_VAR(char *) BC = 0;
@@ -399,7 +399,7 @@ tgetstr(const char *id, char **area)
 #undef CacheInx
 #define CacheInx num
 NCURSES_EXPORT(void)
-_nc_tgetent_leak(TERMINAL *termp)
+_nc_tgetent_leak(const TERMINAL *const termp)
 {
     if (termp != 0) {
        int num;
index 9cf5e100ce87ff7abd3c90b0bdc15084e54b2f35..58b561fa7c781610ee030d2a075466fe320d922f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2019,2020 Thomas E. Dickey                                *
+ * Copyright 2018-2020,2023 Thomas E. Dickey                                *
  * Copyright 2000-2008,2012 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -36,7 +36,7 @@
 #include <ctype.h>
 #include <termcap.h>
 
-MODULE_ID("$Id: lib_tgoto.c,v 1.21 2020/05/27 23:55:56 tom Exp $")
+MODULE_ID("$Id: lib_tgoto.c,v 1.23 2023/04/16 17:19:40 tom Exp $")
 
 #if !PURE_TERMINFO
 static bool
@@ -207,6 +207,16 @@ tgoto(const char *string, int x, int y)
        result = tgoto_internal(string, x, y);
     else
 #endif
-       result = TIPARM_2(string, y, x);
+    if ((result = TIPARM_2(string, y, x)) == NULL) {
+       /*
+        * Because termcap did not provide a more general solution such as
+        * tparm(), it was necessary to handle single-parameter capabilities
+        * using tgoto().  The internal _nc_tiparm() function returns a NULL
+        * for that case; retry for the single-parameter case.
+        */
+       if ((result = TIPARM_1(string, y)) == NULL) {
+           result = TIPARM_0(string);
+       }
+    }
     returnPtr(result);
 }
index d9bdfd8faf06ef6860523f6f61d08762dd6d85aa..5666b27b7e098abace692da8f75276eb2b404543 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -53,7 +53,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: lib_tparm.c,v 1.137 2021/11/20 23:29:15 tom Exp $")
+MODULE_ID("$Id: lib_tparm.c,v 1.153 2023/11/04 19:28:41 tom Exp $")
 
 /*
  *     char *
@@ -177,19 +177,21 @@ _nc_free_tparm(TERMINAL *termp)
 #if HAVE_TSEARCH
     if (MyCount != 0) {
        delete_tparm = typeCalloc(TPARM_DATA *, MyCount);
-       which_tparm = 0;
-       twalk(MyCache, visit_nodes);
-       for (which_tparm = 0; which_tparm < MyCount; ++which_tparm) {
-           TPARM_DATA *ptr = delete_tparm[which_tparm];
-           if (ptr != NULL) {
-               tdelete(ptr, &MyCache, cmp_format);
-               free((char *) ptr->format);
-               free(ptr);
+       if (delete_tparm != NULL) {
+           which_tparm = 0;
+           twalk(MyCache, visit_nodes);
+           for (which_tparm = 0; which_tparm < MyCount; ++which_tparm) {
+               TPARM_DATA *ptr = delete_tparm[which_tparm];
+               if (ptr != NULL) {
+                   tdelete(ptr, &MyCache, cmp_format);
+                   free((char *) ptr->format);
+                   free(ptr);
+               }
            }
+           which_tparm = 0;
+           twalk(MyCache, visit_nodes);
+           FreeAndNull(delete_tparm);
        }
-       which_tparm = 0;
-       twalk(MyCache, visit_nodes);
-       FreeAndNull(delete_tparm);
        MyCount = 0;
        which_tparm = 0;
     }
@@ -605,8 +607,8 @@ tparm_setup(TERMINAL *term, const char *string, TPARM_DATA *result)
     TPS(out_used) = 0;
     memset(result, 0, sizeof(*result));
 
-    if (string == NULL) {
-       TR(TRACE_CALLS, ("%s: format is null", TPS(tname)));
+    if (!VALID_STRING(string)) {
+       TR(TRACE_CALLS, ("%s: format is invalid", TPS(tname)));
        rc = ERR;
     } else {
 #if HAVE_TSEARCH
@@ -645,7 +647,7 @@ tparm_setup(TERMINAL *term, const char *string, TPARM_DATA *result)
                    result->num_parsed = NUM_PARM;
                if (result->num_popped > NUM_PARM)
                    result->num_popped = NUM_PARM;
-               result->num_actual = max(result->num_popped, result->num_parsed);
+               result->num_actual = Max(result->num_popped, result->num_parsed);
 
                for (n = 0; n < result->num_actual; ++n) {
                    if (result->p_is_s[n])
@@ -796,6 +798,11 @@ tparam_internal(TPARM_STATE *tps, const char *string, TPARM_DATA *data)
 
     tparm_trace_call(tps, string, data);
 
+    if (TPS(fmt_buff) == NULL) {
+       T((T_RETURN("<null>")));
+       return NULL;
+    }
+
     while ((cp - string) < (int) len2) {
        if (*cp != '%') {
            save_char(tps, UChar(*cp));
@@ -1086,6 +1093,67 @@ tparam_internal(TPARM_STATE *tps, const char *string, TPARM_DATA *data)
     return (TPS(out_buff));
 }
 
+#ifdef CUR
+/*
+ * Only a few standard capabilities accept string parameters.  The others that
+ * are parameterized accept only numeric parameters.
+ */
+static bool
+check_string_caps(TPARM_DATA *data, const char *string)
+{
+    bool result = FALSE;
+
+#define CHECK_CAP(name) (VALID_STRING(name) && !strcmp(name, string))
+
+    /*
+     * Disallow string parameters unless we can check them against a terminal
+     * description.
+     */
+    if (cur_term != NULL) {
+       int want_type = 0;
+
+       if (CHECK_CAP(pkey_key))
+           want_type = 2;      /* function key #1, type string #2 */
+       else if (CHECK_CAP(pkey_local))
+           want_type = 2;      /* function key #1, execute string #2 */
+       else if (CHECK_CAP(pkey_xmit))
+           want_type = 2;      /* function key #1, transmit string #2 */
+       else if (CHECK_CAP(plab_norm))
+           want_type = 2;      /* label #1, show string #2 */
+#ifdef pkey_plab
+       else if (CHECK_CAP(pkey_plab))
+           want_type = 6;      /* function key #1, type string #2, show string #3 */
+#endif
+#if NCURSES_XNAMES
+       else {
+           char *check;
+
+           check = tigetstr("Cs");
+           if (CHECK_CAP(check))
+               want_type = 1;  /* style #1 */
+
+           check = tigetstr("Ms");
+           if (CHECK_CAP(check))
+               want_type = 3;  /* storage unit #1, content #2 */
+       }
+#endif
+
+       if (want_type == data->tparm_type) {
+           result = TRUE;
+       } else {
+           T(("unexpected string-parameter"));
+       }
+    }
+    return result;
+}
+
+#define ValidCap(allow_strings) (myData.tparm_type == 0 || \
+                                (allow_strings && \
+                                 check_string_caps(&myData, string)))
+#else
+#define ValidCap(allow_strings) 1
+#endif
+
 #if NCURSES_TPARM_VARARGS
 
 NCURSES_EXPORT(char *)
@@ -1100,7 +1168,7 @@ tparm(const char *string, ...)
     tps->tname = "tparm";
 #endif /* TRACE */
 
-    if (tparm_setup(cur_term, string, &myData) == OK) {
+    if (tparm_setup(cur_term, string, &myData) == OK && ValidCap(TRUE)) {
        va_list ap;
 
        va_start(ap, string);
@@ -1135,7 +1203,9 @@ tparm(const char *string,
     tps->tname = "tparm";
 #endif /* TRACE */
 
-    if (tparm_setup(cur_term, string, &myData) == OK) {
+#define string_ok (sizeof(char*) <= sizeof(TPARM_ARG))
+
+    if (tparm_setup(cur_term, string, &myData) == OK && ValidCap(string_ok)) {
 
        myData.param[0] = a1;
        myData.param[1] = a2;
@@ -1166,7 +1236,7 @@ tiparm(const char *string, ...)
     tps->tname = "tiparm";
 #endif /* TRACE */
 
-    if (tparm_setup(cur_term, string, &myData) == OK) {
+    if (tparm_setup(cur_term, string, &myData) == OK && ValidCap(TRUE)) {
        va_list ap;
 
        va_start(ap, string);
@@ -1179,10 +1249,11 @@ tiparm(const char *string, ...)
 }
 
 /*
- * The internal-use flavor ensures that the parameters are numbers, not strings
+ * Use tparm if the formatting string matches the expected number of parameters
+ * counting string-parameters.
  */
 NCURSES_EXPORT(char *)
-_nc_tiparm(int expected, const char *string, ...)
+tiparm_s(int num_expected, int tparm_type, const char *string, ...)
 {
     TPARM_STATE *tps = get_tparm_state(cur_term);
     TPARM_DATA myData;
@@ -1190,12 +1261,15 @@ _nc_tiparm(int expected, const char *string, ...)
 
     _nc_tparm_err = 0;
 #ifdef TRACE
-    tps->tname = "_nc_tiparm";
+    tps->tname = "tiparm_s";
 #endif /* TRACE */
-
-    if (tparm_setup(cur_term, string, &myData) == OK
-       && myData.num_actual <= expected
-       && myData.tparm_type == 0) {
+    if (num_expected >= 0 &&
+       num_expected <= 9 &&
+       tparm_type >= 0 &&
+       tparm_type < 7 &&       /* limit to 2 string parameters */
+       tparm_setup(cur_term, string, &myData) == OK &&
+       myData.tparm_type == tparm_type &&
+       myData.num_actual == num_expected) {
        va_list ap;
 
        va_start(ap, string);
@@ -1207,6 +1281,121 @@ _nc_tiparm(int expected, const char *string, ...)
     return result;
 }
 
+/*
+ * Analyze the formatting string, return the analysis.
+ */
+NCURSES_EXPORT(int)
+tiscan_s(int *num_expected, int *tparm_type, const char *string)
+{
+    TPARM_DATA myData;
+    int result = ERR;
+
+#ifdef TRACE
+    TPARM_STATE *tps = get_tparm_state(cur_term);
+    tps->tname = "tiscan_s";
+#endif /* TRACE */
+
+    if (tparm_setup(cur_term, string, &myData) == OK) {
+       *num_expected = myData.num_actual;
+       *tparm_type = myData.tparm_type;
+       result = OK;
+    }
+    return result;
+}
+
+/*
+ * The internal-use flavor ensures that parameters are numbers, not strings.
+ * In addition to ensuring that they are numbers, it ensures that the parameter
+ * count is consistent with intended usage.
+ *
+ * Unlike the general-purpose tparm/tiparm, these internal calls are fairly
+ * well defined:
+ *
+ * expected == 0 - not applicable
+ * expected == 1 - set color, or vertical/horizontal addressing
+ * expected == 2 - cursor addressing
+ * expected == 4 - initialize color or color pair
+ * expected == 9 - set attributes
+ *
+ * Only for the last case (set attributes) should a parameter be optional.
+ * Also, a capability which calls for more parameters than expected should be
+ * ignored.
+ *
+ * Return a null if the parameter-checks fail.  Otherwise, return a pointer to
+ * the formatted capability string.
+ */
+NCURSES_EXPORT(char *)
+_nc_tiparm(int expected, const char *string, ...)
+{
+    TPARM_STATE *tps = get_tparm_state(cur_term);
+    TPARM_DATA myData;
+    char *result = NULL;
+
+    _nc_tparm_err = 0;
+    T((T_CALLED("_nc_tiparm(%d, %s, ...)"), expected, _nc_visbuf(string)));
+#ifdef TRACE
+    tps->tname = "_nc_tiparm";
+#endif /* TRACE */
+
+    if (tparm_setup(cur_term, string, &myData) == OK && ValidCap(FALSE)) {
+#ifdef CUR
+       if (myData.num_actual != expected && cur_term != NULL) {
+           int needed = expected;
+           if (CHECK_CAP(to_status_line)) {
+               needed = 0;     /* allow for xterm's status line */
+           } else if (CHECK_CAP(set_a_background)) {
+               needed = 0;     /* allow for monochrome fakers */
+           } else if (CHECK_CAP(set_a_foreground)) {
+               needed = 0;
+           } else if (CHECK_CAP(set_background)) {
+               needed = 0;
+           } else if (CHECK_CAP(set_foreground)) {
+               needed = 0;
+           }
+#if NCURSES_XNAMES
+           else {
+               char *check;
+
+               check = tigetstr("xm");
+               if (CHECK_CAP(check)) {
+                   needed = 3;
+               }
+               check = tigetstr("S0");
+               if (CHECK_CAP(check)) {
+                   needed = 0; /* used in screen-base */
+               }
+           }
+#endif
+           if (myData.num_actual >= needed && myData.num_actual <= expected)
+               expected = myData.num_actual;
+       }
+#endif
+       if (myData.num_actual == 0 && expected) {
+           T(("missing parameter%s, expected %s%d",
+              expected > 1 ? "s" : "",
+              expected == 9 ? "up to " : "",
+              expected));
+       } else if (myData.num_actual > expected) {
+           T(("too many parameters, have %d, expected %d",
+              myData.num_actual,
+              expected));
+       } else if (expected != 9 && myData.num_actual != expected) {
+           T(("expected %d parameters, have %d",
+              myData.num_actual,
+              expected));
+       } else {
+           va_list ap;
+
+           va_start(ap, string);
+           tparm_copy_valist(&myData, FALSE, ap);
+           va_end(ap);
+
+           result = tparam_internal(tps, string, &myData);
+       }
+    }
+    returnPtr(result);
+}
+
 /*
  * Improve tic's checks by resetting the terminfo "static variables" before
  * calling functions which may update them.
index 0e52a40151a913c3b23fad8a59539b24c1f54035..f834532c91936f24fcfb58ef637e73e8d9a5ae1a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
 #include <termcap.h>           /* ospeed */
 #include <tic.h>
 
-MODULE_ID("$Id: lib_tputs.c,v 1.109 2022/07/21 23:26:34 tom Exp $")
+MODULE_ID("$Id: lib_tputs.c,v 1.111 2023/09/16 16:05:15 tom Exp $")
 
 NCURSES_EXPORT_VAR(char) PC = 0;              /* used by termcap library */
 NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0;        /* used by termcap library */
 
-NCURSES_EXPORT_VAR(int) _nc_nulls_sent = 0;   /* used by 'tack' program */
+NCURSES_EXPORT_VAR(int) _nc_nulls_sent = 0;
 
 #if NCURSES_NO_PADDING
 NCURSES_EXPORT(void)
@@ -89,6 +89,9 @@ NCURSES_SP_NAME(delay_output) (NCURSES_SP_DCLx int ms)
 {
     T((T_CALLED("delay_output(%p,%d)"), (void *) SP_PARM, ms));
 
+    if (ms > MAX_DELAY_MSECS)
+       ms = MAX_DELAY_MSECS;
+
     if (!HasTInfoTerminal(SP_PARM))
        returnCode(ERR);
 
index 2bcea39a914de143875a3ca6b99f97c87faeee69..2d6857aeb4a8ca74ac519180488dfbb62ac046cb 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2009,2010 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -38,7 +38,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_win32con.c,v 1.7 2021/09/04 10:54:35 tom Exp $")
+MODULE_ID("$Id: lib_win32con.c,v 1.14 2023/08/05 20:44:38 tom Exp $")
 
 #ifdef _NC_WINDOWS
 
@@ -58,19 +58,7 @@ MODULE_ID("$Id: lib_win32con.c,v 1.7 2021/09/04 10:54:35 tom Exp $")
 #define read_screen  ReadConsoleOutput
 #endif
 
-static BOOL IsConsoleHandle(HANDLE hdl);
-static bool save_original_screen(void);
-static bool restore_original_screen(void) GCC_UNUSED;
 static bool read_screen_data(void);
-static int  Adjust(int milliseconds, int diff);
-static int  decode_mouse(SCREEN *sp, int mask);
-static bool handle_mouse(SCREEN *sp, MOUSE_EVENT_RECORD mer);
-static int  rkeycompare(const void *el1, const void *el2);
-static int  keycompare(const void *el1, const void *el2);
-static int  MapKey(WORD vKey);
-static int  AnsiKey(WORD vKey);
-
-static ULONGLONG tdiff(FILETIME fstart, FILETIME fend);
 
 #define GenMap(vKey,key) MAKELONG(key, vKey)
 static const LONG keylist[] =
@@ -136,32 +124,32 @@ _nc_console_vt_supported(void)
        osvi.dwMinorVersion,
        osvi.dwBuildNumber));
     if (osvi.dwMajorVersion >= REQUIRED_MAX_V) {
-      if (osvi.dwMajorVersion == REQUIRED_MAX_V) {
-          if (((osvi.dwMinorVersion == REQUIRED_MIN_V) &&
-               (osvi.dwBuildNumber >= REQUIRED_BUILD)) ||
-              ((osvi.dwMinorVersion > REQUIRED_MIN_V)))
-              res = 1;
-      } else
-          res = 1;
+       if (osvi.dwMajorVersion == REQUIRED_MAX_V) {
+           if (((osvi.dwMinorVersion == REQUIRED_MIN_V) &&
+                (osvi.dwBuildNumber >= REQUIRED_BUILD)) ||
+               ((osvi.dwMinorVersion > REQUIRED_MIN_V)))
+               res = 1;
+       } else
+           res = 1;
     }
     returnCode(res);
 }
 
 NCURSES_EXPORT(void)
-_nc_console_size(int* Lines, int* Cols)
+_nc_console_size(int *Lines, int *Cols)
 {
-  EnsureInit();
-  if (Lines != NULL && Cols != NULL) {
-      if (WINCONSOLE.buffered) {
-          *Lines = (int) (WINCONSOLE.SBI.dwSize.Y);
-          *Cols = (int) (WINCONSOLE.SBI.dwSize.X);
-      } else {
-          *Lines = (int) (WINCONSOLE.SBI.srWindow.Bottom + 1 -
-                          WINCONSOLE.SBI.srWindow.Top);
-          *Cols = (int) (WINCONSOLE.SBI.srWindow.Right + 1 -
-                         WINCONSOLE.SBI.srWindow.Left);
-      }
-  }
+    EnsureInit();
+    if (Lines != NULL && Cols != NULL) {
+       if (WINCONSOLE.buffered) {
+           *Lines = (int) (WINCONSOLE.SBI.dwSize.Y);
+           *Cols = (int) (WINCONSOLE.SBI.dwSize.X);
+       } else {
+           *Lines = (int) (WINCONSOLE.SBI.srWindow.Bottom + 1 -
+                           WINCONSOLE.SBI.srWindow.Top);
+           *Cols = (int) (WINCONSOLE.SBI.srWindow.Right + 1 -
+                          WINCONSOLE.SBI.srWindow.Left);
+       }
+    }
 }
 
 /* Convert a file descriptor into a HANDLE
@@ -188,9 +176,9 @@ IsConsoleHandle(HANDLE hdl)
     EnsureInit();
 
     if (!GetConsoleMode(hdl, &dwFlag)) {
-        T(("GetConsoleMode failed"));
+       T(("GetConsoleMode failed"));
     } else {
-        result = TRUE;
+       result = TRUE;
     }
 
     returnBool(result);
@@ -219,8 +207,8 @@ NCURSES_EXPORT(void)
 _nc_console_selectActiveHandle(void)
 {
     if (WINCONSOLE.lastOut != WINCONSOLE.hdl) {
-        WINCONSOLE.lastOut = WINCONSOLE.hdl;
-        SetConsoleActiveScreenBuffer(WINCONSOLE.lastOut);
+       WINCONSOLE.lastOut = WINCONSOLE.hdl;
+       SetConsoleActiveScreenBuffer(WINCONSOLE.lastOut);
     }
 }
 
@@ -228,32 +216,32 @@ NCURSES_EXPORT(HANDLE)
 _nc_console_fd2handle(int fd)
 {
     HANDLE hdl = _nc_console_handle(fd);
-    if (hdl==WINCONSOLE.inp) {
-        T(("lib_win32con:validateHandle %d -> WINCONSOLE.inp", fd));
-    } else if (hdl==WINCONSOLE.hdl) {
-        T(("lib_win32con:validateHandle %d -> WINCONSOLE.hdl", fd));
-    } else if (hdl==WINCONSOLE.out) {
-        T(("lib_win32con:validateHandle %d -> WINCONSOLE.out", fd));
+    if (hdl == WINCONSOLE.inp) {
+       T(("lib_win32con:validateHandle %d -> WINCONSOLE.inp", fd));
+    } else if (hdl == WINCONSOLE.hdl) {
+       T(("lib_win32con:validateHandle %d -> WINCONSOLE.hdl", fd));
+    } else if (hdl == WINCONSOLE.out) {
+       T(("lib_win32con:validateHandle %d -> WINCONSOLE.out", fd));
     } else {
-        T(("lib_win32con:validateHandle %d maps to unknown HANDLE", fd));
-        hdl = INVALID_HANDLE_VALUE;
+       T(("lib_win32con:validateHandle %d maps to unknown HANDLE", fd));
+       hdl = INVALID_HANDLE_VALUE;
     }
 #if 1
     assert(hdl != INVALID_HANDLE_VALUE);
 #endif
     if (hdl != INVALID_HANDLE_VALUE) {
-        if (hdl != WINCONSOLE.inp && (!WINCONSOLE.isTermInfoConsole && WINCONSOLE.progMode)) {
-            if (hdl==WINCONSOLE.out && hdl!=WINCONSOLE.hdl) {
-                T(("lib_win32con:validateHandle forcing WINCONSOLE.out -> WINCONSOLE.hdl"));
-                hdl = WINCONSOLE.hdl;
-            }
-        }
+       if (hdl != WINCONSOLE.inp && (!WINCONSOLE.isTermInfoConsole && WINCONSOLE.progMode)) {
+           if (hdl == WINCONSOLE.out && hdl != WINCONSOLE.hdl) {
+               T(("lib_win32con:validateHandle forcing WINCONSOLE.out -> WINCONSOLE.hdl"));
+               hdl = WINCONSOLE.hdl;
+           }
+       }
     }
     return hdl;
 }
 
 NCURSES_EXPORT(int)
-_nc_console_setmode(HANDLE hdl, const TTY *arg)
+_nc_console_setmode(HANDLE hdl, const TTY * arg)
 {
     DWORD dwFlag = 0;
     int code = ERR;
@@ -261,86 +249,86 @@ _nc_console_setmode(HANDLE hdl, const TTY *arg)
 
     if (arg) {
 #ifdef TRACE
-        TTY TRCTTY;
+       TTY TRCTTY;
 #define TRCTTYOUT(flag) TRCTTY.dwFlagOut = flag
 #define TRCTTYIN(flag)  TRCTTY.dwFlagIn = flag
 #else
 #define TRCTTYOUT(flag)
 #define TRCTTYIN(flag)
 #endif
-        T(("lib_win32con:_nc_console_setmode %s", _nc_trace_ttymode(arg)));
-        if (hdl==WINCONSOLE.inp) {
-            dwFlag = arg->dwFlagIn | ENABLE_MOUSE_INPUT | VT_FLAG_IN;
-            if (WINCONSOLE.isTermInfoConsole)
-                dwFlag |= (VT_FLAG_IN);
-            else
-                dwFlag &= (DWORD) ~(VT_FLAG_IN);
-            TRCTTYIN(dwFlag);
-            SetConsoleMode(hdl, dwFlag);
-
-            alt = OutHandle();
-            dwFlag = arg->dwFlagOut;
-            if (WINCONSOLE.isTermInfoConsole)
-                dwFlag |= (VT_FLAG_OUT);
-            else
-                dwFlag |= (VT_FLAG_OUT);
-            TRCTTYOUT(dwFlag);
-            SetConsoleMode(alt, dwFlag);
-        } else {
-            dwFlag = arg->dwFlagOut;
-            if (WINCONSOLE.isTermInfoConsole)
-                dwFlag |= (VT_FLAG_OUT);
-            else
-                dwFlag |= (VT_FLAG_OUT);
-            TRCTTYOUT(dwFlag);
-            SetConsoleMode(hdl, dwFlag);
-
-            alt = WINCONSOLE.inp;
-            dwFlag = arg->dwFlagIn | ENABLE_MOUSE_INPUT;
-            if (WINCONSOLE.isTermInfoConsole)
-                dwFlag |= (VT_FLAG_IN);
-            else
-                dwFlag &= (DWORD) ~(VT_FLAG_IN);
-            TRCTTYIN(dwFlag);
-            SetConsoleMode(alt, dwFlag);
-            T(("effective mode set %s", _nc_trace_ttymode(&TRCTTY)));
-        }
-        code = OK;
+       T(("lib_win32con:_nc_console_setmode %s", _nc_trace_ttymode(arg)));
+       if (hdl == WINCONSOLE.inp) {
+           dwFlag = arg->dwFlagIn | ENABLE_MOUSE_INPUT | VT_FLAG_IN;
+           if (WINCONSOLE.isTermInfoConsole)
+               dwFlag |= (VT_FLAG_IN);
+           else
+               dwFlag &= (DWORD) ~ (VT_FLAG_IN);
+           TRCTTYIN(dwFlag);
+           SetConsoleMode(hdl, dwFlag);
+
+           alt = OutHandle();
+           dwFlag = arg->dwFlagOut;
+           if (WINCONSOLE.isTermInfoConsole)
+               dwFlag |= (VT_FLAG_OUT);
+           else
+               dwFlag |= (VT_FLAG_OUT);
+           TRCTTYOUT(dwFlag);
+           SetConsoleMode(alt, dwFlag);
+       } else {
+           dwFlag = arg->dwFlagOut;
+           if (WINCONSOLE.isTermInfoConsole)
+               dwFlag |= (VT_FLAG_OUT);
+           else
+               dwFlag |= (VT_FLAG_OUT);
+           TRCTTYOUT(dwFlag);
+           SetConsoleMode(hdl, dwFlag);
+
+           alt = WINCONSOLE.inp;
+           dwFlag = arg->dwFlagIn | ENABLE_MOUSE_INPUT;
+           if (WINCONSOLE.isTermInfoConsole)
+               dwFlag |= (VT_FLAG_IN);
+           else
+               dwFlag &= (DWORD) ~ (VT_FLAG_IN);
+           TRCTTYIN(dwFlag);
+           SetConsoleMode(alt, dwFlag);
+           T(("effective mode set %s", _nc_trace_ttymode(&TRCTTY)));
+       }
+       code = OK;
     }
-    return(code);
+    return (code);
 }
 
 NCURSES_EXPORT(int)
-_nc_console_getmode(HANDLE hdl, TTY *arg)
+_nc_console_getmode(HANDLE hdl, TTY * arg)
 {
     int code = ERR;
 
     if (arg) {
-        DWORD dwFlag = 0;
-        HANDLE alt;
-
-        if (hdl==WINCONSOLE.inp) {
-            if(GetConsoleMode(hdl, &dwFlag)) {
-                arg->dwFlagIn = dwFlag;
-                alt = OutHandle();
-                if (GetConsoleMode(alt, &dwFlag)) {
-                    arg->dwFlagOut = dwFlag;
-                    code = OK;
-                }
-            }
-        } else {
-            if (GetConsoleMode(hdl, &dwFlag)) {
-                arg->dwFlagOut = dwFlag;
-                alt = WINCONSOLE.inp;
-                if (GetConsoleMode(alt, &dwFlag)) {
-                    arg->dwFlagIn = dwFlag;
-                    code = OK;
-                }
-            }
-        }
+       DWORD dwFlag = 0;
+       HANDLE alt;
+
+       if (hdl == WINCONSOLE.inp) {
+           if (GetConsoleMode(hdl, &dwFlag)) {
+               arg->dwFlagIn = dwFlag;
+               alt = OutHandle();
+               if (GetConsoleMode(alt, &dwFlag)) {
+                   arg->dwFlagOut = dwFlag;
+                   code = OK;
+               }
+           }
+       } else {
+           if (GetConsoleMode(hdl, &dwFlag)) {
+               arg->dwFlagOut = dwFlag;
+               alt = WINCONSOLE.inp;
+               if (GetConsoleMode(alt, &dwFlag)) {
+                   arg->dwFlagIn = dwFlag;
+                   code = OK;
+               }
+           }
+       }
     }
     T(("lib_win32con:_nc_console_getmode %s", _nc_trace_ttymode(arg)));
-    return(code);
+    return (code);
 }
 
 NCURSES_EXPORT(int)
@@ -351,15 +339,15 @@ _nc_console_flush(HANDLE hdl)
     T((T_CALLED("lib_win32con::_nc_console_flush(hdl=%p"), hdl));
 
     if (hdl != INVALID_HANDLE_VALUE) {
-        if (hdl == WINCONSOLE.hdl ||
-            hdl == WINCONSOLE.inp ||
-            hdl == WINCONSOLE.out) {
-            if (!FlushConsoleInputBuffer(WINCONSOLE.inp))
-                code = ERR;
-        } else {
-            code = ERR;
-            T(("_nc_console_flush not requesting a handle owned by console."));
-        }
+       if (hdl == WINCONSOLE.hdl ||
+           hdl == WINCONSOLE.inp ||
+           hdl == WINCONSOLE.out) {
+           if (!FlushConsoleInputBuffer(WINCONSOLE.inp))
+               code = ERR;
+       } else {
+           code = ERR;
+           T(("_nc_console_flush not requesting a handle owned by console."));
+       }
     }
     returnCode(code);
 }
@@ -368,18 +356,17 @@ NCURSES_EXPORT(WORD)
 _nc_console_MapColor(bool fore, int color)
 {
     static const int _cmap[] =
-        {0, 4, 2, 6, 1, 5, 3, 7};
+    {0, 4, 2, 6, 1, 5, 3, 7};
     int a;
     if (color < 0 || color > 7)
-        a = fore ? 7 : 0;
+       a = fore ? 7 : 0;
     else
-        a = _cmap[color];
+       a = _cmap[color];
     if (!fore)
-        a = a << 4;
+       a = a << 4;
     return (WORD) a;
 }
 
-
 /*
  * Attempt to save the screen contents.  PDCurses does this if
  * PDC_RESTORE_SCREEN is set, giving the same visual appearance on
@@ -398,25 +385,26 @@ save_original_screen(void)
     WINCONSOLE.save_region.Right = (SHORT) (WINCONSOLE.SBI.dwSize.X - 1);
 
     if (read_screen_data()) {
-        result = TRUE;
+       result = TRUE;
     } else {
 
-        WINCONSOLE.save_region.Top = WINCONSOLE.SBI.srWindow.Top;
-        WINCONSOLE.save_region.Left = WINCONSOLE.SBI.srWindow.Left;
-        WINCONSOLE.save_region.Bottom = WINCONSOLE.SBI.srWindow.Bottom;
-        WINCONSOLE.save_region.Right = WINCONSOLE.SBI.srWindow.Right;
+       WINCONSOLE.save_region.Top = WINCONSOLE.SBI.srWindow.Top;
+       WINCONSOLE.save_region.Left = WINCONSOLE.SBI.srWindow.Left;
+       WINCONSOLE.save_region.Bottom = WINCONSOLE.SBI.srWindow.Bottom;
+       WINCONSOLE.save_region.Right = WINCONSOLE.SBI.srWindow.Right;
 
-        WINCONSOLE.window_only = TRUE;
+       WINCONSOLE.window_only = TRUE;
 
-        if (read_screen_data()) {
-            result = TRUE;
-        }
+       if (read_screen_data()) {
+           result = TRUE;
+       }
     }
 
     T(("... save original screen contents %s", result ? "ok" : "err"));
     return result;
 }
 
+#if 0
 static bool
 restore_original_screen(void)
 {
@@ -428,29 +416,30 @@ restore_original_screen(void)
        WINCONSOLE.window_only ? "window" : "entire buffer"));
 
     bufferCoord.X = (SHORT) (WINCONSOLE.window_only ?
-                             WINCONSOLE.SBI.srWindow.Left : 0);
+                            WINCONSOLE.SBI.srWindow.Left : 0);
     bufferCoord.Y = (SHORT) (WINCONSOLE.window_only ?
-                             WINCONSOLE.SBI.srWindow.Top : 0);
+                            WINCONSOLE.SBI.srWindow.Top : 0);
 
     if (write_screen(WINCONSOLE.hdl,
-                     WINCONSOLE.save_screen,
-                     WINCONSOLE.save_size,
-                     bufferCoord,
-                     &save_region)) {
-        result = TRUE;
-        mvcur(-1, -1, LINES - 2, 0);
-        T(("... restore original screen contents ok %dx%d (%d,%d - %d,%d)",
-           WINCONSOLE.save_size.Y,
-           WINCONSOLE.save_size.X,
-           save_region.Top,
-           save_region.Left,
-           save_region.Bottom,
-           save_region.Right));
+                    WINCONSOLE.save_screen,
+                    WINCONSOLE.save_size,
+                    bufferCoord,
+                    &save_region)) {
+       result = TRUE;
+       mvcur(-1, -1, LINES - 2, 0);
+       T(("... restore original screen contents ok %dx%d (%d,%d - %d,%d)",
+          WINCONSOLE.save_size.Y,
+          WINCONSOLE.save_size.X,
+          save_region.Top,
+          save_region.Left,
+          save_region.Bottom,
+          save_region.Right));
     } else {
-        T(("... restore original screen contents err"));
+       T(("... restore original screen contents err"));
     }
     return result;
 }
+#endif
 
 static bool
 read_screen_data(void)
@@ -460,38 +449,38 @@ read_screen_data(void)
     size_t want;
 
     WINCONSOLE.save_size.X = (SHORT) (WINCONSOLE.save_region.Right
-                                      - WINCONSOLE.save_region.Left + 1);
+                                     - WINCONSOLE.save_region.Left + 1);
     WINCONSOLE.save_size.Y = (SHORT) (WINCONSOLE.save_region.Bottom
-                                      - WINCONSOLE.save_region.Top + 1);
+                                     - WINCONSOLE.save_region.Top + 1);
 
     want = (size_t) (WINCONSOLE.save_size.X * WINCONSOLE.save_size.Y);
 
     if ((WINCONSOLE.save_screen = malloc(want * sizeof(CHAR_INFO))) != 0) {
-        bufferCoord.X = (SHORT) (WINCONSOLE.window_only ?
-                                 WINCONSOLE.SBI.srWindow.Left : 0);
-        bufferCoord.Y = (SHORT) (WINCONSOLE.window_only ?
-                                 WINCONSOLE.SBI.srWindow.Top : 0);
-
-        T(("... reading console %s %dx%d into %d,%d - %d,%d at %d,%d",
-           WINCONSOLE.window_only ? "window" : "buffer",
-           WINCONSOLE.save_size.Y, WINCONSOLE.save_size.X,
-           WINCONSOLE.save_region.Top,
-           WINCONSOLE.save_region.Left,
-           WINCONSOLE.save_region.Bottom,
-           WINCONSOLE.save_region.Right,
-           bufferCoord.Y,
-           bufferCoord.X));
-
-        if (read_screen(WINCONSOLE.hdl,
-                        WINCONSOLE.save_screen,
-                        WINCONSOLE.save_size,
-                        bufferCoord,
-                        &WINCONSOLE.save_region)) {
-            result = TRUE;
-        } else {
-            T((" error %#lx", (unsigned long) GetLastError()));
-            FreeAndNull(WINCONSOLE.save_screen);
-        }
+       bufferCoord.X = (SHORT) (WINCONSOLE.window_only ?
+                                WINCONSOLE.SBI.srWindow.Left : 0);
+       bufferCoord.Y = (SHORT) (WINCONSOLE.window_only ?
+                                WINCONSOLE.SBI.srWindow.Top : 0);
+
+       T(("... reading console %s %dx%d into %d,%d - %d,%d at %d,%d",
+          WINCONSOLE.window_only ? "window" : "buffer",
+          WINCONSOLE.save_size.Y, WINCONSOLE.save_size.X,
+          WINCONSOLE.save_region.Top,
+          WINCONSOLE.save_region.Left,
+          WINCONSOLE.save_region.Bottom,
+          WINCONSOLE.save_region.Right,
+          bufferCoord.Y,
+          bufferCoord.X));
+
+       if (read_screen(WINCONSOLE.hdl,
+                       WINCONSOLE.save_screen,
+                       WINCONSOLE.save_size,
+                       bufferCoord,
+                       &WINCONSOLE.save_region)) {
+           result = TRUE;
+       } else {
+           T((" error %#lx", (unsigned long) GetLastError()));
+           FreeAndNull(WINCONSOLE.save_screen);
+       }
     }
 
     return result;
@@ -502,31 +491,31 @@ _nc_console_get_SBI(void)
 {
     bool rc = FALSE;
     if (GetConsoleScreenBufferInfo(WINCONSOLE.hdl, &(WINCONSOLE.SBI))) {
-        T(("GetConsoleScreenBufferInfo"));
-        T(("... buffer(X:%d Y:%d)",
-           WINCONSOLE.SBI.dwSize.X,
-           WINCONSOLE.SBI.dwSize.Y));
-        T(("... window(X:%d Y:%d)",
-           WINCONSOLE.SBI.dwMaximumWindowSize.X,
-           WINCONSOLE.SBI.dwMaximumWindowSize.Y));
-        T(("... cursor(X:%d Y:%d)",
-           WINCONSOLE.SBI.dwCursorPosition.X,
-           WINCONSOLE.SBI.dwCursorPosition.Y));
-        T(("... display(Top:%d Bottom:%d Left:%d Right:%d)",
-           WINCONSOLE.SBI.srWindow.Top,
-           WINCONSOLE.SBI.srWindow.Bottom,
-           WINCONSOLE.SBI.srWindow.Left,
-           WINCONSOLE.SBI.srWindow.Right));
-        if (WINCONSOLE.buffered) {
-            WINCONSOLE.origin.X = 0;
-            WINCONSOLE.origin.Y = 0;
-        } else {
-            WINCONSOLE.origin.X = WINCONSOLE.SBI.srWindow.Left;
-            WINCONSOLE.origin.Y = WINCONSOLE.SBI.srWindow.Top;
-        }
-        rc = TRUE;
+       T(("GetConsoleScreenBufferInfo"));
+       T(("... buffer(X:%d Y:%d)",
+          WINCONSOLE.SBI.dwSize.X,
+          WINCONSOLE.SBI.dwSize.Y));
+       T(("... window(X:%d Y:%d)",
+          WINCONSOLE.SBI.dwMaximumWindowSize.X,
+          WINCONSOLE.SBI.dwMaximumWindowSize.Y));
+       T(("... cursor(X:%d Y:%d)",
+          WINCONSOLE.SBI.dwCursorPosition.X,
+          WINCONSOLE.SBI.dwCursorPosition.Y));
+       T(("... display(Top:%d Bottom:%d Left:%d Right:%d)",
+          WINCONSOLE.SBI.srWindow.Top,
+          WINCONSOLE.SBI.srWindow.Bottom,
+          WINCONSOLE.SBI.srWindow.Left,
+          WINCONSOLE.SBI.srWindow.Right));
+       if (WINCONSOLE.buffered) {
+           WINCONSOLE.origin.X = 0;
+           WINCONSOLE.origin.Y = 0;
+       } else {
+           WINCONSOLE.origin.X = WINCONSOLE.SBI.srWindow.Left;
+           WINCONSOLE.origin.Y = WINCONSOLE.SBI.srWindow.Top;
+       }
+       rc = TRUE;
     } else {
-        T(("GetConsoleScreenBufferInfo ERR"));
+       T(("GetConsoleScreenBufferInfo ERR"));
     }
     return rc;
 }
@@ -546,8 +535,8 @@ _nc_console_set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info)
 
     T((T_CALLED("lib_win32con::_nc_console_set_scrollback(%s)"),
        (normal
-        ? "normal"
-        : "application")));
+       ? "normal"
+       : "application")));
 
     T(("... SBI.srWindow %d,%d .. %d,%d",
        info->srWindow.Top,
@@ -559,52 +548,52 @@ _nc_console_set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info)
        info->dwSize.X));
 
     if (normal) {
-        rect = info->srWindow;
-        coord = info->dwSize;
-        if (memcmp(info, &WINCONSOLE.SBI, sizeof(*info)) != 0) {
-            changed = TRUE;
-            WINCONSOLE.SBI = *info;
-        }
+       rect = info->srWindow;
+       coord = info->dwSize;
+       if (memcmp(info, &WINCONSOLE.SBI, sizeof(*info)) != 0) {
+           changed = TRUE;
+           WINCONSOLE.SBI = *info;
+       }
     } else {
-        int high = info->srWindow.Bottom - info->srWindow.Top + 1;
-        int wide = info->srWindow.Right - info->srWindow.Left + 1;
-
-        if (high < MIN_HIGH) {
-            T(("... height %d < %d", high, MIN_HIGH));
-            high = MIN_HIGH;
-            changed = TRUE;
-        }
-        if (wide < MIN_WIDE) {
-            T(("... width %d < %d", wide, MIN_WIDE));
-            wide = MIN_WIDE;
-            changed = TRUE;
-        }
-
-        rect.Left =
-            rect.Top = 0;
-        rect.Right = (SHORT) (wide - 1);
-        rect.Bottom = (SHORT) (high - 1);
-
-        coord.X = (SHORT) wide;
-        coord.Y = (SHORT) high;
-
-        if (info->dwSize.Y != high ||
-            info->dwSize.X != wide ||
-            info->srWindow.Top != 0 ||
-            info->srWindow.Left != 0) {
-            changed = TRUE;
-        }
+       int high = info->srWindow.Bottom - info->srWindow.Top + 1;
+       int wide = info->srWindow.Right - info->srWindow.Left + 1;
+
+       if (high < MIN_HIGH) {
+           T(("... height %d < %d", high, MIN_HIGH));
+           high = MIN_HIGH;
+           changed = TRUE;
+       }
+       if (wide < MIN_WIDE) {
+           T(("... width %d < %d", wide, MIN_WIDE));
+           wide = MIN_WIDE;
+           changed = TRUE;
+       }
+
+       rect.Left =
+           rect.Top = 0;
+       rect.Right = (SHORT) (wide - 1);
+       rect.Bottom = (SHORT) (high - 1);
+
+       coord.X = (SHORT) wide;
+       coord.Y = (SHORT) high;
+
+       if (info->dwSize.Y != high ||
+           info->dwSize.X != wide ||
+           info->srWindow.Top != 0 ||
+           info->srWindow.Left != 0) {
+           changed = TRUE;
+       }
 
     }
 
     if (changed) {
-        T(("... coord %d,%d", coord.Y, coord.X));
-        T(("... rect %d,%d - %d,%d",
-           rect.Top, rect.Left,
-           rect.Bottom, rect.Right));
-        SetConsoleScreenBufferSize(WINCONSOLE.hdl, coord);      /* dwSize */
-        SetConsoleWindowInfo(WINCONSOLE.hdl, TRUE, &rect);      /* srWindow */
-        _nc_console_get_SBI();
+       T(("... coord %d,%d", coord.Y, coord.X));
+       T(("... rect %d,%d - %d,%d",
+          rect.Top, rect.Left,
+          rect.Bottom, rect.Right));
+       SetConsoleScreenBufferSize(WINCONSOLE.hdl, coord);      /* dwSize */
+       SetConsoleWindowInfo(WINCONSOLE.hdl, TRUE, &rect);      /* srWindow */
+       _nc_console_get_SBI();
     }
     returnVoid;
 }
@@ -629,9 +618,9 @@ static int
 Adjust(int milliseconds, int diff)
 {
     if (milliseconds != INFINITY) {
-        milliseconds -= diff;
-        if (milliseconds < 0)
-            milliseconds = 0;
+       milliseconds -= diff;
+       if (milliseconds < 0)
+           milliseconds = 0;
     }
     return milliseconds;
 }
@@ -642,38 +631,38 @@ Adjust(int milliseconds, int diff)
                      FROM_LEFT_4TH_BUTTON_PRESSED | \
                      RIGHTMOST_BUTTON_PRESSED)
 
-static int
+static mmask_t
 decode_mouse(SCREEN *sp, int mask)
 {
-    int result = 0;
+    mmask_t result = 0;
 
     (void) sp;
     assert(sp && console_initialized);
 
     if (mask & FROM_LEFT_1ST_BUTTON_PRESSED)
-        result |= BUTTON1_PRESSED;
+       result |= BUTTON1_PRESSED;
     if (mask & FROM_LEFT_2ND_BUTTON_PRESSED)
-        result |= BUTTON2_PRESSED;
+       result |= BUTTON2_PRESSED;
     if (mask & FROM_LEFT_3RD_BUTTON_PRESSED)
-        result |= BUTTON3_PRESSED;
+       result |= BUTTON3_PRESSED;
     if (mask & FROM_LEFT_4TH_BUTTON_PRESSED)
-        result |= BUTTON4_PRESSED;
+       result |= BUTTON4_PRESSED;
 
     if (mask & RIGHTMOST_BUTTON_PRESSED) {
-        switch (WINCONSOLE.numButtons) {
-        case 1:
-            result |= BUTTON1_PRESSED;
-            break;
-        case 2:
-            result |= BUTTON2_PRESSED;
-            break;
-        case 3:
-            result |= BUTTON3_PRESSED;
-            break;
-        case 4:
-            result |= BUTTON4_PRESSED;
-            break;
-        }
+       switch (WINCONSOLE.numButtons) {
+       case 1:
+           result |= BUTTON1_PRESSED;
+           break;
+       case 2:
+           result |= BUTTON2_PRESSED;
+           break;
+       case 3:
+           result |= BUTTON3_PRESSED;
+           break;
+       case 4:
+           result |= BUTTON4_PRESSED;
+           break;
+       }
     }
 
     return result;
@@ -697,26 +686,22 @@ handle_mouse(SCREEN *sp, MOUSE_EVENT_RECORD mer)
      * FIXME: implement continuous event-tracking.
      */
     if (sp->_drv_mouse_new_buttons != sp->_drv_mouse_old_buttons) {
-        memset(&work, 0, sizeof(work));
-
-        if (sp->_drv_mouse_new_buttons) {
-            work.bstate |=
-                (mmask_t) decode_mouse(sp,
-                                       sp->_drv_mouse_new_buttons);
-        } else {
-            /* cf: BUTTON_PRESSED, BUTTON_RELEASED */
-            work.bstate |=
-                (mmask_t) (decode_mouse(sp,
-                                        sp->_drv_mouse_old_buttons)
-                           >> 1);
-            result = TRUE;
-        }
-
-        work.x = mer.dwMousePosition.X;
-        work.y = mer.dwMousePosition.Y - AdjustY();
-
-        sp->_drv_mouse_fifo[sp->_drv_mouse_tail] = work;
-        sp->_drv_mouse_tail += 1;
+       memset(&work, 0, sizeof(work));
+
+       if (sp->_drv_mouse_new_buttons) {
+           work.bstate |= decode_mouse(sp, sp->_drv_mouse_new_buttons);
+       } else {
+           /* cf: BUTTON_PRESSED, BUTTON_RELEASED */
+           work.bstate |= (decode_mouse(sp, sp->_drv_mouse_old_buttons)
+                           >> 1);
+           result = TRUE;
+       }
+
+       work.x = mer.dwMousePosition.X;
+       work.y = mer.dwMousePosition.Y - AdjustY();
+
+       sp->_drv_mouse_fifo[sp->_drv_mouse_tail] = work;
+       sp->_drv_mouse_tail += 1;
     }
     return result;
 }
@@ -730,7 +715,6 @@ rkeycompare(const void *el1, const void *el2)
     return ((key1 < key2) ? -1 : ((key1 == key2) ? 0 : 1));
 }
 
-
 static int
 keycompare(const void *el1, const void *el2)
 {
@@ -746,22 +730,22 @@ MapKey(WORD vKey)
     int code = -1;
 
     if (!WINCONSOLE.isTermInfoConsole) {
-        WORD nKey = 0;
-        void *res;
-        LONG key = GenMap(vKey, 0);
-
-        res = bsearch(&key,
-                      WINCONSOLE.map,
-                      (size_t) (N_INI + FKEYS),
-                      sizeof(keylist[0]),
-                      keycompare);
-        if (res) {
-            key = *((LONG *) res);
-            nKey = LOWORD(key);
-            code = (int) (nKey & 0x7fff);
-            if (nKey & 0x8000)
-                code = -code;
-        }
+       WORD nKey = 0;
+       void *res;
+       LONG key = GenMap(vKey, 0);
+
+       res = bsearch(&key,
+                     WINCONSOLE.map,
+                     (size_t) (N_INI + FKEYS),
+                     sizeof(keylist[0]),
+                     keycompare);
+       if (res) {
+           key = *((LONG *) res);
+           nKey = LOWORD(key);
+           code = (int) (nKey & 0x7fff);
+           if (nKey & 0x8000)
+               code = -code;
+       }
     }
     return code;
 }
@@ -772,22 +756,22 @@ AnsiKey(WORD vKey)
     int code = -1;
 
     if (!WINCONSOLE.isTermInfoConsole) {
-        WORD nKey = 0;
-        void *res;
-        LONG key = GenMap(vKey, 0);
-
-        res = bsearch(&key,
-                      WINCONSOLE.ansi_map,
-                      (size_t) (N_INI + FKEYS),
-                      sizeof(keylist[0]),
-                      keycompare);
-        if (res) {
-            key = *((LONG *) res);
-            nKey = LOWORD(key);
-            code = (int) (nKey & 0x7fff);
-            if (nKey & 0x8000)
-                code = -code;
-        }
+       WORD nKey = 0;
+       void *res;
+       LONG key = GenMap(vKey, 0);
+
+       res = bsearch(&key,
+                     WINCONSOLE.ansi_map,
+                     (size_t) (N_INI + FKEYS),
+                     sizeof(keylist[0]),
+                     keycompare);
+       if (res) {
+           key = *((LONG *) res);
+           nKey = LOWORD(key);
+           code = (int) (nKey & 0x7fff);
+           if (nKey & 0x8000)
+               code = -code;
+       }
     }
     return code;
 }
@@ -804,17 +788,17 @@ _nc_console_keyok(int keycode, int flag)
     T((T_CALLED("lib_win32con::_nc_console_keyok(%d, %d)"), keycode, flag));
 
     res = bsearch(&key,
-                  WINCONSOLE.rmap,
-                  (size_t) (N_INI + FKEYS),
-                  sizeof(keylist[0]),
-                  rkeycompare);
+                 WINCONSOLE.rmap,
+                 (size_t) (N_INI + FKEYS),
+                 sizeof(keylist[0]),
+                 rkeycompare);
     if (res) {
-        key = *((LONG *) res);
-        vKey = HIWORD(key);
-        nKey = (LOWORD(key)) & 0x7fff;
-        if (!flag)
-            nKey |= 0x8000;
-        *(LONG *) res = GenMap(vKey, nKey);
+       key = *((LONG *) res);
+       vKey = HIWORD(key);
+       nKey = (LOWORD(key)) & 0x7fff;
+       if (!flag)
+           nKey |= 0x8000;
+       *(LONG *) res = GenMap(vKey, nKey);
     }
     returnCode(code);
 }
@@ -829,27 +813,27 @@ _nc_console_keyExist(int keycode)
 
     T((T_CALLED("lib_win32con::_nc_console_keyExist(%d)"), keycode));
     res = bsearch(&key,
-                  WINCONSOLE.rmap,
-                  (size_t) (N_INI + FKEYS),
-                  sizeof(keylist[0]),
-                  rkeycompare);
+                 WINCONSOLE.rmap,
+                 (size_t) (N_INI + FKEYS),
+                 sizeof(keylist[0]),
+                 rkeycompare);
     if (res) {
-        key = *((LONG *) res);
-        nKey = LOWORD(key);
-        if (!(nKey & 0x8000))
-            found = TRUE;
+       key = *((LONG *) res);
+       nKey = LOWORD(key);
+       if (!(nKey & 0x8000))
+           found = TRUE;
     }
     returnCode(found);
 }
 
 NCURSES_EXPORT(int)
 _nc_console_twait(
-    SCREEN *sp,
-    HANDLE hdl,
-    int mode,
-    int milliseconds,
-    int *timeleft
-    EVENTLIST_2nd(_nc_eventlist * evl))
+                    SCREEN *sp,
+                    HANDLE hdl,
+                    int mode,
+                    int milliseconds,
+                    int *timeleft
+                    EVENTLIST_2nd(_nc_eventlist * evl))
 {
     INPUT_RECORD inp_rec;
     BOOL b;
@@ -861,7 +845,7 @@ _nc_console_twait(
     bool isNoDelay = (milliseconds == 0);
 
 #ifdef NCURSES_WGETCH_EVENTS
-    (void) evl;                 /* TODO: implement wgetch-events */
+    (void) evl;                        /* TODO: implement wgetch-events */
 #endif
 
 #define IGNORE_CTRL_KEYS (SHIFT_PRESSED|LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED| \
@@ -871,174 +855,174 @@ _nc_console_twait(
     assert(sp);
 
     TR(TRACE_IEVENT, ("start twait: hdl=%p, %d milliseconds, mode: %d",
-                      hdl, milliseconds, mode));
+                     hdl, milliseconds, mode));
 
     if (milliseconds < 0)
-        milliseconds = INFINITY;
+       milliseconds = INFINITY;
 
     memset(&inp_rec, 0, sizeof(inp_rec));
 
     while (true) {
-        if (!isNoDelay) {
-            GetSystemTimeAsFileTime(&fstart);
-            rc = WaitForSingleObject(hdl, (DWORD) milliseconds);
-            GetSystemTimeAsFileTime(&fend);
-            diff = (int) tdiff(fstart, fend);
-            milliseconds = Adjust(milliseconds, diff);
-            if (milliseconds< 0)
-                break;
-        }
-
-        if (isNoDelay || (rc == WAIT_OBJECT_0)) {
-            if (mode) {
-                nRead = 0;
-                b = GetNumberOfConsoleInputEvents(hdl, &nRead);
-                if (!b) {
-                    T(("twait:err GetNumberOfConsoleInputEvents"));
-                }
-                if (isNoDelay && b) {
-                    T(("twait: Events Available: %ld", nRead));
-                    if (nRead==0) {
-                        code = 0;
-                        goto end;
-                    } else {
-                        DWORD n = 0;
-                        INPUT_RECORD* pInpRec =
-                            TypeAlloca(INPUT_RECORD, nRead);
-                        if (pInpRec != NULL) {
-                            DWORD i;
-                            BOOL f;
-                            memset(pInpRec, 0, sizeof(INPUT_RECORD)*nRead);
-                            f = PeekConsoleInput(hdl, pInpRec, nRead, &n);
-                            if (f) {
-                                for(i = 0; i < n; i++) {
-                                    if (pInpRec[i].EventType==KEY_EVENT) {
-                                        if(pInpRec[i].Event.KeyEvent.bKeyDown) {
-                                          DWORD ctrlMask =
-                                              (pInpRec[i].Event.KeyEvent.dwControlKeyState &
-                                               IGNORE_CTRL_KEYS);
-                                          if (!ctrlMask) {
-                                              code = TW_INPUT;
-                                              goto end;
-                                          }
-                                        }
-                                    }
-                                }
-                            } else {
-                                T(("twait:err PeekConsoleInput"));
-                            }
-                            code = 0;
-                            goto end;
-                        } else {
-                            T(("twait:err could not alloca input records"));
-                        }
-                    }
-                }
-                if (b && nRead > 0) {
-                    b = PeekConsoleInput(hdl, &inp_rec, 1, &nRead);
-                    if (!b) {
-                        T(("twait:err PeekConsoleInput"));
-                    }
-                    if (b && nRead > 0) {
-                        switch (inp_rec.EventType) {
-                        case KEY_EVENT:
-                            if (mode & TW_INPUT) {
-                                WORD vk =
-                                    inp_rec.Event.KeyEvent.wVirtualKeyCode;
-                                char ch =
-                                    inp_rec.Event.KeyEvent.uChar.AsciiChar;
-                                T(("twait:event KEY_EVENT"));
-                                T(("twait vk=%d, ch=%d, keydown=%d",
-                                   vk, ch, inp_rec.Event.KeyEvent.bKeyDown));
-                                if (inp_rec.Event.KeyEvent.bKeyDown) {
-                                    T(("twait:event KeyDown"));
-                                    if (!WINCONSOLE.isTermInfoConsole &&
-                                        (0 == ch)) {
-                                        int nKey = MapKey(vk);
-                                        if (nKey < 0) {
-                                            CONSUME();
-                                            continue;
-                                        }
-                                    }
-                                    code = TW_INPUT;
-                                    goto end;
-                                } else {
-                                    CONSUME();
-                                }
-                            }
-                            continue;
-                        case MOUSE_EVENT:
-                            T(("twait:event MOUSE_EVENT"));
-                            if (decode_mouse(sp,
-                                             (inp_rec.Event.MouseEvent.dwButtonState
-                                              & BUTTON_MASK)) == 0) {
-                                CONSUME();
-                            } else if (mode & TW_MOUSE) {
-                                code = TW_MOUSE;
-                                goto end;
-                            }
-                            continue;
-                            /* e.g., FOCUS_EVENT */
-                        default:
-                            T(("twait:event Tyoe %d", inp_rec.EventType));
-                            CONSUME();
-                            _nc_console_selectActiveHandle();
-                            continue;
-                        }
-                    }
-                }
-            }
-            continue;
-        } else {
-            if (rc != WAIT_TIMEOUT) {
-                code = -1;
-                break;
-            } else {
-                code = 0;
-                break;
-            }
-        }
+       if (!isNoDelay) {
+           GetSystemTimeAsFileTime(&fstart);
+           rc = WaitForSingleObject(hdl, (DWORD) milliseconds);
+           GetSystemTimeAsFileTime(&fend);
+           diff = (int) tdiff(fstart, fend);
+           milliseconds = Adjust(milliseconds, diff);
+           if (milliseconds < 0)
+               break;
+       }
+
+       if (isNoDelay || (rc == WAIT_OBJECT_0)) {
+           if (mode) {
+               nRead = 0;
+               b = GetNumberOfConsoleInputEvents(hdl, &nRead);
+               if (!b) {
+                   T(("twait:err GetNumberOfConsoleInputEvents"));
+               }
+               if (isNoDelay && b) {
+                   T(("twait: Events Available: %ld", nRead));
+                   if (nRead == 0) {
+                       code = 0;
+                       goto end;
+                   } else {
+                       DWORD n = 0;
+                       INPUT_RECORD *pInpRec =
+                       TypeAlloca(INPUT_RECORD, nRead);
+                       if (pInpRec != NULL) {
+                           DWORD i;
+                           BOOL f;
+                           memset(pInpRec, 0, sizeof(INPUT_RECORD) * nRead);
+                           f = PeekConsoleInput(hdl, pInpRec, nRead, &n);
+                           if (f) {
+                               for (i = 0; i < n; i++) {
+                                   if (pInpRec[i].EventType == KEY_EVENT) {
+                                       if (pInpRec[i].Event.KeyEvent.bKeyDown) {
+                                           DWORD ctrlMask =
+                                           (pInpRec[i].Event.KeyEvent.dwControlKeyState &
+                                            IGNORE_CTRL_KEYS);
+                                           if (!ctrlMask) {
+                                               code = TW_INPUT;
+                                               goto end;
+                                           }
+                                       }
+                                   }
+                               }
+                           } else {
+                               T(("twait:err PeekConsoleInput"));
+                           }
+                           code = 0;
+                           goto end;
+                       } else {
+                           T(("twait:err could not alloca input records"));
+                       }
+                   }
+               }
+               if (b && nRead > 0) {
+                   b = PeekConsoleInput(hdl, &inp_rec, 1, &nRead);
+                   if (!b) {
+                       T(("twait:err PeekConsoleInput"));
+                   }
+                   if (b && nRead > 0) {
+                       switch (inp_rec.EventType) {
+                       case KEY_EVENT:
+                           if (mode & TW_INPUT) {
+                               WORD vk =
+                               inp_rec.Event.KeyEvent.wVirtualKeyCode;
+                               char ch =
+                               inp_rec.Event.KeyEvent.uChar.AsciiChar;
+                               T(("twait:event KEY_EVENT"));
+                               T(("twait vk=%d, ch=%d, keydown=%d",
+                                  vk, ch, inp_rec.Event.KeyEvent.bKeyDown));
+                               if (inp_rec.Event.KeyEvent.bKeyDown) {
+                                   T(("twait:event KeyDown"));
+                                   if (!WINCONSOLE.isTermInfoConsole &&
+                                       (0 == ch)) {
+                                       int nKey = MapKey(vk);
+                                       if (nKey < 0) {
+                                           CONSUME();
+                                           continue;
+                                       }
+                                   }
+                                   code = TW_INPUT;
+                                   goto end;
+                               } else {
+                                   CONSUME();
+                               }
+                           }
+                           continue;
+                       case MOUSE_EVENT:
+                           T(("twait:event MOUSE_EVENT"));
+                           if (decode_mouse(sp,
+                                            (inp_rec.Event.MouseEvent.dwButtonState
+                                             & BUTTON_MASK)) == 0) {
+                               CONSUME();
+                           } else if (mode & TW_MOUSE) {
+                               code = TW_MOUSE;
+                               goto end;
+                           }
+                           continue;
+                           /* e.g., FOCUS_EVENT */
+                       default:
+                           T(("twait:event Tyoe %d", inp_rec.EventType));
+                           CONSUME();
+                           _nc_console_selectActiveHandle();
+                           continue;
+                       }
+                   }
+               }
+           }
+           continue;
+       } else {
+           if (rc != WAIT_TIMEOUT) {
+               code = -1;
+               break;
+           } else {
+               code = 0;
+               break;
+           }
+       }
     }
-end:
+  end:
 
     TR(TRACE_IEVENT, ("end twait: returned %d (%lu), remaining time %d msec",
-                      code, GetLastError(), milliseconds));
+                     code, GetLastError(), milliseconds));
 
     if (timeleft)
-        *timeleft = milliseconds;
+       *timeleft = milliseconds;
 
     return code;
 }
 
 NCURSES_EXPORT(int)
 _nc_console_testmouse(
-                      SCREEN *sp,
-                      HANDLE hdl,
-                      int delay
-                      EVENTLIST_2nd(_nc_eventlist * evl))
+                        SCREEN *sp,
+                        HANDLE hdl,
+                        int delay
+                        EVENTLIST_2nd(_nc_eventlist * evl))
 {
     int rc = 0;
 
     assert(sp);
 
     if (sp->_drv_mouse_head < sp->_drv_mouse_tail) {
-        rc = TW_MOUSE;
+       rc = TW_MOUSE;
     } else {
-        rc = _nc_console_twait(sp,
-                               hdl,
-                               TWAIT_MASK,
-                               delay,
-                               (int *) 0
-                               EVENTLIST_2nd(evl));
+       rc = _nc_console_twait(sp,
+                              hdl,
+                              TWAIT_MASK,
+                              delay,
+                              (int *) 0
+                              EVENTLIST_2nd(evl));
     }
     return rc;
 }
 
 NCURSES_EXPORT(int)
 _nc_console_read(
-                 SCREEN *sp,
-                 HANDLE hdl,
-                 int *buf)
+                   SCREEN *sp,
+                   HANDLE hdl,
+                   int *buf)
 {
     int rc = -1;
     INPUT_RECORD inp_rec;
@@ -1054,47 +1038,47 @@ _nc_console_read(
     T((T_CALLED("lib_win32con::_nc_console_read(%p)"), sp));
 
     while ((b = ReadConsoleInput(hdl, &inp_rec, 1, &nRead))) {
-        if (b && nRead > 0) {
-            if (rc < 0)
-                rc = 0;
-            rc = rc + (int) nRead;
-            if (inp_rec.EventType == KEY_EVENT) {
-                if (!inp_rec.Event.KeyEvent.bKeyDown)
-                    continue;
-                *buf = (int) inp_rec.Event.KeyEvent.uChar.AsciiChar;
-                vk = inp_rec.Event.KeyEvent.wVirtualKeyCode;
-                /*
-                 * There are 24 virtual function-keys, and typically
-                 * 12 function-keys on a keyboard.  Use the shift-modifier
-                 * to provide the remaining 12 keys.
-                 */
-                if (vk >= VK_F1 && vk <= VK_F12) {
-                    if (inp_rec.Event.KeyEvent.dwControlKeyState &
-                        SHIFT_PRESSED) {
-                        vk = (WORD) (vk + 12);
-                    }
-                }
-                if (*buf == 0) {
-                    int key = MapKey(vk);
-                    if (key < 0)
-                        continue;
-                    if (sp->_keypad_on) {
-                        *buf = key;
-                    } else {
-                        ungetch('\0');
-                        *buf = AnsiKey(vk);
-                    }
-                }
-                break;
-            } else if (inp_rec.EventType == MOUSE_EVENT) {
-                if (handle_mouse(sp,
-                                 inp_rec.Event.MouseEvent)) {
-                    *buf = KEY_MOUSE;
-                    break;
-                }
-            }
-            continue;
-        }
+       if (b && nRead > 0) {
+           if (rc < 0)
+               rc = 0;
+           rc = rc + (int) nRead;
+           if (inp_rec.EventType == KEY_EVENT) {
+               if (!inp_rec.Event.KeyEvent.bKeyDown)
+                   continue;
+               *buf = (int) inp_rec.Event.KeyEvent.uChar.AsciiChar;
+               vk = inp_rec.Event.KeyEvent.wVirtualKeyCode;
+               /*
+                * There are 24 virtual function-keys, and typically
+                * 12 function-keys on a keyboard.  Use the shift-modifier
+                * to provide the remaining 12 keys.
+                */
+               if (vk >= VK_F1 && vk <= VK_F12) {
+                   if (inp_rec.Event.KeyEvent.dwControlKeyState &
+                       SHIFT_PRESSED) {
+                       vk = (WORD) (vk + 12);
+                   }
+               }
+               if (*buf == 0) {
+                   int key = MapKey(vk);
+                   if (key < 0)
+                       continue;
+                   if (sp->_keypad_on) {
+                       *buf = key;
+                   } else {
+                       ungetch('\0');
+                       *buf = AnsiKey(vk);
+                   }
+               }
+               break;
+           } else if (inp_rec.EventType == MOUSE_EVENT) {
+               if (handle_mouse(sp,
+                                inp_rec.Event.MouseEvent)) {
+                   *buf = KEY_MOUSE;
+                   break;
+               }
+           }
+           continue;
+       }
     }
     returnCode(rc);
 }
@@ -1115,16 +1099,17 @@ _nc_console_isatty(int fd)
     T((T_CALLED("lib_win32con::_nc_console_isatty(%d"), fd));
 
     if (_isatty(fd))
-        result = 1;
+       result = 1;
 #ifdef _NC_CHECK_MINTTY
     else {
-        if (_nc_console_checkmintty(fd, NULL)) {
-            result = 2;
-            fprintf(stderr, "ncurses on Windows must run in a Windows console.\n");
-            fprintf(stderr, "On newer versions of Windows, the calling program should create a PTY-like.\n");
-            fprintf(stderr, "device using the CreatePseudoConsole Windows API call.\n");
-            exit(EXIT_FAILURE);
-        }
+       if (_nc_console_checkmintty(fd, NULL)) {
+           result = 2;
+           fprintf(stderr,
+                   "ncurses on Windows must run in a Windows console.\n"
+                   "On newer versions of Windows, the calling program should create a PTY-like.\n"
+                   "device using the CreatePseudoConsole Windows API call.\n");
+           exit(EXIT_FAILURE);
+       }
     }
 #endif
     returnCode(result);
@@ -1139,116 +1124,127 @@ _nc_console_checkinit(bool initFlag, bool assumeTermInfo)
        initFlag, assumeTermInfo));
 
     if (!initFlag) {
-        res = console_initialized;
+       res = console_initialized;
     } else {
-        /* initialize once, or not at all */
-        if (!console_initialized) {
-            int i;
-            DWORD num_buttons;
-            WORD a;
-            BOOL buffered = FALSE;
-            BOOL b;
-
-            START_TRACE();
-            WINCONSOLE.isTermInfoConsole = assumeTermInfo;
-
-            WINCONSOLE.map = (LPDWORD)malloc(sizeof(DWORD)*MAPSIZE);
-            WINCONSOLE.rmap = (LPDWORD)malloc(sizeof(DWORD)*MAPSIZE);
-            WINCONSOLE.ansi_map = (LPDWORD)malloc(sizeof(DWORD)*MAPSIZE);
-
-            for (i = 0; i < (N_INI + FKEYS); i++) {
-                if (i < N_INI) {
-                    WINCONSOLE.rmap[i] = WINCONSOLE.map[i] =
-                        (DWORD) keylist[i];
-                    WINCONSOLE.ansi_map[i] = (DWORD) ansi_keys[i];
-                } else {
-                    WINCONSOLE.rmap[i] = WINCONSOLE.map[i] =
-                        (DWORD) GenMap((VK_F1 + (i - N_INI)),
-                                       (KEY_F(1) + (i - N_INI)));
-                    WINCONSOLE.ansi_map[i] =
-                        (DWORD) GenMap((VK_F1 + (i - N_INI)),
-                                       (';' + (i - N_INI)));
-                }
-            }
-            qsort(WINCONSOLE.ansi_map,
-                  (size_t) (MAPSIZE),
-                  sizeof(keylist[0]),
-                  keycompare);
-            qsort(WINCONSOLE.map,
-                  (size_t) (MAPSIZE),
-                  sizeof(keylist[0]),
-                  keycompare);
-            qsort(WINCONSOLE.rmap,
-                  (size_t) (MAPSIZE),
-                  sizeof(keylist[0]),
-                  rkeycompare);
-
-            if (GetNumberOfConsoleMouseButtons(&num_buttons)) {
-                WINCONSOLE.numButtons = (int) num_buttons;
-            } else {
-                WINCONSOLE.numButtons = 1;
-            }
-
-            a = _nc_console_MapColor(true, COLOR_WHITE) |
-                _nc_console_MapColor(false, COLOR_BLACK);
-            for (i = 0; i < CON_NUMPAIRS; i++)
-                WINCONSOLE.pairs[i] = a;
-
-            WINCONSOLE.inp = GetStdHandle(STD_INPUT_HANDLE);
-            WINCONSOLE.out = GetStdHandle(STD_OUTPUT_HANDLE);
-            WINCONSOLE.hdl = WINCONSOLE.out;
-
-            GetConsoleMode(WINCONSOLE.inp, &WINCONSOLE.originalMode.dwFlagIn);
-            GetConsoleMode(WINCONSOLE.out, &WINCONSOLE.originalMode.dwFlagOut);
-
-            if (!WINCONSOLE.isTermInfoConsole) {
-                b = AllocConsole();
-
-                if (!b)
-                    b = AttachConsole(ATTACH_PARENT_PROCESS);
-
-                if (getenv("NCGDB") || getenv("NCURSES_CONSOLE2")) {
-                    T(("... will not buffer console"));
-                } else {
-                    T(("... creating console buffer"));
-                    WINCONSOLE.hdl =
-                        CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE,
-                                                  0,
-                                                  NULL,
-                                                  CONSOLE_TEXTMODE_BUFFER,
-                                                  NULL);
-                    buffered = TRUE;
-                }
-            }
-
-            /* We set binary I/O even when using the console
-               driver to cover the situation, that the
-               TERM variable is set to #win32con, but actually
-               Windows supports virtual terminal processing.
-               So if terminfo functions are used in this setup,
-               they actually may work.
-            */
-            _setmode(fileno(stdin), _O_BINARY);
-            _setmode(fileno(stdout), _O_BINARY);
-
-            if (WINCONSOLE.hdl != INVALID_HANDLE_VALUE) {
-                WINCONSOLE.buffered = buffered;
-                _nc_console_get_SBI();
-                WINCONSOLE.save_SBI = WINCONSOLE.SBI;
-                if (!buffered) {
-                    save_original_screen();
-                    _nc_console_set_scrollback(FALSE, &WINCONSOLE.SBI);
-                }
-                GetConsoleCursorInfo(WINCONSOLE.hdl, &WINCONSOLE.save_CI);
-                T(("... initial cursor is %svisible, %d%%",
-                   (WINCONSOLE.save_CI.bVisible ? "" : "not-"),
-                   (int) WINCONSOLE.save_CI.dwSize));
-            }
-
-            WINCONSOLE.initialized = TRUE;
-            console_initialized = TRUE;
-        }
-        res = (WINCONSOLE.hdl != INVALID_HANDLE_VALUE);
+       /* initialize once, or not at all */
+       if (!console_initialized) {
+           int i;
+           DWORD num_buttons;
+           WORD a;
+           BOOL buffered = FALSE;
+           BOOL b;
+
+           START_TRACE();
+           WINCONSOLE.isTermInfoConsole = assumeTermInfo;
+
+           WINCONSOLE.map = (LPDWORD) malloc(sizeof(DWORD) * MAPSIZE);
+           WINCONSOLE.rmap = (LPDWORD) malloc(sizeof(DWORD) * MAPSIZE);
+           WINCONSOLE.ansi_map = (LPDWORD) malloc(sizeof(DWORD) * MAPSIZE);
+
+           for (i = 0; i < (N_INI + FKEYS); i++) {
+               if (i < N_INI) {
+                   WINCONSOLE.rmap[i] = WINCONSOLE.map[i] =
+                       (DWORD) keylist[i];
+                   WINCONSOLE.ansi_map[i] = (DWORD) ansi_keys[i];
+               } else {
+                   WINCONSOLE.rmap[i] = WINCONSOLE.map[i] =
+                       (DWORD) GenMap((VK_F1 + (i - N_INI)),
+                                      (KEY_F(1) + (i - N_INI)));
+                   WINCONSOLE.ansi_map[i] =
+                       (DWORD) GenMap((VK_F1 + (i - N_INI)),
+                                      (';' + (i - N_INI)));
+               }
+           }
+           qsort(WINCONSOLE.ansi_map,
+                 (size_t) (MAPSIZE),
+                 sizeof(keylist[0]),
+                 keycompare);
+           qsort(WINCONSOLE.map,
+                 (size_t) (MAPSIZE),
+                 sizeof(keylist[0]),
+                 keycompare);
+           qsort(WINCONSOLE.rmap,
+                 (size_t) (MAPSIZE),
+                 sizeof(keylist[0]),
+                 rkeycompare);
+
+           if (GetNumberOfConsoleMouseButtons(&num_buttons)) {
+               WINCONSOLE.numButtons = (int) num_buttons;
+           } else {
+               WINCONSOLE.numButtons = 1;
+           }
+
+           a = _nc_console_MapColor(true, COLOR_WHITE) |
+               _nc_console_MapColor(false, COLOR_BLACK);
+           for (i = 0; i < CON_NUMPAIRS; i++)
+               WINCONSOLE.pairs[i] = a;
+
+#define SaveConsoleMode(handle, value) \
+            GetConsoleMode(WINCONSOLE.handle, &WINCONSOLE.originalMode.value)
+
+           if (WINCONSOLE.isTermInfoConsole) {
+               WINCONSOLE.inp = GetStdHandle(STD_INPUT_HANDLE);
+               WINCONSOLE.out = GetStdHandle(STD_OUTPUT_HANDLE);
+               WINCONSOLE.hdl = WINCONSOLE.out;
+
+               SaveConsoleMode(inp, dwFlagIn);
+               SaveConsoleMode(out, dwFlagOut);
+
+           } else {
+               b = AllocConsole();
+
+               if (!b)
+                   b = AttachConsole(ATTACH_PARENT_PROCESS);
+
+               WINCONSOLE.inp = GetDirectHandle("CONIN$", FILE_SHARE_READ);
+               WINCONSOLE.out = GetDirectHandle("CONOUT$", FILE_SHARE_WRITE);
+
+               SaveConsoleMode(inp, dwFlagIn);
+               SaveConsoleMode(out, dwFlagOut);
+
+               if (getenv("NCGDB") || getenv("NCURSES_CONSOLE2")) {
+                   WINCONSOLE.hdl = WINCONSOLE.out;
+                   T(("... will not buffer console"));
+               } else {
+                   T(("... creating console buffer"));
+                   WINCONSOLE.hdl =
+                       CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE,
+                                                 FILE_SHARE_READ | FILE_SHARE_WRITE,
+                                                 NULL,
+                                                 CONSOLE_TEXTMODE_BUFFER,
+                                                 NULL);
+                   buffered = TRUE;
+               }
+           }
+
+           /* We set binary I/O even when using the console
+              driver to cover the situation, that the
+              TERM variable is set to #win32con, but actually
+              Windows supports virtual terminal processing.
+              So if terminfo functions are used in this setup,
+              they actually may work.
+            */
+           _setmode(fileno(stdin), _O_BINARY);
+           _setmode(fileno(stdout), _O_BINARY);
+
+           if (WINCONSOLE.hdl != INVALID_HANDLE_VALUE) {
+               WINCONSOLE.buffered = buffered;
+               _nc_console_get_SBI();
+               WINCONSOLE.save_SBI = WINCONSOLE.SBI;
+               if (!buffered) {
+                   save_original_screen();
+                   _nc_console_set_scrollback(FALSE, &WINCONSOLE.SBI);
+               }
+               GetConsoleCursorInfo(WINCONSOLE.hdl, &WINCONSOLE.save_CI);
+               T(("... initial cursor is %svisible, %d%%",
+                  (WINCONSOLE.save_CI.bVisible ? "" : "not-"),
+                  (int) WINCONSOLE.save_CI.dwSize));
+           }
+
+           WINCONSOLE.initialized = TRUE;
+           console_initialized = TRUE;
+       }
+       res = (WINCONSOLE.hdl != INVALID_HANDLE_VALUE);
     }
     returnBool(res);
 }
index 1482916d3f683c1fb523488e0de7b1c04642f931..c67c8ceb98625604c0685727453bddb2193ce39e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2009,2010 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -34,7 +34,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_win32util.c,v 1.2 2021/09/04 10:54:35 tom Exp $")
+MODULE_ID("$Id: lib_win32util.c,v 1.4 2023/06/17 17:19:06 tom Exp $")
 
 #ifdef _NC_WINDOWS
 #include <io.h>
@@ -54,7 +54,7 @@ MODULE_ID("$Id: lib_win32util.c,v 1.2 2021/09/04 10:54:35 tom Exp $")
      Pipe and can query the server side of the pipe, looking whether
      or not this is mintty.
      For now we terminate the program if we discover that situation.
-     Althogh in theory it would be possible, to remotely manipulate
+     Although in theory it would be possible, to remotely manipulate
      the terminal state of mintty, this is out of scope for now and
      not worth the significant effort.
  */
@@ -68,10 +68,10 @@ _nc_console_checkmintty(int fd, LPHANDLE pMinTTY)
     T((T_CALLED("lib_winhelper::_nc_console_checkmintty(%d, %p)"), fd, pMinTTY));
 
     if (handle != INVALID_HANDLE_VALUE) {
-        dw = GetFileType(handle);
+       dw = GetFileType(handle);
        if (dw == FILE_TYPE_PIPE) {
            if (GetNamedPipeInfo(handle, 0, 0, 0, 0)) {
-               ULONG pPid;
+               ULONG pPid;
                /* Requires NT6 */
                if (GetNamedPipeServerProcessId(handle, &pPid)) {
                    TCHAR buf[MAX_PATH];
@@ -79,8 +79,7 @@ _nc_console_checkmintty(int fd, LPHANDLE pMinTTY)
                    /* These security attributes may allow us to
                       create a remote thread in mintty to manipulate
                       the terminal state remotely */
-                   HANDLE pHandle = OpenProcess(
-                                                PROCESS_CREATE_THREAD
+                   HANDLE pHandle = OpenProcess(PROCESS_CREATE_THREAD
                                                 | PROCESS_QUERY_INFORMATION
                                                 | PROCESS_VM_OPERATION
                                                 | PROCESS_VM_WRITE
@@ -88,20 +87,19 @@ _nc_console_checkmintty(int fd, LPHANDLE pMinTTY)
                                                 FALSE,
                                                 pPid);
                    if (pMinTTY)
-                       *pMinTTY = INVALID_HANDLE_VALUE;
+                       *pMinTTY = INVALID_HANDLE_VALUE;
                    if (pHandle != INVALID_HANDLE_VALUE) {
-                       if ((len = GetProcessImageFileName(
-                                                          pHandle,
+                       if ((len = GetProcessImageFileName(pHandle,
                                                           buf,
                                                           (DWORD)
                                                           array_length(buf)))) {
                            TCHAR *pos = _tcsrchr(buf, _T('\\'));
                            if (pos) {
-                               pos++;
+                               pos++;
                                if (_tcsnicmp(pos, _TEXT("mintty.exe"), 10)
                                    == 0) {
                                    if (pMinTTY)
-                                       *pMinTTY = pHandle;
+                                       *pMinTTY = pHandle;
                                    code = 1;
                                }
                            }
@@ -114,7 +112,8 @@ _nc_console_checkmintty(int fd, LPHANDLE pMinTTY)
     returnCode(code);
 }
 #endif /* _NC_CHECK_MINTTY */
-\f
+
+#if HAVE_GETTIMEOFDAY == 2
 #define JAN1970 116444736000000000LL   /* the value for 01/01/1970 00:00 */
 
 NCURSES_EXPORT(int)
@@ -130,5 +129,6 @@ _nc_gettimeofday(struct timeval *tv, void *tz GCC_UNUSED)
     tv->tv_sec = (long) ((data.since1601 - JAN1970) / 10000000LL);
     return (0);
 }
+#endif // HAVE_GETTIMEOFDAY == 2
 
 #endif // _NC_WINDOWS
index 9980279b2d216568f78d2a67b748bbb209362636..78a684cc8bcb6d0fca93134207e74d79bdc3f5c0 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2019,2020 Thomas E. Dickey                                *
+ * Copyright 2018-2020,2024 Thomas E. Dickey                                *
  * Copyright 2009-2013,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -44,7 +44,7 @@
 
 #include <ctype.h>
 
-MODULE_ID("$Id: make_hash.c,v 1.33 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: make_hash.c,v 1.34 2024/03/02 19:35:40 tom Exp $")
 
 /*
  *     _nc_make_hash_table()
@@ -250,7 +250,7 @@ main(int argc, char **argv)
     struct user_table_entry *name_table = typeCalloc(struct
                                                     user_table_entry, tablesize);
     HashValue *hash_table = typeCalloc(HashValue, HASHTABSIZE);
-    const char *root_name = "";
+    const char *root_name;
     int column = 0;
     int bigstring = 0;
     unsigned n;
index 972a9a180e78068827b5a7a607a3fb36659db7b7..cc62f18cb3f4ea325c40c3e9bd25b209946f9e59 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 2013-2014,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -37,7 +37,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: obsolete.c,v 1.6 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: obsolete.c,v 1.11 2023/10/21 15:38:47 tom Exp $")
 
 /*
  * Obsolete entrypoint retained for binary compatibility.
@@ -238,3 +238,98 @@ _nc_conv_to_utf32(unsigned *target, const char *source, unsigned limit)
 #undef CH
 }
 #endif /* EXP_XTERM_1005 */
+
+#ifdef EXP_OOM_TESTING
+/*
+ * Out-of-memory testing, suitable for checking if initialization (and limited
+ * running) recovers from errors due to insufficient memory.  In practice, this
+ * is unlikely except with artificially constructed tests (or poorly behaved
+ * applications).
+ */
+#undef malloc
+#undef calloc
+#undef realloc
+#undef free
+#undef strdup
+
+#define TR_OOM(stmt) T(stmt)
+
+static long oom_limit = -1;
+static long oom_count = 0;
+
+static bool
+oom_check(void)
+{
+    static bool initialized = FALSE;
+    static bool triggered = FALSE;
+    bool result = FALSE;
+
+    if (!initialized) {
+       char *env = getenv("NCURSES_OOM_TESTING");
+       initialized = TRUE;
+       if (env != NULL) {
+           char *check;
+           oom_limit = strtol(env, &check, 0);
+           if (check != NULL && *check != '\0')
+               oom_limit = 0;
+       }
+    }
+    ++oom_count;
+    if (oom_limit >= 0) {
+       result = (oom_count > oom_limit);
+       if (result && !triggered) {
+           triggered = TRUE;
+           TR_OOM(("out-of-memory"));
+       }
+    }
+    return result;
+}
+
+NCURSES_EXPORT(void *)
+_nc_oom_malloc(size_t size)
+{
+    char *result = (oom_check()
+                   ? NULL
+                   : malloc(size));
+    TR_OOM(("oom #%ld malloc(%ld) %p", oom_count, size, result));
+    return result;
+}
+
+NCURSES_EXPORT(void *)
+_nc_oom_calloc(size_t nmemb, size_t size)
+{
+    char *result = (oom_check()
+                   ? NULL
+                   : calloc(nmemb, size));
+    TR_OOM(("oom #%ld calloc(%ld, %ld) %p", oom_count, nmemb, size, result));
+    return result;
+}
+
+NCURSES_EXPORT(void *)
+_nc_oom_realloc(void *ptr, size_t size)
+{
+    char *result = (oom_check()
+                   ? NULL
+                   : realloc(ptr, size));
+    TR_OOM(("oom #%ld realloc(%p, %ld) %p", oom_count, ptr, size, result));
+    return result;
+}
+
+NCURSES_EXPORT(void)
+_nc_oom_free(void *ptr)
+{
+    ++oom_count;
+    TR_OOM(("oom #%ld free(%p)", oom_count, ptr));
+    free(ptr);
+}
+
+NCURSES_EXPORT(char *)
+_nc_oom_strdup(const char *ptr)
+{
+    char *result = (oom_check()
+                   ? NULL
+                   : strdup(ptr));
+    TR_OOM(("oom #%ld strdup(%p) %p", oom_count, ptr, result));
+    return result;
+}
+#endif /* EXP_OOM_TESTING */
index 14bcb67ed6bdff5400438b8697f68966dd9275f5..13fef495aec9d2aa1ee852d0c71d6af7e622c012 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -48,7 +48,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: parse_entry.c,v 1.107 2022/05/08 00:11:44 tom Exp $")
+MODULE_ID("$Id: parse_entry.c,v 1.108 2023/04/24 22:32:33 tom Exp $")
 
 #ifdef LINT
 static short const parametrized[] =
@@ -110,7 +110,7 @@ _nc_extend_names(ENTRY * entryp, const char *name, int token_type)
        /* Well, we are given a cancel for a name that we don't recognize */
        return _nc_extend_names(entryp, name, STRING);
     default:
-       return 0;
+       return NULL;
     }
 
     /* Adjust the 'offset' (insertion-point) to keep the lists of extended
@@ -142,6 +142,11 @@ _nc_extend_names(ENTRY * entryp, const char *name, int token_type)
        for (last = (unsigned) (max - 1); last > tindex; last--)
 
     if (!found) {
+       char *saved;
+
+       if ((saved = _nc_save_str(name)) == NULL)
+           return NULL;
+
        switch (token_type) {
        case BOOLEAN:
            tp->ext_Booleans++;
@@ -169,7 +174,7 @@ _nc_extend_names(ENTRY * entryp, const char *name, int token_type)
        TYPE_REALLOC(char *, actual, tp->ext_Names);
        while (--actual > offset)
            tp->ext_Names[actual] = tp->ext_Names[actual - 1];
-       tp->ext_Names[offset] = _nc_save_str(name);
+       tp->ext_Names[offset] = saved;
     }
 
     temp.nte_name = tp->ext_Names[offset];
@@ -364,6 +369,8 @@ _nc_parse_entry(ENTRY * entryp, int literal, bool silent)
        bool is_use = (strcmp(_nc_curr_token.tk_name, "use") == 0);
        bool is_tc = !is_use && (strcmp(_nc_curr_token.tk_name, "tc") == 0);
        if (is_use || is_tc) {
+           char *saved;
+
            if (!VALID_STRING(_nc_curr_token.tk_valstring)
                || _nc_curr_token.tk_valstring[0] == '\0') {
                _nc_warning("missing name for use-clause");
@@ -377,11 +384,13 @@ _nc_parse_entry(ENTRY * entryp, int literal, bool silent)
                            _nc_curr_token.tk_valstring);
                continue;
            }
-           entryp->uses[entryp->nuses].name = _nc_save_str(_nc_curr_token.tk_valstring);
-           entryp->uses[entryp->nuses].line = _nc_curr_line;
-           entryp->nuses++;
-           if (entryp->nuses > 1 && is_tc) {
-               BAD_TC_USAGE
+           if ((saved = _nc_save_str(_nc_curr_token.tk_valstring)) != NULL) {
+               entryp->uses[entryp->nuses].name = saved;
+               entryp->uses[entryp->nuses].line = _nc_curr_line;
+               entryp->nuses++;
+               if (entryp->nuses > 1 && is_tc) {
+                   BAD_TC_USAGE
+               }
            }
        } else {
            /* normal token lookup */
index 2b1875edf13fdb84b44003c44420ee5aa6557319..b0f360eca800a646f3e7cced5814b39b92a18e4a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -42,7 +42,7 @@
 
 #include <tic.h>
 
-MODULE_ID("$Id: read_entry.c,v 1.164 2022/05/08 00:11:44 tom Exp $")
+MODULE_ID("$Id: read_entry.c,v 1.171 2023/09/16 16:30:34 tom Exp $")
 
 #define MyNumber(n) (short) LOW_MSB(n)
 
@@ -138,12 +138,13 @@ convert_16bits(char *buf, NCURSES_INT2 *Numbers, int count)
 }
 #endif
 
-static void
-convert_strings(char *buf, char **Strings, int count, int size, char *table)
+static bool
+convert_strings(char *buf, char **Strings, int count, int size,
+               char *table, bool always)
 {
     int i;
     char *p;
-    bool corrupt = FALSE;
+    bool success = TRUE;
 
     for (i = 0; i < count; i++) {
        if (IS_NEG1(buf + 2 * i)) {
@@ -159,13 +160,10 @@ convert_strings(char *buf, char **Strings, int count, int size, char *table)
                TR(TRACE_DATABASE, ("Strings[%d] = %s", i,
                                    _nc_visbuf(Strings[i])));
            } else {
-               if (!corrupt) {
-                   corrupt = TRUE;
-                   TR(TRACE_DATABASE,
-                      ("ignore out-of-range index %d to Strings[]", nn));
-                   _nc_warning("corrupt data found in convert_strings");
-               }
-               Strings[i] = ABSENT_STRING;
+               TR(TRACE_DATABASE,
+                  ("found out-of-range index %d to Strings[%d]", nn, i));
+               success = FALSE;
+               break;
            }
        }
 
@@ -175,10 +173,25 @@ convert_strings(char *buf, char **Strings, int count, int size, char *table)
                if (*p == '\0')
                    break;
            /* if there is no NUL, ignore the string */
-           if (p >= table + size)
+           if (p >= table + size) {
                Strings[i] = ABSENT_STRING;
+           } else if (p == Strings[i] && always) {
+               TR(TRACE_DATABASE,
+                  ("found empty but required Strings[%d]", i));
+               success = FALSE;
+               break;
+           }
+       } else if (always) {    /* names are always needed */
+           TR(TRACE_DATABASE,
+              ("found invalid but required Strings[%d]", i));
+           success = FALSE;
+           break;
        }
     }
+    if (!success) {
+       _nc_warning("corrupt data found in convert_strings");
+    }
+    return success;
 }
 
 static int
@@ -323,6 +336,9 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit)
        || bool_count < 0
        || num_count < 0
        || str_count < 0
+       || bool_count > BOOLCOUNT
+       || num_count > NUMCOUNT
+       || str_count > STRCOUNT
        || str_size < 0) {
        returnDB(TGETENT_NO);
     }
@@ -335,7 +351,7 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit)
     }
 
     /* grab the name (a null-terminated string) */
-    want = min(MAX_NAME_SIZE, (unsigned) name_size);
+    want = Min(MAX_NAME_SIZE, (unsigned) name_size);
     ptr->str_table = string_table;
     ptr->term_names = string_table;
     if ((have = (unsigned) Read(ptr->term_names, want)) != want) {
@@ -348,7 +364,7 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit)
        offset = (int) (have - MAX_NAME_SIZE);
 
     /* grab the booleans */
-    TYPE_CALLOC(NCURSES_SBOOL, max(BOOLCOUNT, bool_count), ptr->Booleans);
+    TYPE_CALLOC(NCURSES_SBOOL, Max(BOOLCOUNT, bool_count), ptr->Booleans);
     if (Read(ptr->Booleans, (unsigned) bool_count) < bool_count) {
        returnDB(TGETENT_NO);
     }
@@ -362,13 +378,13 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit)
     even_boundary(name_size + bool_count);
 
     /* grab the numbers */
-    TYPE_CALLOC(NCURSES_INT2, max(NUMCOUNT, num_count), ptr->Numbers);
+    TYPE_CALLOC(NCURSES_INT2, Max(NUMCOUNT, num_count), ptr->Numbers);
     if (!read_numbers(buf, num_count)) {
        returnDB(TGETENT_NO);
     }
     convert_numbers(buf, ptr->Numbers, num_count);
 
-    TYPE_CALLOC(char *, max(STRCOUNT, str_count), ptr->Strings);
+    TYPE_CALLOC(char *, Max(STRCOUNT, str_count), ptr->Strings);
 
     if (str_count) {
        /* grab the string offsets */
@@ -379,7 +395,10 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit)
        if (Read(string_table, (unsigned) str_size) != str_size) {
            returnDB(TGETENT_NO);
        }
-       convert_strings(buf, ptr->Strings, str_count, str_size, string_table);
+       if (!convert_strings(buf, ptr->Strings, str_count, str_size,
+                            string_table, FALSE)) {
+           returnDB(TGETENT_NO);
+       }
     }
 #if NCURSES_XNAMES
 
@@ -480,8 +499,10 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit)
               ("Before computing extended-string capabilities "
                "str_count=%d, ext_str_count=%d",
                str_count, ext_str_count));
-           convert_strings(buf, ptr->Strings + str_count, ext_str_count,
-                           ext_str_limit, ptr->ext_str_table);
+           if (!convert_strings(buf, ptr->Strings + str_count, ext_str_count,
+                                ext_str_limit, ptr->ext_str_table, FALSE)) {
+               returnDB(TGETENT_NO);
+           }
            for (i = ext_str_count - 1; i >= 0; i--) {
                TR(TRACE_DATABASE, ("MOVE from [%d:%d] %s",
                                    i, i + str_count,
@@ -513,10 +534,13 @@ _nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit)
            TR(TRACE_DATABASE,
               ("ext_NAMES starting @%d in extended_strings, first = %s",
                base, _nc_visbuf(ptr->ext_str_table + base)));
-           convert_strings(buf + (2 * ext_str_count),
-                           ptr->ext_Names,
-                           (int) need,
-                           ext_str_limit, ptr->ext_str_table + base);
+           if (!convert_strings(buf + (2 * ext_str_count),
+                                ptr->ext_Names,
+                                (int) need,
+                                ext_str_limit, ptr->ext_str_table + base,
+                                TRUE)) {
+               returnDB(TGETENT_NO);
+           }
        }
 
        TR(TRACE_DATABASE,
@@ -569,13 +593,17 @@ _nc_read_file_entry(const char *const filename, TERMTYPE2 *ptr)
        int limit;
        char buffer[MAX_ENTRY_SIZE + 1];
 
-       if ((limit = (int) fread(buffer, sizeof(char), sizeof(buffer), fp))
-           > 0) {
+       limit = (int) fread(buffer, sizeof(char), sizeof(buffer), fp);
+       if (limit > 0) {
+           const char *old_source = _nc_get_source();
 
            TR(TRACE_DATABASE, ("read terminfo %s", filename));
+           if (old_source == NULL)
+               _nc_set_source(filename);
            if ((code = _nc_read_termtype(ptr, buffer, limit)) == TGETENT_NO) {
                _nc_free_termtype2(ptr);
            }
+           _nc_set_source(old_source);
        } else {
            code = TGETENT_NO;
        }
@@ -775,6 +803,9 @@ _nc_read_tic_entry(char *filename,
        int reccnt = 0;
        char *save = strdup(name);
 
+       if (save == 0)
+           returnDB(code);
+
        memset(&key, 0, sizeof(key));
        key.data = save;
        key.size = strlen(save);
@@ -889,9 +920,6 @@ _nc_read_entry2(const char *const name, char *const filename, TERMTYPE2 *const t
 }
 
 #if NCURSES_EXT_NUMBERS
-/*
- * This entrypoint is used by tack 1.07
- */
 NCURSES_EXPORT(int)
 _nc_read_entry(const char *const name, char *const filename, TERMTYPE *const tp)
 {
index c9696b70ae41f14b8174c99b2e3c88956a2c4305..1a294848b82732519adb681698e23e4af5a76246 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2021,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -57,7 +57,7 @@
 #include <sys/types.h>
 #include <tic.h>
 
-MODULE_ID("$Id: read_termcap.c,v 1.102 2021/09/04 10:29:15 tom Exp $")
+MODULE_ID("$Id: read_termcap.c,v 1.104 2023/06/24 21:53:16 tom Exp $")
 
 #if !PURE_TERMINFO
 
@@ -324,7 +324,7 @@ _nc_getent(
            if (fd >= 0) {
                (void) lseek(fd, (off_t) 0, SEEK_SET);
            } else if ((_nc_access(db_array[current], R_OK) < 0)
-                      || (fd = open(db_array[current], O_RDONLY, 0)) < 0) {
+                      || (fd = safe_open2(db_array[current], O_RDONLY)) < 0) {
                /* No error on unfound file. */
                if (errno == ENOENT)
                    continue;
@@ -1055,15 +1055,15 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE2 *const tp)
     if (normal) {              /* normal case */
        char envhome[PATH_MAX], *h;
 
-       copied = strdup(get_termpath());
-       for (cp = copied; *cp; cp++) {
-           if (*cp == NCURSES_PATHSEP)
-               *cp = '\0';
-           else if (cp == copied || cp[-1] == '\0') {
-               ADD_TC(cp, filecount);
+       if ((copied = strdup(get_termpath())) != 0) {
+           for (cp = copied; *cp; cp++) {
+               if (*cp == NCURSES_PATHSEP)
+                   *cp = '\0';
+               else if (cp == copied || cp[-1] == '\0') {
+                   ADD_TC(cp, filecount);
+               }
            }
        }
-
 #define PRIVATE_CAP "%.*s/.termcap"
 
        if (use_terminfo_vars() && (h = getenv("HOME")) != NULL && *h != '\0'
index a1d8beb63f31e6db47f6e6c6b58df25588b93acc..03f59c24e9adb7346f27bc614d105b381dd8c458 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 2000-2012,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -38,7 +38,7 @@
 #include <curses.priv.h>
 #include <tic.h>
 
-MODULE_ID("$Id: strings.c,v 1.10 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: strings.c,v 1.11 2023/05/27 20:13:10 tom Exp $")
 
 /****************************************************************************
  * Useful string functions (especially for mvcur)
@@ -95,7 +95,7 @@ _nc_str_null(string_desc * dst, size_t len)
  * Copy a descriptor
  */
 NCURSES_EXPORT(string_desc *)
-_nc_str_copy(string_desc * dst, string_desc * src)
+_nc_str_copy(string_desc * dst, const string_desc * const src)
 {
     *dst = *src;
     return dst;
index eb4ecb3dd3034882d9a69296305996c65fbb4e5e..fd993b8203812e89cf10f528622479137f2c6615 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -52,7 +52,7 @@
 # endif
 #endif
 
-MODULE_ID("$Id: tinfo_driver.c,v 1.73 2022/08/13 14:36:43 tom Exp $")
+MODULE_ID("$Id: tinfo_driver.c,v 1.74 2023/09/16 10:44:33 tom Exp $")
 
 /*
  * SCO defines TIOCGSIZE and the corresponding struct.  Other systems (SunOS,
@@ -206,8 +206,8 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
     save_ttytype(termp);
 #endif
 
-    if (command_character)
-       _nc_tinfo_cmdch(termp, *command_character);
+    if (VALID_STRING(command_character))
+       _nc_tinfo_cmdch(termp, UChar(*command_character));
 
     /*
      * If an application calls setupterm() rather than initscr() or
index 22bc82ff37173d2b35fb7d1d7722dc5b9e72c0cf..177dcd87225e5e950f8d7e8782e6aee52d161e3b 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2023 Thomas E. Dickey                                *
  * Copyright 2005-2012,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
 
 #include <tic.h>
 
-MODULE_ID("$Id: trim_sgr0.c,v 1.21 2021/06/17 21:20:30 tom Exp $")
+MODULE_ID("$Id: trim_sgr0.c,v 1.22 2023/09/23 18:47:56 tom Exp $")
 
 #undef CUR
 #define CUR tp->
 
-#define CSI       233
-#define ESC       033          /* ^[ */
-#define L_BRACK   '['
-
 static char *
 set_attribute_9(TERMTYPE2 *tp, int flag)
 {
@@ -65,9 +61,9 @@ is_csi(const char *s)
 {
     int result = 0;
     if (s != 0) {
-       if (UChar(s[0]) == CSI)
+       if (UChar(s[0]) == CSI_CHR)
            result = 1;
-       else if (s[0] == ESC && s[1] == L_BRACK)
+       else if (s[0] == ESC_CHR && s[1] == L_BLOCK)
            result = 2;
     }
     return result;
index e1baf9e2325dc7474cb64aebd2d1b2998002c922..8ccca9eca6fca9445996fe10a9bc23d321696d3c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -42,6 +42,8 @@
 
 #include <tic.h>
 
+MODULE_ID("$Id: write_entry.c,v 1.132 2024/04/20 17:58:51 tom Exp $")
+
 #if 1
 #define TRACE_OUT(p) DEBUG(2, p)
 #define TRACE_NUM(n) if (VALID_NUMERIC(Numbers[n])) { \
 #define TRACE_NUM(n)           /* nothing */
 #endif
 
-MODULE_ID("$Id: write_entry.c,v 1.120 2022/04/23 19:59:10 tom Exp $")
+/*
+ * FIXME: special case to work around Cygwin bug in link(), which updates
+ * the target file's timestamp.
+ */
+#if HAVE_LINK && !USE_SYMLINKS && !MIXEDCASE_FILENAMES && defined(__CYGWIN__)
+#define LINK_TOUCHES 1
+#else
+#define LINK_TOUCHES 0
+#endif
 
 static int total_written;
 static int total_parts;
@@ -77,7 +87,7 @@ write_file(char *filename, TERMTYPE2 *tp)
 
        if (fp == 0) {
            perror(filename);
-           _nc_syserr_abort("can't open %s/%s", _nc_tic_dir(0), filename);
+           _nc_syserr_abort("cannot open %s/%s", _nc_tic_dir(0), filename);
        }
 
        actual = fwrite(buffer, sizeof(char), (size_t) offset, fp);
@@ -85,12 +95,12 @@ write_file(char *filename, TERMTYPE2 *tp)
            int myerr = ferror(fp) ? errno : 0;
            if (myerr) {
                _nc_syserr_abort("error writing %s/%s: %s",
-                                _nc_tic_dir(0),
+                                _nc_tic_dir(NULL),
                                 filename,
                                 strerror(myerr));
            } else {
                _nc_syserr_abort("error writing %s/%s: %u bytes vs actual %lu",
-                                _nc_tic_dir(0),
+                                _nc_tic_dir(NULL),
                                 filename,
                                 offset,
                                 (unsigned long) actual);
@@ -118,18 +128,16 @@ check_writeable(int code)
     char dir[sizeof(LEAF_FMT)];
     char *s = 0;
 
-    if (code == 0 || (s = (strchr) (dirnames, code)) == 0)
+    if (code == 0 || (s = (strchr) (dirnames, code)) == 0) {
        _nc_err_abort("Illegal terminfo subdirectory \"" LEAF_FMT "\"", code);
-
-    if (verified[s - dirnames])
-       return;
-
-    _nc_SPRINTF(dir, _nc_SLIMIT(sizeof(dir)) LEAF_FMT, code);
-    if (make_db_root(dir) < 0) {
-       _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir);
+    } else if (!verified[s - dirnames]) {
+       _nc_SPRINTF(dir, _nc_SLIMIT(sizeof(dir)) LEAF_FMT, code);
+       if (make_db_root(dir) < 0) {
+           _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(NULL), dir);
+       } else {
+           verified[s - dirnames] = TRUE;
+       }
     }
-
-    verified[s - dirnames] = TRUE;
 }
 #endif /* !USE_HASHED_DB */
 
@@ -137,7 +145,7 @@ static int
 make_db_path(char *dst, const char *src, size_t limit)
 {
     int rc = -1;
-    const char *top = _nc_tic_dir(0);
+    const char *top = _nc_tic_dir(NULL);
 
     if (src == top || _nc_is_abs_path(src)) {
        if (strlen(src) + 1 <= limit) {
@@ -214,26 +222,30 @@ _nc_set_writedir(const char *dir)
 {
     const char *destination;
     char actual[PATH_MAX];
+    bool specific = (dir != NULL);
 
-    if (dir == 0
-#ifndef USE_ROOT_ENVIRON
-       && use_terminfo_vars()
-#endif
-       )
+    if (!specific && use_terminfo_vars())
        dir = getenv("TERMINFO");
 
-    if (dir != 0)
+    if (dir != NULL)
        (void) _nc_tic_dir(dir);
 
-    destination = _nc_tic_dir(0);
+    destination = _nc_tic_dir(NULL);
     if (make_db_root(destination) < 0) {
-       char *home = _nc_home_terminfo();
+       bool success = FALSE;
+
+       if (!specific) {
+           char *home = _nc_home_terminfo();
 
-       if (home != 0) {
-           destination = home;
-           if (make_db_root(destination) < 0)
-               _nc_err_abort("%s: permission denied (errno %d)",
-                             destination, errno);
+           if (home != NULL) {
+               destination = home;
+               if (make_db_root(destination) == 0)
+                   success = TRUE;
+           }
+       }
+       if (!success) {
+           _nc_err_abort("%s: permission denied (errno %d)",
+                         destination, errno);
        }
     }
 
@@ -245,7 +257,7 @@ _nc_set_writedir(const char *dir)
     make_db_path(actual, destination, sizeof(actual));
 #else
     if (chdir(_nc_tic_dir(destination)) < 0
-       || getcwd(actual, sizeof(actual)) == 0)
+       || getcwd(actual, sizeof(actual)) == NULL)
        _nc_err_abort("%s: not a directory", destination);
 #endif
     _nc_keep_tic_dir(actual);
@@ -327,8 +339,9 @@ _nc_write_entry(TERMTYPE2 *const tp)
     if (ptr != name_list) {
        *ptr = '\0';
 
-       for (ptr = name_list; *ptr != '\0' && *ptr != '|'; ptr++)
-           continue;
+       for (ptr = name_list; *ptr != '\0' && *ptr != '|'; ptr++) {
+           /* EMPTY */ ;
+       }
 
        if (*ptr == '\0')
            other_names = ptr;
@@ -345,10 +358,10 @@ _nc_write_entry(TERMTYPE2 *const tp)
 
 #if USE_HASHED_DB
     if (_nc_write_object(tp, buffer + 1, &offset, limit - 1) != ERR) {
-       DB *capdb = _nc_db_open(_nc_tic_dir(0), TRUE);
+       DB *capdb = _nc_db_open(_nc_tic_dir(NULL), TRUE);
        DBT key, data;
 
-       if (capdb != 0) {
+       if (capdb != NULL) {
            buffer[0] = 0;
 
            memset(&key, 0, sizeof(key));
@@ -371,7 +384,7 @@ _nc_write_entry(TERMTYPE2 *const tp)
                       sizeof(buffer) - 1);
            data.size = name_size + 1;
 
-           total_size += data.size;
+           total_size += (int) data.size;
            total_parts++;
            _nc_db_put(capdb, &key, &data);
 
@@ -387,7 +400,7 @@ _nc_write_entry(TERMTYPE2 *const tp)
                key.data = ptr;
                key.size = strlen(ptr);
 
-               total_size += data.size;
+               total_size += (int) data.size;
                total_parts++;
                _nc_db_put(capdb, &key, &data);
            }
@@ -445,7 +458,7 @@ _nc_write_entry(TERMTYPE2 *const tp)
        if (stat(filename, &statbuf) == -1
            || (start_time = statbuf.st_mtime) == 0) {
            _nc_syserr_abort("error obtaining time from %s/%s",
-                            _nc_tic_dir(0), filename);
+                            _nc_tic_dir(NULL), filename);
        }
     }
     while (*other_names != '\0') {
@@ -460,7 +473,7 @@ _nc_write_entry(TERMTYPE2 *const tp)
            _nc_warning("terminal alias %s too long.", ptr);
            continue;
        }
-       if (strchr(ptr, '/') != 0) {
+       if (strchr(ptr, '/') != NULL) {
            _nc_warning("cannot link alias %s.", ptr);
            continue;
        }
@@ -472,10 +485,14 @@ _nc_write_entry(TERMTYPE2 *const tp)
 
        if (strcmp(filename, linkname) == 0) {
            _nc_warning("self-synonym ignored");
-       } else if (stat(linkname, &statbuf) >= 0 &&
-                  statbuf.st_mtime < start_time) {
+       }
+#if !LINK_TOUCHES
+       else if (stat(linkname, &statbuf) >= 0 &&
+                statbuf.st_mtime < start_time) {
            _nc_warning("alias %s multiply defined.", ptr);
-       } else if (_nc_access(linkname, W_OK) == 0)
+       }
+#endif
+       else if (_nc_access(linkname, W_OK) == 0)
 #if HAVE_LINK
        {
            int code;
@@ -514,9 +531,9 @@ _nc_write_entry(TERMTYPE2 *const tp)
                    write_file(linkname, tp);
                else {
 #if MIXEDCASE_FILENAMES
-                   _nc_syserr_abort("can't link %s to %s", filename, linkname);
+                   _nc_syserr_abort("cannot link %s to %s", filename, linkname);
 #else
-                   _nc_warning("can't link %s to %s (errno=%d)", filename,
+                   _nc_warning("cannot link %s to %s (errno=%d)", filename,
                                linkname, errno);
 #endif
                }
@@ -712,7 +729,7 @@ _nc_write_object(TERMTYPE2 *tp, char *buffer, unsigned *offset, unsigned limit)
     unsigned last_str = STRWRITE;
 #if NCURSES_EXT_NUMBERS
     bool need_ints = FALSE;
-    size_t (*convert_numbers) (unsigned char *, NCURSES_INT2 *, size_t) = convert_32bit;
+    size_t (*convert_numbers) (unsigned char *, NCURSES_INT2 *, size_t);
 #else
 #define convert_numbers convert_shorts
 #endif
@@ -773,7 +790,8 @@ _nc_write_object(TERMTYPE2 *tp, char *buffer, unsigned *offset, unsigned limit)
 #else
     LITTLE_ENDIAN(buf, MAGIC);
 #endif
-    LITTLE_ENDIAN(buf + 2, min(namelen, MAX_NAME_SIZE + 1));
+    namelen = Min(namelen, MAX_NAME_SIZE + 1);
+    LITTLE_ENDIAN(buf + 2, namelen);
     LITTLE_ENDIAN(buf + 4, boolmax);
     LITTLE_ENDIAN(buf + 6, nummax);
     LITTLE_ENDIAN(buf + 8, strmax);
index effd3c1c158e2675dbdff506a750c9f4bc377265..0904c132fee12d85c0fec9687e529f6d78191055 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -48,7 +48,7 @@
 
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_trace.c,v 1.101 2022/09/17 14:57:02 tom Exp $")
+MODULE_ID("$Id: lib_trace.c,v 1.106 2024/02/24 18:28:19 tom Exp $")
 
 NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */
 
@@ -89,17 +89,17 @@ NCURSES_EXPORT_VAR(long) _nc_outchars = 0;
 #define MyFP           _nc_globals.trace_fp
 #define MyFD           _nc_globals.trace_fd
 #define MyInit         _nc_globals.trace_opened
-#define MyPath         _nc_globals.trace_fname
 #define MyLevel                _nc_globals.trace_level
 #define MyNested       _nc_globals.nested_tracef
 #endif /* TRACE */
 
 #if USE_REENTRANT
-#define Locked(statement) { \
+#define Locked(statement) \
+    do { \
        _nc_lock_global(tst_tracef); \
        statement; \
        _nc_unlock_global(tst_tracef); \
-    }
+    } while (0)
 #else
 #define Locked(statement) statement
 #endif
@@ -140,22 +140,15 @@ curses_trace(unsigned tracelevel)
        if (MyFD >= 0) {
            MyFP = fdopen(MyFD, BIN_W);
        } else {
-           if (MyPath[0] == '\0') {
-               size_t size = sizeof(MyPath) - 12;
-               if (getcwd(MyPath, size) == 0) {
-                   perror("curses: Can't get working directory");
-                   exit(EXIT_FAILURE);
-               }
-               MyPath[size] = '\0';
-               assert(strlen(MyPath) <= size);
-               _nc_STRCAT(MyPath, "/trace", sizeof(MyPath));
-               if (_nc_is_dir_path(MyPath)) {
-                   _nc_STRCAT(MyPath, ".log", sizeof(MyPath));
-               }
+           char myFile[80];
+
+           _nc_STRCPY(myFile, "trace", sizeof(myFile));
+           if (_nc_is_dir_path(myFile)) {
+               _nc_STRCAT(myFile, ".log", sizeof(myFile));
            }
 #define SAFE_MODE (O_CREAT | O_EXCL | O_RDWR)
-           if (_nc_access(MyPath, W_OK) < 0
-               || (MyFD = safe_open3(MyPath, SAFE_MODE, 0600)) < 0
+           if (_nc_access(myFile, W_OK) < 0
+               || (MyFD = safe_open3(myFile, SAFE_MODE, 0600)) < 0
                || (MyFP = fdopen(MyFD, BIN_W)) == 0) {
                ;               /* EMPTY */
            }
@@ -267,11 +260,13 @@ _nc_va_tracef(const char *fmt, va_list ap)
 # if USE_WEAK_SYMBOLS
        if ((pthread_self))
 # endif
+           fprintf(fp, "%#" PRIxPTR ":",
 #ifdef _NC_WINDOWS
-           fprintf(fp, "%#lx:", (long) (intptr_t) pthread_self().p);
+                   CASTxPTR(pthread_self().p)
 #else
-           fprintf(fp, "%#lx:", (long) (intptr_t) pthread_self());
+                   CASTxPTR(pthread_self())
 #endif
+               );
 #endif
        if (before || after) {
            int n;
index d397fb21c66fa6745bdf76c3c1fcfe7f3fe452bd..b36286253d6d7fd6c8ac04e51fe6b2406dc448ce 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2024 Thomas E. Dickey                                *
  * Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -44,7 +44,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_traceatr.c,v 1.95 2022/06/11 22:40:56 tom Exp $")
+MODULE_ID("$Id: lib_traceatr.c,v 1.96 2024/02/04 00:11:35 tom Exp $")
 
 #define COLOR_OF(c) ((c < 0) ? "default" : (c > 7 ? color_of(c) : colors[c].name))
 
@@ -343,6 +343,7 @@ _tracecchar_t2(int bufnum, const cchar_t *ch)
            } else {
                PUTC_DATA;
                int n;
+               int assume_unicode = _nc_unicode_locale()? 128 : 255;
 
                (void) _nc_trace_bufcat(bufnum, "{ ");
                for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) {
@@ -362,10 +363,10 @@ _tracecchar_t2(int bufnum, const cchar_t *ch)
                                                                  UChar(ch->chars[PUTC_i])));
                        }
                        break;
-                   } else if (ch->chars[PUTC_i] > 255) {
+                   } else if (ch->chars[PUTC_i] > assume_unicode) {
                        char temp[80];
                        _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
-                                   "{%d:\\u%lx}",
+                                   "{%d:\\u%04lx}",
                                    _nc_wacs_width(ch->chars[PUTC_i]),
                                    (unsigned long) ch->chars[PUTC_i]);
                        (void) _nc_trace_bufcat(bufnum, temp);
index 36158d6f45a6725d455ed9db17d293ef155f9f9a..9c879dc6739784bdb8483be012b3ecf0a0ac00eb 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2024 Thomas E. Dickey                                     *
  * Copyright 1998-2009,2012 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -40,7 +40,7 @@
 
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_tracechr.c,v 1.23 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_tracechr.c,v 1.24 2024/02/04 00:11:35 tom Exp $")
 
 #ifdef TRACE
 
@@ -54,26 +54,28 @@ _nc_tracechar(SCREEN *sp, int ch)
                      ? sp->tracechr_buf
                      : _nc_globals.tracechr_buf);
 
-    if (ch > KEY_MIN || ch < 0) {
+    if ((ch > KEY_MIN && !_nc_unicode_locale()) || ch < 0) {
        name = safe_keyname(SP_PARM, ch);
        if (name == 0 || *name == '\0')
            name = "NULL";
        _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize)
-                   "'%.30s' = %#03o", name, ch);
-    } else if (!is8bits(ch) || !isprint(UChar(ch))) {
+                   "'%.30s' = \\x%02x", name, ch);
+    } else if (!is8bits(ch)
+              || (_nc_unicode_locale() && !is7bits(ch))
+              || !isprint(UChar(ch))) {
        /*
         * workaround for glibc bug:
         * sprintf changes the result from unctrl() to an empty string if it
         * does not correspond to a valid multibyte sequence.
         */
        _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize)
-                   "%#03o", ch);
+                   "\\x%02x", ch);
     } else {
        name = safe_unctrl(SP_PARM, (chtype) ch);
        if (name == 0 || *name == 0)
            name = "null";      /* shouldn't happen */
        _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize)
-                   "'%.30s' = %#03o", name, ch);
+                   "'%.30s' = \\x%02x", name, ch);
     }
     return (MyBuffer);
 }
index 3b7ea0749986d691158a9b7843c8c9bd2e1b381a..529148bb785a6259672485a1557fab965f987c60 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2012,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -40,7 +40,7 @@
 #include <curses.priv.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_tracedmp.c,v 1.36 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_tracedmp.c,v 1.37 2023/06/24 15:49:45 tom Exp $")
 
 #ifdef TRACE
 
@@ -71,9 +71,9 @@ _tracedump(const char *name, WINDOW *win)
     if (++width + 1 > (int) my_length) {
        my_length = (unsigned) (2 * (width + 1));
        my_buffer = typeRealloc(char, my_length, my_buffer);
-       if (my_buffer == 0)
-           return;
     }
+    if (my_buffer == 0)
+       return;
 
     for (n = 0; n <= win->_maxy; ++n) {
        char *ep = my_buffer;
index 7e6384b54153662c54b25ccbe2c033d5ad2e8a7c..91b12e45c248aaab6e10b724965799cc5d5257f7 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2011,2012 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -36,7 +36,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: trace_buf.c,v 1.21 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: trace_buf.c,v 1.22 2023/06/24 13:37:25 tom Exp $")
 
 #ifdef TRACE
 
@@ -104,7 +104,11 @@ _nc_trace_buf(int bufnum, size_t want)
 NCURSES_EXPORT(char *)
 _nc_trace_bufcat(int bufnum, const char *value)
 {
-    char *buffer = _nc_trace_alloc(bufnum, (size_t) 0);
+    char *buffer;
+
+    if (value == NULL)
+       value = "";
+    buffer = _nc_trace_alloc(bufnum, (size_t) 0);
     if (buffer != 0) {
        size_t have = strlen(buffer);
        size_t need = strlen(value) + have;
index 9be5fc254fb0e1bc6c1f30b86f35fb74e587dbc2..7b9533bd62f4aad519d8a9ff4b6684cf631ff90f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 2001-2008,2012 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -35,7 +35,7 @@
 
 #include <ctype.h>
 
-MODULE_ID("$Id: varargs.c,v 1.12 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: varargs.c,v 1.13 2023/06/24 13:41:46 tom Exp $")
 
 #ifdef TRACE
 
@@ -59,18 +59,16 @@ typedef enum {
 NCURSES_EXPORT(char *)
 _nc_varargs(const char *fmt, va_list ap)
 {
-    static char dummy[] = "";
-
     char buffer[BUFSIZ];
     const char *param;
     int n;
 
     if (fmt == 0 || *fmt == '\0')
-       return dummy;
+       return NULL;
     if (MyLength == 0)
        MyBuffer = typeMalloc(char, MyLength = BUFSIZ);
     if (MyBuffer == 0)
-       return dummy;
+       return NULL;
     *MyBuffer = '\0';
 
     while (*fmt != '\0') {
@@ -185,7 +183,7 @@ _nc_varargs(const char *fmt, va_list ap)
        }
     }
 
-    return (MyBuffer ? MyBuffer : dummy);
+    return (MyBuffer ? MyBuffer : NULL);
 }
 #else
 EMPTY_MODULE(_nc_varargs)
index aca8affc4fa1b11a27dbcb37873b6e3f1e4bd83d..590e42306f5163acfceb0c0baa2959006b309520 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2019-2021,2023 Thomas E. Dickey                                *
  * Copyright 2001-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -43,7 +43,7 @@
 #include <tic.h>
 #include <ctype.h>
 
-MODULE_ID("$Id: visbuf.c,v 1.53 2021/02/27 20:07:57 tom Exp $")
+MODULE_ID("$Id: visbuf.c,v 1.54 2023/05/27 20:13:10 tom Exp $")
 
 #define NUM_VISBUFS 4
 
@@ -67,7 +67,9 @@ static const char r_brace[] = StringOf(R_BRACE);
 static char *
 _nc_vischar(char *tp, unsigned c LIMIT_ARG)
 {
-    if (c == '"' || c == '\\') {
+    if (tp == NULL) {
+       return NULL;
+    } else if (c == '"' || c == '\\') {
        *tp++ = '\\';
        *tp++ = (char) c;
     } else if (is7bits((int) c) && (isgraph((int) c) || c == ' ')) {
index abb21cfddfe327a3ce58dc062756e8f8071ab926..2b1f079e4b9eccd57968492e1f3efd63674cefe5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -148,7 +148,7 @@ AUTHOR
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: hardscroll.c,v 1.54 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: hardscroll.c,v 1.58 2023/09/09 16:04:08 Nicholas.Marriott Exp $")
 
 #if defined(SCROLLDEBUG) || defined(HASHDEBUG)
 
@@ -204,13 +204,19 @@ NCURSES_SP_NAME(_nc_scroll_optimize) (NCURSES_SP_DCL0)
        int *new_oldnums = typeRealloc(int,
                                       (size_t) need_lines,
                                       oldnums(SP_PARM));
-       if (!new_oldnums)
+       if (!new_oldnums) {
+           TR(TRACE_ICALLS, (T_RETURN("")));
            return;
+       }
        oldnums(SP_PARM) = new_oldnums;
        OLDNUM_SIZE(SP_PARM) = need_lines;
     }
     /* calculate the indices */
     NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_ARG);
+    if (SP_PARM->hashtab_len < screen_lines(SP_PARM)) {
+       TR(TRACE_ICALLS, (T_RETURN("")));
+       return;
+    }
 #endif
 #endif /* !defined(SCROLLDEBUG) && !defined(HASHDEBUG) */
 
@@ -301,20 +307,27 @@ NCURSES_EXPORT(void)
 NCURSES_SP_NAME(_nc_linedump) (NCURSES_SP_DCL0)
 /* dump the state of the real and virtual oldnum fields */
 {
-    char *buf = 0;
-    size_t want = ((size_t) screen_lines(SP_PARM) + 1) * 4;
-    (void) SP_PARM;
-
-    if ((buf = typeMalloc(char, want)) != 0) {
-       int n;
-
-       *buf = '\0';
-       for (n = 0; n < screen_lines(SP_PARM); n++)
-           _nc_SPRINTF(buf + strlen(buf),
-                       _nc_SLIMIT(want - strlen(buf))
-                       " %02d", OLDNUM(SP_PARM, n));
-       TR(TRACE_UPDATE | TRACE_MOVE, ("virt %s", buf));
-       free(buf);
+    if (USE_TRACEF(TRACE_UPDATE | TRACE_MOVE)) {
+       char *buf = 0;
+       size_t want = ((size_t) screen_lines(SP_PARM) + 1) * 4;
+       (void) SP_PARM;
+
+       if ((buf = typeMalloc(char, want)) != 0) {
+           int n;
+
+           *buf = '\0';
+           for (n = 0; n < screen_lines(SP_PARM); n++) {
+               int number = OLDNUM(SP_PARM, n);
+               if (number >= -99 && number < 999) {
+                   _nc_SPRINTF(buf + strlen(buf),
+                               _nc_SLIMIT(want - strlen(buf))
+                               " %02d", number);
+               } else {
+                   _nc_STRCAT(buf, " ??", want - strlen(buf));
+               }
+           }
+           free(buf);
+       }
     }
 }
 
index 3f124c96c8968e11dad46c37ac8b7d4ea7a44e7f..e50b63847b99c14a6b47935d26ded98d32f2d712 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019,2020 Thomas E. Dickey                                     *
+ * Copyright 2019-2020,2023 Thomas E. Dickey                                *
  * Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -74,7 +74,7 @@ AUTHOR
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: hashmap.c,v 1.69 2020/05/31 17:50:48 tom Exp $")
+MODULE_ID("$Id: hashmap.c,v 1.71 2023/09/16 16:28:53 tom Exp $")
 
 #ifdef HASHDEBUG
 
@@ -318,8 +318,11 @@ NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_DCL0)
        if (newhash(SP_PARM) == 0)
            newhash(SP_PARM) = typeCalloc(unsigned long,
                                            (size_t) screen_lines(SP_PARM));
-       if (!oldhash(SP_PARM) || !newhash(SP_PARM))
+       if (!oldhash(SP_PARM) || !newhash(SP_PARM)) {
+           FreeAndNull(oldhash(SP_PARM));
+           FreeAndNull(newhash(SP_PARM));
            return;             /* malloc failure */
+       }
        for (i = 0; i < screen_lines(SP_PARM); i++) {
            newhash(SP_PARM)[i] = hash(SP_PARM, NEWTEXT(SP_PARM, i));
            oldhash(SP_PARM)[i] = hash(SP_PARM, OLDTEXT(SP_PARM, i));
@@ -403,7 +406,7 @@ NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_DCL0)
               && OLDNUM(SP_PARM, i) - i == shift)
            i++;
        size = i - start;
-       if (size < 3 || size + min(size / 8, 2) < abs(shift)) {
+       if (size < 3 || size + Min(size / 8, 2) < abs(shift)) {
            while (start < i) {
                OLDNUM(SP_PARM, start) = _NEWINDEX;
                start++;
index ba3ee089a2c165e58262b07a8fe8b5087fcd3dc6..8fad93c727ae18b626b1887d85f71f0f8b38b630 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_mvcur.c,v 1.157 2022/08/20 18:28:58 tom Exp $")
+MODULE_ID("$Id: lib_mvcur.c,v 1.161 2023/09/16 16:29:02 tom Exp $")
 
 #define WANT_CHAR(sp, y, x) NewScreen(sp)->_line[y].text[x]    /* desired state */
 
@@ -232,14 +232,33 @@ NCURSES_SP_NAME(_nc_msec_cost) (NCURSES_SP_DCLx const char *const cap, int affcn
            /* extract padding, either mandatory or required */
            if (cp[0] == '$' && cp[1] == '<' && strchr(cp, '>')) {
                float number = 0.0;
+               int state = 0;
 
                for (cp += 2; *cp != '>'; cp++) {
-                   if (isdigit(UChar(*cp)))
-                       number = number * 10 + (float) (*cp - '0');
-                   else if (*cp == '*')
-                       number *= (float) affcnt;
-                   else if (*cp == '.' && (*++cp != '>') && isdigit(UChar(*cp)))
-                       number += (float) ((*cp - '0') / 10.0);
+                   if (isdigit(UChar(*cp))) {
+                       switch (state) {
+                       case 0:
+                           number = number * 10 + (float) (*cp - '0');
+                           break;
+                       case 2:
+                           number += (float) ((*cp - '0') / 10.0);
+                           ++state;
+                           break;
+                       }
+                   } else if (*cp == '*') {
+                       /* padding is always a suffix */
+                       if (state < 4) {
+                           number *= (float) affcnt;
+                           state = 4;
+                       }
+                   } else if (*cp == '.') {
+                       /* a single decimal point is allowed */
+                       state = (state == 0) ? 2 : 3;
+                   }
+                   if (number > MAX_DELAY_MSECS) {
+                       number = MAX_DELAY_MSECS;
+                       break;
+                   }
                }
 
 #if NCURSES_NO_PADDING
@@ -432,8 +451,8 @@ NCURSES_SP_NAME(_nc_mvcur_init) (NCURSES_SP_DCL0)
                                           1);
     SP_PARM->_hpa_ch_cost = NormalizedCost(TIPARM_1(column_address, 23), 1);
     SP_PARM->_cuf_ch_cost = NormalizedCost(TIPARM_1(parm_right_cursor, 23), 1);
-    SP_PARM->_inline_cost = min(SP_PARM->_cup_ch_cost,
-                               min(SP_PARM->_hpa_ch_cost,
+    SP_PARM->_inline_cost = Min(SP_PARM->_cup_ch_cost,
+                               Min(SP_PARM->_hpa_ch_cost,
                                    SP_PARM->_cuf_ch_cost));
 
     /*
@@ -675,7 +694,7 @@ relative_move(NCURSES_SP_DCLx
                 * and the time the structure WANT_CHAR would access has been
                 * updated.
                 */
-               if (ovw) {
+               if (ovw && to_y >= 0) {
                    int i;
 
                    for (i = 0; i < n; i++) {
@@ -690,7 +709,7 @@ relative_move(NCURSES_SP_DCLx
                        }
                    }
                }
-               if (ovw) {
+               if (ovw && to_y >= 0) {
                    int i;
 
                    for (i = 0; i < n; i++)
index a7604b3e293ba0acc39135b5432d77114dddc35c..6fa73eedb4cedc06b0b301fffde2371f0e92cee7 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018,2020 Thomas E. Dickey                                     *
+ * Copyright 2018-2020,2023 Thomas E. Dickey                                *
  * Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
 #endif
 #undef CUR
 
-MODULE_ID("$Id: lib_twait.c,v 1.75 2020/02/29 15:46:00 anonymous.maarten Exp $")
+MODULE_ID("$Id: lib_twait.c,v 1.81 2023/09/16 16:30:40 tom Exp $")
 
+/*
+ * Returns an elapsed time, in milliseconds (if possible).
+ */
 static long
 _nc_gettime(TimeType * t0, int first)
 {
@@ -85,18 +88,20 @@ _nc_gettime(TimeType * t0, int first)
 
 #if PRECISE_GETTIME
     TimeType t1;
-    gettimeofday(&t1, (struct timezone *) 0);
-    if (first) {
+    if (GetClockTime(&t1) == -1) {
+       *t0 = t1;
+       res = first ? 0 : 1;
+    } else if (first) {
        *t0 = t1;
        res = 0;
     } else {
        /* .tv_sec and .tv_usec are unsigned, be careful when subtracting */
-       if (t0->tv_usec > t1.tv_usec) {
-           t1.tv_usec += 1000000;      /* Convert 1s in 1e6 microsecs */
+       if (t0->sub_secs > t1.sub_secs) {
+           t1.sub_secs += TimeScale;
            t1.tv_sec--;
        }
-       res = (t1.tv_sec - t0->tv_sec) * 1000
-           + (t1.tv_usec - t0->tv_usec) / 1000;
+       res = (long) ((t1.tv_sec - t0->tv_sec) * 1000L
+                     + (t1.sub_secs - t0->sub_secs) / (TimeScale / 1000L));
     }
 #else
     time_t t1 = time((time_t *) 0);
@@ -355,7 +360,7 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
     if ((mode & TW_MOUSE)
        && (fd = sp->_mouse_fd) >= 0) {
        FD_SET(fd, &set);
-       count = max(fd, count) + 1;
+       count = Max(fd, count) + 1;
     }
 #ifdef NCURSES_WGETCH_EVENTS
     if ((mode & TW_EVENT) && evl) {
@@ -365,7 +370,7 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
            if (ev->type == _NC_EVENT_FILE
                && (ev->data.fev.flags & _NC_EVENT_FILE_READABLE)) {
                FD_SET(ev->data.fev.fd, &set);
-               count = max(ev->data.fev.fd + 1, count);
+               count = Max(ev->data.fev.fd + 1, count);
            }
        }
     }
index 15e7397d5dbb46b4f6e89ddbb67468411f18fb84..2c7a0b27bd6da2dd5563c981ff8548f6fe463952 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2019,2020 Thomas E. Dickey                                *
+ * Copyright 2018-2020,2023 Thomas E. Dickey                                *
  * Copyright 1998-2014,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -70,7 +70,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_vidattr.c,v 1.78 2020/05/27 23:56:32 tom Exp $")
+MODULE_ID("$Id: lib_vidattr.c,v 1.79 2023/04/28 20:59:26 tom Exp $")
 
 #define doPut(mode) \
        TPUTS_TRACE(#mode); \
@@ -249,6 +249,7 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx
                    TurnOff(A_ITALIC, exit_italics_mode);
                }
 #endif
+               (void) turn_off;
            }
            PreviousAttr &= ALL_BUT_COLOR;
        }
@@ -278,6 +279,7 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx
            } else if (turn_off & A_ITALIC) {
                TurnOff(A_ITALIC, exit_italics_mode);
            }
+           (void) turn_off;
        }
 #endif
        SetColorsIf((pair != 0) || fix_pair0, PreviousAttr);
index 80815244bb9b1162dd54fb4a9cb7d8215236fb4b..0427024cb084988428c56bad1805dbf37a99ae78 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -85,7 +85,7 @@
 
 #include <ctype.h>
 
-MODULE_ID("$Id: tty_update.c,v 1.314 2022/07/23 22:12:59 tom Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.316 2024/02/04 00:09:34 tom Exp $")
 
 /*
  * This define controls the line-breakout optimization.  Every once in a
@@ -256,6 +256,7 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
         *    not checked.
         */
        if (is8bits(CharOf(CHDEREF(ch)))
+           && (!is7bits(CharOf(CHDEREF(ch))) && _nc_unicode_locale())
            && (isprint(CharOf(CHDEREF(ch)))
                || (SP_PARM->_legacy_coding > 0 && CharOf(CHDEREF(ch)) >= 160)
                || (SP_PARM->_legacy_coding > 1 && CharOf(CHDEREF(ch)) >= 128)
@@ -1004,7 +1005,7 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0)
        if (check_pending(NCURSES_SP_ARG))
            goto cleanup;
 
-       nonempty = min(screen_lines(SP_PARM), NewScreen(SP_PARM)->_maxy + 1);
+       nonempty = Min(screen_lines(SP_PARM), NewScreen(SP_PARM)->_maxy + 1);
 
        if (SP_PARM->_scrolling) {
            NCURSES_SP_NAME(_nc_scroll_optimize) (NCURSES_SP_ARG);
@@ -1134,7 +1135,7 @@ ClrUpdate(NCURSES_SP_DCL0)
     if (0 != SP_PARM) {
        int i;
        NCURSES_CH_T blank = ClrBlank(NCURSES_SP_ARGx StdScreen(SP_PARM));
-       int nonempty = min(screen_lines(SP_PARM),
+       int nonempty = Min(screen_lines(SP_PARM),
                           NewScreen(SP_PARM)->_maxy + 1);
 
        ClearScreen(NCURSES_SP_ARGx blank);
@@ -1233,7 +1234,7 @@ static int
 ClrBottom(NCURSES_SP_DCLx int total)
 {
     int top = total;
-    int last = min(screen_columns(SP_PARM), NewScreen(SP_PARM)->_maxx + 1);
+    int last = Min(screen_columns(SP_PARM), NewScreen(SP_PARM)->_maxx + 1);
     NCURSES_CH_T blank = NewScreen(SP_PARM)->_line[total - 1].text[last - 1];
 
     if (clr_eos && can_clear_with(NCURSES_SP_ARGx CHREF(blank))) {
@@ -1293,7 +1294,7 @@ ClrBottom(NCURSES_SP_DCLx int total)
 **             nLastChar = position of last different character in new line
 **
 **             move to firstChar
-**             overwrite chars up to min(oLastChar, nLastChar)
+**             overwrite chars up to Min(oLastChar, nLastChar)
 **             if oLastChar < nLastChar
 **                     insert newLine[oLastChar+1..nLastChar]
 **             else
@@ -1531,7 +1532,7 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
                }
                ClrToEOL(NCURSES_SP_ARGx blank, FALSE);
            } else {
-               n = max(nLastChar, oLastChar);
+               n = Max(nLastChar, oLastChar);
                PutRange(NCURSES_SP_ARGx
                         oldLine,
                         newLine,
@@ -1556,7 +1557,7 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
                    break;
            }
 
-           n = min(oLastChar, nLastChar);
+           n = Min(oLastChar, nLastChar);
            if (n >= firstChar) {
                GoTo(NCURSES_SP_ARGx lineno, firstChar);
                PutRange(NCURSES_SP_ARGx
@@ -1568,7 +1569,7 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
            }
 
            if (oLastChar < nLastChar) {
-               int m = max(nLastNonblank, oLastNonblank);
+               int m = Max(nLastNonblank, oLastNonblank);
 #if USE_WIDEC_SUPPORT
                if (n) {
                    while (isWidecExt(newLine[n + 1]) && n) {
index 76673da658455f317aba195f7f4a9a1d802f7460..ab96bef138228a70327f31310293593d9ddec77f 100644 (file)
@@ -1,4 +1,57 @@
+/* $Id: wcwidth.h,v 1.6 2024/05/04 18:44:25 tom Exp $ */
+
 /*
+ * Copyright 2002-2023,2024 by Thomas E. Dickey
+ *
+ *                         All Rights Reserved
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name(s) of the above copyright
+ * holders shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization.
+ *-----------------------------------------------------------------------------
+ * This is an updated version of Markus Kuhn's implementation of wcwidth.
+ *
+ * Originally added to xterm in 2000 (patch #141), there were a couple of
+ * updates from Kuhn until 2005 (patch #202), renaming entrypoints and applying
+ * data from Unicode.org (e.g., 3.2, 4.0, 4.1.0).  The Unicode data is
+ * transformed into tables in this file by a script "uniset" written by Kuhn.
+ *
+ * While Kuhn implemented the original CJK variant, it was unused by xterm
+ * until Jungshik Shin used it in 2002 to implement the -cjk_width command-line
+ * option.
+ *
+ * Kuhn added a check for the vertical forms block (double-width) in 2007;
+ * other updates were derived from the Unicode.org data (release 5.0).
+ *
+ * Since then, additional updates have been made:
+ * + data-type fixes
+ * + new Unicode releases (6.2.0, 9.0.0, etc),
+ * + additional special symbol blocks have been added to the special cases.
+ * + soft-hyphen behavior has been made configurable.
+ * + added table shows when a character is not part of Unicode.
+ *
+ * Kuhn's original header follows giving the design information:
+ *-----------------------------------------------------------------------------
  * This is an implementation of wcwidth() and wcswidth() (defined in
  * IEEE Std 1002.1-2001) for Unicode.
  *
  *
  * http://www.unicode.org/unicode/reports/tr11/
  *
- * Markus Kuhn -- 2007-05-26 (Unicode 5.0)
+ * Markus Kuhn -- 2007-05-25 (Unicode 5.0)
  *
  * Permission to use, copy, modify, and distribute this software
  * for any purpose and without fee is hereby granted. The author
  * disclaims all warranties with regard to this software.
  *
  * Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
+ *-----------------------------------------------------------------------------
  */
 
 #ifndef _WCWIDTH_H_incl
@@ -72,30 +126,42 @@ extern "C" {
 #include <wchar.h>
 
 struct interval {
-  int first;
-  int last;
+  unsigned long first;
+  unsigned long last;
 };
 
+static int use_latin1 = 1;
+
 /* auxiliary function for binary search in interval table */
-static int bisearch(wchar_t ucs, const struct interval *table, int max) {
-  int min = 0;
-  int mid;
-
-  if (ucs < table[0].first || ucs > table[max].last)
-    return 0;
-  while (max >= min) {
-    mid = (min + max) / 2;
-    if (ucs > table[mid].last)
-      min = mid + 1;
-    else if (ucs < table[mid].first)
-      max = mid - 1;
-    else
-      return 1;
+static int bisearch(unsigned long ucs, const struct interval *table, int max)
+{
+
+  if (ucs >= table[0].first && ucs <= table[max].last) {
+    int min = 0;
+
+    while (max >= min) {
+      int mid;
+
+      mid = (min + max) / 2;
+      if (ucs > table[mid].last)
+        min = mid + 1;
+      else if (ucs < table[mid].first)
+        max = mid - 1;
+      else
+        return 1;
+    }
   }
 
   return 0;
 }
 
+/*
+ * Provide a way to change the behavior of soft-hyphen.
+ */
+NCURSES_EXPORT(void) mk_wcwidth_init(int mode)
+{
+  use_latin1 = (mode == 0);
+}
 
 /* The following two functions define the column width of an ISO 10646
  * character as follows:
@@ -109,7 +175,10 @@ static int bisearch(wchar_t ucs, const struct interval *table, int max) {
  *      category code Mn or Me in the Unicode database) have a
  *      column width of 0.
  *
- *    - SOFT HYPHEN (U+00AD) has a column width of 1.
+ *    - A few spacing combining marks have a column width of 0.
+ *
+ *    - SOFT HYPHEN (U+00AD) has a column width of 1 in Latin-1, 0 in Unicode.
+ *      An initialization function is used to switch between the two.
  *
  *    - Other format characters (general category code Cf in the Unicode
  *      database) and ZERO WIDTH SPACE (U+200B) have a column width of 0.
@@ -117,115 +186,513 @@ static int bisearch(wchar_t ucs, const struct interval *table, int max) {
  *    - Hangul Jamo medial vowels and final consonants (U+1160-U+11FF)
  *      have a column width of 0.
  *
+ *    - Hangul Jamo Extended-B medial vowels and final consonants for old
+ *      Korean (U+D7B0-U+D7FF) have a column width of 0.
+ *
  *    - Spacing characters in the East Asian Wide (W) or East Asian
  *      Full-width (F) category as defined in Unicode Technical
- *      Report #11 have a column width of 2.
+ *      Report #11 have a column width of 2.  In that report, some codes
+ *      were unassigned.  Characters in these blocks use a column width of 1:
+ *          4DC0..4DFF; Yijing Hexagram Symbols
+ *          A960..A97F; Hangul Jamo Extended-A
  *
  *    - All remaining characters (including all printable
  *      ISO 8859-1 and WGL4 characters, Unicode control characters,
  *      etc.) have a column width of 1.
  *
+ *    - Codes which do not correspond to a Unicode character have a column
+ *      width of -1.
+ *
  * This implementation assumes that wchar_t characters are encoded
  * in ISO 10646.
  */
 
-NCURSES_EXPORT(int) mk_wcwidth(wchar_t ucs)
+NCURSES_EXPORT(int) mk_wcwidth(uint32_t ucs)
 {
+  unsigned long cmp = (unsigned long) ucs;
+
+  /* sorted list of non-overlapping intervals of formatting characters */
+  /* generated by
+   *    uniset +cat=Cf -00AD -0600-0605 -061C -06DD -070F c
+   */
+  /* *INDENT-OFF* */
+  /* generated by run-uniset_ctl 1.1 */
+  static const struct interval formatting[] = {
+    { 0x0890, 0x0891 }, { 0x08E2, 0x08E2 }, { 0x180E, 0x180E },
+    { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2064 },
+    { 0x2066, 0x206F }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB },
+    { 0x110BD, 0x110BD }, { 0x110CD, 0x110CD }, { 0x13430, 0x1343F },
+    { 0x1BCA0, 0x1BCA3 }, { 0x1D173, 0x1D17A }, { 0xE0001, 0xE0001 },
+    { 0xE0020, 0xE007F }
+  };
+  /* *INDENT-OFF* */
+
   /* sorted list of non-overlapping intervals of non-spacing characters */
-  /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */
+  /* generated by
+   *    uniset +cat=Me +cat=Mn +0600-0605 +061C +06DD +070F +1160-11FF +D7B0-D7C6 +D7CB-D7FB c 
+   */
+  /* *INDENT-OFF* */
+  /* generated by run-uniset 1.9 */
   static const struct interval combining[] = {
-    { 0x0300, 0x036F }, { 0x0483, 0x0486 }, { 0x0488, 0x0489 },
-    { 0x0591, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 },
-    { 0x05C4, 0x05C5 }, { 0x05C7, 0x05C7 }, { 0x0600, 0x0603 },
-    { 0x0610, 0x0615 }, { 0x064B, 0x065E }, { 0x0670, 0x0670 },
-    { 0x06D6, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED },
-    { 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A },
-    { 0x07A6, 0x07B0 }, { 0x07EB, 0x07F3 }, { 0x0901, 0x0902 },
-    { 0x093C, 0x093C }, { 0x0941, 0x0948 }, { 0x094D, 0x094D },
-    { 0x0951, 0x0954 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 },
-    { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD },
-    { 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C },
-    { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D },
-    { 0x0A70, 0x0A71 }, { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC },
-    { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD },
-    { 0x0AE2, 0x0AE3 }, { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C },
-    { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B43 }, { 0x0B4D, 0x0B4D },
-    { 0x0B56, 0x0B56 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 },
-    { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 },
-    { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0CBC, 0x0CBC },
-    { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD },
-    { 0x0CE2, 0x0CE3 }, { 0x0D41, 0x0D43 }, { 0x0D4D, 0x0D4D },
+    { 0x0300, 0x036F }, { 0x0483, 0x0489 }, { 0x0591, 0x05BD },
+    { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 }, { 0x05C4, 0x05C5 },
+    { 0x05C7, 0x05C7 }, { 0x0600, 0x0605 }, { 0x0610, 0x061A },
+    { 0x061C, 0x061C }, { 0x064B, 0x065F }, { 0x0670, 0x0670 },
+    { 0x06D6, 0x06DD }, { 0x06DF, 0x06E4 }, { 0x06E7, 0x06E8 },
+    { 0x06EA, 0x06ED }, { 0x070F, 0x070F }, { 0x0711, 0x0711 },
+    { 0x0730, 0x074A }, { 0x07A6, 0x07B0 }, { 0x07EB, 0x07F3 },
+    { 0x07FD, 0x07FD }, { 0x0816, 0x0819 }, { 0x081B, 0x0823 },
+    { 0x0825, 0x0827 }, { 0x0829, 0x082D }, { 0x0859, 0x085B },
+    { 0x0898, 0x089F }, { 0x08CA, 0x08E1 }, { 0x08E3, 0x0902 },
+    { 0x093A, 0x093A }, { 0x093C, 0x093C }, { 0x0941, 0x0948 },
+    { 0x094D, 0x094D }, { 0x0951, 0x0957 }, { 0x0962, 0x0963 },
+    { 0x0981, 0x0981 }, { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 },
+    { 0x09CD, 0x09CD }, { 0x09E2, 0x09E3 }, { 0x09FE, 0x09FE },
+    { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C }, { 0x0A41, 0x0A42 },
+    { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D }, { 0x0A51, 0x0A51 },
+    { 0x0A70, 0x0A71 }, { 0x0A75, 0x0A75 }, { 0x0A81, 0x0A82 },
+    { 0x0ABC, 0x0ABC }, { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 },
+    { 0x0ACD, 0x0ACD }, { 0x0AE2, 0x0AE3 }, { 0x0AFA, 0x0AFF },
+    { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C }, { 0x0B3F, 0x0B3F },
+    { 0x0B41, 0x0B44 }, { 0x0B4D, 0x0B4D }, { 0x0B55, 0x0B56 },
+    { 0x0B62, 0x0B63 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 },
+    { 0x0BCD, 0x0BCD }, { 0x0C00, 0x0C00 }, { 0x0C04, 0x0C04 },
+    { 0x0C3C, 0x0C3C }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 },
+    { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0C62, 0x0C63 },
+    { 0x0C81, 0x0C81 }, { 0x0CBC, 0x0CBC }, { 0x0CBF, 0x0CBF },
+    { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD }, { 0x0CE2, 0x0CE3 },
+    { 0x0D00, 0x0D01 }, { 0x0D3B, 0x0D3C }, { 0x0D41, 0x0D44 },
+    { 0x0D4D, 0x0D4D }, { 0x0D62, 0x0D63 }, { 0x0D81, 0x0D81 },
     { 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 },
     { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E },
-    { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC },
-    { 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 },
-    { 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E },
-    { 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F90, 0x0F97 },
-    { 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 },
-    { 0x1032, 0x1032 }, { 0x1036, 0x1037 }, { 0x1039, 0x1039 },
-    { 0x1058, 0x1059 }, { 0x1160, 0x11FF }, { 0x135F, 0x135F },
-    { 0x1712, 0x1714 }, { 0x1732, 0x1734 }, { 0x1752, 0x1753 },
-    { 0x1772, 0x1773 }, { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD },
-    { 0x17C6, 0x17C6 }, { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD },
-    { 0x180B, 0x180D }, { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 },
-    { 0x1927, 0x1928 }, { 0x1932, 0x1932 }, { 0x1939, 0x193B },
-    { 0x1A17, 0x1A18 }, { 0x1B00, 0x1B03 }, { 0x1B34, 0x1B34 },
-    { 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C }, { 0x1B42, 0x1B42 },
-    { 0x1B6B, 0x1B73 }, { 0x1DC0, 0x1DCA }, { 0x1DFE, 0x1DFF },
-    { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2063 },
-    { 0x206A, 0x206F }, { 0x20D0, 0x20EF }, { 0x302A, 0x302F },
-    { 0x3099, 0x309A }, { 0xA806, 0xA806 }, { 0xA80B, 0xA80B },
-    { 0xA825, 0xA826 }, { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F },
-    { 0xFE20, 0xFE23 }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB },
-    { 0x10A01, 0x10A03 }, { 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F },
-    { 0x10A38, 0x10A3A }, { 0x10A3F, 0x10A3F }, { 0x1D167, 0x1D169 },
-    { 0x1D173, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD },
-    { 0x1D242, 0x1D244 }, { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F },
+    { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EBC }, { 0x0EC8, 0x0ECE },
+    { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 },
+    { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, { 0x0F80, 0x0F84 },
+    { 0x0F86, 0x0F87 }, { 0x0F8D, 0x0F97 }, { 0x0F99, 0x0FBC },
+    { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 }, { 0x1032, 0x1037 },
+    { 0x1039, 0x103A }, { 0x103D, 0x103E }, { 0x1058, 0x1059 },
+    { 0x105E, 0x1060 }, { 0x1071, 0x1074 }, { 0x1082, 0x1082 },
+    { 0x1085, 0x1086 }, { 0x108D, 0x108D }, { 0x109D, 0x109D },
+    { 0x1160, 0x11FF }, { 0x135D, 0x135F }, { 0x1712, 0x1714 },
+    { 0x1732, 0x1733 }, { 0x1752, 0x1753 }, { 0x1772, 0x1773 },
+    { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD }, { 0x17C6, 0x17C6 },
+    { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD }, { 0x180B, 0x180D },
+    { 0x180F, 0x180F }, { 0x1885, 0x1886 }, { 0x18A9, 0x18A9 },
+    { 0x1920, 0x1922 }, { 0x1927, 0x1928 }, { 0x1932, 0x1932 },
+    { 0x1939, 0x193B }, { 0x1A17, 0x1A18 }, { 0x1A1B, 0x1A1B },
+    { 0x1A56, 0x1A56 }, { 0x1A58, 0x1A5E }, { 0x1A60, 0x1A60 },
+    { 0x1A62, 0x1A62 }, { 0x1A65, 0x1A6C }, { 0x1A73, 0x1A7C },
+    { 0x1A7F, 0x1A7F }, { 0x1AB0, 0x1ACE }, { 0x1B00, 0x1B03 },
+    { 0x1B34, 0x1B34 }, { 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C },
+    { 0x1B42, 0x1B42 }, { 0x1B6B, 0x1B73 }, { 0x1B80, 0x1B81 },
+    { 0x1BA2, 0x1BA5 }, { 0x1BA8, 0x1BA9 }, { 0x1BAB, 0x1BAD },
+    { 0x1BE6, 0x1BE6 }, { 0x1BE8, 0x1BE9 }, { 0x1BED, 0x1BED },
+    { 0x1BEF, 0x1BF1 }, { 0x1C2C, 0x1C33 }, { 0x1C36, 0x1C37 },
+    { 0x1CD0, 0x1CD2 }, { 0x1CD4, 0x1CE0 }, { 0x1CE2, 0x1CE8 },
+    { 0x1CED, 0x1CED }, { 0x1CF4, 0x1CF4 }, { 0x1CF8, 0x1CF9 },
+    { 0x1DC0, 0x1DFF }, { 0x20D0, 0x20F0 }, { 0x2CEF, 0x2CF1 },
+    { 0x2D7F, 0x2D7F }, { 0x2DE0, 0x2DFF }, { 0x302A, 0x302D },
+    { 0x3099, 0x309A }, { 0xA66F, 0xA672 }, { 0xA674, 0xA67D },
+    { 0xA69E, 0xA69F }, { 0xA6F0, 0xA6F1 }, { 0xA802, 0xA802 },
+    { 0xA806, 0xA806 }, { 0xA80B, 0xA80B }, { 0xA825, 0xA826 },
+    { 0xA82C, 0xA82C }, { 0xA8C4, 0xA8C5 }, { 0xA8E0, 0xA8F1 },
+    { 0xA8FF, 0xA8FF }, { 0xA926, 0xA92D }, { 0xA947, 0xA951 },
+    { 0xA980, 0xA982 }, { 0xA9B3, 0xA9B3 }, { 0xA9B6, 0xA9B9 },
+    { 0xA9BC, 0xA9BD }, { 0xA9E5, 0xA9E5 }, { 0xAA29, 0xAA2E },
+    { 0xAA31, 0xAA32 }, { 0xAA35, 0xAA36 }, { 0xAA43, 0xAA43 },
+    { 0xAA4C, 0xAA4C }, { 0xAA7C, 0xAA7C }, { 0xAAB0, 0xAAB0 },
+    { 0xAAB2, 0xAAB4 }, { 0xAAB7, 0xAAB8 }, { 0xAABE, 0xAABF },
+    { 0xAAC1, 0xAAC1 }, { 0xAAEC, 0xAAED }, { 0xAAF6, 0xAAF6 },
+    { 0xABE5, 0xABE5 }, { 0xABE8, 0xABE8 }, { 0xABED, 0xABED },
+    { 0xD7B0, 0xD7C6 }, { 0xD7CB, 0xD7FB }, { 0xFB1E, 0xFB1E },
+    { 0xFE00, 0xFE0F }, { 0xFE20, 0xFE2F }, { 0x101FD, 0x101FD },
+    { 0x102E0, 0x102E0 }, { 0x10376, 0x1037A }, { 0x10A01, 0x10A03 },
+    { 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F }, { 0x10A38, 0x10A3A },
+    { 0x10A3F, 0x10A3F }, { 0x10AE5, 0x10AE6 }, { 0x10D24, 0x10D27 },
+    { 0x10EAB, 0x10EAC }, { 0x10EFD, 0x10EFF }, { 0x10F46, 0x10F50 },
+    { 0x10F82, 0x10F85 }, { 0x11001, 0x11001 }, { 0x11038, 0x11046 },
+    { 0x11070, 0x11070 }, { 0x11073, 0x11074 }, { 0x1107F, 0x11081 },
+    { 0x110B3, 0x110B6 }, { 0x110B9, 0x110BA }, { 0x110C2, 0x110C2 },
+    { 0x11100, 0x11102 }, { 0x11127, 0x1112B }, { 0x1112D, 0x11134 },
+    { 0x11173, 0x11173 }, { 0x11180, 0x11181 }, { 0x111B6, 0x111BE },
+    { 0x111C9, 0x111CC }, { 0x111CF, 0x111CF }, { 0x1122F, 0x11231 },
+    { 0x11234, 0x11234 }, { 0x11236, 0x11237 }, { 0x1123E, 0x1123E },
+    { 0x11241, 0x11241 }, { 0x112DF, 0x112DF }, { 0x112E3, 0x112EA },
+    { 0x11300, 0x11301 }, { 0x1133B, 0x1133C }, { 0x11340, 0x11340 },
+    { 0x11366, 0x1136C }, { 0x11370, 0x11374 }, { 0x11438, 0x1143F },
+    { 0x11442, 0x11444 }, { 0x11446, 0x11446 }, { 0x1145E, 0x1145E },
+    { 0x114B3, 0x114B8 }, { 0x114BA, 0x114BA }, { 0x114BF, 0x114C0 },
+    { 0x114C2, 0x114C3 }, { 0x115B2, 0x115B5 }, { 0x115BC, 0x115BD },
+    { 0x115BF, 0x115C0 }, { 0x115DC, 0x115DD }, { 0x11633, 0x1163A },
+    { 0x1163D, 0x1163D }, { 0x1163F, 0x11640 }, { 0x116AB, 0x116AB },
+    { 0x116AD, 0x116AD }, { 0x116B0, 0x116B5 }, { 0x116B7, 0x116B7 },
+    { 0x1171D, 0x1171F }, { 0x11722, 0x11725 }, { 0x11727, 0x1172B },
+    { 0x1182F, 0x11837 }, { 0x11839, 0x1183A }, { 0x1193B, 0x1193C },
+    { 0x1193E, 0x1193E }, { 0x11943, 0x11943 }, { 0x119D4, 0x119D7 },
+    { 0x119DA, 0x119DB }, { 0x119E0, 0x119E0 }, { 0x11A01, 0x11A0A },
+    { 0x11A33, 0x11A38 }, { 0x11A3B, 0x11A3E }, { 0x11A47, 0x11A47 },
+    { 0x11A51, 0x11A56 }, { 0x11A59, 0x11A5B }, { 0x11A8A, 0x11A96 },
+    { 0x11A98, 0x11A99 }, { 0x11C30, 0x11C36 }, { 0x11C38, 0x11C3D },
+    { 0x11C3F, 0x11C3F }, { 0x11C92, 0x11CA7 }, { 0x11CAA, 0x11CB0 },
+    { 0x11CB2, 0x11CB3 }, { 0x11CB5, 0x11CB6 }, { 0x11D31, 0x11D36 },
+    { 0x11D3A, 0x11D3A }, { 0x11D3C, 0x11D3D }, { 0x11D3F, 0x11D45 },
+    { 0x11D47, 0x11D47 }, { 0x11D90, 0x11D91 }, { 0x11D95, 0x11D95 },
+    { 0x11D97, 0x11D97 }, { 0x11EF3, 0x11EF4 }, { 0x11F00, 0x11F01 },
+    { 0x11F36, 0x11F3A }, { 0x11F40, 0x11F40 }, { 0x11F42, 0x11F42 },
+    { 0x13440, 0x13440 }, { 0x13447, 0x13455 }, { 0x16AF0, 0x16AF4 },
+    { 0x16B30, 0x16B36 }, { 0x16F4F, 0x16F4F }, { 0x16F8F, 0x16F92 },
+    { 0x16FE4, 0x16FE4 }, { 0x1BC9D, 0x1BC9E }, { 0x1CF00, 0x1CF2D },
+    { 0x1CF30, 0x1CF46 }, { 0x1D167, 0x1D169 }, { 0x1D17B, 0x1D182 },
+    { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD }, { 0x1D242, 0x1D244 },
+    { 0x1DA00, 0x1DA36 }, { 0x1DA3B, 0x1DA6C }, { 0x1DA75, 0x1DA75 },
+    { 0x1DA84, 0x1DA84 }, { 0x1DA9B, 0x1DA9F }, { 0x1DAA1, 0x1DAAF },
+    { 0x1E000, 0x1E006 }, { 0x1E008, 0x1E018 }, { 0x1E01B, 0x1E021 },
+    { 0x1E023, 0x1E024 }, { 0x1E026, 0x1E02A }, { 0x1E08F, 0x1E08F },
+    { 0x1E130, 0x1E136 }, { 0x1E2AE, 0x1E2AE }, { 0x1E2EC, 0x1E2EF },
+    { 0x1E4EC, 0x1E4EF }, { 0x1E8D0, 0x1E8D6 }, { 0x1E944, 0x1E94A },
     { 0xE0100, 0xE01EF }
   };
+  /* *INDENT-ON* */
+
+  /* sorted list of non-overlapping intervals of non-characters */
+  /* generated by
+   *    uniset +0000..DFFF -4e00..9fd5 +F900..10FFFD unknown +2028..2029 c
+   */
+  /* *INDENT-OFF* */
+  /* generated by run-uniset_unk 1.6 */
+  static const struct interval unknowns[] = {
+    { 0x0378, 0x0379 }, { 0x0380, 0x0383 }, { 0x038B, 0x038B },
+    { 0x038D, 0x038D }, { 0x03A2, 0x03A2 }, { 0x0530, 0x0530 },
+    { 0x0557, 0x0558 }, { 0x058B, 0x058C }, { 0x0590, 0x0590 },
+    { 0x05C8, 0x05CF }, { 0x05EB, 0x05EE }, { 0x05F5, 0x05FF },
+    { 0x070E, 0x070E }, { 0x074B, 0x074C }, { 0x07B2, 0x07BF },
+    { 0x07FB, 0x07FC }, { 0x082E, 0x082F }, { 0x083F, 0x083F },
+    { 0x085C, 0x085D }, { 0x085F, 0x085F }, { 0x086B, 0x086F },
+    { 0x088F, 0x088F }, { 0x0892, 0x0897 }, { 0x0984, 0x0984 },
+    { 0x098D, 0x098E }, { 0x0991, 0x0992 }, { 0x09A9, 0x09A9 },
+    { 0x09B1, 0x09B1 }, { 0x09B3, 0x09B5 }, { 0x09BA, 0x09BB },
+    { 0x09C5, 0x09C6 }, { 0x09C9, 0x09CA }, { 0x09CF, 0x09D6 },
+    { 0x09D8, 0x09DB }, { 0x09DE, 0x09DE }, { 0x09E4, 0x09E5 },
+    { 0x09FF, 0x0A00 }, { 0x0A04, 0x0A04 }, { 0x0A0B, 0x0A0E },
+    { 0x0A11, 0x0A12 }, { 0x0A29, 0x0A29 }, { 0x0A31, 0x0A31 },
+    { 0x0A34, 0x0A34 }, { 0x0A37, 0x0A37 }, { 0x0A3A, 0x0A3B },
+    { 0x0A3D, 0x0A3D }, { 0x0A43, 0x0A46 }, { 0x0A49, 0x0A4A },
+    { 0x0A4E, 0x0A50 }, { 0x0A52, 0x0A58 }, { 0x0A5D, 0x0A5D },
+    { 0x0A5F, 0x0A65 }, { 0x0A77, 0x0A80 }, { 0x0A84, 0x0A84 },
+    { 0x0A8E, 0x0A8E }, { 0x0A92, 0x0A92 }, { 0x0AA9, 0x0AA9 },
+    { 0x0AB1, 0x0AB1 }, { 0x0AB4, 0x0AB4 }, { 0x0ABA, 0x0ABB },
+    { 0x0AC6, 0x0AC6 }, { 0x0ACA, 0x0ACA }, { 0x0ACE, 0x0ACF },
+    { 0x0AD1, 0x0ADF }, { 0x0AE4, 0x0AE5 }, { 0x0AF2, 0x0AF8 },
+    { 0x0B00, 0x0B00 }, { 0x0B04, 0x0B04 }, { 0x0B0D, 0x0B0E },
+    { 0x0B11, 0x0B12 }, { 0x0B29, 0x0B29 }, { 0x0B31, 0x0B31 },
+    { 0x0B34, 0x0B34 }, { 0x0B3A, 0x0B3B }, { 0x0B45, 0x0B46 },
+    { 0x0B49, 0x0B4A }, { 0x0B4E, 0x0B54 }, { 0x0B58, 0x0B5B },
+    { 0x0B5E, 0x0B5E }, { 0x0B64, 0x0B65 }, { 0x0B78, 0x0B81 },
+    { 0x0B84, 0x0B84 }, { 0x0B8B, 0x0B8D }, { 0x0B91, 0x0B91 },
+    { 0x0B96, 0x0B98 }, { 0x0B9B, 0x0B9B }, { 0x0B9D, 0x0B9D },
+    { 0x0BA0, 0x0BA2 }, { 0x0BA5, 0x0BA7 }, { 0x0BAB, 0x0BAD },
+    { 0x0BBA, 0x0BBD }, { 0x0BC3, 0x0BC5 }, { 0x0BC9, 0x0BC9 },
+    { 0x0BCE, 0x0BCF }, { 0x0BD1, 0x0BD6 }, { 0x0BD8, 0x0BE5 },
+    { 0x0BFB, 0x0BFF }, { 0x0C0D, 0x0C0D }, { 0x0C11, 0x0C11 },
+    { 0x0C29, 0x0C29 }, { 0x0C3A, 0x0C3B }, { 0x0C45, 0x0C45 },
+    { 0x0C49, 0x0C49 }, { 0x0C4E, 0x0C54 }, { 0x0C57, 0x0C57 },
+    { 0x0C5B, 0x0C5C }, { 0x0C5E, 0x0C5F }, { 0x0C64, 0x0C65 },
+    { 0x0C70, 0x0C76 }, { 0x0C8D, 0x0C8D }, { 0x0C91, 0x0C91 },
+    { 0x0CA9, 0x0CA9 }, { 0x0CB4, 0x0CB4 }, { 0x0CBA, 0x0CBB },
+    { 0x0CC5, 0x0CC5 }, { 0x0CC9, 0x0CC9 }, { 0x0CCE, 0x0CD4 },
+    { 0x0CD7, 0x0CDC }, { 0x0CDF, 0x0CDF }, { 0x0CE4, 0x0CE5 },
+    { 0x0CF0, 0x0CF0 }, { 0x0CF4, 0x0CFF }, { 0x0D0D, 0x0D0D },
+    { 0x0D11, 0x0D11 }, { 0x0D45, 0x0D45 }, { 0x0D49, 0x0D49 },
+    { 0x0D50, 0x0D53 }, { 0x0D64, 0x0D65 }, { 0x0D80, 0x0D80 },
+    { 0x0D84, 0x0D84 }, { 0x0D97, 0x0D99 }, { 0x0DB2, 0x0DB2 },
+    { 0x0DBC, 0x0DBC }, { 0x0DBE, 0x0DBF }, { 0x0DC7, 0x0DC9 },
+    { 0x0DCB, 0x0DCE }, { 0x0DD5, 0x0DD5 }, { 0x0DD7, 0x0DD7 },
+    { 0x0DE0, 0x0DE5 }, { 0x0DF0, 0x0DF1 }, { 0x0DF5, 0x0E00 },
+    { 0x0E3B, 0x0E3E }, { 0x0E5C, 0x0E80 }, { 0x0E83, 0x0E83 },
+    { 0x0E85, 0x0E85 }, { 0x0E8B, 0x0E8B }, { 0x0EA4, 0x0EA4 },
+    { 0x0EA6, 0x0EA6 }, { 0x0EBE, 0x0EBF }, { 0x0EC5, 0x0EC5 },
+    { 0x0EC7, 0x0EC7 }, { 0x0ECF, 0x0ECF }, { 0x0EDA, 0x0EDB },
+    { 0x0EE0, 0x0EFF }, { 0x0F48, 0x0F48 }, { 0x0F6D, 0x0F70 },
+    { 0x0F98, 0x0F98 }, { 0x0FBD, 0x0FBD }, { 0x0FCD, 0x0FCD },
+    { 0x0FDB, 0x0FFF }, { 0x10C6, 0x10C6 }, { 0x10C8, 0x10CC },
+    { 0x10CE, 0x10CF }, { 0x1249, 0x1249 }, { 0x124E, 0x124F },
+    { 0x1257, 0x1257 }, { 0x1259, 0x1259 }, { 0x125E, 0x125F },
+    { 0x1289, 0x1289 }, { 0x128E, 0x128F }, { 0x12B1, 0x12B1 },
+    { 0x12B6, 0x12B7 }, { 0x12BF, 0x12BF }, { 0x12C1, 0x12C1 },
+    { 0x12C6, 0x12C7 }, { 0x12D7, 0x12D7 }, { 0x1311, 0x1311 },
+    { 0x1316, 0x1317 }, { 0x135B, 0x135C }, { 0x137D, 0x137F },
+    { 0x139A, 0x139F }, { 0x13F6, 0x13F7 }, { 0x13FE, 0x13FF },
+    { 0x169D, 0x169F }, { 0x16F9, 0x16FF }, { 0x1716, 0x171E },
+    { 0x1737, 0x173F }, { 0x1754, 0x175F }, { 0x176D, 0x176D },
+    { 0x1771, 0x1771 }, { 0x1774, 0x177F }, { 0x17DE, 0x17DF },
+    { 0x17EA, 0x17EF }, { 0x17FA, 0x17FF }, { 0x181A, 0x181F },
+    { 0x1879, 0x187F }, { 0x18AB, 0x18AF }, { 0x18F6, 0x18FF },
+    { 0x191F, 0x191F }, { 0x192C, 0x192F }, { 0x193C, 0x193F },
+    { 0x1941, 0x1943 }, { 0x196E, 0x196F }, { 0x1975, 0x197F },
+    { 0x19AC, 0x19AF }, { 0x19CA, 0x19CF }, { 0x19DB, 0x19DD },
+    { 0x1A1C, 0x1A1D }, { 0x1A5F, 0x1A5F }, { 0x1A7D, 0x1A7E },
+    { 0x1A8A, 0x1A8F }, { 0x1A9A, 0x1A9F }, { 0x1AAE, 0x1AAF },
+    { 0x1ACF, 0x1AFF }, { 0x1B4D, 0x1B4F }, { 0x1B7F, 0x1B7F },
+    { 0x1BF4, 0x1BFB }, { 0x1C38, 0x1C3A }, { 0x1C4A, 0x1C4C },
+    { 0x1C89, 0x1C8F }, { 0x1CBB, 0x1CBC }, { 0x1CC8, 0x1CCF },
+    { 0x1CFB, 0x1CFF }, { 0x1F16, 0x1F17 }, { 0x1F1E, 0x1F1F },
+    { 0x1F46, 0x1F47 }, { 0x1F4E, 0x1F4F }, { 0x1F58, 0x1F58 },
+    { 0x1F5A, 0x1F5A }, { 0x1F5C, 0x1F5C }, { 0x1F5E, 0x1F5E },
+    { 0x1F7E, 0x1F7F }, { 0x1FB5, 0x1FB5 }, { 0x1FC5, 0x1FC5 },
+    { 0x1FD4, 0x1FD5 }, { 0x1FDC, 0x1FDC }, { 0x1FF0, 0x1FF1 },
+    { 0x1FF5, 0x1FF5 }, { 0x1FFF, 0x1FFF }, { 0x2028, 0x2029 },
+    { 0x2065, 0x2065 }, { 0x2072, 0x2073 }, { 0x208F, 0x208F },
+    { 0x209D, 0x209F }, { 0x20C1, 0x20CF }, { 0x20F1, 0x20FF },
+    { 0x218C, 0x218F }, { 0x2427, 0x243F }, { 0x244B, 0x245F },
+    { 0x2B74, 0x2B75 }, { 0x2B96, 0x2B96 }, { 0x2CF4, 0x2CF8 },
+    { 0x2D26, 0x2D26 }, { 0x2D28, 0x2D2C }, { 0x2D2E, 0x2D2F },
+    { 0x2D68, 0x2D6E }, { 0x2D71, 0x2D7E }, { 0x2D97, 0x2D9F },
+    { 0x2DA7, 0x2DA7 }, { 0x2DAF, 0x2DAF }, { 0x2DB7, 0x2DB7 },
+    { 0x2DBF, 0x2DBF }, { 0x2DC7, 0x2DC7 }, { 0x2DCF, 0x2DCF },
+    { 0x2DD7, 0x2DD7 }, { 0x2DDF, 0x2DDF }, { 0x2E5E, 0x2E7F },
+    { 0x2E9A, 0x2E9A }, { 0x2EF4, 0x2EFF }, { 0x2FD6, 0x2FEF },
+    { 0x3040, 0x3040 }, { 0x3097, 0x3098 }, { 0x3100, 0x3104 },
+    { 0x3130, 0x3130 }, { 0x318F, 0x318F }, { 0x31E4, 0x31EE },
+    { 0x321F, 0x321F }, { 0x4DB6, 0x4DBF }, { 0x9FD6, 0x9FFF },
+    { 0xA48D, 0xA48F }, { 0xA4C7, 0xA4CF }, { 0xA62C, 0xA63F },
+    { 0xA6F8, 0xA6FF }, { 0xA7CB, 0xA7CF }, { 0xA7D2, 0xA7D2 },
+    { 0xA7D4, 0xA7D4 }, { 0xA7DA, 0xA7F1 }, { 0xA82D, 0xA82F },
+    { 0xA83A, 0xA83F }, { 0xA878, 0xA87F }, { 0xA8C6, 0xA8CD },
+    { 0xA8DA, 0xA8DF }, { 0xA954, 0xA95E }, { 0xA97D, 0xA97F },
+    { 0xA9CE, 0xA9CE }, { 0xA9DA, 0xA9DD }, { 0xA9FF, 0xA9FF },
+    { 0xAA37, 0xAA3F }, { 0xAA4E, 0xAA4F }, { 0xAA5A, 0xAA5B },
+    { 0xAAC3, 0xAADA }, { 0xAAF7, 0xAB00 }, { 0xAB07, 0xAB08 },
+    { 0xAB0F, 0xAB10 }, { 0xAB17, 0xAB1F }, { 0xAB27, 0xAB27 },
+    { 0xAB2F, 0xAB2F }, { 0xAB6C, 0xAB6F }, { 0xABEE, 0xABEF },
+    { 0xABFA, 0xABFF }, { 0xD7A4, 0xD7AF }, { 0xD7C7, 0xD7CA },
+    { 0xD7FC, 0xDFFF }, { 0xFA6E, 0xFA6F }, { 0xFADA, 0xFAFF },
+    { 0xFB07, 0xFB12 }, { 0xFB18, 0xFB1C }, { 0xFB37, 0xFB37 },
+    { 0xFB3D, 0xFB3D }, { 0xFB3F, 0xFB3F }, { 0xFB42, 0xFB42 },
+    { 0xFB45, 0xFB45 }, { 0xFBC3, 0xFBD2 }, { 0xFD90, 0xFD91 },
+    { 0xFDC8, 0xFDCE }, { 0xFDD0, 0xFDEF }, { 0xFE1A, 0xFE1F },
+    { 0xFE53, 0xFE53 }, { 0xFE67, 0xFE67 }, { 0xFE6C, 0xFE6F },
+    { 0xFE75, 0xFE75 }, { 0xFEFD, 0xFEFE }, { 0xFF00, 0xFF00 },
+    { 0xFFBF, 0xFFC1 }, { 0xFFC8, 0xFFC9 }, { 0xFFD0, 0xFFD1 },
+    { 0xFFD8, 0xFFD9 }, { 0xFFDD, 0xFFDF }, { 0xFFE7, 0xFFE7 },
+    { 0xFFEF, 0xFFF8 }, { 0xFFFE, 0xFFFF }, { 0x1000C, 0x1000C },
+    { 0x10027, 0x10027 }, { 0x1003B, 0x1003B }, { 0x1003E, 0x1003E },
+    { 0x1004E, 0x1004F }, { 0x1005E, 0x1007F }, { 0x100FB, 0x100FF },
+    { 0x10103, 0x10106 }, { 0x10134, 0x10136 }, { 0x1018F, 0x1018F },
+    { 0x1019D, 0x1019F }, { 0x101A1, 0x101CF }, { 0x101FE, 0x1027F },
+    { 0x1029D, 0x1029F }, { 0x102D1, 0x102DF }, { 0x102FC, 0x102FF },
+    { 0x10324, 0x1032C }, { 0x1034B, 0x1034F }, { 0x1037B, 0x1037F },
+    { 0x1039E, 0x1039E }, { 0x103C4, 0x103C7 }, { 0x103D6, 0x103FF },
+    { 0x1049E, 0x1049F }, { 0x104AA, 0x104AF }, { 0x104D4, 0x104D7 },
+    { 0x104FC, 0x104FF }, { 0x10528, 0x1052F }, { 0x10564, 0x1056E },
+    { 0x1057B, 0x1057B }, { 0x1058B, 0x1058B }, { 0x10593, 0x10593 },
+    { 0x10596, 0x10596 }, { 0x105A2, 0x105A2 }, { 0x105B2, 0x105B2 },
+    { 0x105BA, 0x105BA }, { 0x105BD, 0x105FF }, { 0x10737, 0x1073F },
+    { 0x10756, 0x1075F }, { 0x10768, 0x1077F }, { 0x10786, 0x10786 },
+    { 0x107B1, 0x107B1 }, { 0x107BB, 0x107FF }, { 0x10806, 0x10807 },
+    { 0x10809, 0x10809 }, { 0x10836, 0x10836 }, { 0x10839, 0x1083B },
+    { 0x1083D, 0x1083E }, { 0x10856, 0x10856 }, { 0x1089F, 0x108A6 },
+    { 0x108B0, 0x108DF }, { 0x108F3, 0x108F3 }, { 0x108F6, 0x108FA },
+    { 0x1091C, 0x1091E }, { 0x1093A, 0x1093E }, { 0x10940, 0x1097F },
+    { 0x109B8, 0x109BB }, { 0x109D0, 0x109D1 }, { 0x10A04, 0x10A04 },
+    { 0x10A07, 0x10A0B }, { 0x10A14, 0x10A14 }, { 0x10A18, 0x10A18 },
+    { 0x10A36, 0x10A37 }, { 0x10A3B, 0x10A3E }, { 0x10A49, 0x10A4F },
+    { 0x10A59, 0x10A5F }, { 0x10AA0, 0x10ABF }, { 0x10AE7, 0x10AEA },
+    { 0x10AF7, 0x10AFF }, { 0x10B36, 0x10B38 }, { 0x10B56, 0x10B57 },
+    { 0x10B73, 0x10B77 }, { 0x10B92, 0x10B98 }, { 0x10B9D, 0x10BA8 },
+    { 0x10BB0, 0x10BFF }, { 0x10C49, 0x10C7F }, { 0x10CB3, 0x10CBF },
+    { 0x10CF3, 0x10CF9 }, { 0x10D28, 0x10D2F }, { 0x10D3A, 0x10E5F },
+    { 0x10E7F, 0x10E7F }, { 0x10EAA, 0x10EAA }, { 0x10EAE, 0x10EAF },
+    { 0x10EB2, 0x10EFC }, { 0x10F28, 0x10F2F }, { 0x10F5A, 0x10F6F },
+    { 0x10F8A, 0x10FAF }, { 0x10FCC, 0x10FDF }, { 0x10FF7, 0x10FFF },
+    { 0x1104E, 0x11051 }, { 0x11076, 0x1107E }, { 0x110C3, 0x110CC },
+    { 0x110CE, 0x110CF }, { 0x110E9, 0x110EF }, { 0x110FA, 0x110FF },
+    { 0x11135, 0x11135 }, { 0x11148, 0x1114F }, { 0x11177, 0x1117F },
+    { 0x111E0, 0x111E0 }, { 0x111F5, 0x111FF }, { 0x11212, 0x11212 },
+    { 0x11242, 0x1127F }, { 0x11287, 0x11287 }, { 0x11289, 0x11289 },
+    { 0x1128E, 0x1128E }, { 0x1129E, 0x1129E }, { 0x112AA, 0x112AF },
+    { 0x112EB, 0x112EF }, { 0x112FA, 0x112FF }, { 0x11304, 0x11304 },
+    { 0x1130D, 0x1130E }, { 0x11311, 0x11312 }, { 0x11329, 0x11329 },
+    { 0x11331, 0x11331 }, { 0x11334, 0x11334 }, { 0x1133A, 0x1133A },
+    { 0x11345, 0x11346 }, { 0x11349, 0x1134A }, { 0x1134E, 0x1134F },
+    { 0x11351, 0x11356 }, { 0x11358, 0x1135C }, { 0x11364, 0x11365 },
+    { 0x1136D, 0x1136F }, { 0x11375, 0x113FF }, { 0x1145C, 0x1145C },
+    { 0x11462, 0x1147F }, { 0x114C8, 0x114CF }, { 0x114DA, 0x1157F },
+    { 0x115B6, 0x115B7 }, { 0x115DE, 0x115FF }, { 0x11645, 0x1164F },
+    { 0x1165A, 0x1165F }, { 0x1166D, 0x1167F }, { 0x116BA, 0x116BF },
+    { 0x116CA, 0x116FF }, { 0x1171B, 0x1171C }, { 0x1172C, 0x1172F },
+    { 0x11747, 0x117FF }, { 0x1183C, 0x1189F }, { 0x118F3, 0x118FE },
+    { 0x11907, 0x11908 }, { 0x1190A, 0x1190B }, { 0x11914, 0x11914 },
+    { 0x11917, 0x11917 }, { 0x11936, 0x11936 }, { 0x11939, 0x1193A },
+    { 0x11947, 0x1194F }, { 0x1195A, 0x1199F }, { 0x119A8, 0x119A9 },
+    { 0x119D8, 0x119D9 }, { 0x119E5, 0x119FF }, { 0x11A48, 0x11A4F },
+    { 0x11AA3, 0x11AAF }, { 0x11AF9, 0x11AFF }, { 0x11B0A, 0x11BFF },
+    { 0x11C09, 0x11C09 }, { 0x11C37, 0x11C37 }, { 0x11C46, 0x11C4F },
+    { 0x11C6D, 0x11C6F }, { 0x11C90, 0x11C91 }, { 0x11CA8, 0x11CA8 },
+    { 0x11CB7, 0x11CFF }, { 0x11D07, 0x11D07 }, { 0x11D0A, 0x11D0A },
+    { 0x11D37, 0x11D39 }, { 0x11D3B, 0x11D3B }, { 0x11D3E, 0x11D3E },
+    { 0x11D48, 0x11D4F }, { 0x11D5A, 0x11D5F }, { 0x11D66, 0x11D66 },
+    { 0x11D69, 0x11D69 }, { 0x11D8F, 0x11D8F }, { 0x11D92, 0x11D92 },
+    { 0x11D99, 0x11D9F }, { 0x11DAA, 0x11EDF }, { 0x11EF9, 0x11EFF },
+    { 0x11F11, 0x11F11 }, { 0x11F3B, 0x11F3D }, { 0x11F5A, 0x11FAF },
+    { 0x11FB1, 0x11FBF }, { 0x11FF2, 0x11FFE }, { 0x1239A, 0x123FF },
+    { 0x1246F, 0x1246F }, { 0x12475, 0x1247F }, { 0x12544, 0x12F8F },
+    { 0x12FF3, 0x12FFF }, { 0x13456, 0x143FF }, { 0x14647, 0x167FF },
+    { 0x16A39, 0x16A3F }, { 0x16A5F, 0x16A5F }, { 0x16A6A, 0x16A6D },
+    { 0x16ABF, 0x16ABF }, { 0x16ACA, 0x16ACF }, { 0x16AEE, 0x16AEF },
+    { 0x16AF6, 0x16AFF }, { 0x16B46, 0x16B4F }, { 0x16B5A, 0x16B5A },
+    { 0x16B62, 0x16B62 }, { 0x16B78, 0x16B7C }, { 0x16B90, 0x16E3F },
+    { 0x16E9B, 0x16EFF }, { 0x16F4B, 0x16F4E }, { 0x16F88, 0x16F8E },
+    { 0x16FA0, 0x16FDF }, { 0x16FE5, 0x16FEF }, { 0x16FF2, 0x187FF },
+    { 0x18CD6, 0x1AFEF }, { 0x1AFF4, 0x1AFF4 }, { 0x1AFFC, 0x1AFFC },
+    { 0x1AFFF, 0x1AFFF }, { 0x1B123, 0x1B131 }, { 0x1B133, 0x1B14F },
+    { 0x1B153, 0x1B154 }, { 0x1B156, 0x1B163 }, { 0x1B168, 0x1B16F },
+    { 0x1B2FC, 0x1BBFF }, { 0x1BC6B, 0x1BC6F }, { 0x1BC7D, 0x1BC7F },
+    { 0x1BC89, 0x1BC8F }, { 0x1BC9A, 0x1BC9B }, { 0x1BCA4, 0x1CEFF },
+    { 0x1CF2E, 0x1CF2F }, { 0x1CF47, 0x1CF4F }, { 0x1CFC4, 0x1CFFF },
+    { 0x1D0F6, 0x1D0FF }, { 0x1D127, 0x1D128 }, { 0x1D1EB, 0x1D1FF },
+    { 0x1D246, 0x1D2BF }, { 0x1D2D4, 0x1D2DF }, { 0x1D2F4, 0x1D2FF },
+    { 0x1D357, 0x1D35F }, { 0x1D379, 0x1D3FF }, { 0x1D455, 0x1D455 },
+    { 0x1D49D, 0x1D49D }, { 0x1D4A0, 0x1D4A1 }, { 0x1D4A3, 0x1D4A4 },
+    { 0x1D4A7, 0x1D4A8 }, { 0x1D4AD, 0x1D4AD }, { 0x1D4BA, 0x1D4BA },
+    { 0x1D4BC, 0x1D4BC }, { 0x1D4C4, 0x1D4C4 }, { 0x1D506, 0x1D506 },
+    { 0x1D50B, 0x1D50C }, { 0x1D515, 0x1D515 }, { 0x1D51D, 0x1D51D },
+    { 0x1D53A, 0x1D53A }, { 0x1D53F, 0x1D53F }, { 0x1D545, 0x1D545 },
+    { 0x1D547, 0x1D549 }, { 0x1D551, 0x1D551 }, { 0x1D6A6, 0x1D6A7 },
+    { 0x1D7CC, 0x1D7CD }, { 0x1DA8C, 0x1DA9A }, { 0x1DAA0, 0x1DAA0 },
+    { 0x1DAB0, 0x1DEFF }, { 0x1DF1F, 0x1DF24 }, { 0x1DF2B, 0x1DFFF },
+    { 0x1E007, 0x1E007 }, { 0x1E019, 0x1E01A }, { 0x1E022, 0x1E022 },
+    { 0x1E025, 0x1E025 }, { 0x1E02B, 0x1E02F }, { 0x1E06E, 0x1E08E },
+    { 0x1E090, 0x1E0FF }, { 0x1E12D, 0x1E12F }, { 0x1E13E, 0x1E13F },
+    { 0x1E14A, 0x1E14D }, { 0x1E150, 0x1E28F }, { 0x1E2AF, 0x1E2BF },
+    { 0x1E2FA, 0x1E2FE }, { 0x1E300, 0x1E4CF }, { 0x1E4FA, 0x1E7DF },
+    { 0x1E7E7, 0x1E7E7 }, { 0x1E7EC, 0x1E7EC }, { 0x1E7EF, 0x1E7EF },
+    { 0x1E7FF, 0x1E7FF }, { 0x1E8C5, 0x1E8C6 }, { 0x1E8D7, 0x1E8FF },
+    { 0x1E94C, 0x1E94F }, { 0x1E95A, 0x1E95D }, { 0x1E960, 0x1EC70 },
+    { 0x1ECB5, 0x1ED00 }, { 0x1ED3E, 0x1EDFF }, { 0x1EE04, 0x1EE04 },
+    { 0x1EE20, 0x1EE20 }, { 0x1EE23, 0x1EE23 }, { 0x1EE25, 0x1EE26 },
+    { 0x1EE28, 0x1EE28 }, { 0x1EE33, 0x1EE33 }, { 0x1EE38, 0x1EE38 },
+    { 0x1EE3A, 0x1EE3A }, { 0x1EE3C, 0x1EE41 }, { 0x1EE43, 0x1EE46 },
+    { 0x1EE48, 0x1EE48 }, { 0x1EE4A, 0x1EE4A }, { 0x1EE4C, 0x1EE4C },
+    { 0x1EE50, 0x1EE50 }, { 0x1EE53, 0x1EE53 }, { 0x1EE55, 0x1EE56 },
+    { 0x1EE58, 0x1EE58 }, { 0x1EE5A, 0x1EE5A }, { 0x1EE5C, 0x1EE5C },
+    { 0x1EE5E, 0x1EE5E }, { 0x1EE60, 0x1EE60 }, { 0x1EE63, 0x1EE63 },
+    { 0x1EE65, 0x1EE66 }, { 0x1EE6B, 0x1EE6B }, { 0x1EE73, 0x1EE73 },
+    { 0x1EE78, 0x1EE78 }, { 0x1EE7D, 0x1EE7D }, { 0x1EE7F, 0x1EE7F },
+    { 0x1EE8A, 0x1EE8A }, { 0x1EE9C, 0x1EEA0 }, { 0x1EEA4, 0x1EEA4 },
+    { 0x1EEAA, 0x1EEAA }, { 0x1EEBC, 0x1EEEF }, { 0x1EEF2, 0x1EFFF },
+    { 0x1F02C, 0x1F02F }, { 0x1F094, 0x1F09F }, { 0x1F0AF, 0x1F0B0 },
+    { 0x1F0C0, 0x1F0C0 }, { 0x1F0D0, 0x1F0D0 }, { 0x1F0F6, 0x1F0FF },
+    { 0x1F1AE, 0x1F1E5 }, { 0x1F203, 0x1F20F }, { 0x1F23C, 0x1F23F },
+    { 0x1F249, 0x1F24F }, { 0x1F252, 0x1F25F }, { 0x1F266, 0x1F2FF },
+    { 0x1F6D8, 0x1F6DB }, { 0x1F6ED, 0x1F6EF }, { 0x1F6FD, 0x1F6FF },
+    { 0x1F777, 0x1F77A }, { 0x1F7DA, 0x1F7DF }, { 0x1F7EC, 0x1F7EF },
+    { 0x1F7F1, 0x1F7FF }, { 0x1F80C, 0x1F80F }, { 0x1F848, 0x1F84F },
+    { 0x1F85A, 0x1F85F }, { 0x1F888, 0x1F88F }, { 0x1F8AE, 0x1F8AF },
+    { 0x1F8B2, 0x1F8FF }, { 0x1FA54, 0x1FA5F }, { 0x1FA6E, 0x1FA6F },
+    { 0x1FA7D, 0x1FA7F }, { 0x1FA89, 0x1FA8F }, { 0x1FABE, 0x1FABE },
+    { 0x1FAC6, 0x1FACD }, { 0x1FADC, 0x1FADF }, { 0x1FAE9, 0x1FAEF },
+    { 0x1FAF9, 0x1FAFF }, { 0x1FB93, 0x1FB93 }, { 0x1FBCB, 0x1FBEF },
+    { 0x1FBFA, 0x1FFFF }, { 0x2A6D7, 0x2F7FF }, { 0x2FA1E, 0xE0000 },
+    { 0xE0002, 0xE001F }, { 0xE0080, 0xE00FF }, { 0xE01F0, 0x10FFFD }
+  };
+  /* *INDENT-ON* */
+
+  /* sorted list of non-overlapping intervals of non-characters */
+  /* generated by
+   *    uniset +WIDTH-W -cat=Cn -cat=Mn c
+   */
+  /* *INDENT-OFF* */
+  /* generated by run-uniset_dbl 1.2 */
+  static const struct interval doublewidth[] = {
+    { 0x1100, 0x115F }, { 0x231A, 0x231B }, { 0x2329, 0x232A },
+    { 0x23E9, 0x23EC }, { 0x23F0, 0x23F0 }, { 0x23F3, 0x23F3 },
+    { 0x25FD, 0x25FE }, { 0x2614, 0x2615 }, { 0x2648, 0x2653 },
+    { 0x267F, 0x267F }, { 0x2693, 0x2693 }, { 0x26A1, 0x26A1 },
+    { 0x26AA, 0x26AB }, { 0x26BD, 0x26BE }, { 0x26C4, 0x26C5 },
+    { 0x26CE, 0x26CE }, { 0x26D4, 0x26D4 }, { 0x26EA, 0x26EA },
+    { 0x26F2, 0x26F3 }, { 0x26F5, 0x26F5 }, { 0x26FA, 0x26FA },
+    { 0x26FD, 0x26FD }, { 0x2705, 0x2705 }, { 0x270A, 0x270B },
+    { 0x2728, 0x2728 }, { 0x274C, 0x274C }, { 0x274E, 0x274E },
+    { 0x2753, 0x2755 }, { 0x2757, 0x2757 }, { 0x2795, 0x2797 },
+    { 0x27B0, 0x27B0 }, { 0x27BF, 0x27BF }, { 0x2B1B, 0x2B1C },
+    { 0x2B50, 0x2B50 }, { 0x2B55, 0x2B55 }, { 0x2E80, 0x2E99 },
+    { 0x2E9B, 0x2EF3 }, { 0x2F00, 0x2FD5 }, { 0x2FF0, 0x3029 },
+    { 0x302E, 0x303E }, { 0x3041, 0x3096 }, { 0x309B, 0x30FF },
+    { 0x3105, 0x312F }, { 0x3131, 0x318E }, { 0x3190, 0x31E3 },
+    { 0x31EF, 0x321E }, { 0x3220, 0x3247 }, { 0x3250, 0x4DBF },
+    { 0x4E00, 0xA48C }, { 0xA490, 0xA4C6 }, { 0xA960, 0xA97C },
+    { 0xAC00, 0xD7A3 }, { 0xF900, 0xFAFF }, { 0xFE10, 0xFE19 },
+    { 0xFE30, 0xFE52 }, { 0xFE54, 0xFE66 }, { 0xFE68, 0xFE6B },
+    { 0xFF01, 0xFF60 }, { 0xFFE0, 0xFFE6 }, { 0x16FE0, 0x16FE3 },
+    { 0x16FF0, 0x16FF1 }, { 0x17000, 0x187F7 }, { 0x18800, 0x18CD5 },
+    { 0x18D00, 0x18D08 }, { 0x1AFF0, 0x1AFF3 }, { 0x1AFF5, 0x1AFFB },
+    { 0x1AFFD, 0x1AFFE }, { 0x1B000, 0x1B122 }, { 0x1B132, 0x1B132 },
+    { 0x1B150, 0x1B152 }, { 0x1B155, 0x1B155 }, { 0x1B164, 0x1B167 },
+    { 0x1B170, 0x1B2FB }, { 0x1F004, 0x1F004 }, { 0x1F0CF, 0x1F0CF },
+    { 0x1F18E, 0x1F18E }, { 0x1F191, 0x1F19A }, { 0x1F200, 0x1F202 },
+    { 0x1F210, 0x1F23B }, { 0x1F240, 0x1F248 }, { 0x1F250, 0x1F251 },
+    { 0x1F260, 0x1F265 }, { 0x1F300, 0x1F320 }, { 0x1F32D, 0x1F335 },
+    { 0x1F337, 0x1F37C }, { 0x1F37E, 0x1F393 }, { 0x1F3A0, 0x1F3CA },
+    { 0x1F3CF, 0x1F3D3 }, { 0x1F3E0, 0x1F3F0 }, { 0x1F3F4, 0x1F3F4 },
+    { 0x1F3F8, 0x1F43E }, { 0x1F440, 0x1F440 }, { 0x1F442, 0x1F4FC },
+    { 0x1F4FF, 0x1F53D }, { 0x1F54B, 0x1F54E }, { 0x1F550, 0x1F567 },
+    { 0x1F57A, 0x1F57A }, { 0x1F595, 0x1F596 }, { 0x1F5A4, 0x1F5A4 },
+    { 0x1F5FB, 0x1F64F }, { 0x1F680, 0x1F6C5 }, { 0x1F6CC, 0x1F6CC },
+    { 0x1F6D0, 0x1F6D2 }, { 0x1F6D5, 0x1F6D7 }, { 0x1F6DC, 0x1F6DF },
+    { 0x1F6EB, 0x1F6EC }, { 0x1F6F4, 0x1F6FC }, { 0x1F7E0, 0x1F7EB },
+    { 0x1F7F0, 0x1F7F0 }, { 0x1F90C, 0x1F93A }, { 0x1F93C, 0x1F945 },
+    { 0x1F947, 0x1F9FF }, { 0x1FA70, 0x1FA7C }, { 0x1FA80, 0x1FA88 },
+    { 0x1FA90, 0x1FABD }, { 0x1FABF, 0x1FAC5 }, { 0x1FACE, 0x1FADB },
+    { 0x1FAE0, 0x1FAE8 }, { 0x1FAF0, 0x1FAF8 }, { 0x20000, 0x2FFFD },
+    { 0x30000, 0x3FFFD }
+  };
+  /* *INDENT-ON* */
+
+  int result;
+
+#define Lookup(cmp, table) \
+      bisearch(cmp, table, \
+               (int) (sizeof(table) / sizeof(struct interval) - 1))
 
   /* test for 8-bit control characters */
-  if (ucs == 0)
-    return 0;
-  if (ucs < 32 || (ucs >= 0x7f && ucs < 0xa0))
-    return -1;
+  if (cmp == 0) {
+    result = 0;
+  } else if (cmp < 32 || (cmp >= 0x7f && cmp < 0xa0)) {
+    result = -1;
+  } else if (cmp == 0xad) {
+    result = use_latin1;
+  } else if (Lookup(cmp, formatting)) {
+    /* treat formatting characters like control characters */
+    result = -1;
+  } else if (Lookup(cmp, combining)) {
+    /* binary search in table of non-spacing characters */
+    result = 0;
+  } else {
+    /* if we arrive here, cmp is not a combining or C0/C1 control character */
+    result = 1;
 
-  /* binary search in table of non-spacing characters */
-  if (bisearch(ucs, combining,
-              sizeof(combining) / sizeof(struct interval) - 1))
-    return 0;
-
-  /* if we arrive here, ucs is not a combining or C0/C1 control character */
-
-  return 1 +
-    (ucs >= 0x1100 &&
-     (ucs <= 0x115f ||                    /* Hangul Jamo init. consonants */
-      ucs == 0x2329 || ucs == 0x232a ||
-      (ucs >= 0x2e80 && ucs <= 0xa4cf &&
-       ucs != 0x303f)                     /* CJK ... Yi */
-      || (ucs >= 0xac00 && ucs <= 0xd7a3) /* Hangul Syllables */
-      || (ucs >= 0xf900 && ucs <= 0xfaff) /* CJK Compatibility Ideographs */
-      || (ucs >= 0xfe10 && ucs <= 0xfe19) /* Vertical forms */
-      || (ucs >= 0xfe30 && ucs <= 0xfe6f) /* CJK Compatibility Forms */
-      || (ucs >= 0xff00 && ucs <= 0xff60) /* Fullwidth Forms */
-      || (ucs >= 0xffe0 && ucs <= 0xffe6)
-#if !defined(SIZEOF_WCHAR_T) || (SIZEOF_WCHAR_T >= 4)
-      || (ucs >= 0x20000 && ucs <= 0x2fffd)
-      || (ucs >= 0x30000 && ucs <= 0x3fffd)
-#endif
-      ));
+    if (Lookup(cmp, doublewidth)) {
+      result = 2;
+    } else if (cmp >= unknowns[0].first && Lookup(cmp, unknowns)) {
+      result = -1;
+    }
+  }
+  return result;
 }
 
 
-NCURSES_EXPORT(int) mk_wcswidth(const wchar_t *pwcs, size_t n)
+NCURSES_EXPORT(int) mk_wcswidth(const uint32_t *pwcs, size_t n)
 {
-  int w, width = 0;
+  int width = 0;
+
+  for (; *pwcs && n-- > 0; pwcs++) {
+    int w;
 
-  for (;*pwcs && n-- > 0; pwcs++)
     if ((w = mk_wcwidth(*pwcs)) < 0)
       return -1;
     else
       width += w;
+  }
 
   return width;
 }
@@ -233,17 +700,31 @@ NCURSES_EXPORT(int) mk_wcswidth(const wchar_t *pwcs, size_t n)
 
 /*
  * The following functions are the same as mk_wcwidth() and
- * mk_wcswidth(), except that spacing characters in the East Asian
+ * mk_wcwidth_cjk(), except that spacing characters in the East Asian
  * Ambiguous (A) category as defined in Unicode Technical Report #11
  * have a column width of 2. This variant might be useful for users of
  * CJK legacy encodings who want to migrate to UCS without changing
  * the traditional terminal character-width behaviour. It is not
  * otherwise recommended for general use.
  */
-NCURSES_EXPORT(int) mk_wcwidth_cjk(wchar_t ucs)
+NCURSES_EXPORT(int) mk_wcwidth_cjk(uint32_t ucs)
 {
   /* sorted list of non-overlapping intervals of East Asian Ambiguous
-   * characters, generated by "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */
+   * characters, generated by
+   *
+   * uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf \
+   *    +E000..F8FF \
+   *    +F0000..FFFFD \
+   *    +100000..10FFFD  c
+   *
+   * "WIDTH-A" is a file extracted from EastAsianWidth.txt by selecting
+   * only those with width "A", and omitting:
+   *
+   *    0xAD
+   *    all lines with "COMBINING"
+   */
+  /* *INDENT-OFF* */
+  /* generated by run-uniset_cjk 1.5 */
   static const struct interval ambiguous[] = {
     { 0x00A1, 0x00A1 }, { 0x00A4, 0x00A4 }, { 0x00A7, 0x00A8 },
     { 0x00AA, 0x00AA }, { 0x00AE, 0x00AE }, { 0x00B0, 0x00B4 },
@@ -274,49 +755,59 @@ NCURSES_EXPORT(int) mk_wcwidth_cjk(wchar_t ucs)
     { 0x2113, 0x2113 }, { 0x2116, 0x2116 }, { 0x2121, 0x2122 },
     { 0x2126, 0x2126 }, { 0x212B, 0x212B }, { 0x2153, 0x2154 },
     { 0x215B, 0x215E }, { 0x2160, 0x216B }, { 0x2170, 0x2179 },
-    { 0x2190, 0x2199 }, { 0x21B8, 0x21B9 }, { 0x21D2, 0x21D2 },
-    { 0x21D4, 0x21D4 }, { 0x21E7, 0x21E7 }, { 0x2200, 0x2200 },
-    { 0x2202, 0x2203 }, { 0x2207, 0x2208 }, { 0x220B, 0x220B },
-    { 0x220F, 0x220F }, { 0x2211, 0x2211 }, { 0x2215, 0x2215 },
-    { 0x221A, 0x221A }, { 0x221D, 0x2220 }, { 0x2223, 0x2223 },
-    { 0x2225, 0x2225 }, { 0x2227, 0x222C }, { 0x222E, 0x222E },
-    { 0x2234, 0x2237 }, { 0x223C, 0x223D }, { 0x2248, 0x2248 },
-    { 0x224C, 0x224C }, { 0x2252, 0x2252 }, { 0x2260, 0x2261 },
-    { 0x2264, 0x2267 }, { 0x226A, 0x226B }, { 0x226E, 0x226F },
-    { 0x2282, 0x2283 }, { 0x2286, 0x2287 }, { 0x2295, 0x2295 },
-    { 0x2299, 0x2299 }, { 0x22A5, 0x22A5 }, { 0x22BF, 0x22BF },
-    { 0x2312, 0x2312 }, { 0x2460, 0x24E9 }, { 0x24EB, 0x254B },
-    { 0x2550, 0x2573 }, { 0x2580, 0x258F }, { 0x2592, 0x2595 },
-    { 0x25A0, 0x25A1 }, { 0x25A3, 0x25A9 }, { 0x25B2, 0x25B3 },
-    { 0x25B6, 0x25B7 }, { 0x25BC, 0x25BD }, { 0x25C0, 0x25C1 },
-    { 0x25C6, 0x25C8 }, { 0x25CB, 0x25CB }, { 0x25CE, 0x25D1 },
-    { 0x25E2, 0x25E5 }, { 0x25EF, 0x25EF }, { 0x2605, 0x2606 },
-    { 0x2609, 0x2609 }, { 0x260E, 0x260F }, { 0x2614, 0x2615 },
+    { 0x2189, 0x2189 }, { 0x2190, 0x2199 }, { 0x21B8, 0x21B9 },
+    { 0x21D2, 0x21D2 }, { 0x21D4, 0x21D4 }, { 0x21E7, 0x21E7 },
+    { 0x2200, 0x2200 }, { 0x2202, 0x2203 }, { 0x2207, 0x2208 },
+    { 0x220B, 0x220B }, { 0x220F, 0x220F }, { 0x2211, 0x2211 },
+    { 0x2215, 0x2215 }, { 0x221A, 0x221A }, { 0x221D, 0x2220 },
+    { 0x2223, 0x2223 }, { 0x2225, 0x2225 }, { 0x2227, 0x222C },
+    { 0x222E, 0x222E }, { 0x2234, 0x2237 }, { 0x223C, 0x223D },
+    { 0x2248, 0x2248 }, { 0x224C, 0x224C }, { 0x2252, 0x2252 },
+    { 0x2260, 0x2261 }, { 0x2264, 0x2267 }, { 0x226A, 0x226B },
+    { 0x226E, 0x226F }, { 0x2282, 0x2283 }, { 0x2286, 0x2287 },
+    { 0x2295, 0x2295 }, { 0x2299, 0x2299 }, { 0x22A5, 0x22A5 },
+    { 0x22BF, 0x22BF }, { 0x2312, 0x2312 }, { 0x2460, 0x24E9 },
+    { 0x24EB, 0x254B }, { 0x2550, 0x2573 }, { 0x2580, 0x258F },
+    { 0x2592, 0x2595 }, { 0x25A0, 0x25A1 }, { 0x25A3, 0x25A9 },
+    { 0x25B2, 0x25B3 }, { 0x25B6, 0x25B7 }, { 0x25BC, 0x25BD },
+    { 0x25C0, 0x25C1 }, { 0x25C6, 0x25C8 }, { 0x25CB, 0x25CB },
+    { 0x25CE, 0x25D1 }, { 0x25E2, 0x25E5 }, { 0x25EF, 0x25EF },
+    { 0x2605, 0x2606 }, { 0x2609, 0x2609 }, { 0x260E, 0x260F },
     { 0x261C, 0x261C }, { 0x261E, 0x261E }, { 0x2640, 0x2640 },
     { 0x2642, 0x2642 }, { 0x2660, 0x2661 }, { 0x2663, 0x2665 },
     { 0x2667, 0x266A }, { 0x266C, 0x266D }, { 0x266F, 0x266F },
-    { 0x273D, 0x273D }, { 0x2776, 0x277F }, { 0xE000, 0xF8FF },
-    { 0xFFFD, 0xFFFD }, { 0xF0000, 0xFFFFD }, { 0x100000, 0x10FFFD }
+    { 0x269E, 0x269F }, { 0x26BF, 0x26BF }, { 0x26C6, 0x26CD },
+    { 0x26CF, 0x26D3 }, { 0x26D5, 0x26E1 }, { 0x26E3, 0x26E3 },
+    { 0x26E8, 0x26E9 }, { 0x26EB, 0x26F1 }, { 0x26F4, 0x26F4 },
+    { 0x26F6, 0x26F9 }, { 0x26FB, 0x26FC }, { 0x26FE, 0x26FF },
+    { 0x273D, 0x273D }, { 0x2776, 0x277F }, { 0x2B56, 0x2B59 },
+    { 0x3248, 0x324F }, { 0xE000, 0xF8FF }, { 0xFFFD, 0xFFFD },
+    { 0x1F100, 0x1F10A }, { 0x1F110, 0x1F12D }, { 0x1F130, 0x1F169 },
+    { 0x1F170, 0x1F18D }, { 0x1F18F, 0x1F190 }, { 0x1F19B, 0x1F1AC },
+    { 0xF0000, 0xFFFFD }, { 0x100000, 0x10FFFD }
   };
+  /* *INDENT-ON* */
 
   /* binary search in table of non-spacing characters */
-  if (bisearch(ucs, ambiguous,
-              sizeof(ambiguous) / sizeof(struct interval) - 1))
+  if (Lookup((unsigned long) ucs, ambiguous))
     return 2;
 
   return mk_wcwidth(ucs);
 }
 
 
-NCURSES_EXPORT(int) mk_wcswidth_cjk(const wchar_t *pwcs, size_t n)
+NCURSES_EXPORT(int) mk_wcswidth_cjk(const uint32_t *pwcs, size_t n)
 {
-  int w, width = 0;
+  int width = 0;
+
+  for (; *pwcs && n-- > 0; pwcs++) {
+    int w;
 
-  for (;*pwcs && n-- > 0; pwcs++)
     if ((w = mk_wcwidth_cjk(*pwcs)) < 0)
       return -1;
     else
       width += w;
+  }
 
   return width;
 }
index b817647c607eb13a590df1b786427b530c2cdbca..be1bbb051ad30ad9b761d2e0e31bb104c796da86 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2019-2021,2023 Thomas E. Dickey                                *
  * Copyright 2004-2011,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -40,7 +40,7 @@
 #include <wctype.h>
 #endif
 
-MODULE_ID("$Id: lib_add_wch.c,v 1.17 2021/06/17 21:26:02 tom Exp $")
+MODULE_ID("$Id: lib_add_wch.c,v 1.18 2023/07/15 17:34:12 tom Exp $")
 
 /* clone/adapt lib_addch.c */
 static const cchar_t blankchar = NewChar(BLANK_TEXT);
@@ -204,10 +204,16 @@ wadd_wch_literal(WINDOW *win, cchar_t ch)
        if (len == 0) {         /* non-spacing */
            if ((x > 0 && y >= 0)
                || (win->_maxx >= 0 && win->_cury >= 1)) {
-               if (x > 0 && y >= 0)
-                   chars = (win->_line[y].text[x - 1].chars);
-               else
+               if (x > 0 && y >= 0) {
+                   for (j = x - 1; j > 0; --j) {
+                       if (!isWidecExt(win->_line[y].text[j])) {
+                           break;
+                       }
+                   }
+                   chars = (win->_line[y].text[j].chars);
+               } else {
                    chars = (win->_line[y - 1].text[win->_maxx].chars);
+               }
                for (i = 0; i < CCHARW_MAX; ++i) {
                    if (chars[i] == 0) {
                        TR(TRACE_VIRTPUT,
index c4dec5c748dcfc176bf9fd5f915db31ddf5fb1b4..3b3bd522c2d8b20e7229de8fb3f9826974ecaaa3 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2021,2023 Thomas E. Dickey                                *
  * Copyright 2002-2009,2011 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -40,7 +40,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_get_wstr.c,v 1.20 2021/10/23 19:02:59 tom Exp $")
+MODULE_ID("$Id: lib_get_wstr.c,v 1.21 2023/04/29 19:02:03 tom Exp $")
 
 static int
 wadd_wint(WINDOW *win, wint_t *src)
@@ -88,7 +88,7 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen)
 {
     SCREEN *sp = _nc_screen_of(win);
     TTY buf;
-    bool oldnl, oldecho, oldraw, oldcbreak;
+    TTY_FLAGS save_flags;
     wchar_t erasec = 0;
     wchar_t killc = 0;
     wint_t *oldstr = str;
@@ -105,13 +105,11 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen)
 
     _nc_get_tty_mode(&buf);
 
-    oldnl = sp->_nl;
-    oldecho = sp->_echo;
-    oldraw = sp->_raw;
-    oldcbreak = sp->_cbreak;
+    save_flags = sp->_tty_flags;
     NCURSES_SP_NAME(nl) (NCURSES_SP_ARG);
     NCURSES_SP_NAME(noecho) (NCURSES_SP_ARG);
-    NCURSES_SP_NAME(raw) (NCURSES_SP_ARG);
+    if (!save_flags._raw)
+       NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG);
 
     NCURSES_SP_NAME(erasewchar) (NCURSES_SP_ARGx &erasec);
     NCURSES_SP_NAME(killwchar) (NCURSES_SP_ARGx &killc);
@@ -149,7 +147,7 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen)
             * *getn_wstr() with \n should work either way.
             */
            if (ch == KEY_DOWN || ch == KEY_ENTER) {
-               if (oldecho == TRUE
+               if (save_flags._echo == TRUE
                    && win->_cury == win->_maxy
                    && win->_scroll)
                    wechochar(win, (chtype) '\n');
@@ -157,11 +155,11 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen)
            }
            if (ch == KEY_LEFT || ch == KEY_BACKSPACE) {
                if (tmpstr > oldstr) {
-                   tmpstr = WipeOut(win, y, x, oldstr, tmpstr, oldecho);
+                   tmpstr = WipeOut(win, y, x, oldstr, tmpstr, save_flags._echo);
                }
            } else if (ch == KEY_EOL) {
                while (tmpstr > oldstr) {
-                   tmpstr = WipeOut(win, y, x, oldstr, tmpstr, oldecho);
+                   tmpstr = WipeOut(win, y, x, oldstr, tmpstr, save_flags._echo);
                }
            } else {
                beep();
@@ -171,7 +169,7 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen)
        } else {
            *tmpstr++ = ch;
            *tmpstr = 0;
-           if (oldecho == TRUE) {
+           if (save_flags._echo == TRUE) {
                int oldy = win->_cury;
 
                if (wadd_wint(win, tmpstr - 1) == ERR) {
@@ -181,7 +179,7 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen)
                     */
                    win->_flags &= ~_WRAPPED;
                    waddch(win, (chtype) ' ');
-                   tmpstr = WipeOut(win, y, x, oldstr, tmpstr, oldecho);
+                   tmpstr = WipeOut(win, y, x, oldstr, tmpstr, save_flags._echo);
                    continue;
                } else if (IS_WRAPPED(win)) {
                    /*
@@ -211,11 +209,7 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen)
     /* Restore with a single I/O call, to fix minor asymmetry between
      * raw/noraw, etc.
      */
-    sp->_nl = oldnl;
-    sp->_echo = oldecho;
-    sp->_raw = oldraw;
-    sp->_cbreak = oldcbreak;
-
+    sp->_tty_flags = save_flags;
     (void) _nc_set_tty_mode(&buf);
 
     *tmpstr = 0;
index f75361081b62e7a1ad45173aa1685c1d5b141733..ecaabcc9b73e3bd8ab037d4b8686db5b317dba47 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019,2020 Thomas E. Dickey                                     *
+ * Copyright 2019-2020,2023 Thomas E. Dickey                                *
  * Copyright 2002-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -40,7 +40,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_ins_wch.c,v 1.25 2020/12/05 20:04:59 tom Exp $")
+MODULE_ID("$Id: lib_ins_wch.c,v 1.29 2023/11/21 21:53:28 tom Exp $")
 
 /*
  * Insert the given character, updating the current location to simplify
@@ -109,9 +109,12 @@ wins_nwstr(WINDOW *win, const wchar_t *wstr, int n)
        (void *) win, _nc_viswbufn(wstr, n), n));
 
     if (win != 0
-       && wstr != 0) {
-       if (n < 1)
+       && wstr != 0
+       && n != 0) {
+
+       if (n < 0) {
            n = INT_MAX;
+       }
        code = OK;
 
        if (n > 0) {
@@ -120,7 +123,7 @@ wins_nwstr(WINDOW *win, const wchar_t *wstr, int n)
            NCURSES_SIZE_T oy = win->_cury;
            NCURSES_SIZE_T ox = win->_curx;
 
-           for (cp = wstr; (*cp != L'\0') && ((cp - wstr) < n); cp++) {
+           for (cp = wstr; ((cp - wstr) < n) && (*cp != L'\0'); cp++) {
                int len = _nc_wacs_width(*cp);
 
                if ((len >= 0 && len != 1) || !is7bits(*cp)) {
index 8acfe7a2f4987b42147cec31e7f1e028e047ca02..379bdc2d48dd46c1ce927e8b5ac92b4b3cd9dca2 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 2007-2008,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -36,7 +36,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_key_name.c,v 1.5 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_key_name.c,v 1.6 2023/06/03 12:15:34 tom Exp $")
 
 #define MyData _nc_globals.key_name
 
@@ -46,17 +46,22 @@ key_name(wchar_t c)
     cchar_t my_cchar;
     wchar_t *my_wchars;
     size_t len;
+    NCURSES_CONST char *result = NULL;
 
     memset(&my_cchar, 0, sizeof(my_cchar));
     my_cchar.chars[0] = c;
     my_cchar.chars[1] = L'\0';
 
     my_wchars = wunctrl(&my_cchar);
+    /*
+     * wunctrl() could return a wide character rather than just a "printable"
+     * representation.  Check for that and return a corresponding multibyte
+     * character string.
+     */
     len = wcstombs(MyData, my_wchars, sizeof(MyData) - 1);
-    if (isEILSEQ(len) || (len == 0)) {
-       return 0;
+    if (!isEILSEQ(len) && (len != 0) && (len <= MB_LEN_MAX)) {
+       MyData[len] = '\0';
+       result = MyData;
     }
-
-    MyData[len] = '\0';
-    return MyData;
+    return result;
 }
index 4ea26b6034b55d621ef3db481d18da847ace0f0c..1a81fecc87058012335de5e9a6547d5b5e91692f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 2002-2011,2016 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -40,7 +40,7 @@
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_unget_wch.c,v 1.17 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: lib_unget_wch.c,v 1.18 2023/06/03 12:50:52 tom Exp $")
 
 /*
  * Wrapper for wcrtomb() which obtains the length needed for the given
@@ -60,7 +60,7 @@ _nc_wcrtomb(char *target, wchar_t source, mbstate_t * state)
     } else {
        result = (int) wcrtomb(target, source, state);
     }
-    if (!isEILSEQ(result) && (result == 0))
+    if (!isEILSEQ(result) && ((result == 0) || (result > MB_LEN_MAX)))
        result = 1;
     return (size_t) result;
 }
index 2d9531f1b864c9529a583f13839ac6241d26234c..f108b307d9a7b4a196460f29517a2e13591f30e0 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2019,2020 Thomas E. Dickey                                *
+ * Copyright 2018-2020,2023 Thomas E. Dickey                                *
  * Copyright 2002-2014,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -37,7 +37,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_vid_attr.c,v 1.30 2020/05/27 23:54:31 tom Exp $")
+MODULE_ID("$Id: lib_vid_attr.c,v 1.31 2023/04/28 20:59:34 tom Exp $")
 
 #define doPut(mode) \
        TPUTS_TRACE(#mode); \
@@ -181,6 +181,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
                    TurnOff(A_ITALIC, exit_italics_mode);
                }
 #endif
+               (void) turn_off;
            }
            previous_attr &= ALL_BUT_COLOR;
            previous_pair = 0;
@@ -212,6 +213,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
            } else if (turn_off & A_ITALIC) {
                TurnOff(A_ITALIC, exit_italics_mode);
            }
+           (void) turn_off;
        }
 #endif
        SetColorsIf((color_pair != 0) || fix_pair0, previous_attr, previous_pair);
index 94be7b563b95da95e00f6c5da944cb166483d7e1..603a6f462b78767ec7c49e7b56671044f8639f03 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 2008-2010,2014 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -36,8 +36,9 @@
 
 #include <windows.h>
 
-MODULE_ID("$Id: gettimeofday.c,v 1.6 2020/07/11 21:03:53 tom Exp $")
+MODULE_ID("$Id: gettimeofday.c,v 1.7 2023/02/25 20:05:36 tom Exp $")
 
+#if HAVE_GETTIMEOFDAY == 2
 #define JAN1970 116444736000000000LL   /* the value for 01/01/1970 00:00 */
 
 NCURSES_EXPORT(int)
@@ -53,3 +54,4 @@ gettimeofday(struct timeval *tv, void *tz GCC_UNUSED)
     tv->tv_sec = (long) ((data.since1601 - JAN1970) / 10000000LL);
     return (0);
 }
+#endif // HAVE_GETTIMEOFDAY == 2
index 55843662e8aad7331972d8278553821de5cbcc27..1a5401821e7a540436ede60ebed2492d3fc3d878 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2024 Thomas E. Dickey                                     *
  * Copyright 2010 Free Software Foundation, Inc.                            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -28,7 +28,7 @@
  ****************************************************************************/
 #include <curses.priv.h>
 
-MODULE_ID("$Id: wcwidth.c,v 1.4 2020/07/11 21:02:10 tom Exp $")
+MODULE_ID("$Id: wcwidth.c,v 1.5 2024/05/04 18:31:39 tom Exp $")
 
 #if USE_WIDEC_SUPPORT
 #define mk_wcwidth(ucs)          _nc_wcwidth(ucs)
@@ -36,10 +36,11 @@ MODULE_ID("$Id: wcwidth.c,v 1.4 2020/07/11 21:02:10 tom Exp $")
 #define mk_wcwidth_cjk(ucs)      _nc_wcwidth_cjk(ucs)
 #define mk_wcswidth_cjk(pwcs, n) _nc_wcswidth_cjk(pwcs, n)
 
-NCURSES_EXPORT(int) mk_wcwidth(wchar_t);
-NCURSES_EXPORT(int) mk_wcswidth(const wchar_t *, size_t);
-NCURSES_EXPORT(int) mk_wcwidth_cjk(wchar_t);
-NCURSES_EXPORT(int) mk_wcswidth_cjk(const wchar_t *, size_t);
+NCURSES_EXPORT(void) mk_wcwidth_init(int);
+NCURSES_EXPORT(int) mk_wcwidth(uint32_t);
+NCURSES_EXPORT(int) mk_wcswidth(const uint32_t *, size_t);
+NCURSES_EXPORT(int) mk_wcwidth_cjk(uint32_t);
+NCURSES_EXPORT(int) mk_wcswidth_cjk(const uint32_t *, size_t);
 
 #include <wcwidth.h>
 #else
index 45aadf2f596a3845a79cb99824e40780b903c5fc..0a43588b17143446f14a9bae6a652b3e426c4d37 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018,2020 Thomas E. Dickey                                     *
+ * Copyright 2018-2020,2023 Thomas E. Dickey                                *
  * Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -48,7 +48,7 @@
 
 #define CUR TerminalType(my_term).
 
-MODULE_ID("$Id: win32_driver.c,v 1.2 2020/11/21 23:35:56 tom Exp $")
+MODULE_ID("$Id: win32_driver.c,v 1.4 2023/09/16 16:29:24 tom Exp $")
 
 #define WINMAGIC NCDRV_MAGIC(NCDRV_WINCONSOLE)
 #define EXP_OPTIMIZE 0
@@ -393,7 +393,7 @@ wcon_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
 
        Width = screen_columns(sp);
        Height = screen_lines(sp);
-       nonempty = min(Height, NewScreen(sp)->_maxy + 1);
+       nonempty = Min(Height, NewScreen(sp)->_maxy + 1);
 
        T(("... %dx%d clear cur:%d new:%d",
           Height, Width,
@@ -924,11 +924,14 @@ wcon_initmouse(TERMINAL_CONTROL_BLOCK * TCB)
 {
     SCREEN *sp;
 
+    T((T_CALLED("win32con::wcon_initmouse(%p)"), TCB));
+
     if (validateConsoleHandle()) {
        SetSP();
 
        sp->_mouse_type = M_TERM_DRIVER;
     }
+    returnVoid;
 }
 
 static int
@@ -939,6 +942,7 @@ wcon_testmouse(TERMINAL_CONTROL_BLOCK * TCB,
     int rc = 0;
     SCREEN *sp;
 
+    T((T_CALLED("win32con::wcon_testmouse(%p)"), TCB));
     if (validateConsoleHandle()) {
        SetSP();
 
@@ -953,7 +957,7 @@ wcon_testmouse(TERMINAL_CONTROL_BLOCK * TCB,
        }
     }
 
-    return rc;
+    returnCode(rc);
 }
 
 static int
index ad9e629a190446abd54289a5e17fe8ddb6681004..2425b3a44ce6f21eb2261d2a73a2cc4bf64b60ee 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2021 Thomas E. Dickey                                *
+ * Copyright 2018-2021,2023 Thomas E. Dickey                                *
  * Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -55,7 +55,9 @@
 
 #define CUR TerminalType(my_term).
 
-MODULE_ID("$Id: win_driver.c,v 1.67 2021/09/04 10:54:35 tom Exp $")
+#define CONTROL_PRESSED (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED)
+
+MODULE_ID("$Id: win_driver.c,v 1.74 2023/09/16 16:27:44 tom Exp $")
 
 #define TypeAlloca(type,count) (type*) _alloca(sizeof(type) * (size_t) (count))
 
@@ -82,33 +84,34 @@ static bool okConsoleHandle(TERMINAL_CONTROL_BLOCK *);
 #define write_screen WriteConsoleOutput
 #define read_screen  ReadConsoleOutput
 #endif
-
+/* *INDENT-OFF* */
 static const LONG keylist[] =
 {
-    GenMap(VK_PRIOR, KEY_PPAGE),
-    GenMap(VK_NEXT, KEY_NPAGE),
-    GenMap(VK_END, KEY_END),
-    GenMap(VK_HOME, KEY_HOME),
-    GenMap(VK_LEFT, KEY_LEFT),
-    GenMap(VK_UP, KEY_UP),
-    GenMap(VK_RIGHT, KEY_RIGHT),
-    GenMap(VK_DOWN, KEY_DOWN),
+    GenMap(VK_PRIOR,  KEY_PPAGE),
+    GenMap(VK_NEXT,   KEY_NPAGE),
+    GenMap(VK_END,    KEY_END),
+    GenMap(VK_HOME,   KEY_HOME),
+    GenMap(VK_LEFT,   KEY_LEFT),
+    GenMap(VK_UP,     KEY_UP),
+    GenMap(VK_RIGHT,  KEY_RIGHT),
+    GenMap(VK_DOWN,   KEY_DOWN),
     GenMap(VK_DELETE, KEY_DC),
     GenMap(VK_INSERT, KEY_IC)
 };
 static const LONG ansi_keys[] =
 {
-    GenMap(VK_PRIOR, 'I'),
-    GenMap(VK_NEXT, 'Q'),
-    GenMap(VK_END, 'O'),
-    GenMap(VK_HOME, 'H'),
-    GenMap(VK_LEFT, 'K'),
-    GenMap(VK_UP, 'H'),
-    GenMap(VK_RIGHT, 'M'),
-    GenMap(VK_DOWN, 'P'),
+    GenMap(VK_PRIOR,  'I'),
+    GenMap(VK_NEXT,   'Q'),
+    GenMap(VK_END,    'O'),
+    GenMap(VK_HOME,   'H'),
+    GenMap(VK_LEFT,   'K'),
+    GenMap(VK_UP,     'H'),
+    GenMap(VK_RIGHT,  'M'),
+    GenMap(VK_DOWN,   'P'),
     GenMap(VK_DELETE, 'S'),
     GenMap(VK_INSERT, 'R')
 };
+/* *INDENT-ON* */
 #define N_INI ((int)array_length(keylist))
 #define FKEYS 24
 #define MAPSIZE (FKEYS + N_INI)
@@ -123,7 +126,6 @@ static struct {
     BOOL buffered;
     BOOL window_only;
     BOOL progMode;
-    BOOL isMinTTY;
     BOOL isTermInfoConsole;
     HANDLE out;
     HANDLE inp;
@@ -486,7 +488,7 @@ wcon_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
 
        Width = screen_columns(sp);
        Height = screen_lines(sp);
-       nonempty = min(Height, NewScreen(sp)->_maxy + 1);
+       nonempty = Min(Height, NewScreen(sp)->_maxy + 1);
 
        T(("... %dx%d clear cur:%d new:%d",
           Height, Width,
@@ -610,6 +612,12 @@ wcon_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
     returnCode(result);
 }
 
+#ifdef __MING32__
+#define SysISATTY(fd) _isatty(fd)
+#else
+#define SysISATTY(fd) isatty(fd)
+#endif
+
 static bool
 wcon_CanHandle(TERMINAL_CONTROL_BLOCK * TCB,
               const char *tname,
@@ -641,6 +649,8 @@ wcon_CanHandle(TERMINAL_CONTROL_BLOCK * TCB,
        }
     } else if (tname != 0 && stricmp(tname, "unknown") == 0) {
        code = TRUE;
+    } else if (SysISATTY(TCB->term.Filedes)) {
+       code = TRUE;
     }
 
     /*
@@ -1476,10 +1486,10 @@ Adjust(int milliseconds, int diff)
                     FROM_LEFT_4TH_BUTTON_PRESSED | \
                     RIGHTMOST_BUTTON_PRESSED)
 
-static int
+static mmask_t
 decode_mouse(SCREEN *sp, int mask)
 {
-    int result = 0;
+    mmask_t result = 0;
 
     (void) sp;
     assert(sp && console_initialized);
@@ -1668,14 +1678,14 @@ handle_mouse(SCREEN *sp, MOUSE_EVENT_RECORD mer)
 
        if (sp->_drv_mouse_new_buttons) {
 
-           work.bstate |= (mmask_t) decode_mouse(sp, sp->_drv_mouse_new_buttons);
+           work.bstate |= decode_mouse(sp, sp->_drv_mouse_new_buttons);
 
        } else {
 
            /* cf: BUTTON_PRESSED, BUTTON_RELEASED */
-           work.bstate |= (mmask_t) (decode_mouse(sp,
-                                                  sp->_drv_mouse_old_buttons)
-                                     >> 1);
+           work.bstate |= (decode_mouse(sp,
+                                        sp->_drv_mouse_old_buttons)
+                           >> 1);
 
            result = TRUE;
        }
@@ -1957,11 +1967,6 @@ _nc_mingw_isatty(int fd)
 {
     int result = 0;
 
-#ifdef __MING32__
-#define SysISATTY(fd) _isatty(fd)
-#else
-#define SysISATTY(fd) isatty(fd)
-#endif
     if (SysISATTY(fd)) {
        result = 1;
     } else {
@@ -2126,9 +2131,9 @@ _nc_mingw_console_read(
                *buf = (int) inp_rec.Event.KeyEvent.uChar.AsciiChar;
                vk = inp_rec.Event.KeyEvent.wVirtualKeyCode;
                /*
-                * There are 24 virtual function-keys, and typically
-                * 12 function-keys on a keyboard.  Use the shift-modifier
-                * to provide the remaining 12 keys.
+                * There are 24 virtual function-keys (defined in winuser.h),
+                * and typically 12 function-keys on a keyboard.  Use the
+                * shift-modifier to provide the remaining keys.
                 */
                if (vk >= VK_F1 && vk <= VK_F12) {
                    if (inp_rec.Event.KeyEvent.dwControlKeyState & SHIFT_PRESSED) {
@@ -2145,6 +2150,11 @@ _nc_mingw_console_read(
                        ungetch('\0');
                        *buf = AnsiKey(vk);
                    }
+               } else if (vk == VK_BACK) {
+                   if (!(inp_rec.Event.KeyEvent.dwControlKeyState
+                         & (SHIFT_PRESSED | CONTROL_PRESSED))) {
+                       *buf = KEY_BACKSPACE;
+                   }
                }
                break;
            } else if (inp_rec.EventType == MOUSE_EVENT) {
@@ -2172,9 +2182,6 @@ InitConsole(void)
        BOOL b;
 
        START_TRACE();
-       if (_nc_mingw_isatty(0)) {
-           CON.isMinTTY = TRUE;
-       }
 
        for (i = 0; i < (N_INI + FKEYS); i++) {
            if (i < N_INI) {
@@ -2213,14 +2220,14 @@ InitConsole(void)
        for (i = 0; i < NUMPAIRS; i++)
            CON.pairs[i] = a;
 
-       CON.inp = GetStdHandle(STD_INPUT_HANDLE);
-       CON.out = GetStdHandle(STD_OUTPUT_HANDLE);
-
        b = AllocConsole();
 
        if (!b)
            b = AttachConsole(ATTACH_PARENT_PROCESS);
 
+       CON.inp = GetDirectHandle("CONIN$", FILE_SHARE_READ);
+       CON.out = GetDirectHandle("CONOUT$", FILE_SHARE_WRITE);
+
        if (getenv("NCGDB") || getenv("NCURSES_CONSOLE2")) {
            T(("... will not buffer console"));
            buffered = FALSE;
@@ -2228,7 +2235,7 @@ InitConsole(void)
        } else {
            T(("... creating console buffer"));
            CON.hdl = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE,
-                                               0,
+                                               FILE_SHARE_READ | FILE_SHARE_WRITE,
                                                NULL,
                                                CONSOLE_TEXTMODE_BUFFER,
                                                NULL);
index a9d533a3699aa52985c77e052cebf1b47a20c70b..8a2e6afdec19d88eecc7d15d5900f74755068082 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.4+20230114) unstable; urgency=low
+ncurses6 (6.5+20240504) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 14 Jan 2023 07:04:16 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 04 May 2024 06:21:09 -0400
 
 ncurses6 (5.9+20131005) unstable; urgency=low
 
index 3abe75f8203a8517c0add3b5e907bcfb69ea8726..32396640b07c8a21b5d75e2927d547ea94024dc8 100644 (file)
@@ -5,12 +5,12 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
 
 -------------------------------------------------------------------------------
 Files: *
-Copyright: 2017-2022,2023 by Thomas E. Dickey
+Copyright: 2017-2023,2024 by Thomas E. Dickey
 Copyright: 1998-2016,2017 Free Software Foundation, Inc.
 License: X11
 
 Files: aclocal.m4 package
-Copyright: 1996-2022,2023 by Thomas E. Dickey
+Copyright: 1996-2023,2024 by Thomas E. Dickey
 License: X11
 
 Files: doc/html/NCURSES-Programming-HOWTO.html
index e5365f9bda672f5fa372d38ed64c9c546e139eb6..8c266a93af08260ccfb0adbabf26ef1a0278cbe3 100755 (executable)
@@ -49,7 +49,7 @@ CONFIG_OPTIONS = \
        --with-abi-version=$(MY_ABI) \
        --with-cxx-shared \
        --with-develop \
-       --with-fallbacks=unknown,rxvt \
+       --with-fallbacks=unknown,ms-terminal,xterm-256color \
        --with-tic-path=/usr/bin/tic$(MY_ABI) \
        --with-infocmp-path=/usr/bin/infocmp$(MY_ABI) \
        --with-shared \
index a9d533a3699aa52985c77e052cebf1b47a20c70b..8a2e6afdec19d88eecc7d15d5900f74755068082 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.4+20230114) unstable; urgency=low
+ncurses6 (6.5+20240504) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 14 Jan 2023 07:04:16 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 04 May 2024 06:21:09 -0400
 
 ncurses6 (5.9+20131005) unstable; urgency=low
 
index 3abe75f8203a8517c0add3b5e907bcfb69ea8726..32396640b07c8a21b5d75e2927d547ea94024dc8 100644 (file)
@@ -5,12 +5,12 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
 
 -------------------------------------------------------------------------------
 Files: *
-Copyright: 2017-2022,2023 by Thomas E. Dickey
+Copyright: 2017-2023,2024 by Thomas E. Dickey
 Copyright: 1998-2016,2017 Free Software Foundation, Inc.
 License: X11
 
 Files: aclocal.m4 package
-Copyright: 1996-2022,2023 by Thomas E. Dickey
+Copyright: 1996-2023,2024 by Thomas E. Dickey
 License: X11
 
 Files: doc/html/NCURSES-Programming-HOWTO.html
index d0c4ed8eff12c54a84f4e80d034d108eab9cf693..3a79517cf3483d291234a4d539fcc79938fa87e1 100755 (executable)
@@ -49,7 +49,7 @@ CONFIG_OPTIONS = \
        --with-abi-version=$(MY_ABI) \
        --with-cxx-shared \
        --with-develop \
-       --with-fallbacks=unknown,rxvt \
+       --with-fallbacks=unknown,ms-terminal,xterm-256color \
        --with-tic-path=/usr/bin/tic$(MY_ABI) \
        --with-infocmp-path=/usr/bin/infocmp$(MY_ABI) \
        --with-shared \
index f6300417f62242523446698e10bf3a69babef9da..f1521e690d0e912a775e2a6a974ce7bca1820620 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.4+20230114) unstable; urgency=low
+ncurses6 (6.5+20240504) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 14 Jan 2023 07:04:16 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 04 May 2024 06:21:09 -0400
 
 ncurses6 (5.9+20120608) unstable; urgency=low
 
index 3abe75f8203a8517c0add3b5e907bcfb69ea8726..32396640b07c8a21b5d75e2927d547ea94024dc8 100644 (file)
@@ -5,12 +5,12 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
 
 -------------------------------------------------------------------------------
 Files: *
-Copyright: 2017-2022,2023 by Thomas E. Dickey
+Copyright: 2017-2023,2024 by Thomas E. Dickey
 Copyright: 1998-2016,2017 Free Software Foundation, Inc.
 License: X11
 
 Files: aclocal.m4 package
-Copyright: 1996-2022,2023 by Thomas E. Dickey
+Copyright: 1996-2023,2024 by Thomas E. Dickey
 License: X11
 
 Files: doc/html/NCURSES-Programming-HOWTO.html
index 2ce22e4fd6cfb816f39fda837f8f4413f7ae3269..8bd49457f089a1ef61c08c8c4bc30ba6518730c6 100644 (file)
@@ -1,17 +1,9 @@
 # This is intentional.
 ncurses6: package-name-doesnt-match-sonames libformw6-6 libmenuw6-6 libncurses++w6-6 libncursesw6-6 libpanelw6-6 libticw6-6 libtinfow6-6
 
-# This worked around a bug in Debian's build-scripts.
-#ncurses6: latest-debian-changelog-entry-changed-to-native
-
-ncurses6: hardening-no-fortify-functions usr/lib/libncurses++w6.so.6.1
-#ncurses6: hardening-no-fortify-functions usr/lib/libformw6.so.6.1
-ncurses6: hardening-no-fortify-functions usr/lib/libmenuw6.so.6.1
-
 # This is intentional.
 ncurses6: binary-without-manpage
 ncurses6: non-dev-pkg-with-shlib-symlink
-ncurses6: embedded-library ncurses usr/lib/libtinfow6.so.6.1
-#ncurses6: postinst-must-call-ldconfig usr/lib/libtinfow6.so.6.1
+ncurses6: embedded-library ncurses [usr/lib/x86_64-linux-gnu/libtinfow6.so.6.4]
 
 # vile: confmode
index b3ecaa83bc80e0ac7f0c4147ea21533cbb879618..5a1b83bd49b51baa59a1dff2e493a622e4d14f67 100644 (file)
@@ -1,17 +1,9 @@
 # This is intentional.
 ncursest6: package-name-doesnt-match-sonames libformtw6-6 libmenutw6-6 libncurses++tw6-6 libncursestw6-6 libpaneltw6-6 libtictw6-6 libtinfotw6-6
 
-# This worked around a bug in Debian's build-scripts.
-#ncursest6: latest-debian-changelog-entry-changed-to-native
-
-ncursest6: hardening-no-fortify-functions usr/lib/libncurses++tw6.so.6.1
-#ncursest6: hardening-no-fortify-functions usr/lib/libformtw6.so.6.1
-ncursest6: hardening-no-fortify-functions usr/lib/libmenutw6.so.6.1
-
 # This is intentional.
 ncursest6: binary-without-manpage
 ncursest6: non-dev-pkg-with-shlib-symlink
-ncursest6: embedded-library ncurses usr/lib/libtinfotw6.so.6.1
-#ncursest6: postinst-must-call-ldconfig usr/lib/libtinfotw6.so.6.1
+ncursest6: embedded-library ncurses [usr/lib/x86_64-linux-gnu/libtinfotw6.so.6.4]
 
 # vile: confmode
index 8bd2135d9341563d66e960f33e6e3d749e56de7f..648939b22fbac080e2301fac36fca05f6af20ddc 100755 (executable)
@@ -1,9 +1,16 @@
 #!/usr/bin/make -f
-# $Id: rules,v 1.45 2022/10/22 18:35:38 tom Exp $
+# $Id: rules,v 1.53 2024/04/08 15:31:32 tom Exp $
 
 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE=1
 
+SHELL = /bin/bash
+DPKG_EXPORT_BUILDFLAGS = 1
+
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+
+include /usr/share/dpkg/buildflags.mk
+
 # packages
 PACKAGES.indep = ncurses6-doc ncurses6-doc-html
 PACKAGES.arch  = ncurses6 ncursest6
@@ -25,10 +32,7 @@ MYDATA=/usr/local/ncurses/share/terminfo
 NORMAL_DIR=$(CURDIR)/debian/ncurses$(MY_ABI)
 THREAD_DIR=$(CURDIR)/debian/ncursest$(MY_ABI)
 
-CFLAGS   = $(shell dpkg-buildflags --get CFLAGS) $(CC_NORMAL)
-CXXFLAGS = $(shell dpkg-buildflags --get CXXFLAGS)
-CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS)
-LDFLAGS  = $(shell dpkg-buildflags --get LDFLAGS)
+CFLAGS   += $(CC_NORMAL)
 
 ifneq ($(MY_DIR),/usr)
        RPATH_ENV = RPATH_LIST=../lib:$(LIBDIR)
@@ -64,7 +68,10 @@ configure = \
                --disable-macros  \
                --disable-overwrite  \
                --disable-relink \
+               --disable-root-access \
+               --disable-root-environ \
                --disable-termcap \
+               --enable-check-size \
                --enable-hard-tabs \
                --enable-opaque-curses \
                --enable-opaque-form \
@@ -93,7 +100,8 @@ configure = \
                --with-xterm-kbs=DEL \
                --without-ada \
                --without-debug \
-               --without-manpage-aliases \
+               --with-manpage-aliases \
+               --with-manpage-symlinks \
                --without-normal
 
 NCURSES6_DIR = $(CURDIR)/debian/ncurses6
@@ -212,12 +220,13 @@ install-ncurses6-doc-stamp: build-ncurses6-stamp
        dh_prep        $(verbose) -pncurses6-doc
 
        $(MAKE) -C t/ncurses6 install.man DESTDIR=$(NCURSES6_DIR)-doc
+       find $(NCURSES6_DIR)-doc -name 'ncursesw6-config.*' -print -delete
 
        cd $(NCURSES6_DIR)-doc/usr/share/man/man1 && ln -sf tset6.1.gz reset6.1.gz
 
        touch $@
 
-HTML_DESTDIR=$(NCURSES6_DIR)-doc-html/usr/share/ncurses6-doc-html
+HTML_DESTDIR=$(NCURSES6_DIR)-doc-html/usr/share/doc/ncurses6-doc-html
 install-ncurses6-doc-html-stamp: build-ncurses6-stamp
        dh_testdir
        dh_testroot
@@ -226,6 +235,8 @@ install-ncurses6-doc-html-stamp: build-ncurses6-stamp
 
        cd doc/html && find * -type d | sort | xargs -I{} mkdir -p -v $(HTML_DESTDIR)/{}
        cd doc/html && find * -type f -name '*.html' | sort | xargs -I{} install -m 644 -p -v -T {} $(HTML_DESTDIR)/{}
+       find $(HTML_DESTDIR) -type d -empty -delete -print
+       find $(HTML_DESTDIR) -type d -empty -delete -print
 
        touch $@
 
index ea4cc26c2b078eaed79d4041ddd46c54037ee443..efffabd76a7cde62bcb1696b8c0fa36541f23ad2 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.561 2023/01/14 12:04:16 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.646 2024/05/04 10:21:09 tom Exp $\r
 \r
 ; TODO add examples\r
 ; TODO bump ABI to 6\r
@@ -8,9 +8,9 @@
 !define EXENAME "ncurses.exe"\r
 \r
 !define VERSION_MAJOR "6"\r
-!define VERSION_MINOR "4"\r
-!define VERSION_YYYY  "2023"\r
-!define VERSION_MMDD  "0114"\r
+!define VERSION_MINOR "5"\r
+!define VERSION_YYYY  "2024"\r
+!define VERSION_MMDD  "0504"\r
 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
 \r
 !define MY_ABI   "5"\r
index 35e50c2426f7de9b7f4ff3deef746fb8d1d516c0..322299dabd0b2ff25d3cf3e777460f299e9ff2ac 100644 (file)
@@ -2,12 +2,12 @@
 
 Summary: shared libraries for terminal handling
 Name: mingw32-ncurses6
-Version: 6.4
-Release: 20230114
+Version: 6.5
+Release: 20240504
 License: X11
 Group: Development/Libraries
-Source: ncurses-%{version}-%{release}.tgz
-# URL: https://invisible-island.net/ncurses/
+URL: https://invisible-island.net/ncurses/
+Source: https://invisible-island.net/archives/ncurses/ncurses-%{version}-%{release}.tgz
 
 BuildRequires:  mingw32-filesystem >= 95
 BuildRequires:  mingw32-gcc
@@ -128,9 +128,6 @@ for name in $RPM_BUILD_ROOT%{mingw64_bindir}/*-config; \
        done
 popd
 
-%clean
-rm -rf $RPM_BUILD_ROOT
-
 %files -n mingw32-ncurses6
 %defattr(-,root,root,-)
 %{_bindir}/%{mingw32_target}-*
@@ -147,6 +144,9 @@ rm -rf $RPM_BUILD_ROOT
 
 %changelog
 
+* Sat Feb 25 2023 Thomas Dickey
+- amend URLs per rpmlint
+
 * Sun Jun 30 2019 Thomas E. Dickey
 - use tic-path and infocmp-path options for fallbacks
 
index 7eb1ed1df6b2c404c703e946ada2c3bf1b374056..68de9c4379076c00628150160c76e45e29227cf1 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: ncurses.map,v 1.55 2021/10/10 15:22:33 tom Exp $
+# $Id: ncurses.map,v 1.58 2024/04/27 14:33:24 tom Exp $
 # script for shared library symbol-versioning using ld
 #
 # This file was generated by ncu-mapsyms
@@ -1214,6 +1214,20 @@ NCURSES_TINFO_6.2.20211010 {
                _nc_safe_fopen;
                _nc_safe_open3;
                _nc_tiparm;
+} NCURSES_TINFO_6.2.20200212;
+
+NCURSES_TINFO_6.5.20240427 {
+       global:
+               is_cbreak;
+               is_cbreak_sp;
+               is_echo;
+               is_echo_sp;
+               is_nl;
+               is_nl_sp;
+               is_raw;
+               is_raw_sp;
+               tiparm_s;
+               tiscan_s;
        local:
                _*;
-} NCURSES_TINFO_6.2.20200212;
+} NCURSES_TINFO_6.2.20211010;
index d32133f401e2b62d9b6bb268fcec8bb5aa8fd1b6..8754f296d4071435cc754fb5da7273d0ee782c3e 100644 (file)
@@ -1,11 +1,11 @@
 Summary: shared libraries for terminal handling
 Name: ncurses6
-Version: 6.4
-Release: 20230114
+Version: 6.5
+Release: 20240504
 License: X11
 Group: Development/Libraries
-Source: ncurses-%{version}-%{release}.tgz
-# URL: https://invisible-island.net/ncurses/
+URL: https://invisible-island.net/ncurses/
+Source: https://invisible-island.net/archives/ncurses/ncurses-%{version}-%{release}.tgz
 
 %global MY_ABI 6
 
@@ -69,15 +69,17 @@ This package is used for testing ABI %{MY_ABI}.
        --disable-leaks \\\
        --disable-macros  \\\
        --disable-overwrite  \\\
-       %{_test_relink}  \\\
+       --disable-root-access \\\
+       --disable-root-environ \\\
+       --disable-rpath \\\
        --disable-termcap \\\
+       %{_test_relink}  \\\
        --enable-hard-tabs \\\
        --enable-opaque-curses \\\
        --enable-opaque-form \\\
        --enable-opaque-menu \\\
        --enable-opaque-panel \\\
        --enable-pc-files \\\
-       --disable-rpath \\\
        --enable-stdnoreturn \\\
        --enable-warnings \\\
        --enable-wgetch-events \\\
@@ -124,14 +126,6 @@ rm -f test/ncurses
 %endif
 %endif
 
-%clean
-if rm -rf $RPM_BUILD_ROOT; then
-  echo OK
-else
-  find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1
-fi
-exit 0
-
 %files
 %defattr(-,root,root,-)
 %{_bindir}/*
@@ -140,6 +134,9 @@ exit 0
 
 %changelog
 
+* Sat Feb 25 2023 Thomas Dickey
+- amend URLs per rpmlint
+
 * Sat Oct 16 2021 Thomas Dickey
 - disable rpath to address QA_RPATHS=1 warning.
 
index d2f6fbc1fd3b0760420660cf3c9c3732c864d2f8..aaa1621fb5ab6908739351261af073e2c68d538a 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: ncurses.sym,v 1.37 2021/08/19 23:50:26 tom Exp $
+# $Id: ncurses.sym,v 1.39 2023/08/12 15:29:01 tom Exp $
 # script for shared library symbol-visibility using libtool
 #
 # This file was generated by ncu-mapsyms
@@ -441,16 +441,24 @@ insstr
 instr
 intrflush
 intrflush_sp
+is_cbreak
+is_cbreak_sp
 is_cleared
+is_echo
+is_echo_sp
 is_idcok
 is_idlok
 is_immedok
 is_keypad
 is_leaveok
 is_linetouched
+is_nl
+is_nl_sp
 is_nodelay
 is_notimeout
 is_pad
+is_raw
+is_raw_sp
 is_scrollok
 is_subwin
 is_syncok
@@ -782,6 +790,8 @@ tigetstr
 tigetstr_sp
 timeout
 tiparm
+tiparm_s
+tiscan_s
 top_panel
 top_row
 touchline
index 205265de50b95782df7eb154667059011092b3c2..1dfbe53254d74dce7eccc092264da10a64f033e3 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: ncursest.map,v 1.53 2021/10/10 15:22:33 tom Exp $
+# $Id: ncursest.map,v 1.56 2024/04/27 14:33:24 tom Exp $
 # script for shared library symbol-versioning using ld
 #
 # This file was generated by ncu-mapsyms
@@ -493,9 +493,23 @@ NCURSES_TINFO_6.2.20211010 {
                _nc_safe_fopen;
                _nc_safe_open3;
                _nc_tiparm;
+} NCURSES_TINFO_6.2.20200212;
+
+NCURSES_TINFO_6.5.20240427 {
+       global:
+               is_cbreak;
+               is_cbreak_sp;
+               is_echo;
+               is_echo_sp;
+               is_nl;
+               is_nl_sp;
+               is_raw;
+               is_raw_sp;
+               tiparm_s;
+               tiscan_s;
        local:
                _*;
-} NCURSES_TINFO_6.2.20200212;
+} NCURSES_TINFO_6.2.20211010;
 
 NCURSEST_5.7.20081102 {
        global:
index 72ee72851c5276d6505543da0dda97a1527a77ab..f6f76b52c788e08d046199be6168cc99c4b5ad8f 100644 (file)
@@ -1,7 +1,7 @@
 Summary: Curses library with POSIX thread support.
 Name: ncursest6
-Version: 6.4
-Release: 20230114
+Version: 6.5
+Release: 20240504
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index f50ce3d020c9da502ec7df82cd7cfe528b5ab971..9423d37910212bd4269ce2708ebf226ef666bdf0 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: ncursest.sym,v 1.41 2021/08/19 23:50:26 tom Exp $
+# $Id: ncursest.sym,v 1.43 2023/08/12 15:28:50 tom Exp $
 # script for shared library symbol-visibility using libtool
 #
 # This file was generated by ncu-mapsyms
@@ -450,16 +450,24 @@ insstr
 instr
 intrflush
 intrflush_sp
+is_cbreak
+is_cbreak_sp
 is_cleared
+is_echo
+is_echo_sp
 is_idcok
 is_idlok
 is_immedok
 is_keypad
 is_leaveok
 is_linetouched
+is_nl
+is_nl_sp
 is_nodelay
 is_notimeout
 is_pad
+is_raw
+is_raw_sp
 is_scrollok
 is_subwin
 is_syncok
@@ -781,6 +789,8 @@ tigetstr
 tigetstr_sp
 timeout
 tiparm
+tiparm_s
+tiscan_s
 top_panel
 top_row
 touchline
index f514b97f095a53cedef332f76e2c8f75da0bb34d..116957f549990210d617345940af939ae60abb98 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: ncursestw.map,v 1.56 2021/10/10 15:22:33 tom Exp $
+# $Id: ncursestw.map,v 1.59 2024/04/27 14:33:24 tom Exp $
 # script for shared library symbol-versioning using ld
 #
 # This file was generated by ncu-mapsyms
@@ -501,9 +501,23 @@ NCURSES_TINFO_6.2.20211010 {
                _nc_safe_open3;
                erasewchar_sp;
                killwchar_sp;
+} NCURSES_TINFO_6.2.20200212;
+
+NCURSES_TINFO_6.5.20240427 {
+       global:
+               is_cbreak;
+               is_cbreak_sp;
+               is_echo;
+               is_echo_sp;
+               is_nl;
+               is_nl_sp;
+               is_raw;
+               is_raw_sp;
+               tiparm_s;
+               tiscan_s;
        local:
                _*;
-} NCURSES_TINFO_6.2.20200212;
+} NCURSES_TINFO_6.2.20211010;
 
 NCURSESTW_5.7.20081102 {
        global:
index 1668f409d22ed020e3abc252adbb8d59e5bf3f44..b05baecc18875f7a6eebb8bf1164adc777c4b33a 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: ncursestw.sym,v 1.41 2021/08/19 23:50:26 tom Exp $
+# $Id: ncursestw.sym,v 1.43 2023/08/12 15:29:11 tom Exp $
 # script for shared library symbol-visibility using libtool
 #
 # This file was generated by ncu-mapsyms
@@ -486,16 +486,24 @@ instr
 intrflush
 intrflush_sp
 inwstr
+is_cbreak
+is_cbreak_sp
 is_cleared
+is_echo
+is_echo_sp
 is_idcok
 is_idlok
 is_immedok
 is_keypad
 is_leaveok
 is_linetouched
+is_nl
+is_nl_sp
 is_nodelay
 is_notimeout
 is_pad
+is_raw
+is_raw_sp
 is_scrollok
 is_subwin
 is_syncok
@@ -863,6 +871,8 @@ tigetstr
 tigetstr_sp
 timeout
 tiparm
+tiparm_s
+tiscan_s
 top_panel
 top_row
 touchline
index 13e8faf48c8d4e57b9f0f0fa6e8302987f2e8085..55834182dfd269a24fcbeb9ba268160f691d30e0 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: ncursesw.map,v 1.59 2021/10/10 15:22:33 tom Exp $
+# $Id: ncursesw.map,v 1.62 2024/04/27 14:33:24 tom Exp $
 # script for shared library symbol-versioning using ld
 #
 # This file was generated by ncu-mapsyms
@@ -495,9 +495,23 @@ NCURSES_TINFO_6.2.20211010 {
                _nc_safe_open3;
                erasewchar_sp;
                killwchar_sp;
+} NCURSES_TINFO_6.2.20200212;
+
+NCURSES_TINFO_6.5.20240427 {
+       global:
+               is_cbreak;
+               is_cbreak_sp;
+               is_echo;
+               is_echo_sp;
+               is_nl;
+               is_nl_sp;
+               is_raw;
+               is_raw_sp;
+               tiparm_s;
+               tiscan_s;
        local:
                _*;
-} NCURSES_TINFO_6.2.20200212;
+} NCURSES_TINFO_6.2.20211010;
 
 NCURSESW_5.1.20000708 {
        global:
index a17fd794804053b6073371a5e732b1e86884abce..8ef771f9ba07de741069195c02b65adf631ad019 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: ncursesw.sym,v 1.40 2021/08/19 23:50:26 tom Exp $
+# $Id: ncursesw.sym,v 1.42 2023/08/12 15:28:30 tom Exp $
 # script for shared library symbol-visibility using libtool
 #
 # This file was generated by ncu-mapsyms
@@ -474,16 +474,24 @@ instr
 intrflush
 intrflush_sp
 inwstr
+is_cbreak
+is_cbreak_sp
 is_cleared
+is_echo
+is_echo_sp
 is_idcok
 is_idlok
 is_immedok
 is_keypad
 is_leaveok
 is_linetouched
+is_nl
+is_nl_sp
 is_nodelay
 is_notimeout
 is_pad
+is_raw
+is_raw_sp
 is_scrollok
 is_subwin
 is_syncok
@@ -859,6 +867,8 @@ tigetstr
 tigetstr_sp
 timeout
 tiparm
+tiparm_s
+tiscan_s
 top_panel
 top_row
 touchline
index d818af4e8154a80a7759030a395b283131219b57..218e64e0c426ae708cadc52e01025a1ddb5f5ac3 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.111 2021/07/03 15:45:33 tom Exp $
+# $Id: Makefile.in,v 1.115 2024/04/08 18:33:54 tom Exp $
 ##############################################################################
-# Copyright 2020,2021 Thomas E. Dickey                                       #
+# Copyright 2020-2021,2024 Thomas E. Dickey                                  #
 # Copyright 1998-2016,2018 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -93,7 +93,8 @@ CPP           = @CPP@
 CFLAGS         = @CFLAGS@ @EXTRA_CFLAGS@
 
 INCDIR         = $(top_srcdir)/include
-CPPFLAGS       = -DHAVE_CONFIG_H -I../progs @CPPFLAGS@
+NCUDIR         = $(top_srcdir)/ncurses
+CPPFLAGS       = -DHAVE_CONFIG_H -I../progs -I../ncurses -I$(top_srcdir)/ncurses @CPPFLAGS@
 
 CCFLAGS                = $(CPPFLAGS) $(CFLAGS)
 
@@ -145,10 +146,24 @@ PROGS = $(PUT_PROGS) $(GET_PROGS)
 DEPS_CURSES = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
 
 HEADER_DEPS    = \
-       ../include/curses.h \
+       $(INCDIR)/nc_access.h \
+       $(INCDIR)/nc_alloc.h \
+       $(INCDIR)/nc_panel.h \
+       $(INCDIR)/nc_string.h \
+       $(INCDIR)/nc_termios.h \
+       $(INCDIR)/nc_tparm.h \
        $(INCDIR)/term_entry.h \
        $(INCDIR)/tic.h \
-       $(INCDIR)/nc_alloc.h
+       $(NCUDIR)/curses.priv.h \
+       $(NCUDIR)/new_pair.h \
+       $(NCUDIR)/term.priv.h \
+       $(srcdir)/progs.priv.h \
+       ../include/curses.h \
+       ../include/ncurses_cfg.h \
+       ../include/ncurses_def.h \
+       ../include/ncurses_dll.h \
+       ../include/term.h \
+       ../include/unctrl.h
 
 ################################################################################
 
old mode 100644 (file)
new mode 100755 (executable)
index 664df32b382e3583b529f4691f3d3ad8609ca212..be332d2e7765c28cd4082329bff1620c19dfd704 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -40,7 +40,7 @@
 #include <termsort.h>          /* this C file is generated */
 #include <parametrized.h>      /* so is this */
 
-MODULE_ID("$Id: dump_entry.c,v 1.190 2022/01/22 21:23:58 tom Exp $")
+MODULE_ID("$Id: dump_entry.c,v 1.196 2023/05/27 20:13:10 tom Exp $")
 
 #define DISCARD(string) string = ABSENT_STRING
 #define PRINTF (void) printf
@@ -933,7 +933,7 @@ fmt_entry(TERMTYPE2 *tterm,
 
     strcpy_DYN(&outbuf, 0);
     if (content_only) {
-       column = indent;        /* FIXME: workaround to prevent empty lines */
+       column = indent;        /* workaround to prevent empty lines */
     } else {
        strcpy_DYN(&outbuf, tterm->term_names);
 
@@ -1311,7 +1311,7 @@ fmt_entry(TERMTYPE2 *tterm,
 }
 
 static bool
-kill_string(TERMTYPE2 *tterm, char *cap)
+kill_string(TERMTYPE2 *tterm, const char *const cap)
 {
     unsigned n;
     for (n = 0; n < NUM_STRINGS(tterm); ++n) {
@@ -1553,6 +1553,7 @@ dump_entry(TERMTYPE2 *tterm,
     save_sgr = set_attributes;
 
     if ((FMT_ENTRY() > critlen)
+       && TcOutput()
        && limited) {
 
        save_tterm = *tterm;
@@ -1651,15 +1652,25 @@ dump_entry(TERMTYPE2 *tterm,
 }
 
 void
-dump_uses(const char *name, bool infodump)
+dump_uses(const char *value, bool infodump)
 /* dump "use=" clauses in the appropriate format */
 {
-    char buffer[MAX_TERMINFO_LENGTH];
+    char buffer[MAX_TERMINFO_LENGTH + EXTRA_CAP];
+    int limit = (VALID_STRING(value) ? (int) strlen(value) : 0);
+    const char *cap = infodump ? "use" : "tc";
 
     if (TcOutput())
        trim_trailing();
+    if (limit == 0) {
+       _nc_warning("empty \"%s\" field", cap);
+       value = "";
+    } else if (limit > MAX_ALIAS) {
+       _nc_warning("\"%s\" field too long (%d), limit to %d",
+                   cap, limit, MAX_ALIAS);
+       limit = MAX_ALIAS;
+    }
     _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
-               "%s%s", infodump ? "use=" : "tc=", name);
+               "%s=%.*s", cap, limit, value);
     wrap_concat1(buffer);
 }
 
@@ -1682,7 +1693,7 @@ show_entry(void)
                outbuf.used = (size_t) j;
            } else if (!infodump && ch == '\\') {
                outbuf.used = (size_t) j;
-           } else if (ch == delim && (j == 0 || outbuf.text[j - 1] != '\\')) {
+           } else if (ch == delim && (outbuf.text[j - 1] != '\\')) {
                outbuf.used = (size_t) (j + 1);
            } else {
                break;
index 171d794dc21902a1610c3f860e24b53484d6cec2..7932203ac2b1aa189f37e5dd7ffbdd662f6ad988 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2020-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -43,7 +43,7 @@
 
 #include <dump_entry.h>
 
-MODULE_ID("$Id: infocmp.c,v 1.156 2022/09/24 10:13:06 tom Exp $")
+MODULE_ID("$Id: infocmp.c,v 1.163 2023/12/16 17:27:47 tom Exp $")
 
 #define MAX_STRING     1024    /* maximum formatted string */
 
@@ -158,7 +158,7 @@ no_numeric(int value)
 }
 
 static bool
-no_string(char *value)
+no_string(const char *const value)
 {
     bool result = (value == ABSENT_STRING);
     if (!strcmp(s_absent, s_cancel))
@@ -187,10 +187,21 @@ capcmp(PredIdx idx, const char *s, const char *t)
        return (_nc_capcmp(s, t));
 }
 
+/*
+ * Predicate function to use for "use=" decompilation.
+ *
+ * Return value is used in fmt_entry:
+ *   FAIL  show nothing for this capability.
+ *   FALSE show cancel for booleans (a compromise)
+ *   TRUE  show capability
+ *
+ * The only difference between FALSE/TRUE returns is in the treatment of
+ * booleans.
+ */
 static int
 use_predicate(unsigned type, PredIdx idx)
-/* predicate function to use for use decompilation */
 {
+    int result = FAIL;
     ENTRY *ep;
 
     switch (type) {
@@ -209,16 +220,18 @@ use_predicate(unsigned type, PredIdx idx)
             * unlike numbers and strings, whose cancelled/absent state is
             * recorded in the terminfo database.
             */
-           for (ep = &entries[1]; ep < entries + termcount; ep++)
-               if (ep->tterm.Booleans[idx] == TRUE) {
-                   is_set = entries[0].tterm.Booleans[idx];
-                   break;
+           if (idx < NUM_BOOLEANS(&(entries[0].tterm))) {
+               for (ep = &entries[1]; ep < entries + termcount; ep++) {
+                   if (idx < NUM_BOOLEANS(&(ep->tterm))
+                       && (is_set = ep->tterm.Booleans[idx])) {
+                       break;
+                   }
                }
-           if (is_set != entries[0].tterm.Booleans[idx])
-               return (!is_set);
-           else
-               return (FAIL);
+               if (is_set != entries[0].tterm.Booleans[idx])
+                   result = (!is_set);
+           }
        }
+       break;
 
     case NUMBER:
        {
@@ -229,45 +242,56 @@ use_predicate(unsigned type, PredIdx idx)
             * capability gets the first non-default value found
             * in the sequence of use entries'.
             */
-           for (ep = &entries[1]; ep < entries + termcount; ep++)
-               if (VALID_NUMERIC(ep->tterm.Numbers[idx])) {
-                   value = ep->tterm.Numbers[idx];
-                   break;
-               }
+           if (idx < NUM_NUMBERS(&(entries[0].tterm))) {
+               for (ep = &entries[1]; ep < entries + termcount; ep++)
+                   if (idx < NUM_NUMBERS(&(ep->tterm))
+                       && VALID_NUMERIC(ep->tterm.Numbers[idx])) {
+                       value = ep->tterm.Numbers[idx];
+                       break;
+                   }
 
-           if (value != entries[0].tterm.Numbers[idx])
-               return (value != ABSENT_NUMERIC);
-           else
-               return (FAIL);
+               if (value != entries[0].tterm.Numbers[idx])
+                   result = (value != ABSENT_NUMERIC);
+           }
        }
+       break;
 
     case STRING:
        {
-           char *termstr, *usestr = ABSENT_STRING;
-
-           termstr = entries[0].tterm.Strings[idx];
+           char *termstr = entries[0].tterm.Strings[idx];
+           char *usestr = ABSENT_STRING;
 
            /*
             * We take the semantics of multiple uses to be 'each
             * capability gets the first non-default value found
             * in the sequence of use entries'.
             */
-           for (ep = &entries[1]; ep < entries + termcount; ep++)
-               if (ep->tterm.Strings[idx]) {
-                   usestr = ep->tterm.Strings[idx];
-                   break;
-               }
+           if (idx < NUM_STRINGS(&(entries[0].tterm))) {
+               for (ep = &entries[1]; ep < entries + termcount; ep++)
+                   if (idx < NUM_STRINGS(&(ep->tterm))
+                       && ep->tterm.Strings[idx]) {
+                       usestr = ep->tterm.Strings[idx];
+                       break;
+                   }
 
-           if (usestr == ABSENT_STRING && termstr == ABSENT_STRING)
-               return (FAIL);
-           else if (!usestr || !termstr || capcmp(idx, usestr, termstr))
-               return (TRUE);
-           else
-               return (FAIL);
+               if (usestr == CANCELLED_STRING && termstr == ABSENT_STRING)
+                   result = (FAIL);
+               else if (usestr == CANCELLED_STRING && termstr == CANCELLED_STRING)
+                   result = (TRUE);
+               else if (usestr == ABSENT_STRING && termstr == ABSENT_STRING)
+                   result = (FAIL);
+               else if (!usestr || !termstr || capcmp(idx, usestr, termstr))
+                   result = (TRUE);
+           }
        }
+       break;
+
+    default:
+       result = FALSE;
+       break;
     }
 
-    return (FALSE);            /* pacify compiler */
+    return (result);
 }
 
 static bool
@@ -1858,8 +1882,16 @@ main(int argc, char *argv[])
        }
 
 #if NCURSES_XNAMES
-       if (termcount > 1)
-           _nc_align_termtype(&entries[0].tterm, &entries[1].tterm);
+       if (termcount > 1) {
+           /*
+            * User-defined capabilities in different terminal descriptions
+            * may have the same name/type but different indices.  Line up
+            * the names to use comparable indices.  We may have more than two
+            * entries to compare when processing the "-u" option.
+            */
+           for (c = 1; c < termcount; ++c)
+               _nc_align_termtype(&entries[c].tterm, &entries[0].tterm);
+       }
 #endif
 
        /* dump as C initializer for the terminal type */
index 00b98d0c6a8ddbf58d289964550b72f8fbf70780..fea18b8d72c33c56409b379641e6bedf639efb58 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2024 Thomas E. Dickey                                *
  * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -31,7 +31,7 @@
  *  Author: Thomas E. Dickey                    1997-on                     *
  ****************************************************************************/
 /*
- * $Id: progs.priv.h,v 1.59 2022/09/17 18:58:05 tom Exp $
+ * $Id: progs.priv.h,v 1.62 2024/04/08 17:28:28 tom Exp $
  *
  *     progs.priv.h
  *
 #ifndef PROGS_PRIV_H
 #define PROGS_PRIV_H 1
 
-#include <ncurses_cfg.h>
+#include <curses.priv.h>
 
-#if USE_RCS_IDS
-#define MODULE_ID(id) static const char Ident[] = id;
-#else
-#define MODULE_ID(id)          /*nothing */
-#endif
-
-#include <stdlib.h>
 #include <ctype.h>
-#include <string.h>
-#include <sys/types.h>
-
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#if HAVE_LIMITS_H
-# include <limits.h>
-#elif HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif
 
 #if HAVE_DIRENT_H
 # include <dirent.h>
 # endif
 #endif
 
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#else
-# if HAVE_STDINT_H
-#  include <stdint.h>
-# endif
-#endif
-
-#include <assert.h>
-#include <errno.h>
-
-#if DECL_ERRNO
-extern int errno;
-#endif
-
 #if HAVE_GETOPT_H
 #include <getopt.h>
 #elif !defined(HAVE_GETOPT_HEADER)
@@ -115,28 +81,7 @@ extern char *optarg;
 extern int optind;
 #endif /* HAVE_GETOPT_H */
 
-#undef _NC_WINDOWS
-#if (defined(_WIN32) || defined(_WIN64))
-#define _NC_WINDOWS 1
-#endif
-
-#define NCURSES_INTERNALS 1
-#define NCURSES_OPAQUE    0
-
-#include <curses.h>
-
-#if !(defined(NCURSES_WGETCH_EVENTS) && defined(NEED_KEY_EVENT))
-#undef KEY_EVENT               /* reduce compiler-warnings with Visual C++ */
-#endif
-
-#include <term_entry.h>
-#include <nc_termios.h>
 #include <tic.h>
-#include <nc_tparm.h>
-
-#include <nc_string.h>
-#include <nc_alloc.h>
-#include <nc_access.h>
 
 #if HAVE_NC_FREEALL
 #undef ExitProgram
@@ -153,69 +98,6 @@ extern int optind;
 #define ErrCapName     4
 #define ErrSystem(n)   (4 + (n))
 
-#if defined(__GNUC__) && defined(_FORTIFY_SOURCE)
-#define IGNORE_RC(func) errno = (int) func
-#else
-#define IGNORE_RC(func) (void) func
-#endif /* gcc workarounds */
-
-/* usually in <unistd.h> */
-#ifndef STDIN_FILENO
-#define STDIN_FILENO 0
-#endif
-
-#ifndef STDOUT_FILENO
-#define STDOUT_FILENO 1
-#endif
-
-#ifndef STDERR_FILENO
-#define STDERR_FILENO 2
-#endif
-
-#ifndef EXIT_SUCCESS
-#define EXIT_SUCCESS 0
-#endif
-
-#ifndef EXIT_FAILURE
-#define EXIT_FAILURE 1
-#endif
-
-#ifndef R_OK
-#define        R_OK    4               /* Test for readable.  */
-#endif
-
-#ifndef W_OK
-#define        W_OK    2               /* Test for writable.  */
-#endif
-
-#ifndef X_OK
-#define        X_OK    1               /* Test for executable.  */
-#endif
-
-#ifndef F_OK
-#define        F_OK    0               /* Test for existence.  */
-#endif
-
-/* usually in <unistd.h> */
-#ifndef STDOUT_FILENO
-#define STDOUT_FILENO 1
-#endif
-
-#ifndef STDERR_FILENO
-#define STDERR_FILENO 2
-#endif
-
-/* may be in limits.h, included from various places */
-#ifndef PATH_MAX
-# if defined(_POSIX_PATH_MAX)
-#  define PATH_MAX _POSIX_PATH_MAX
-# elif defined(MAXPATHLEN)
-#  define PATH_MAX MAXPATHLEN
-# else
-#  define PATH_MAX 255         /* the Posix minimum pathsize */
-# endif
-#endif
-
 /* We use isascii only to guard against use of 7-bit ctype tables in the
  * isprint test in infocmp.
  */
@@ -228,10 +110,6 @@ extern int optind;
 # endif
 #endif
 
-#define UChar(c)    ((unsigned char)(c))
-
-#define SIZEOF(v) (sizeof(v)/sizeof(v[0]))
-
 #define VtoTrace(opt) (unsigned) ((opt > 0) ? opt : (opt == 0))
 
 /*
@@ -252,12 +130,8 @@ extern int optind;
 #define use_verbosity(level) do { set_trace_level(level); } while (0)
 #endif
 
-#define NCURSES_EXT_NUMBERS (NCURSES_EXT_COLORS && HAVE_INIT_EXTENDED_COLOR)
-
-#if NCURSES_EXT_NUMBERS
-#else
-#define _nc_free_termtype2(t) _nc_free_termtype(t)
-#define _nc_read_entry2(n,f,t) _nc_read_entry(n,f,t)
+#ifndef CUR
+#define CUR ((TERMTYPE *)(cur_term))->
 #endif
 
 #endif /* PROGS_PRIV_H */
index 50bfd2cd0630d3a5be4e59000ef6c914712db9f8..6ae3b673e340037d94baf6d4a4e9c924f320e445 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2021,2023 Thomas E. Dickey                                *
+ * Copyright 2019-2023,2024 Thomas E. Dickey                                *
  * Copyright 2016,2017 Free Software Foundation, Inc.                       *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -53,7 +53,7 @@
 #include <sys/ptem.h>
 #endif
 
-MODULE_ID("$Id: reset_cmd.c,v 1.29 2023/01/07 21:50:34 tom Exp $")
+MODULE_ID("$Id: reset_cmd.c,v 1.37 2024/04/08 17:29:34 tom Exp $")
 
 /*
  * SCO defines TIOCGSIZE and the corresponding struct.  Other systems (SunOS,
@@ -75,6 +75,9 @@ MODULE_ID("$Id: reset_cmd.c,v 1.29 2023/01/07 21:50:34 tom Exp $")
 # endif
 #endif
 
+#define set_flags(target, mask)    target |= mask
+#define clear_flags(target, mask)  target &= ~((unsigned)(mask))
+
 static FILE *my_file;
 
 static bool use_reset = FALSE; /* invoked as reset */
@@ -188,6 +191,79 @@ out_char(int c)
 #define reset_char(item, value) \
     tty_settings->c_cc[item] = CHK(tty_settings->c_cc[item], value)
 
+/*
+ * Simplify ifdefs
+ */
+#ifndef BSDLY
+#define BSDLY 0
+#endif
+#ifndef CRDLY
+#define CRDLY 0
+#endif
+#ifndef ECHOCTL
+#define ECHOCTL 0
+#endif
+#ifndef ECHOKE
+#define ECHOKE 0
+#endif
+#ifndef ECHOPRT
+#define ECHOPRT 0
+#endif
+#ifndef FFDLY
+#define FFDLY 0
+#endif
+#ifndef IMAXBEL
+#define IMAXBEL 0
+#endif
+#ifndef IUCLC
+#define IUCLC 0
+#endif
+#ifndef IXANY
+#define IXANY 0
+#endif
+#ifndef NLDLY
+#define NLDLY 0
+#endif
+#ifndef OCRNL
+#define OCRNL 0
+#endif
+#ifndef OFDEL
+#define OFDEL 0
+#endif
+#ifndef OFILL
+#define OFILL 0
+#endif
+#ifndef OLCUC
+#define OLCUC 0
+#endif
+#ifndef ONLCR
+#define ONLCR 0
+#endif
+#ifndef ONLRET
+#define ONLRET 0
+#endif
+#ifndef ONOCR
+#define ONOCR 0
+#endif
+#ifndef OXTABS
+#define OXTABS 0
+#endif
+#ifndef TAB3
+#define TAB3 0
+#endif
+#ifndef TABDLY
+#define TABDLY 0
+#endif
+#ifndef TOSTOP
+#define TOSTOP 0
+#endif
+#ifndef VTDLY
+#define VTDLY 0
+#endif
+#ifndef XCASE
+#define XCASE 0
+#endif
+
 /*
  * Reset the terminal mode bits to a sensible state.  Very useful after
  * a child program dies in raw mode.
@@ -195,6 +271,11 @@ out_char(int c)
 void
 reset_tty_settings(int fd, TTY * tty_settings, int noset)
 {
+    unsigned mask;
+#ifdef TIOCMGET
+    int modem_bits;
+#endif
+
     GET_TTY(fd, tty_settings);
 
 #ifdef TERMIOS
@@ -231,106 +312,65 @@ reset_tty_settings(int fd, TTY * tty_settings, int noset)
     reset_char(VWERASE, CWERASE);
 #endif
 
-    tty_settings->c_iflag &= ~((unsigned) (IGNBRK
-                                          | PARMRK
-                                          | INPCK
-                                          | ISTRIP
-                                          | INLCR
-                                          | IGNCR
-#ifdef IUCLC
-                                          | IUCLC
-#endif
-#ifdef IXANY
-                                          | IXANY
-#endif
-                                          | IXOFF));
-
-    tty_settings->c_iflag |= (BRKINT
-                             | IGNPAR
-                             | ICRNL
-                             | IXON
-#ifdef IMAXBEL
-                             | IMAXBEL
-#endif
-       );
-
-    tty_settings->c_oflag &= ~((unsigned) (0
-#ifdef OLCUC
-                                          | OLCUC
-#endif
-#ifdef OCRNL
-                                          | OCRNL
-#endif
-#ifdef ONOCR
-                                          | ONOCR
-#endif
-#ifdef ONLRET
-                                          | ONLRET
-#endif
-#ifdef OFILL
-                                          | OFILL
-#endif
-#ifdef OFDEL
-                                          | OFDEL
-#endif
-#ifdef NLDLY
-                                          | NLDLY
-#endif
-#ifdef CRDLY
-                                          | CRDLY
-#endif
-#ifdef TABDLY
-                                          | TABDLY
-#endif
-#ifdef BSDLY
-                                          | BSDLY
-#endif
-#ifdef VTDLY
-                                          | VTDLY
-#endif
-#ifdef FFDLY
-                                          | FFDLY
-#endif
-                              ));
-
-    tty_settings->c_oflag |= (OPOST
-#ifdef ONLCR
-                             | ONLCR
-#endif
-       );
-
-    tty_settings->c_cflag &= ~((unsigned) (CSIZE
-                                          | CSTOPB
-                                          | PARENB
-                                          | PARODD
-                                          | CLOCAL));
-    tty_settings->c_cflag |= (CS8 | CREAD);
-    tty_settings->c_lflag &= ~((unsigned) (ECHONL
-                                          | NOFLSH
-#ifdef TOSTOP
-                                          | TOSTOP
-#endif
-#ifdef ECHOPTR
-                                          | ECHOPRT
-#endif
-#ifdef XCASE
-                                          | XCASE
-#endif
-                              ));
-
-    tty_settings->c_lflag |= (ISIG
-                             | ICANON
-                             | ECHO
-                             | ECHOE
-                             | ECHOK
-#ifdef ECHOCTL
-                             | ECHOCTL
-#endif
-#ifdef ECHOKE
-                             | ECHOKE
-#endif
-       );
-#endif
+    clear_flags(tty_settings->c_iflag, (IGNBRK
+                                       | PARMRK
+                                       | INPCK
+                                       | ISTRIP
+                                       | INLCR
+                                       | IGNCR
+                                       | IUCLC
+                                       | IXANY
+                                       | IXOFF));
+
+    set_flags(tty_settings->c_iflag, (BRKINT
+                                     | IGNPAR
+                                     | ICRNL
+                                     | IXON
+                                     | IMAXBEL));
+
+    clear_flags(tty_settings->c_oflag, (0
+                                       | OLCUC
+                                       | OCRNL
+                                       | ONOCR
+                                       | ONLRET
+                                       | OFILL
+                                       | OFDEL
+                                       | NLDLY
+                                       | CRDLY
+                                       | TABDLY
+                                       | BSDLY
+                                       | VTDLY
+                                       | FFDLY));
+
+    set_flags(tty_settings->c_oflag, (OPOST
+                                     | ONLCR));
+
+    mask = (CSIZE | CSTOPB | PARENB | PARODD);
+#ifdef TIOCMGET
+    /* leave clocal alone if this appears to use a modem */
+    if (ioctl(fd, TIOCMGET, &modem_bits) == -1)
+       mask |= CLOCAL;
+#else
+    /* cannot check - use the behavior from tset */
+    mask |= CLOCAL;
+#endif
+    clear_flags(tty_settings->c_cflag, mask);
+
+    set_flags(tty_settings->c_cflag, (CS8 | CREAD));
+    clear_flags(tty_settings->c_lflag, (ECHONL
+                                       | NOFLSH
+                                       | TOSTOP
+                                       | ECHOPRT
+                                       | XCASE));
+
+    set_flags(tty_settings->c_lflag, (ISIG
+                                     | ICANON
+                                     | ECHO
+                                     | ECHOE
+                                     | ECHOK
+                                     | ECHOCTL
+                                     | ECHOKE));
+#endif /* TERMIOS */
 
     if (!noset) {
        SET_TTY(fd, tty_settings);
@@ -405,29 +445,23 @@ set_conversions(TTY * tty_settings)
 #if defined(EXP_WIN32_DRIVER)
     /* FIXME */
 #else
-#ifdef ONLCR
-    tty_settings->c_oflag |= ONLCR;
-#endif
-    tty_settings->c_iflag |= ICRNL;
-    tty_settings->c_lflag |= ECHO;
-#ifdef OXTABS
-    tty_settings->c_oflag |= OXTABS;
-#endif /* OXTABS */
+    set_flags(tty_settings->c_oflag, ONLCR);
+    set_flags(tty_settings->c_iflag, ICRNL);
+    set_flags(tty_settings->c_lflag, ECHO);
+    set_flags(tty_settings->c_oflag, OXTABS);
 
     /* test used to be tgetflag("NL") */
     if (VALID_STRING(newline) && newline[0] == '\n' && !newline[1]) {
        /* Newline, not linefeed. */
-#ifdef ONLCR
-       tty_settings->c_oflag &= ~((unsigned) ONLCR);
-#endif
-       tty_settings->c_iflag &= ~((unsigned) ICRNL);
+       clear_flags(tty_settings->c_oflag, ONLCR);
+       clear_flags(tty_settings->c_iflag, ICRNL);
     }
-#ifdef OXTABS
+#if OXTABS
     /* test used to be tgetflag("pt") */
     if (VALID_STRING(set_tab) && VALID_STRING(clear_all_tabs))
-       tty_settings->c_oflag &= ~OXTABS;
+       clear_flags(tty_settings->c_oflag, OXTABS);
 #endif /* OXTABS */
-    tty_settings->c_lflag |= (ECHOE | ECHOK);
+    set_flags(tty_settings->c_lflag, (ECHOE | ECHOK));
 #endif
 }
 
@@ -493,7 +527,7 @@ send_init_strings(int fd GCC_UNUSED, TTY * old_settings)
     bool need_flush = FALSE;
 
     (void) old_settings;
-#ifdef TAB3
+#if TAB3
     if (old_settings != 0 &&
        old_settings->c_oflag & (TAB3 | ONLCR | OCRNL | ONLRET)) {
        old_settings->c_oflag &= (TAB3 | ONLCR | OCRNL | ONLRET);
@@ -515,22 +549,22 @@ send_init_strings(int fd GCC_UNUSED, TTY * old_settings)
 
        if (VALID_STRING(clear_margins)) {
            need_flush |= sent_string(clear_margins);
-       } else
+       }
 #if defined(set_lr_margin)
-       if (VALID_STRING(set_lr_margin)) {
+       else if (VALID_STRING(set_lr_margin)) {
            need_flush |= sent_string(TIPARM_2(set_lr_margin, 0, columns - 1));
-       } else
+       }
 #endif
 #if defined(set_left_margin_parm) && defined(set_right_margin_parm)
-           if (VALID_STRING(set_left_margin_parm)
-               && VALID_STRING(set_right_margin_parm)) {
+       else if (VALID_STRING(set_left_margin_parm)
+                && VALID_STRING(set_right_margin_parm)) {
            need_flush |= sent_string(TIPARM_1(set_left_margin_parm, 0));
            need_flush |= sent_string(TIPARM_1(set_right_margin_parm,
                                               columns - 1));
-       } else
+       }
 #endif
-           if (VALID_STRING(set_left_margin)
-               && VALID_STRING(set_right_margin)) {
+       else if (VALID_STRING(set_left_margin)
+                && VALID_STRING(set_right_margin)) {
            need_flush |= to_left_margin();
            need_flush |= sent_string(set_left_margin);
            if (VALID_STRING(parm_right_cursor)) {
@@ -643,7 +677,7 @@ print_tty_chars(TTY * old_settings, TTY * new_settings)
  * size was set.
  */
 void
-set_window_size(int fd, short *high, short *wide)
+set_window_size(int fd, NCURSES_INT2 *high, NCURSES_INT2 *wide)
 {
     STRUCT_WINSIZE win;
     (void) ioctl(fd, IOCTL_GET_WINSIZE, &win);
index 91a637c7e7b3a603f09a98c368a6cc97f4c67953..43aee28f7e8c36047ba5431a21670094a3bda17e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2024 Thomas E. Dickey                                *
  * Copyright 2016 Free Software Foundation, Inc.                            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -32,7 +32,7 @@
  ****************************************************************************/
 
 /*
- * $Id: reset_cmd.h,v 1.9 2021/10/02 20:58:58 tom Exp $
+ * $Id: reset_cmd.h,v 1.11 2024/04/08 17:29:34 tom Exp $
  *
  * Utility functions for resetting terminal.
  */
@@ -56,7 +56,7 @@ extern void set_control_chars(TTY * /* tty_settings */, int /* erase */, int /*
 extern void set_conversions(TTY * /* tty_settings */);
 
 #if HAVE_SIZECHANGE
-extern void set_window_size(int /* fd */, short * /* high */, short * /* wide */);
+extern void set_window_size(int /* fd */, NCURSES_INT2 * /* high */, NCURSES_INT2 * /* wide */);
 #endif
 
 extern const char *_nc_progname;
index 7378d116f70c8f48c90df1357a6aa49f036bd771..a630b044e0cc027049bf3e4a9223d00b6988edcc 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2020-2022,2023 Thomas E. Dickey                                *
  * Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -39,7 +39,7 @@
 #include <progs.priv.h>
 #include <tty_settings.h>
 
-MODULE_ID("$Id: tabs.c,v 1.51 2022/02/26 22:44:44 tom Exp $")
+MODULE_ID("$Id: tabs.c,v 1.53 2023/11/04 20:46:09 tom Exp $")
 
 static GCC_NORETURN void usage(void);
 
@@ -183,7 +183,7 @@ decode_tabs(const char *tab_list, int margin)
 }
 
 static void
-print_ruler(int *tab_list, const char *new_line)
+print_ruler(const int *const tab_list, const char *new_line)
 {
     int last = 0;
     int n;
@@ -370,7 +370,9 @@ do_set_margin(int margin, bool no_op)
            }
            tputs(set_left_margin, 1, putch);
        }
-    } else if (VALID_STRING(set_left_margin_parm)) {
+    }
+#if defined(set_left_margin_parm) && defined(set_right_margin_parm)
+    else if (VALID_STRING(set_left_margin_parm)) {
        result = TRUE;
        if (!no_op) {
            if (VALID_STRING(set_right_margin_parm)) {
@@ -379,12 +381,16 @@ do_set_margin(int margin, bool no_op)
                tputs(TIPARM_2(set_left_margin_parm, margin, max_cols), 1, putch);
            }
        }
-    } else if (VALID_STRING(set_lr_margin)) {
+    }
+#endif
+#if defined(set_lr_margin)
+    else if (VALID_STRING(set_lr_margin)) {
        result = TRUE;
        if (!no_op) {
            tputs(TIPARM_2(set_lr_margin, margin, max_cols), 1, putch);
        }
     }
+#endif
     return result;
 }
 
@@ -649,7 +655,7 @@ main(int argc, char *argv[])
            /* set tty modes to -ocrnl to allow \r */
            if (isatty(STDOUT_FILENO)) {
                TTY new_settings = tty_settings;
-               new_settings.c_oflag &= (unsigned)~OCRNL;
+               new_settings.c_oflag &= (unsigned) ~OCRNL;
                update_tty_settings(&tty_settings, &new_settings);
                change_tty = TRUE;
                new_line = "\r\n";
index 93a0b4916e269ffbd3648ebc137d5a5990044520..fc77b34445ff84bf7ceb0411e251231a2435d803 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -49,7 +49,7 @@
 #include <parametrized.h>
 #include <transform.h>
 
-MODULE_ID("$Id: tic.c,v 1.320 2022/09/17 18:55:28 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.325 2024/03/02 19:33:22 tom Exp $")
 
 #define STDIN_NAME "<stdin>"
 
@@ -459,17 +459,20 @@ open_input(const char *filename, char *alt_file)
     if (!strcmp(filename, "-")) {
        fp = copy_input(stdin, STDIN_NAME, alt_file);
     } else if (stat(filename, &sb) == -1) {
-       fprintf(stderr, "%s: %s %s\n", _nc_progname, filename, strerror(errno));
+       fprintf(stderr, "%s: cannot open '%s': %s\n", _nc_progname,
+               filename, strerror(errno));
        ExitProgram(EXIT_FAILURE);
     } else if ((mode = (sb.st_mode & S_IFMT)) == S_IFDIR
               || (mode != S_IFREG && mode != S_IFCHR && mode != S_IFIFO)) {
-       fprintf(stderr, "%s: %s is not a file\n", _nc_progname, filename);
+       fprintf(stderr, "%s: cannot open '%s'; it is not a file\n",
+               _nc_progname, filename);
        ExitProgram(EXIT_FAILURE);
     } else {
        fp = safe_fopen(filename, "r");
 
        if (fp == NULL) {
-           fprintf(stderr, "%s: Can't open %s\n", _nc_progname, filename);
+           fprintf(stderr, "%s: cannot open '%s': %s\n", _nc_progname,
+                   filename, strerror(errno));
            ExitProgram(EXIT_FAILURE);
        }
        if (mode != S_IFREG) {
@@ -477,7 +480,8 @@ open_input(const char *filename, char *alt_file)
                FILE *fp2 = copy_input(fp, filename, alt_file);
                fp = fp2;
            } else {
-               fprintf(stderr, "%s: %s is not a file\n", _nc_progname, filename);
+               fprintf(stderr, "%s: cannot open '%s'; it is not a"
+                       " file\n", _nc_progname, filename);
                ExitProgram(EXIT_FAILURE);
            }
        }
@@ -700,7 +704,7 @@ main(int argc, char *argv[])
     bool forceresolve = FALSE; /* force resolution */
     bool limited = TRUE;
     char *tversion = (char *) NULL;
-    const char *source_file = "terminfo";
+    const char *source_file;
     char *outdir = (char *) NULL;
     bool check_only = FALSE;
     bool suppress_untranslatable = FALSE;
@@ -1169,6 +1173,7 @@ check_acs(TERMTYPE2 *tp)
        char *q;
 
        memset(mapped, 0, sizeof(mapped));
+       memset(missing, 0, sizeof(missing));
        for (p = acs_chars; *p != '\0'; p += 2) {
            if (p[1] == '\0') {
                _nc_warning("acsc has odd number of characters");
@@ -1350,8 +1355,7 @@ check_ansi_cursor(char *list[4])
     for (j = 0; j < 4; ++j) {
        skip[j] = FALSE;
        for (k = 0; k < j; ++k) {
-           if (j != k
-               && !strcmp(list[j], list[k])) {
+           if (!strcmp(list[j], list[k])) {
                char *value = _nc_tic_expand(list[k], TRUE, 0);
                _nc_warning("repeated cursor control %s", value);
                repeated = TRUE;
@@ -2270,9 +2274,15 @@ check_1_infotocap(const char *name, NCURSES_CONST char *value, int count)
 
     _nc_reset_tparm(NULL);
     switch (actual) {
+    case Str:
+       result = TPARM_1(value, strings[1]);
+       break;
     case Num_Str:
        result = TPARM_2(value, numbers[1], strings[2]);
        break;
+    case Str_Str:
+       result = TPARM_2(value, strings[1], strings[2]);
+       break;
     case Num_Str_Str:
        result = TPARM_3(value, numbers[1], strings[2], strings[3]);
        break;
@@ -2434,60 +2444,63 @@ static void
 check_infotocap(TERMTYPE2 *tp, int i, const char *value)
 {
     const char *name = ExtStrname(tp, i, strnames);
-    int params = ((i < (int) SIZEOF(parametrized))
-                 ? parametrized[i]
-                 : ((*value == 'k')
-                    ? 0
-                    : has_params(value, FALSE)));
     char *ti_value = NULL;
-    char *tc_value;
-    bool embedded;
 
     assert(SIZEOF(parametrized) == STRCOUNT);
     if (!VALID_STRING(value) || (ti_value = strdup(value)) == NULL) {
        _nc_warning("tic-expansion of %s failed", name);
-    } else if ((tc_value = _nc_infotocap(name, ti_value, params)) == ABSENT_STRING) {
-       _nc_warning("tic-conversion of %s failed", name);
-    } else if (params > 0) {
-       int limit = 5;
-       int count;
-       bool first = TRUE;
-
-       if (!strcmp(name, "setf")
-           || !strcmp(name, "setb")
-           || !strcmp(name, "setaf")
-           || !strcmp(name, "setab")) {
-           if ((limit = max_colors) > 256)
-               limit = 256;
-       }
-       for (count = 0; count < limit; ++count) {
-           char *ti_check = check_1_infotocap(name, ti_value, count);
-           char *tc_check = check_1_infotocap(name, tc_value, count);
-
-           if (strcmp(ti_check, tc_check)) {
-               if (first) {
-                   fprintf(stderr, "check_infotocap(%s)\n", name);
-                   fprintf(stderr, "...ti '%s'\n", _nc_visbuf2(0, ti_value));
-                   fprintf(stderr, "...tc '%s'\n", _nc_visbuf2(0, tc_value));
-                   first = FALSE;
+    } else {
+       char *tc_value;
+       bool embedded;
+       int params = ((i < (int) SIZEOF(parametrized))
+                     ? parametrized[i]
+                     : ((*value == 'k')
+                        ? 0
+                        : has_params(value, FALSE)));
+
+       if ((tc_value = _nc_infotocap(name, ti_value, params)) == ABSENT_STRING) {
+           _nc_warning("tic-conversion of %s failed", name);
+       } else if (params > 0) {
+           int limit = 5;
+           int count;
+           bool first = TRUE;
+
+           if (!strcmp(name, "setf")
+               || !strcmp(name, "setb")
+               || !strcmp(name, "setaf")
+               || !strcmp(name, "setab")) {
+               if ((limit = max_colors) > 256)
+                   limit = 256;
+           }
+           for (count = 0; count < limit; ++count) {
+               char *ti_check = check_1_infotocap(name, ti_value, count);
+               char *tc_check = check_1_infotocap(name, tc_value, count);
+
+               if (strcmp(ti_check, tc_check)) {
+                   if (first) {
+                       fprintf(stderr, "check_infotocap(%s)\n", name);
+                       fprintf(stderr, "...ti '%s'\n", _nc_visbuf2(0, ti_value));
+                       fprintf(stderr, "...tc '%s'\n", _nc_visbuf2(0, tc_value));
+                       first = FALSE;
+                   }
+                   _nc_warning("tparm-conversion of %s(%d) differs between\n\tterminfo %s\n\ttermcap  %s",
+                               name, count,
+                               _nc_visbuf2(0, ti_check),
+                               _nc_visbuf2(1, tc_check));
                }
-               _nc_warning("tparm-conversion of %s(%d) differs between\n\tterminfo %s\n\ttermcap  %s",
-                           name, count,
-                           _nc_visbuf2(0, ti_check),
-                           _nc_visbuf2(1, tc_check));
+               free(ti_check);
+               free(tc_check);
+           }
+       } else if (params == 0 && !same_ti_tc(ti_value, tc_value, &embedded)) {
+           if (embedded) {
+               _nc_warning("termcap equivalent of %s cannot use embedded delay", name);
+           } else {
+               _nc_warning("tic-conversion of %s changed value\n\tfrom %s\n\tto   %s",
+                           name, ti_value, tc_value);
            }
-           free(ti_check);
-           free(tc_check);
-       }
-    } else if (params == 0 && !same_ti_tc(ti_value, tc_value, &embedded)) {
-       if (embedded) {
-           _nc_warning("termcap equivalent of %s cannot use embedded delay", name);
-       } else {
-           _nc_warning("tic-conversion of %s changed value\n\tfrom %s\n\tto   %s",
-                       name, ti_value, tc_value);
        }
+       free(ti_value);
     }
-    free(ti_value);
 }
 
 static char *
@@ -3136,6 +3149,7 @@ guess_ANSI_VTxx(TERMTYPE2 *tp)
  * In particular, any ECMA-48 terminal should support these, though the details
  * for u9 are implementation dependent.
  */
+#if defined(user6) && defined(user7) && defined(user8) && defined(user9)
 static void
 check_user_6789(TERMTYPE2 *tp)
 {
@@ -3171,6 +3185,9 @@ check_user_6789(TERMTYPE2 *tp)
        break;
     }
 }
+#else
+#define check_user_6789(tp)    /* nothing */
+#endif
 
 /* other sanity-checks (things that we don't want in the normal
  * logic that reads a terminfo entry)
index 7599cfe38f80f225afb4b1339d88ae4b361afce2..ecbfd53b5a0891d63725a625462792ac08cb3dd2 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2013,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -45,7 +45,7 @@
 #include <hashed_db.h>
 #endif
 
-MODULE_ID("$Id: toe.c,v 1.88 2022/09/03 23:29:32 tom Exp $")
+MODULE_ID("$Id: toe.c,v 1.89 2023/07/01 17:04:46 tom Exp $")
 
 #define isDotname(name) (!strcmp(name, ".") || !strcmp(name, ".."))
 
@@ -572,7 +572,7 @@ typelist(int eargc, char *eargv[],
                        break;
                    if (*buffer == '#')
                        continue;
-                   if (isspace(*buffer))
+                   if (isspace(UChar(*buffer)))
                        continue;
                    show_termcap(i, eargc, buffer, hook);
                }
index 3da4a0774af5164eab3f2d7655b6f491a83a5cf6..4fed96a534400dfaf9833a6fe14b4a8f4b57d966 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 2014,2015 Free Software Foundation, Inc.                       *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -33,7 +33,7 @@
 
 #include <tparm_type.h>
 
-MODULE_ID("$Id: tparm_type.c,v 1.4 2020/10/24 17:30:32 tom Exp $")
+MODULE_ID("$Id: tparm_type.c,v 1.5 2023/04/08 15:57:01 tom Exp $")
 
 /*
  * Lookup the type of call we should make to tparm().  This ignores the actual
@@ -47,6 +47,7 @@ tparm_type(const char *name)
        {code, {longname} }, \
        {code, {ti} }, \
        {code, {tc} }
+#define XD(code, onlyname) TD(code, onlyname, onlyname, onlyname)
     TParams result = Numbers;
     /* *INDENT-OFF* */
     static const struct {
@@ -58,6 +59,10 @@ tparm_type(const char *name)
        TD(Num_Str,     "pkey_xmit",    "pfx",          "px"),
        TD(Num_Str,     "plab_norm",    "pln",          "pn"),
        TD(Num_Str_Str, "pkey_plab",    "pfxl",         "xl"),
+#if NCURSES_XNAMES
+       XD(Str,         "Cs"),
+       XD(Str_Str,     "Ms"),
+#endif
     };
     /* *INDENT-ON* */
 
@@ -80,12 +85,16 @@ guess_tparm_type(int nparam, char **p_is_s)
     case 1:
        if (!p_is_s[0])
            result = Numbers;
+       if (p_is_s[0])
+           result = Str;
        break;
     case 2:
        if (!p_is_s[0] && !p_is_s[1])
            result = Numbers;
        if (!p_is_s[0] && p_is_s[1])
            result = Num_Str;
+       if (p_is_s[0] && p_is_s[1])
+           result = Str_Str;
        break;
     case 3:
        if (!p_is_s[0] && !p_is_s[1] && !p_is_s[2])
index 7c102a309c1a423db36427bca2a7693f76df3b5a..2f7bd0771d5318b8137b5ce73861d0fb144cd4ae 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020 Thomas E. Dickey                                          *
+ * Copyright 2020,2023 Thomas E. Dickey                                     *
  * Copyright 2014 Free Software Foundation, Inc.                            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -32,7 +32,7 @@
  ****************************************************************************/
 
 /*
- * $Id: tparm_type.h,v 1.3 2020/10/24 17:11:33 tom Exp $
+ * $Id: tparm_type.h,v 1.4 2023/04/08 15:41:20 tom Exp $
  *
  * determine expected/actual number of parameters to setup for tparm
  */
 typedef enum {
     Other = -1
     ,Numbers = 0
+    ,Str
     ,Num_Str
     ,Num_Str_Str
+    ,Str_Str
 } TParams;
 
 extern TParams tparm_type(const char *name);
index 4cd0c5baa3b8f1c2f70888813a96c90de8a84756..f9321b60a8d3f5c08a9afa45261e944b6d3d25e8 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
 #include <transform.h>
 #include <tty_settings.h>
 
-MODULE_ID("$Id: tput.c,v 1.99 2022/02/26 23:19:31 tom Exp $")
+MODULE_ID("$Id: tput.c,v 1.104 2024/04/20 22:20:51 tom Exp $")
 
 #define PUTS(s)                fputs(s, stdout)
 
 const char *_nc_progname = "tput";
 
+static bool opt_v = FALSE;     /* quiet, do not show warnings */
+static bool opt_x = FALSE;     /* clear scrollback if possible */
+
 static bool is_init = FALSE;
 static bool is_reset = FALSE;
 static bool is_clear = FALSE;
@@ -81,6 +84,7 @@ usage(const char *optstring)
        KEEP("  -S <<       read commands from standard input")
        KEEP("  -T TERM     use this instead of $TERM")
        KEEP("  -V          print curses-version")
+       KEEP("  -v          verbose, show warnings")
        KEEP("  -x          do not try to clear scrollback")
        KEEP("")
        KEEP("Commands:")
@@ -148,7 +152,7 @@ exit_code(int token, int value)
  * Returns nonzero on error.
  */
 static int
-tput_cmd(int fd, TTY * settings, bool opt_x, int argc, char **argv, int *used)
+tput_cmd(int fd, TTY * settings, int argc, char **argv, int *used)
 {
     NCURSES_CONST char *name;
     char *s;
@@ -174,7 +178,13 @@ tput_cmd(int fd, TTY * settings, bool opt_x, int argc, char **argv, int *used)
        }
 
 #if HAVE_SIZECHANGE
-       set_window_size(fd, &lines, &columns);
+       {
+           NCURSES_INT2 my_rows = lines;
+           NCURSES_INT2 my_cols = columns;
+           set_window_size(fd, &my_rows, &my_cols);
+           lines = my_rows;
+           columns = my_cols;
+       }
 #else
        (void) fd;
 #endif
@@ -231,7 +241,9 @@ tput_cmd(int fd, TTY * settings, bool opt_x, int argc, char **argv, int *used)
     } else if (VALID_STRING(s)) {
        if (argc > 1) {
            int k;
+           int narg;
            int analyzed;
+           int provided;
            int popcount;
            long numbers[1 + NUM_PARM];
            char *strings[1 + NUM_PARM];
@@ -271,14 +283,45 @@ tput_cmd(int fd, TTY * settings, bool opt_x, int argc, char **argv, int *used)
 
            popcount = 0;
            _nc_reset_tparm(NULL);
+           /*
+            * Count the number of numeric parameters which are provided.
+            */
+           provided = 0;
+           for (narg = 1; narg < argc; ++narg) {
+               char *ending = NULL;
+               long check = strtol(argv[narg], &ending, 0);
+               if (check < 0 || ending == argv[narg] || *ending != '\0')
+                   break;
+               provided = narg;
+           }
            switch (paramType) {
+           case Str:
+               s = TPARM_1(s, strings[1]);
+               analyzed = 1;
+               if (provided == 0 && argc >= 1)
+                   provided++;
+               break;
+           case Str_Str:
+               s = TPARM_2(s, strings[1], strings[2]);
+               analyzed = 2;
+               if (provided == 0 && argc >= 1)
+                   provided++;
+               if (provided == 1 && argc >= 2)
+                   provided++;
+               break;
            case Num_Str:
                s = TPARM_2(s, numbers[1], strings[2]);
                analyzed = 2;
+               if (provided == 1 && argc >= 2)
+                   provided++;
                break;
            case Num_Str_Str:
                s = TPARM_3(s, numbers[1], strings[2], strings[3]);
                analyzed = 3;
+               if (provided == 1 && argc >= 2)
+                   provided++;
+               if (provided == 2 && argc >= 3)
+                   provided++;
                break;
            case Numbers:
                analyzed = _nc_tparm_analyze(NULL, s, p_is_s, &popcount);
@@ -316,7 +359,13 @@ tput_cmd(int fd, TTY * settings, bool opt_x, int argc, char **argv, int *used)
            if (analyzed < popcount) {
                analyzed = popcount;
            }
-           *used += analyzed;
+           if (opt_v && (analyzed != provided)) {
+               fprintf(stderr, "%s: %s parameters for \"%s\"\n",
+                       _nc_progname,
+                       (analyzed < provided ? "extra" : "missing"),
+                       argv[0]);
+           }
+           *used += provided;
        }
 
        /* use putp() in order to perform padding */
@@ -339,7 +388,6 @@ main(int argc, char **argv)
     int used;
     TTY old_settings;
     TTY tty_settings;
-    bool opt_x = FALSE;                /* clear scrollback if possible */
     bool is_alias;
     bool need_tty;
 
@@ -348,7 +396,7 @@ main(int argc, char **argv)
 
     term = getenv("TERM");
 
-    while ((c = getopt(argc, argv, is_alias ? "T:Vx" : "ST:Vx")) != -1) {
+    while ((c = getopt(argc, argv, is_alias ? "T:Vvx" : "ST:Vvx")) != -1) {
        switch (c) {
        case 'S':
            cmdline = FALSE;
@@ -361,6 +409,9 @@ main(int argc, char **argv)
        case 'V':
            puts(curses_version());
            ExitProgram(EXIT_SUCCESS);
+       case 'v':               /* verbose */
+           opt_v = TRUE;
+           break;
        case 'x':               /* do not try to clear scrollback */
            opt_x = TRUE;
            break;
@@ -404,7 +455,7 @@ main(int argc, char **argv)
            usage(NULL);
        while (argc > 0) {
            tty_settings = old_settings;
-           code = tput_cmd(fd, &tty_settings, opt_x, argc, argv, &used);
+           code = tput_cmd(fd, &tty_settings, argc, argv, &used);
            if (code != 0)
                break;
            argc -= used;
@@ -439,7 +490,7 @@ main(int argc, char **argv)
        while (argnum > 0) {
            int code;
            tty_settings = old_settings;
-           code = tput_cmd(fd, &tty_settings, opt_x, argnum, argnow, &used);
+           code = tput_cmd(fd, &tty_settings, argnum, argnow, &used);
            if (code != 0) {
                if (result == 0)
                    result = ErrSystem(0);      /* will return value >4 */
index 0ba522cbc4c6eed57bf8f9fa4010894f8d54980e..69f4aba879746c65fbf6179b32476970b46442fc 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2021 Thomas E. Dickey                                     *
+ * Copyright 2020-2021,2024 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -98,7 +98,7 @@
 char *ttyname(int fd);
 #endif
 
-MODULE_ID("$Id: tset.c,v 1.131 2021/12/04 23:02:13 tom Exp $")
+MODULE_ID("$Id: tset.c,v 1.135 2024/04/20 22:20:41 tom Exp $")
 
 #ifndef environ
 extern char **environ;
@@ -869,7 +869,11 @@ main(int argc, char **argv)
     if (!noset) {
 #if HAVE_SIZECHANGE
        if (opt_w) {
-           set_window_size(my_fd, &lines, &columns);
+           NCURSES_INT2 my_rows = lines;
+           NCURSES_INT2 my_cols = columns;
+           set_window_size(my_fd, &my_rows, &my_cols);
+           lines = my_rows;
+           columns = my_cols;
        }
 #endif
        if (opt_c) {
@@ -878,9 +882,13 @@ main(int argc, char **argv)
 
            if (!noinit) {
                if (send_init_strings(my_fd, &oldmode)) {
+                   const char *name;
+
                    (void) putc('\r', stderr);
                    (void) fflush(stderr);
-                   (void) napms(1000);         /* Settle the terminal. */
+                   if (IsRealTty(my_fd, name)) {
+                       (void) napms(1000);     /* Settle the terminal. */
+                   }
                }
            }
 
index 7844aa7e39049cf3e9a7a5758162578fa9cf35f9..885349dd08f2fef3ca54264690ea88efb6885149 100644 (file)
@@ -1,5 +1,5 @@
 -------------------------------------------------------------------------------
--- Copyright 2018-2021,2022 Thomas E. Dickey                                 --
+-- Copyright 2018-2023,2024 Thomas E. Dickey                                 --
 -- Copyright 1998-2017,2018 Free Software Foundation, Inc.                   --
 --                                                                           --
 -- Permission is hereby granted, free of charge, to any person obtaining a   --
@@ -26,7 +26,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: README,v 1.77 2022/08/13 23:34:33 tom Exp $
+-- $Id: README,v 1.82 2024/04/27 18:35:01 tom Exp $
 -------------------------------------------------------------------------------
 
 The programs in this directory are used to test and demonstrate ncurses.
@@ -296,8 +296,8 @@ cur_term                    test: demo_termcap demo_terminfo dots dots_mvcur filter list_keys lrt
 curs_set                       test: demo_new_pair echochar firework gdc hanoi lrtest ncurses newdemo picsmap rain savescreen tclock testcurs worm xmas
 curs_set_sp                    test: sp_tinfo
 curscr                         test: demo_panels knight lrtest ncurses popup_msg savescreen tclock
-curses_trace                   test: demo_menus hashtest lrtest ncurses padview redraw test_sgr test_termattrs test_vid_puts test_vidputs testcurs view worm
-curses_version                 test: ncurses progs: clear infocmp tabs tic toe tput tset
+curses_trace                   test: demo_menus hashtest lrtest ncurses padview redraw test_sgr test_termattrs test_vid_puts test_vidputs testcurs view worm progs: infocmp tic toe
+curses_version                 test: back_ground background blue bs cardfile chgat clip_printw color_content color_set combine demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels demo_tabs demo_termcap demo_terminfo ditto dots dots_curses dots_mvcur dots_termcap dots_xcurses dup_field echochar extended_color filter firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight list_keys lrtest move_field movewindow ncurses newdemo padview pair_content picsmap railroad rain redraw savescreen sp_tinfo tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_arrays test_delwin test_endwin test_get_wstr test_getstr test_instr test_inwstr test_mouse test_opaque test_setupterm test_sgr test_termattrs test_tparm test_unget_wch test_vid_puts test_vidputs testaddch testcurs testscanw view worm xmas progs: clear infocmp tabs tic toe tput tset
 def_prog_mode                  test: bs ncurses
 def_prog_mode_sp               test: sp_tinfo
 def_shell_mode                 -
@@ -320,14 +320,14 @@ echo                              test: bs hanoi ncurses test_get_wstr test_getstr testcurs testscanw
 echo_sp                                lib: ncurses
 echo_wchar                     test: ncurses
 echochar                       test: echochar ncurses
-endwin                         test: back_ground background blue bs cardfile chgat clip_printw color_content color_set combine demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels demo_tabs ditto dots_curses dots_mvcur dots_xcurses dup_field echochar extended_color filter firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest move_field movewindow ncurses newdemo padview pair_content picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_delwin test_get_wstr test_getstr test_instr test_inwstr test_mouse test_opaque test_unget_wch testaddch testcurs testscanw view worm xmas
+endwin                         test: back_ground background blue bs cardfile chgat clip_printw color_content color_set combine demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels demo_tabs ditto dots_curses dots_mvcur dots_xcurses dup_field echochar extended_color filter firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest move_field movewindow ncurses newdemo padview pair_content picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_delwin test_endwin test_get_wstr test_getstr test_instr test_inwstr test_mouse test_opaque test_unget_wch testaddch testcurs testscanw view worm xmas
 endwin_sp                      lib: ncurses
 erase                          test: cardfile demo_menus filter firework firstlast hanoi lrtest ncurses picsmap tclock test_opaque testcurs
 erasechar                      test: ncurses
 erasechar_sp                   test: sp_tinfo
 erasewchar                     test: ncurses
 erasewchar_sp                  lib: ncurses
-exit_curses                    test: back_ground background blue bs cardfile chgat clip_printw color_content color_set combine demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels demo_tabs ditto dots_curses dots_xcurses dup_field echochar extended_color filter firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest move_field movewindow ncurses newdemo padview pair_content picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_delwin test_get_wstr test_getstr test_instr test_inwstr test_mouse test_opaque test_setupterm test_termattrs test_unget_wch testaddch testcurs testscanw view worm xmas
+exit_curses                    test: back_ground background blue bs cardfile chgat clip_printw color_content color_set combine demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels demo_tabs ditto dots_curses dots_xcurses dup_field echochar extended_color filter firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest move_field movewindow ncurses newdemo padview pair_content picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_delwin test_endwin test_get_wstr test_getstr test_instr test_inwstr test_mouse test_opaque test_setupterm test_termattrs test_unget_wch testaddch testcurs testscanw view worm xmas
 exit_terminfo                  test: demo_termcap demo_terminfo dots dots_mvcur dots_termcap list_keys railroad sp_tinfo test_arrays test_sgr test_tparm test_vid_puts test_vidputs
 extended_color_content         test: color_content extended_color
 extended_color_content_sp      test: extended_color
@@ -355,7 +355,7 @@ getbegy                             test: chgat clip_printw demo_menus demo_panels dump_window insdelln m
 getbkgd                                test: ncurses
 getbkgrnd                      test: ncurses
 getcchar                       test: demo_new_pair ncurses savescreen view
-getch                          test: back_ground background blue bs chgat color_content color_set combine demo_altkeys demo_new_pair demo_tabs extended_color filter firework firstlast foldkeys hanoi hashtest insdelln lrtest padview pair_content picsmap savescreen tclock test_mouse test_opaque test_unget_wch testaddch testcurs view xmas
+getch                          test: back_ground background blue bs chgat color_content color_set combine demo_altkeys demo_new_pair demo_tabs extended_color filter firework firstlast foldkeys hanoi hashtest insdelln lrtest padview pair_content picsmap savescreen tclock test_endwin test_mouse test_opaque test_unget_wch testaddch testcurs view xmas
 getcurx                                test: bs chgat clip_printw combine demo_altkeys demo_defkey demo_panels dump_window extended_color filter firstlast foldkeys insdelln move_field movewindow ncurses redraw savescreen test_get_wstr test_getstr test_opaque testcurs view
 getcury                                test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels dump_window extended_color filter firstlast foldkeys insdelln move_field movewindow ncurses popup_msg redraw savescreen test_mouse test_opaque testcurs view
 getmaxx                                test: chgat clip_printw demo_panels dump_window firstlast inch_wide inchs insdelln movewindow ncurses newdemo popup_msg redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
@@ -400,7 +400,7 @@ init_extended_pair          test: extended_color ncurses pair_content picsmap
 init_extended_pair_sp          test: extended_color
 init_pair                      test: back_ground background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses dots_xcurses dup_field echochar filter firework gdc hanoi ins_wide insdelln inserts knight move_field ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
 init_pair_sp                   lib: ncurses
-initscr                                test: back_ground background blue bs cardfile chgat clip_printw color_content color_set combine demo_defkey demo_forms demo_keyok demo_menus demo_panels demo_tabs dots_curses dots_xcurses dup_field echochar filter firework firstlast form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest move_field movewindow ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_mouse test_opaque test_unget_wch testaddch testcurs testscanw view worm xmas
+initscr                                test: back_ground background blue bs cardfile chgat clip_printw color_content color_set combine demo_defkey demo_forms demo_keyok demo_menus demo_panels demo_tabs dots_curses dots_xcurses dup_field echochar filter firework firstlast form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest move_field movewindow ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_endwin test_get_wstr test_getstr test_instr test_inwstr test_mouse test_opaque test_unget_wch testaddch testcurs testscanw view worm xmas
 innstr                         test: test_instr
 innwstr                                test: test_inwstr
 ins_nwstr                      test: ins_wide
@@ -415,16 +415,24 @@ instr                             test: test_instr
 intrflush                      test: demo_forms dup_field move_field movewindow
 intrflush_sp                   test: sp_tinfo
 inwstr                         test: test_inwstr
+is_cbreak                      -
+is_cbreak_sp                   -
 is_cleared                     test: test_opaque
+is_echo                                -
+is_echo_sp                     -
 is_idcok                       test: test_opaque
 is_idlok                       test: test_opaque
 is_immedok                     test: test_opaque
 is_keypad                      test: ncurses test_opaque
 is_leaveok                     test: test_opaque
 is_linetouched                 lib: form
+is_nl                          -
+is_nl_sp                       -
 is_nodelay                     test: test_opaque
 is_notimeout                   test: test_opaque
 is_pad                         test: test_opaque
+is_raw                         -
+is_raw_sp                      -
 is_scrollok                    test: ncurses test_opaque
 is_subwin                      test: test_opaque
 is_syncok                      test: test_opaque
@@ -543,13 +551,13 @@ mvwprintw                 test: demo_menus demo_panels inch_wide inchs ncurses test_delwin tes
 mvwscanw                       test: testcurs
 mvwvline                       test: ins_wide inserts movewindow ncurses test_add_wchstr test_addchstr test_addstr test_addwstr
 mvwvline_set                   -
-napms                          test: demo_panels ditto dots dots_curses dots_mvcur dots_xcurses echochar extended_color firework firstlast gdc hanoi lrtest ncurses padview picsmap railroad rain tclock test_opaque testcurs view worm xmas progs: tset
+napms                          test: demo_panels ditto dots dots_curses dots_mvcur dots_termcap dots_xcurses echochar extended_color firework firstlast gdc hanoi lrtest ncurses padview picsmap railroad rain tclock test_opaque testcurs view worm xmas progs: tset
 napms_sp                       test: sp_tinfo
 new_prescr                     test: sp_tinfo
 newpad                         test: ncurses padview popup_msg testcurs
 newpad_sp                      lib: ncurses
 newscr                         lib: ncurses
-newterm                                test: demo_altkeys demo_new_pair ditto dots_mvcur extended_color filter foldkeys gdc key_names keynames redraw test_delwin test_setupterm test_termattrs
+newterm                                test: demo_altkeys demo_new_pair ditto dots_mvcur extended_color filter foldkeys gdc key_names keynames redraw test_delwin test_endwin test_mouse test_setupterm test_termattrs
 newterm_sp                     -
 newwin                         test: cardfile chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto firstlast inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_delwin test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view xmas
 newwin_sp                      lib: ncurses
@@ -566,7 +574,7 @@ nonl                                test: bs demo_forms dup_field hashtest move_field movewindow ncurses pad
 nonl_sp                                lib: ncurses
 noqiflush                      -
 noqiflush_sp                   test: sp_tinfo
-noraw                          test: demo_forms demo_menus dup_field move_field ncurses testcurs
+noraw                          test: demo_forms demo_menus dup_field move_field ncurses test_mouse testcurs
 noraw_sp                       test: sp_tinfo
 notimeout                      test: ncurses test_opaque
 numcodes                       test: demo_termcap test_arrays progs: dump_entry
@@ -587,10 +595,10 @@ putp_sp                           test: sp_tinfo
 putwin                         test: ncurses
 qiflush                                -
 qiflush_sp                     test: sp_tinfo
-raw                            test: demo_forms dup_field move_field ncurses redraw testcurs
+raw                            test: demo_forms dup_field move_field ncurses redraw test_mouse testcurs
 raw_sp                         test: sp_tinfo
 redrawwin                      test: combine padview redraw view
-refresh                                test: blue bs color_content demo_defkey demo_forms demo_keyok demo_menus demo_panels demo_tabs dots_curses dots_mvcur dots_xcurses dup_field echochar filter firstlast form_driver_w gdc hanoi hashtest lrtest move_field movewindow ncurses pair_content picsmap savescreen tclock test_delwin test_mouse testcurs view xmas
+refresh                                test: blue bs color_content demo_defkey demo_forms demo_keyok demo_menus demo_panels demo_tabs dots_curses dots_mvcur dots_xcurses dup_field echochar filter firstlast form_driver_w gdc hanoi hashtest lrtest move_field movewindow ncurses pair_content picsmap savescreen tclock test_delwin test_endwin test_mouse testcurs view xmas
 reset_color_pairs              test: picsmap
 reset_color_pairs_sp           -
 reset_prog_mode                        test: filter ncurses
@@ -629,7 +637,7 @@ set_tabsize_sp                      test: sp_tinfo
 set_term                       lib: ncurses
 setcchar                       test: back_ground combine demo_new_pair demo_panels ins_wide ncurses picsmap savescreen test_add_wchstr test_addwstr
 setscrreg                      test: view
-setupterm                      test: demo_terminfo dots list_keys sp_tinfo test_mouse test_setupterm test_sgr test_termattrs test_tparm test_vid_puts test_vidputs progs: clear tabs tput tset
+setupterm                      test: demo_terminfo dots list_keys sp_tinfo test_setupterm test_sgr test_termattrs test_tparm test_vid_puts test_vidputs progs: clear tabs tput tset
 slk_attr                       -
 slk_attr_off                   -
 slk_attr_on                    -
@@ -686,7 +694,7 @@ tgetnum                             test: demo_termcap dots_termcap railroad
 tgetnum_sp                     test: sp_tinfo
 tgetstr                                test: demo_termcap dots_termcap railroad
 tgetstr_sp                     test: sp_tinfo
-tgoto                          test: dots_termcap railroad progs: tic
+tgoto                          test: dots_termcap railroad test_mouse progs: tic
 tigetflag                      test: demo_terminfo savescreen progs: tic tput
 tigetflag_sp                   test: sp_tinfo
 tigetnum                       test: demo_tabs demo_terminfo dots dots_mvcur ncurses savescreen progs: tput
@@ -694,10 +702,12 @@ tigetnum_sp                       test: sp_tinfo
 tigetstr                       test: blue demo_defkey demo_new_pair demo_terminfo foldkeys list_keys savescreen test_mouse test_sgr test_tparm testcurs progs: clear_cmd tic tput
 tigetstr_sp                    test: sp_tinfo
 timeout                                test: filter rain savescreen
-tiparm                         -
+tiparm                         test: test_tparm
+tiparm_s                       test: test_tparm
+tiscan_s                       test: test_tparm
 touchline                      test: chgat clip_printw insdelln
 touchwin                       test: chgat clip_printw demo_menus filter firstlast inch_wide inchs ins_wide insdelln inserts movewindow ncurses popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_delwin test_get_wstr test_getstr test_instr test_inwstr test_opaque xmas
-tparm                          test: dots dots_mvcur test_mouse test_sgr test_tparm progs: tic tput
+tparm                          test: dots dots_mvcur test_sgr test_tparm progs: tic tput
 tputs                          test: dots dots_mvcur dots_termcap railroad test_tparm test_vid_puts test_vidputs progs: clear_cmd reset_cmd tabs
 tputs_sp                       test: sp_tinfo
 trace                          -
@@ -752,8 +762,8 @@ wattr_get                   test: ncurses
 wattr_off                      lib: ncurses
 wattr_on                       lib: ncurses
 wattr_set                      test: ncurses
-wattroff                       test: demo_forms ncurses testcurs xmas
-wattron                                test: testcurs xmas
+wattroff                       test: clip_printw demo_forms ncurses testcurs xmas
+wattron                                test: clip_printw testcurs xmas
 wattrset                       test: clip_printw demo_forms insdelln ncurses newdemo padview test_get_wstr test_getstr testcurs xmas
 wbkgd                          test: cardfile demo_forms demo_menus ncurses newdemo padview testcurs
 wbkgdset                       test: demo_panels ins_wide inserts ncurses test_add_wchstr test_addchstr test_addstr test_addwstr
index 248d536bc51ffc03fc9e3f403e4628d1dc7919b1..fdab359ae5f1c6048c116eaf5091d27d0e751594 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright 2018-2022,2023 Thomas E. Dickey                                *
+dnl Copyright 2018-2023,2024 Thomas E. Dickey                                *
 dnl Copyright 2003-2017,2018 Free Software Foundation, Inc.                  *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,7 +27,7 @@ dnl sale, use or other dealings in this Software without prior written       *
 dnl authorization.                                                           *
 dnl***************************************************************************
 dnl
-dnl $Id: aclocal.m4,v 1.210 2023/01/11 09:05:23 tom Exp $
+dnl $Id: aclocal.m4,v 1.221 2024/01/19 18:27:20 tom Exp $
 dnl
 dnl Author: Thomas E. Dickey
 dnl
@@ -411,7 +411,7 @@ ifelse([$3],,[    :]dnl
 ])dnl
 ])])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23
+dnl CF_C11_NORETURN version: 4 updated: 2023/02/18 17:41:25
 dnl ---------------
 AC_DEFUN([CF_C11_NORETURN],
 [
@@ -425,8 +425,7 @@ AC_MSG_RESULT($enable_stdnoreturn)
 if test $enable_stdnoreturn = yes; then
 AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
        [AC_TRY_COMPILE([
-#include <stdio.h>
-#include <stdlib.h>
+$ac_includes_default
 #include <stdnoreturn.h>
 static _Noreturn void giveup(void) { exit(0); }
        ],
@@ -450,7 +449,7 @@ AC_SUBST(HAVE_STDNORETURN_H)
 AC_SUBST(STDC_NORETURN)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20
+dnl CF_CC_ENV_FLAGS version: 11 updated: 2023/02/20 11:15:46
 dnl ---------------
 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
 dnl into CC.  This will not help with broken scripts that wrap the compiler
@@ -491,7 +490,7 @@ case "$CC" in
        AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
        # humor him...
        cf_prog=`echo "$CC" | sed -e 's/        / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
-       cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
+       cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
        CC="$cf_prog"
        for cf_arg in $cf_flags
        do
@@ -630,7 +629,7 @@ if test "$cf_have_curses_lib" = no; then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04
+dnl CF_CLANG_COMPILER version: 9 updated: 2023/02/18 17:41:25
 dnl -----------------
 dnl Check if the given compiler is really clang.  clang's C driver defines
 dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
@@ -652,7 +651,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
        AC_TRY_COMPILE([],[
 #ifdef __clang__
 #else
-make an error
+#error __clang__ is not defined
 #endif
 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
 ],[])
@@ -698,7 +697,7 @@ if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
 fi
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
+dnl CF_CONST_X_STRING version: 8 updated: 2023/12/01 17:22:50
 dnl -----------------
 dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
 dnl character-strings.
@@ -733,6 +732,7 @@ AC_TRY_COMPILE(
 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
        AC_TRY_COMPILE(
                [
+#undef  _CONST_X_STRING
 #define _CONST_X_STRING        /* X11R7.8 (perhaps) */
 #undef  XTSTRINGDEFINES        /* X11R5 and later */
 #include <stdlib.h>
@@ -1098,7 +1098,7 @@ fi
 
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CURSES_TERM_H version: 15 updated: 2021/01/02 09:31:20
+dnl CF_CURSES_TERM_H version: 16 updated: 2024/01/07 06:34:16
 dnl ----------------
 dnl SVr4 curses should have term.h as well (where it puts the definitions of
 dnl the low-level interface).  This may not be true in old/broken implementations,
@@ -1144,7 +1144,7 @@ case "$cf_cv_term_header" in
 #ifdef NCURSES_VERSION
 #include <${cf_header}>
 #else
-make an error
+#error expected NCURSES_VERSION to be defined
 #endif],
                        [WINDOW *x; (void)x],
                        [cf_cv_term_header=$cf_header
@@ -1685,7 +1685,34 @@ rm -f core])
 test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 if we have curses_version function])
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_OPENPTY version: 6 updated: 2021/01/01 13:31:04
+dnl CF_FUNC_GETTIME version: 2 updated: 2023/02/25 08:45:56
+dnl ---------------
+dnl Check for gettimeofday or clock_gettime.  In 2023, the former is still more
+dnl widely supported, but "deprecated" (2008), so we will use the latter if it
+dnl is available, to reduce compiler warnings.
+AC_DEFUN([CF_FUNC_GETTIME],[
+AC_CACHE_CHECK(for clock_gettime,cf_cv_func_clock_gettime,[
+               AC_TRY_LINK([#include <time.h>],
+               [struct timespec ts;
+               int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts],
+               [cf_cv_func_clock_gettime=yes],
+               [cf_cv_func_clock_gettime=no])
+])
+
+if test "$cf_cv_func_clock_gettime" = yes
+then
+       AC_DEFINE(HAVE_CLOCK_GETTIME,1,[Define to 1 if we have clock_gettime function])
+else
+AC_CHECK_FUNC(gettimeofday,
+       AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[
+
+AC_CHECK_LIB(bsd, gettimeofday,
+       AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function])
+       CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_FUNC_OPENPTY version: 7 updated: 2023/12/03 09:21:34
 dnl ---------------
 dnl Check for openpty() function, along with <pty.h> header.  It may need the
 dnl "util" library as well.
@@ -1702,6 +1729,7 @@ AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
 ],[
        int x = openpty((int *)0, (int *)0, (char *)0,
                                   (struct termios *)0, (struct winsize *)0);
+       (void)x;
 ],[
                cf_cv_func_openpty=$cf_header
                break
@@ -1826,7 +1854,7 @@ rm -rf ./conftest*
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
+dnl CF_GCC_VERSION version: 9 updated: 2023/03/05 14:30:13
 dnl --------------
 dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
 dnl compatible), attempt to determine if icc/clang is actually used.
@@ -1835,7 +1863,7 @@ AC_REQUIRE([AC_PROG_CC])
 GCC_VERSION=none
 if test "$GCC" = yes ; then
        AC_MSG_CHECKING(version of $CC)
-       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
+       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
        test -z "$GCC_VERSION" && GCC_VERSION=unknown
        AC_MSG_RESULT($GCC_VERSION)
 fi
@@ -2156,7 +2184,7 @@ AC_DEFUN([CF_INHERIT_SCRIPT],
 test -f $1 || ( test -f ../$1 && cp ../$1 ./ )
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21
+dnl CF_INSTALL_OPTS version: 3 updated: 2023/06/03 15:17:30
 dnl ---------------
 dnl prompt for/fill-in useful install-program options
 AC_DEFUN([CF_INSTALL_OPTS],
@@ -2164,6 +2192,7 @@ AC_DEFUN([CF_INSTALL_OPTS],
 CF_INSTALL_OPT_S
 CF_INSTALL_OPT_P
 CF_INSTALL_OPT_O
+CF_INSTALL_OPT_STRIP_PROG
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42
@@ -2250,7 +2279,73 @@ fi
 AC_SUBST(INSTALL_OPT_S)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59
+dnl CF_INSTALL_OPT_STRIP_PROG version: 1 updated: 2023/06/03 15:17:30
+dnl -------------------------
+dnl Provide an option for overriding the strip program used in install "-s"
+dnl
+dnl coreutils install provides a --strip-program option
+dnl FreeBSD uses STRIPBIN environment variable, while NetBSD and OpenBSD use
+dnl STRIP environment variable.  Other versions of install do not support this.
+AC_DEFUN([CF_INSTALL_OPT_STRIP_PROG],
+[
+AC_REQUIRE([CF_INSTALL_OPT_S])
+if test -n "$INSTALL_OPT_S"
+then
+       AC_MSG_CHECKING(if you want to specify strip-program)
+       AC_ARG_WITH(strip-program,
+               [  --with-strip-program=XX specify program to use when stripping in install],
+               [with_strip_program=$withval],
+               [with_strip_program=no])
+       AC_MSG_RESULT($with_strip_program)
+       if test "$with_strip_program" != no
+       then
+               AC_MSG_CHECKING(if strip-program is supported with this installer)
+               cf_install_program=`echo "$INSTALL" | sed -e 's%[[ ]]*[[ ]]-.%%'`
+               check_install_strip=no
+               if test -f "$cf_install_program"
+               then
+                       check_install_version=`"$cf_install_program" --version 2>/dev/null | head -n 1 | grep coreutils`
+                       if test -n "$check_install_version"
+                       then
+                               check_install_strip="option"
+                       else
+                               for check_strip_variable in STRIPBIN STRIP
+                               do
+                                       if strings "$cf_install_program" | grep "^$check_strip_variable[$]" >/dev/null
+                                       then
+                                               check_install_strip="environ"
+                                               break
+                                       fi
+                               done
+                       fi
+               fi
+               AC_MSG_RESULT($check_install_strip)
+               case "$check_install_strip" in
+               (no)
+                       AC_MSG_WARN($cf_install_program does not support strip program option)
+                       with_strip_program=no
+                       ;;
+               (environ)
+                       cat >install.tmp <<-CF_EOF
+                       #! $SHELL
+                       STRIPBIN="$with_strip_program" \\
+                       STRIP="$with_strip_program" \\
+                       $INSTALL "[$]@"
+                       CF_EOF
+                       INSTALL="`pwd`/install.tmp"
+                       chmod +x "$INSTALL"
+                       CF_VERBOSE(created $INSTALL)
+                       ;;
+               (option)
+                       INSTALL_OPT_S="$INSTALL_OPT_S --strip-program=\"$with_strip_program\""
+                       ;;
+               esac
+       fi
+fi
+AC_SUBST(INSTALL_OPT_S)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_INTEL_COMPILER version: 9 updated: 2023/02/18 17:41:25
 dnl -----------------
 dnl Check if the given compiler is really the Intel compiler for Linux.  It
 dnl tries to imitate gcc, but does not return an error when it finds a mismatch
@@ -2276,7 +2371,7 @@ if test "$ifelse([$1],,[$1],GCC)" = yes ; then
                AC_TRY_COMPILE([],[
 #ifdef __INTEL_COMPILER
 #else
-make an error
+#error __INTEL_COMPILER is not defined
 #endif
 ],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
@@ -2581,7 +2676,7 @@ AC_DEFUN([CF_MSG_LOG],[
 echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_CC_CHECK version: 5 updated: 2020/12/31 20:19:42
+dnl CF_NCURSES_CC_CHECK version: 6 updated: 2023/02/18 17:47:58
 dnl -------------------
 dnl Check if we can compile with ncurses' header file
 dnl $1 is the cache variable to set
@@ -2598,7 +2693,7 @@ AC_DEFUN([CF_NCURSES_CC_CHECK],[
 #ifdef NCURSES_VERSION
 ]ifelse($3,ncursesw,[
 #ifndef WACS_BSSB
-       make an error
+       #error WACS_BSSB is not defined
 #endif
 ])[
 printf("%s\\n", NCURSES_VERSION);
@@ -2606,7 +2701,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
        ]
@@ -2979,7 +3074,7 @@ then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_NCURSES_VERSION version: 17 updated: 2023/01/05 18:54:02
+dnl CF_NCURSES_VERSION version: 18 updated: 2024/01/07 06:34:16
 dnl ------------------
 dnl Check for the version of ncurses, to aid in reporting bugs, etc.
 dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS.  We don't use
@@ -3009,7 +3104,7 @@ int main(void)
 # ifdef __NCURSES_H
        fprintf(fp, "old\\n");
 # else
-       make an error
+       #error expected ncurses header to define __NCURSES_H
 # endif
 #endif
        ${cf_cv_main_return:-return}(0);
@@ -3219,7 +3314,7 @@ else
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_PKG_CONFIG version: 12 updated: 2021/10/10 20:18:09
+dnl CF_PKG_CONFIG version: 13 updated: 2023/10/28 11:59:01
 dnl -------------
 dnl Check for the package-config program, unless disabled by command-line.
 dnl
@@ -3228,7 +3323,7 @@ AC_DEFUN([CF_PKG_CONFIG],
 [
 AC_MSG_CHECKING(if you want to use pkg-config)
 AC_ARG_WITH(pkg-config,
-       [  --with-pkg-config{=path} enable/disable use of pkg-config],
+       [[  --with-pkg-config[=CMD] enable/disable use of pkg-config and its name CMD]],
        [cf_pkg_config=$withval],
        [cf_pkg_config=yes])
 AC_MSG_RESULT($cf_pkg_config)
@@ -3257,7 +3352,7 @@ fi
 AC_SUBST(PKG_CONFIG)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
+dnl CF_POSIX_C_SOURCE version: 12 updated: 2023/02/18 17:41:25
 dnl -----------------
 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
 dnl
@@ -3288,7 +3383,7 @@ AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
        CF_MSG_LOG(if the symbol is already defined go no further)
        AC_TRY_COMPILE([#include <sys/types.h>],[
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif],
        [cf_cv_posix_c_source=no],
        [cf_want_posix_source=no
@@ -3307,7 +3402,7 @@ make an error
         if test "$cf_want_posix_source" = yes ; then
                AC_TRY_COMPILE([#include <sys/types.h>],[
 #ifdef _POSIX_SOURCE
-make an error
+#error _POSIX_SOURCE is defined
 #endif],[],
                cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
         fi
@@ -3318,7 +3413,7 @@ make an error
         CF_MSG_LOG(if the second compile does not leave our definition intact error)
         AC_TRY_COMPILE([#include <sys/types.h>],[
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif],,
         [cf_cv_posix_c_source=no])
         CFLAGS="$cf_save_CFLAGS"
@@ -3625,7 +3720,7 @@ do
 done
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04
+dnl CF_SIGWINCH version: 7 updated: 2023/02/18 17:41:25
 dnl -----------
 dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
 dnl programs need this test).
@@ -3668,7 +3763,7 @@ do
 #include <sys/signal.h>
 ],[
 #if SIGWINCH != $cf_sigwinch
-make an error
+#error SIGWINCH is not $cf_sigwinch
 #endif
 int x = SIGWINCH; (void)x],
        [cf_cv_fixup_sigwinch=$cf_sigwinch
@@ -3983,7 +4078,7 @@ AC_DEFUN([CF_VERBOSE],
 CF_MSG_LOG([$1])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
+dnl CF_WCHAR_TYPE version: 5 updated: 2023/12/03 09:21:34
 dnl -------------
 dnl Check if type wide-character type $1 is declared, and if so, which header
 dnl file is needed.  The second parameter is used to set a shell variable when
@@ -4000,7 +4095,7 @@ AC_TRY_COMPILE([
 #ifdef HAVE_LIBUTF8_H
 #include <libutf8.h>
 #endif],
-       [$1 state],
+       [$1 state; (void)state],
        [cf_cv_$1=no],
        [AC_TRY_COMPILE([
 #include <stdlib.h>
@@ -4010,7 +4105,7 @@ AC_TRY_COMPILE([
 #ifdef HAVE_LIBUTF8_H
 #include <libutf8.h>
 #endif],
-       [$1 value],
+       [$1 value; (void) value],
        [cf_cv_$1=yes],
        [cf_cv_$1=unknown])])])
 
@@ -4087,7 +4182,7 @@ if test "$with_dmalloc" = yes ; then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_LIB_BASENAME version: 1 updated: 2020/03/07 20:05:14
+dnl CF_WITH_LIB_BASENAME version: 2 updated: 2023/11/22 20:48:30
 dnl --------------------
 dnl Allow for overriding the basename of a library, i.e., the part to which
 dnl prefixes/suffixes are attached.
@@ -4099,7 +4194,7 @@ AC_DEFUN([CF_WITH_LIB_BASENAME],
 [
 AC_MSG_CHECKING(for desired basename for $2 library)
 AC_ARG_WITH($2-libname,
-       [  --with-$2-libname=XXX override ifelse($3,,$2,$3) basename of library],
+       [[  --with-$2-libname[=XXX] override ifelse($3,,$2,$3) basename of library]],
        [with_lib_basename=$withval],
        [with_lib_basename=ifelse($3,,$2,$3)])
 $1="$with_lib_basename"
@@ -4116,7 +4211,7 @@ AC_MSG_RESULT([$]$1)
 AC_SUBST($1)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_NCURSES_ETC version: 5 updated: 2016/02/20 19:23:20
+dnl CF_WITH_NCURSES_ETC version: 6 updated: 2023/01/16 10:10:06
 dnl -------------------
 dnl Use this macro for programs which use any variant of "curses", e.g.,
 dnl "ncurses", and "PDCurses".  Programs that can use curses and some unrelated
@@ -4176,6 +4271,7 @@ case $cf_cv_screen in
 esac
 
 CF_NCURSES_PTHREADS($cf_cv_screen)
+AC_SUBST(cf_cv_screen)
 
 ])dnl
 dnl ---------------------------------------------------------------------------
@@ -4204,7 +4300,7 @@ CF_NO_LEAKS_OPTION(valgrind,
        [USE_VALGRIND])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54
+dnl CF_WITH_X11_RGB version: 3 updated: 2023/10/28 11:59:01
 dnl ---------------
 dnl Handle configure option "--with-x11-rgb", setting these shell
 dnl variables:
@@ -4244,7 +4340,7 @@ dnl       /usr/X11/lib/X11/rgb.txt
 AC_DEFUN([CF_WITH_X11_RGB],[
 AC_MSG_CHECKING(for X11 rgb file)
 AC_ARG_WITH(x11-rgb,
-       [  --with-x11-rgb=FILE   file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)],
+       [  --with-x11-rgb=FILE     obtain X11 color definitions from FILE (default: EPREFIX/lib/X11/rgb.txt)],
        [RGB_PATH=$withval],
        [RGB_PATH=auto])
 
@@ -4290,7 +4386,7 @@ fi
 AC_SUBST(no_x11_rgb)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_CURSES version: 18 updated: 2023/01/11 04:05:23
+dnl CF_XOPEN_CURSES version: 20 updated: 2024/01/07 06:54:12
 dnl ---------------
 dnl Test if we should define X/Open source for curses, needed on Digital Unix
 dnl 4.x, to see the extended functions, but breaks on IRIX 6.x.
@@ -4307,15 +4403,16 @@ $ac_includes_default
 #include <${cf_cv_ncurses_header:-curses.h}>],[
 #if defined(NCURSES_VERSION_PATCH)
 #if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403)
-       make an error
+       #error disallow ncurses versions between 2020/04/03 and 2010/05/01
 #endif
 #endif
 #ifdef NCURSES_WIDECHAR
-make an error  /* prefer to fall-through on the second checks */
+#error prefer to fall-through on the second checks
 #endif
+       static char dummy[10];
        cchar_t check;
        int check2 = curs_set((int)sizeof(check));
-       long x = winnstr(stdscr, "", 0);
+       long x = winnstr(stdscr, dummy, 5);
        int x1, y1;
        (void)check2;
        getbegyx(stdscr, y1, x1);
@@ -4331,9 +4428,10 @@ make an error    /* prefer to fall-through on the second checks */
 #define $cf_try_xopen_extension 1
 $ac_includes_default
 #include <${cf_cv_ncurses_header:-curses.h}>],[
+               static char dummy[10];
                cchar_t check;
                int check2 = curs_set((int)sizeof(check));
-               long x = winnstr(stdscr, "", 0);
+               long x = winnstr(stdscr, dummy, 5);
                int x1, y1;
                getbegyx(stdscr, y1, x1);
                (void)check2;
@@ -4354,7 +4452,7 @@ esac
 
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_SOURCE version: 63 updated: 2022/12/29 10:10:26
+dnl CF_XOPEN_SOURCE version: 67 updated: 2023/09/06 18:55:27
 dnl ---------------
 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
 dnl or adapt to the vendor's definitions to get equivalent functionality,
@@ -4363,6 +4461,18 @@ dnl
 dnl Parameters:
 dnl    $1 is the nominal value for _XOPEN_SOURCE
 dnl    $2 is the nominal value for _POSIX_C_SOURCE
+dnl
+dnl The default case prefers _XOPEN_SOURCE over _POSIX_C_SOURCE if the
+dnl implementation predefines it, because X/Open and most implementations agree
+dnl that the latter is a legacy or "aligned" value.
+dnl
+dnl Because _XOPEN_SOURCE is preferred, if defining _POSIX_C_SOURCE turns
+dnl that off, then refrain from setting _POSIX_C_SOURCE explicitly.
+dnl
+dnl References:
+dnl https://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html
+dnl https://docs.oracle.com/cd/E19253-01/816-5175/standards-5/index.html
+dnl https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
 AC_DEFUN([CF_XOPEN_SOURCE],[
 AC_REQUIRE([AC_CANONICAL_HOST])
 AC_REQUIRE([CF_POSIX_VISIBLE])
@@ -4377,9 +4487,6 @@ case "$host_os" in
 (aix[[4-7]]*)
        cf_xopen_source="-D_ALL_SOURCE"
        ;;
-(msys)
-       cf_XOPEN_SOURCE=600
-       ;;
 (darwin[[0-8]].*)
        cf_xopen_source="-D_APPLE_C_SOURCE"
        ;;
@@ -4405,7 +4512,7 @@ case "$host_os" in
        cf_xopen_source="-D_SGI_SOURCE"
        cf_XOPEN_SOURCE=
        ;;
-(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
        CF_GNU_SOURCE($cf_XOPEN_SOURCE)
        ;;
 (minix*)
@@ -4457,8 +4564,8 @@ case "$host_os" in
        cf_save_xopen_cppflags="$CPPFLAGS"
        CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
        # Some of these niche implementations use copy/paste, double-check...
-       if test "$cf_cv_xopen_source" != no ; then
-               CF_VERBOSE(checking if _POSIX_C_SOURCE inteferes)
+       if test "$cf_cv_xopen_source" = no ; then
+               CF_VERBOSE(checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE)
                AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[
                        AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable)
                        CPPFLAGS="$cf_save_xopen_cppflags"])
@@ -4477,7 +4584,7 @@ if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
        AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
        AC_TRY_COMPILE([#include <stdlib.h>],[
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif],
        [cf_XOPEN_SOURCE_set=yes],
        [cf_XOPEN_SOURCE_set=no])
@@ -4486,7 +4593,7 @@ make an error
        then
                AC_TRY_COMPILE([#include <stdlib.h>],[
 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
-make an error
+#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
 #endif],
                [cf_XOPEN_SOURCE_set_ok=yes],
                [cf_XOPEN_SOURCE_set_ok=no])
@@ -4873,22 +4980,20 @@ char * XCursesProgramName = "test";
 #endif
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF__XOPEN_SOURCE_BODY version: 1 updated: 2022/09/10 15:17:35
+dnl CF__XOPEN_SOURCE_BODY version: 2 updated: 2023/02/18 17:41:25
 dnl ---------------------
 dnl body of test when test-compiling for _XOPEN_SOURCE check
 define([CF__XOPEN_SOURCE_BODY],
 [
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF__XOPEN_SOURCE_HEAD version: 1 updated: 2022/09/10 15:17:03
+dnl CF__XOPEN_SOURCE_HEAD version: 2 updated: 2023/02/18 17:41:25
 dnl ---------------------
 dnl headers to include when test-compiling for _XOPEN_SOURCE check
 define([CF__XOPEN_SOURCE_HEAD],
 [
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 ])
index 3bb1f10bcf74f9cf2d2e7a4305fe87533513c9f3..12295a3195800aa7453572a47120376442620f64 100644 (file)
--- a/test/bs.6
+++ b/test/bs.6
@@ -27,8 +27,8 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: bs.6,v 1.4 2021/06/17 21:20:30 tom Exp $
-.TH BATTLESHIPS 6 "Aug 23, 1989"
+.\" $Id: bs.6,v 1.5 2021/06/17 21:20:30 tom Exp $
+.TH BATTLESHIPS 6 2021-06-17 ncurses-examples Games
 .SH NAME
 bs \- battleships game
 .SH SYNOPSIS
index 3e77331710d46ce4bee78982b4fafd79f50baf2e..c7569cf207fd6a9c79de9814b03642f493464c8a 100644 (file)
--- a/test/bs.c
+++ b/test/bs.c
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -35,7 +35,7 @@
  * v2.0 featuring strict ANSI/POSIX conformance, November 1993.
  * v2.1 with ncurses mouse support, September 1995
  *
- * $Id: bs.c,v 1.78 2022/12/11 00:18:37 tom Exp $
+ * $Id: bs.c,v 1.79 2023/05/27 20:13:10 tom Exp $
  */
 
 #include <test.priv.h>
@@ -898,8 +898,9 @@ sgetc(const char *s)
            ch = toupper(ch);
        if (is_QUIT(ch))
            uninitgame(0);
-       for (s1 = s; *s1 && ch != *s1; ++s1)
-           continue;
+       for (s1 = s; *s1 && ch != *s1; ++s1) {
+           /* EMPTY */ ;
+       }
        if (*s1) {
            AddCh(ch);
            (void) refresh();
@@ -1270,8 +1271,9 @@ main(int argc, char *argv[])
                    }
                }
            } else
-               while ((turn ? cputurn() : plyturn()) && awinna() == -1)
-                   continue;
+               while ((turn ? cputurn() : plyturn()) && awinna() == -1) {
+                   /* EMPTY */ ;
+               }
            turn = OTHER;
        }
     } while
index 49d67c53741fbc5b84581943d5ccef3dd4831e7c..c34a1e09ff348d1153bb070f54a6153142e8695e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2008-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,9 +27,9 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: clip_printw.c,v 1.21 2022/12/10 23:31:31 tom Exp $
+ * $Id: clip_printw.c,v 1.23 2023/09/30 19:57:44 tom Exp $
  *
- * demonstrate how to use printw without wrapping.
+ * demonstrate how to use printw with/without wrapping.
  */
 
 #include <test.priv.h>
 #define SHOW(n) ((n) == ERR ? "ERR" : "OK")
 #define COLOR_DEFAULT (-1)
 
+#define X_BASE 0
+#define Y_BASE 1
+#define MARGIN 1
+#define Y_TOP  (Y_BASE + MARGIN)
+
 typedef struct {
     unsigned c;
     unsigned v;
+    bool single;
     int status;
     int pair;
     attr_t attr;
@@ -57,21 +63,29 @@ typedef struct {
 } STATUS;
 
 static int
-clip_wprintw(WINDOW *win, NCURSES_CONST char *fmt, ...)
+clip_wprintw(WINDOW *win, bool single, NCURSES_CONST char *fmt, ...)
 {
     int y0, x0, y1, x1, width;
     WINDOW *sub;
     va_list ap;
     int rc;
 
-    /*
-     * Allocate a single-line derived window extending from the current
-     * cursor position to the end of the current line in the given window.
-     * Disable scrolling in the derived window.
-     */
     getyx(win, y0, x0);
     width = getmaxx(win) - x0;
-    sub = derwin(win, 1, width, y0, x0);
+    if (single) {
+       /*
+        * Allocate a single-line derived window extending from the current
+        * cursor position to the end of the current line in the given window.
+        * Disable scrolling in the derived window.
+        */
+       sub = derwin(win, 1, width, y0, x0);
+    } else {
+       /*
+        * Allow printw to wrap through the entire window.
+        */
+       sub = derwin(win, getmaxy(win), getmaxx(win), 0, 0);
+       wmove(sub, y0, x0);
+    }
     scrollok(sub, FALSE);
 
     /*
@@ -84,7 +98,11 @@ clip_wprintw(WINDOW *win, NCURSES_CONST char *fmt, ...)
     getyx(sub, y1, x1);
     delwin(sub);
 
-    wmove(win, y1 + y0, x1 + x0);
+    if (single) {
+       wmove(win, y1 + y0, x1 + x0);
+    } else {
+       wmove(win, y1, x1);
+    }
 
     return rc;
 }
@@ -156,11 +174,12 @@ video_params(unsigned state, attr_t *attr)
 static void
 fill_window(WINDOW *win)
 {
+    int y_top = (win == stdscr) ? Y_BASE : MARGIN;
     int y, x;
     int y0 = -1, x0 = -1;
 
     getyx(win, y, x);
-    wmove(win, 0, 0);
+    wmove(win, y_top, 0);
     while (waddstr(win, "0123456789 abcdefghijklmnopqrstuvwxyz ") != ERR) {
        int y1, x1;
        getyx(win, y1, x1);
@@ -178,25 +197,34 @@ show_status(WINDOW *win, STATUS * sp)
     int y, x;
 
     getyx(win, y, x);
+    wattron(win, A_REVERSE);
     wmove(win, 0, 0);
-    wprintw(win, "Count %d", sp->count);
+    wprintw(win, "Clip %s", sp->single ? "line" : "window");
+    wprintw(win, " Count %d", sp->count);
     if (sp->v_msg != 0)
        wprintw(win, " Video %s", sp->v_msg);
     if (sp->c_msg != 0)
        wprintw(win, " Color %s", sp->c_msg);
     wprintw(win, " (%d)", sp->status);
     wclrtoeol(win);
+    wattroff(win, A_REVERSE);
     wmove(win, y, x);
 }
 
 static void
 do_subwindow(WINDOW *win, STATUS * sp, void func(WINDOW *))
 {
-    WINDOW *win1 = newwin(sp->y_max - 2, sp->x_max - 2,
-                         sp->y_beg + 1, sp->x_beg + 1);
+    WINDOW *win1 = newwin(sp->y_max - (2 * MARGIN),
+                         sp->x_max - (2 * MARGIN),
+                         sp->y_beg + MARGIN,
+                         sp->x_beg + MARGIN);
 
     if (win1 != 0 && sp->y_max > 4 && sp->x_max > 4) {
-       WINDOW *win2 = derwin(win1, sp->y_max - 4, sp->x_max - 4, 1, 1);
+       WINDOW *win2 = derwin(win1,
+                             sp->y_max - (2 * MARGIN) - 2,
+                             sp->x_max - (2 * MARGIN) - 2,
+                             (win == stdscr) ? Y_BASE : Y_BASE,
+                             MARGIN);
 
        if (win2 != 0) {
            box(win1, 0, 0);
@@ -216,10 +244,14 @@ do_subwindow(WINDOW *win, STATUS * sp, void func(WINDOW *))
     }
 }
 
+/*
+ * The status line is within the same window as the test-data.
+ */
 static void
 init_status(WINDOW *win, STATUS * sp)
 {
     memset(sp, 0, sizeof(*sp));
+    sp->single = TRUE;
     sp->c = 99;
     sp->v = 99;
     sp->ch = ' ';
@@ -229,6 +261,8 @@ init_status(WINDOW *win, STATUS * sp)
 
     getbegyx(win, sp->y_beg, sp->x_beg);
     getmaxyx(win, sp->y_max, sp->x_max);
+
+    wmove(win, sp->y_val = Y_BASE, sp->x_val = 0);
 }
 
 static void
@@ -242,7 +276,10 @@ show_help(WINDOW *win)
        ,""
        ,"Other commands:"
        ,"space toggles through the set of video attributes and colors."
+       ,"q     exit subwindow, quit if last window."
+       ,"s     toggles single-line updates versus entire windows."
        ,"t     touches (forces repaint) of the current line."
+       ,"w     create subwindow."
        ,".     calls vw_printw at the current position with the given count."
        ,"=     resets count to zero."
        ,"?     shows this help-window"
@@ -255,6 +292,8 @@ show_help(WINDOW *win)
 static void
 update_status(WINDOW *win, STATUS * sp)
 {
+    int margin = 0;
+
     switch (sp->ch) {
     case ' ':                  /* next test-iteration */
        if (has_colors()) {
@@ -272,24 +311,40 @@ update_status(WINDOW *win, STATUS * sp)
        sp->count = 0;
        show_status(win, sp);
        break;
+    case KEY_HOME:
+    case '^':
+       wmove(win, sp->y_val, sp->x_val = margin);
+       break;
+    case KEY_END:
+    case '$':
+       wmove(win, sp->y_val, sp->x_val = (sp->x_max - margin - 1));
+       break;
+    case KEY_PPAGE:
+    case CTRL('B'):
+       wmove(win, sp->y_val = Y_BASE, sp->x_val);
+       break;
+    case KEY_NPAGE:
+    case CTRL('F'):
+       wmove(win, sp->y_val = (sp->y_max - margin - 1), sp->x_val);
+       break;
     case KEY_LEFT:
     case 'h':
-       if (sp->x_val > 0)
+       if (sp->x_val > margin)
            wmove(win, sp->y_val, --(sp->x_val));
        break;
     case KEY_DOWN:
     case 'j':
-       if (sp->y_val < sp->y_max)
+       if (sp->y_val < (sp->y_max - margin))
            wmove(win, ++(sp->y_val), sp->x_val);
        break;
     case KEY_UP:
     case 'k':
-       if (sp->y_val > 0)
+       if (sp->y_val > Y_BASE)
            wmove(win, --(sp->y_val), sp->x_val);
        break;
     case KEY_RIGHT:
     case 'l':
-       if (sp->x_val < sp->x_max)
+       if (sp->x_val < (sp->x_max - margin))
            wmove(win, sp->y_val, ++(sp->x_val));
        break;
     case 't':
@@ -299,6 +354,10 @@ update_status(WINDOW *win, STATUS * sp)
        sp->count = 0;
        show_status(win, sp);
        break;
+    case 's':
+       sp->single = !sp->single;
+       show_status(win, sp);
+       break;
     case HELP_KEY_1:
        show_help(win);
        break;
@@ -342,7 +401,7 @@ test_clipping(WINDOW *win)
                    buffer[j] = (char) ('A' + (j % 26));
                }
                buffer[need - 1] = '\0';
-               st.status = clip_wprintw(win, fmt, '[', buffer, ']');
+               st.status = clip_wprintw(win, st.single, fmt, '[', buffer, ']');
                free(buffer);
            }
            break;
index c9aaf2fab1255eff9c6964f0744e0c16ddc572c1..d08dffb09fb5c267d44b37d9102d5da8ebca3334 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -26,7 +26,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: color_content.c,v 1.18 2022/12/10 22:28:50 tom Exp $
+ * $Id: color_content.c,v 1.19 2023/02/25 16:48:02 tom Exp $
  */
 
 #define NEED_TIME_H
@@ -58,10 +58,8 @@ static int x_opt;
 
 static MYCOLOR *expected;
 
-#if HAVE_GETTIMEOFDAY
-static struct timeval initial_time;
-static struct timeval finish_time;
-#endif
+static TimeType initial_time;
+static TimeType finish_time;
 
 static void
 failed(const char *msg)
@@ -175,9 +173,7 @@ setup_test(void)
     } else {
        failed("This demo requires a color terminal");
     }
-#if HAVE_GETTIMEOFDAY
-    gettimeofday(&initial_time, 0);
-#endif
+    GetClockTime(&initial_time);
 }
 
 static void
@@ -213,16 +209,6 @@ finish_test(void)
     endwin();
 }
 
-#if HAVE_GETTIMEOFDAY
-static double
-seconds(struct timeval *mark)
-{
-    double result = (double) mark->tv_sec;
-    result += ((double) mark->tv_usec / 1e6);
-    return result;
-}
-#endif
-
 static void
 usage(int ok)
 {
@@ -328,12 +314,8 @@ main(int argc, char *argv[])
            addch('\n');
        }
        printw("DONE: ");
-#if HAVE_GETTIMEOFDAY
-       gettimeofday(&finish_time, 0);
-       printw("%.03f seconds",
-              seconds(&finish_time)
-              - seconds(&initial_time));
-#endif
+       GetClockTime(&finish_time);
+       printw("%.03f seconds", ElapsedSeconds(&finish_time, &initial_time));
        finish_test();
     }
 
index 488f115d1f2412c9ea603505af3d75d55dd70da8..4f155cd78d0e85162fd522c42fa6160c98881112 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52.20230114.
+# Generated by Autoconf 2.52.20231210.
 #
 # Copyright 2003-2022,2023     Thomas E. Dickey
 # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
@@ -107,6 +107,42 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 : "${ac_max_here_lines=38}"
 
 ac_unique_file="ncurses.c"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
 
 # Initialize some variables set by options.
 ac_init_help=
@@ -669,9 +705,10 @@ Optional Packages:
 
 General Options:
   --disable-stripping     do not strip (debug info) installed executables
+  --with-strip-program=XX specify program to use when stripping in install
   --enable-stdnoreturn    enable C11 _Noreturn feature for diagnostics
   --enable-string-hacks   work around bogus compiler/loader warnings
-  --with-pkg-config{=path} enable/disable use of pkg-config
+  --with-pkg-config[=CMD] enable/disable use of pkg-config and its name CMD
   --disable-echo          do not display "compiling" commands
 Curses Version-dependent Options:
   --with-ncurses-wrap-prefix naming-prefix for ncurses wrapped-variables
@@ -688,10 +725,10 @@ Curses Version-dependent Options:
   --with-neXtaw           link with neXT Athena library
   --with-XawPlus          link with Athena-Plus library
   --with-x                use the X Window System
-  --with-x11-rgb=FILE   file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)
-  --with-form-libname=XXX override form basename of library
-  --with-menu-libname=XXX override menu basename of library
-  --with-panel-libname=XXX override panel basename of library
+  --with-x11-rgb=FILE     obtain X11 color definitions from FILE (default: EPREFIX/lib/X11/rgb.txt)
+  --with-form-libname[=XXX] override ifelse(,,form,) basename of library
+  --with-menu-libname[=XXX] override ifelse(,,menu,) basename of library
+  --with-panel-libname[=XXX] override ifelse(,,panel,) basename of library
   --disable-panel         disable checks for panel functions
   --disable-menu          disable checks for menu functions
   --disable-form          disable checks for form functions
@@ -772,7 +809,7 @@ This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
-generated by GNU Autoconf 2.52.20230114.  Invocation command line was
+generated by GNU Autoconf 2.52.20231210.  Invocation command line was
 
   $ $0 $@
 
@@ -896,7 +933,7 @@ if test -z "$CONFIG_SITE"; then
 fi
 for ac_site_file in $CONFIG_SITE; do
   if test -r "$ac_site_file"; then
-    { echo "$as_me:899: loading site script $ac_site_file" >&5
+    { echo "$as_me:936: loading site script $ac_site_file" >&5
 echo "$as_me: loading site script $ac_site_file" >&6;}
     cat "$ac_site_file" >&5
     . "$ac_site_file"
@@ -907,7 +944,7 @@ if test -r "$cache_file"; then
   # Some versions of bash will fail to source /dev/null (special
   # files actually), so we avoid doing that.
   if test -f "$cache_file"; then
-    { echo "$as_me:910: loading cache $cache_file" >&5
+    { echo "$as_me:947: loading cache $cache_file" >&5
 echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . $cache_file;;
@@ -915,7 +952,7 @@ echo "$as_me: loading cache $cache_file" >&6;}
     esac
   fi
 else
-  { echo "$as_me:918: creating cache $cache_file" >&5
+  { echo "$as_me:955: creating cache $cache_file" >&5
 echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
@@ -931,21 +968,21 @@ for ac_var in `(set) 2>&1 |
   eval ac_new_val="\$ac_env_${ac_var}_value"
   case "$ac_old_set,$ac_new_set" in
     set,)
-      { echo "$as_me:934: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+      { echo "$as_me:971: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { echo "$as_me:938: error: \`$ac_var' was not set in the previous run" >&5
+      { echo "$as_me:975: error: \`$ac_var' was not set in the previous run" >&5
 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
-        { echo "$as_me:944: error: \`$ac_var' has changed since the previous run:" >&5
+        { echo "$as_me:981: error: \`$ac_var' has changed since the previous run:" >&5
 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-        { echo "$as_me:946:   former value:  $ac_old_val" >&5
+        { echo "$as_me:983:   former value:  $ac_old_val" >&5
 echo "$as_me:   former value:  $ac_old_val" >&2;}
-        { echo "$as_me:948:   current value: $ac_new_val" >&5
+        { echo "$as_me:985:   current value: $ac_new_val" >&5
 echo "$as_me:   current value: $ac_new_val" >&2;}
         ac_cache_corrupted=:
       fi;;
@@ -964,9 +1001,9 @@ echo "$as_me:   current value: $ac_new_val" >&2;}
   fi
 done
 if "$ac_cache_corrupted"; then
-  { echo "$as_me:967: error: changes in the environment can compromise the build" >&5
+  { echo "$as_me:1004: error: changes in the environment can compromise the build" >&5
 echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:969: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+  { { echo "$as_me:1006: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -995,10 +1032,10 @@ esac
 echo "#! $SHELL" >conftest.sh
 echo  "exit 0"   >>conftest.sh
 chmod +x conftest.sh
-if { (echo "$as_me:998: PATH=\".;.\"; conftest.sh") >&5
+if { (echo "$as_me:1035: PATH=\".;.\"; conftest.sh") >&5
   (PATH=".;."; conftest.sh) 2>&5
   ac_status=$?
-  echo "$as_me:1001: \$? = $ac_status" >&5
+  echo "$as_me:1038: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   ac_path_separator=';'
 else
@@ -1030,7 +1067,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
   fi
 done
 if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:1033: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+  { { echo "$as_me:1070: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
 echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1040,11 +1077,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
 
 # Make sure we can run config.sub.
 $ac_config_sub sun4 >/dev/null 2>&1 ||
-  { { echo "$as_me:1043: error: cannot run $ac_config_sub" >&5
+  { { echo "$as_me:1080: error: cannot run $ac_config_sub" >&5
 echo "$as_me: error: cannot run $ac_config_sub" >&2;}
    { (exit 1); exit 1; }; }
 
-echo "$as_me:1047: checking build system type" >&5
+echo "$as_me:1084: checking build system type" >&5
 echo $ECHO_N "checking build system type... $ECHO_C" >&6
 if test "${ac_cv_build+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1053,16 +1090,16 @@ else
 test -z "$ac_cv_build_alias" &&
   ac_cv_build_alias=`$ac_config_guess`
 test -z "$ac_cv_build_alias" &&
-  { { echo "$as_me:1056: error: cannot guess build type; you must specify one" >&5
+  { { echo "$as_me:1093: error: cannot guess build type; you must specify one" >&5
 echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
    { (exit 1); exit 1; }; }
 ac_cv_build=`$ac_config_sub "$ac_cv_build_alias"` ||
-  { { echo "$as_me:1060: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+  { { echo "$as_me:1097: error: $ac_config_sub $ac_cv_build_alias failed." >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed." >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1065: result: $ac_cv_build" >&5
+echo "$as_me:1102: result: $ac_cv_build" >&5
 echo "${ECHO_T}$ac_cv_build" >&6
 build=$ac_cv_build
 build_cpu=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1070,7 +1107,7 @@ build_vendor=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
 build_os=`echo "$ac_cv_build" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
 if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then
-       echo "$as_me:1073: checking host system type" >&5
+       echo "$as_me:1110: checking host system type" >&5
 echo $ECHO_N "checking host system type... $ECHO_C" >&6
 if test "${ac_cv_host+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1079,12 +1116,12 @@ else
 test -z "$ac_cv_host_alias" &&
   ac_cv_host_alias=$ac_cv_build_alias
 ac_cv_host=`$ac_config_sub "$ac_cv_host_alias"` ||
-  { { echo "$as_me:1082: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+  { { echo "$as_me:1119: error: $ac_config_sub $ac_cv_host_alias failed" >&5
 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:1087: result: $ac_cv_host" >&5
+echo "$as_me:1124: result: $ac_cv_host" >&5
 echo "${ECHO_T}$ac_cv_host" >&6
 host=$ac_cv_host
 host_cpu=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
@@ -1110,13 +1147,13 @@ else
 fi
 
 test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$as_me:1113: result: Configuring for $cf_cv_system_name" >&5
+test -n "$cf_cv_system_name" && echo "$as_me:1150: result: Configuring for $cf_cv_system_name" >&5
 echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
 
 if test ".$system_name" != ".$cf_cv_system_name" ; then
-       echo "$as_me:1117: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
+       echo "$as_me:1154: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
 echo "${ECHO_T}Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&6
-       { { echo "$as_me:1119: error: \"Please remove config.cache and try again.\"" >&5
+       { { echo "$as_me:1156: error: \"Please remove config.cache and try again.\"" >&5
 echo "$as_me: error: \"Please remove config.cache and try again.\"" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -1134,7 +1171,7 @@ _ACEOF
 program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
 rm conftest.sed
 
-echo "$as_me:1137: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "$as_me:1174: checking whether ${MAKE-make} sets \${MAKE}" >&5
 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'`
 if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
@@ -1154,11 +1191,11 @@ fi
 rm -f conftest.make
 fi
 if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$as_me:1157: result: yes" >&5
+  echo "$as_me:1194: result: yes" >&5
 echo "${ECHO_T}yes" >&6
   SET_MAKE=
 else
-  echo "$as_me:1161: result: no" >&5
+  echo "$as_me:1198: result: no" >&5
 echo "${ECHO_T}no" >&6
   SET_MAKE="MAKE=${MAKE-make}"
 fi
@@ -1172,7 +1209,7 @@ ac_main_return="return"
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-echo "$as_me:1175: checking for $ac_word" >&5
+echo "$as_me:1212: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1187,7 +1224,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CC="${ac_tool_prefix}gcc"
-echo "$as_me:1190: found $ac_dir/$ac_word" >&5
+echo "$as_me:1227: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1195,10 +1232,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1198: result: $CC" >&5
+  echo "$as_me:1235: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1201: result: no" >&5
+  echo "$as_me:1238: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1207,7 +1244,7 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-echo "$as_me:1210: checking for $ac_word" >&5
+echo "$as_me:1247: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1222,7 +1259,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_CC="gcc"
-echo "$as_me:1225: found $ac_dir/$ac_word" >&5
+echo "$as_me:1262: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1230,10 +1267,10 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:1233: result: $ac_ct_CC" >&5
+  echo "$as_me:1270: result: $ac_ct_CC" >&5
 echo "${ECHO_T}$ac_ct_CC" >&6
 else
-  echo "$as_me:1236: result: no" >&5
+  echo "$as_me:1273: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1246,7 +1283,7 @@ if test -z "$CC"; then
   if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-echo "$as_me:1249: checking for $ac_word" >&5
+echo "$as_me:1286: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1261,7 +1298,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CC="${ac_tool_prefix}cc"
-echo "$as_me:1264: found $ac_dir/$ac_word" >&5
+echo "$as_me:1301: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1269,10 +1306,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1272: result: $CC" >&5
+  echo "$as_me:1309: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1275: result: no" >&5
+  echo "$as_me:1312: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1281,7 +1318,7 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-echo "$as_me:1284: checking for $ac_word" >&5
+echo "$as_me:1321: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1296,7 +1333,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_CC="cc"
-echo "$as_me:1299: found $ac_dir/$ac_word" >&5
+echo "$as_me:1336: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1304,10 +1341,10 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:1307: result: $ac_ct_CC" >&5
+  echo "$as_me:1344: result: $ac_ct_CC" >&5
 echo "${ECHO_T}$ac_ct_CC" >&6
 else
-  echo "$as_me:1310: result: no" >&5
+  echo "$as_me:1347: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1320,7 +1357,7 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-echo "$as_me:1323: checking for $ac_word" >&5
+echo "$as_me:1360: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1340,7 +1377,7 @@ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
   continue
 fi
 ac_cv_prog_CC="cc"
-echo "$as_me:1343: found $ac_dir/$ac_word" >&5
+echo "$as_me:1380: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1362,10 +1399,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1365: result: $CC" >&5
+  echo "$as_me:1402: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1368: result: no" >&5
+  echo "$as_me:1405: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1376,7 +1413,7 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1379: checking for $ac_word" >&5
+echo "$as_me:1416: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1391,7 +1428,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1394: found $ac_dir/$ac_word" >&5
+echo "$as_me:1431: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1399,10 +1436,10 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  echo "$as_me:1402: result: $CC" >&5
+  echo "$as_me:1439: result: $CC" >&5
 echo "${ECHO_T}$CC" >&6
 else
-  echo "$as_me:1405: result: no" >&5
+  echo "$as_me:1442: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1415,7 +1452,7 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:1418: checking for $ac_word" >&5
+echo "$as_me:1455: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -1430,7 +1467,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1433: found $ac_dir/$ac_word" >&5
+echo "$as_me:1470: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -1438,10 +1475,10 @@ fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  echo "$as_me:1441: result: $ac_ct_CC" >&5
+  echo "$as_me:1478: result: $ac_ct_CC" >&5
 echo "${ECHO_T}$ac_ct_CC" >&6
 else
-  echo "$as_me:1444: result: no" >&5
+  echo "$as_me:1481: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -1453,32 +1490,32 @@ fi
 
 fi
 
-test -z "$CC" && { { echo "$as_me:1456: error: no acceptable cc found in \$PATH" >&5
+test -z "$CC" && { { echo "$as_me:1493: error: no acceptable cc found in \$PATH" >&5
 echo "$as_me: error: no acceptable cc found in \$PATH" >&2;}
    { (exit 1); exit 1; }; }
 
 # Provide some information about the compiler.
-echo "$as_me:1461:" \
+echo "$as_me:1498:" \
      "checking for C compiler version" >&5
 ac_compiler=`set X $ac_compile; echo "$2"`
-{ (eval echo "$as_me:1464: \"$ac_compiler --version </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1501: \"$ac_compiler --version </dev/null >&5\"") >&5
   (eval $ac_compiler --version </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:1467: \$? = $ac_status" >&5
+  echo "$as_me:1504: \$? = $ac_status" >&5
   (exit "$ac_status"); }
-{ (eval echo "$as_me:1469: \"$ac_compiler -v </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1506: \"$ac_compiler -v </dev/null >&5\"") >&5
   (eval $ac_compiler -v </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:1472: \$? = $ac_status" >&5
+  echo "$as_me:1509: \$? = $ac_status" >&5
   (exit "$ac_status"); }
-{ (eval echo "$as_me:1474: \"$ac_compiler -V </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1511: \"$ac_compiler -V </dev/null >&5\"") >&5
   (eval $ac_compiler -V </dev/null >&5) 2>&5
   ac_status=$?
-  echo "$as_me:1477: \$? = $ac_status" >&5
+  echo "$as_me:1514: \$? = $ac_status" >&5
   (exit "$ac_status"); }
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 1481 "configure"
+#line 1518 "configure"
 #include "confdefs.h"
 
 int
@@ -1494,13 +1531,13 @@ ac_clean_files="$ac_clean_files a.out a.exe"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-echo "$as_me:1497: checking for C compiler default output" >&5
+echo "$as_me:1534: checking for C compiler default output" >&5
 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
 ac_link_default=`echo "$ac_link" | sed 's/ -o *"conftest[^"]*"//'`
-if { (eval echo "$as_me:1500: \"$ac_link_default\"") >&5
+if { (eval echo "$as_me:1537: \"$ac_link_default\"") >&5
   (eval $ac_link_default) 2>&5
   ac_status=$?
-  echo "$as_me:1503: \$? = $ac_status" >&5
+  echo "$as_me:1540: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   # Find the output, starting from the most likely.  This scheme is
 # not robust to junk in `.', hence go to wildcards (a.*) only as a last
@@ -1523,34 +1560,34 @@ done
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-{ { echo "$as_me:1526: error: C compiler cannot create executables" >&5
+{ { echo "$as_me:1563: error: C compiler cannot create executables" >&5
 echo "$as_me: error: C compiler cannot create executables" >&2;}
    { (exit 77); exit 77; }; }
 fi
 
 ac_exeext=$ac_cv_exeext
-echo "$as_me:1532: result: $ac_file" >&5
+echo "$as_me:1569: result: $ac_file" >&5
 echo "${ECHO_T}$ac_file" >&6
 
 # Check the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
-echo "$as_me:1537: checking whether the C compiler works" >&5
+echo "$as_me:1574: checking whether the C compiler works" >&5
 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0
 # If not cross compiling, check that we can run a simple program.
 if test "$cross_compiling" != yes; then
   if { ac_try='./$ac_file'
-  { (eval echo "$as_me:1543: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1580: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1546: \$? = $ac_status" >&5
+  echo "$as_me:1583: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
     cross_compiling=no
   else
     if test "$cross_compiling" = maybe; then
        cross_compiling=yes
     else
-       { { echo "$as_me:1553: error: cannot run C compiled programs.
+       { { echo "$as_me:1590: error: cannot run C compiled programs.
 If you meant to cross compile, use \`--host'." >&5
 echo "$as_me: error: cannot run C compiled programs.
 If you meant to cross compile, use \`--host'." >&2;}
@@ -1558,24 +1595,24 @@ If you meant to cross compile, use \`--host'." >&2;}
     fi
   fi
 fi
-echo "$as_me:1561: result: yes" >&5
+echo "$as_me:1598: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
 rm -f a.out a.exe "conftest$ac_cv_exeext"
 ac_clean_files=$ac_clean_files_save
 # Check the compiler produces executables we can run.  If not, either
 # the compiler is broken, or we cross compile.
-echo "$as_me:1568: checking whether we are cross compiling" >&5
+echo "$as_me:1605: checking whether we are cross compiling" >&5
 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:1570: result: $cross_compiling" >&5
+echo "$as_me:1607: result: $cross_compiling" >&5
 echo "${ECHO_T}$cross_compiling" >&6
 
-echo "$as_me:1573: checking for executable suffix" >&5
+echo "$as_me:1610: checking for executable suffix" >&5
 echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:1575: \"$ac_link\"") >&5
+if { (eval echo "$as_me:1612: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:1578: \$? = $ac_status" >&5
+  echo "$as_me:1615: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
@@ -1591,25 +1628,25 @@ for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
   esac
 done
 else
-  { { echo "$as_me:1594: error: cannot compute EXEEXT: cannot compile and link" >&5
+  { { echo "$as_me:1631: error: cannot compute EXEEXT: cannot compile and link" >&5
 echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
 rm -f "conftest$ac_cv_exeext"
-echo "$as_me:1600: result: $ac_cv_exeext" >&5
+echo "$as_me:1637: result: $ac_cv_exeext" >&5
 echo "${ECHO_T}$ac_cv_exeext" >&6
 
 rm -f "conftest.$ac_ext"
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-echo "$as_me:1606: checking for object suffix" >&5
+echo "$as_me:1643: checking for object suffix" >&5
 echo $ECHO_N "checking for object suffix... $ECHO_C" >&6
 if test "${ac_cv_objext+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 1612 "configure"
+#line 1649 "configure"
 #include "confdefs.h"
 
 int
@@ -1621,10 +1658,10 @@ main (void)
 }
 _ACEOF
 rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:1624: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1661: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1627: \$? = $ac_status" >&5
+  echo "$as_me:1664: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
   for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
   case $ac_file in
@@ -1636,24 +1673,24 @@ done
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-{ { echo "$as_me:1639: error: cannot compute OBJEXT: cannot compile" >&5
+{ { echo "$as_me:1676: error: cannot compute OBJEXT: cannot compile" >&5
 echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
 rm -f "conftest.$ac_cv_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:1646: result: $ac_cv_objext" >&5
+echo "$as_me:1683: result: $ac_cv_objext" >&5
 echo "${ECHO_T}$ac_cv_objext" >&6
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-echo "$as_me:1650: checking whether we are using the GNU C compiler" >&5
+echo "$as_me:1687: checking whether we are using the GNU C compiler" >&5
 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
 if test "${ac_cv_c_compiler_gnu+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 1656 "configure"
+#line 1693 "configure"
 #include "confdefs.h"
 
 int
@@ -1668,16 +1705,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1671: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1708: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1674: \$? = $ac_status" >&5
+  echo "$as_me:1711: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1677: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1714: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1680: \$? = $ac_status" >&5
+  echo "$as_me:1717: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_compiler_gnu=yes
 else
@@ -1689,19 +1726,19 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-echo "$as_me:1692: result: $ac_cv_c_compiler_gnu" >&5
+echo "$as_me:1729: result: $ac_cv_c_compiler_gnu" >&5
 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
 GCC=`test $ac_compiler_gnu = yes && echo yes`
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
 CFLAGS="-g"
-echo "$as_me:1698: checking whether $CC accepts -g" >&5
+echo "$as_me:1735: checking whether $CC accepts -g" >&5
 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
 if test "${ac_cv_prog_cc_g+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 1704 "configure"
+#line 1741 "configure"
 #include "confdefs.h"
 
 int
@@ -1713,16 +1750,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1716: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1753: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1719: \$? = $ac_status" >&5
+  echo "$as_me:1756: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1722: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1759: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1725: \$? = $ac_status" >&5
+  echo "$as_me:1762: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_prog_cc_g=yes
 else
@@ -1732,7 +1769,7 @@ ac_cv_prog_cc_g=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:1735: result: $ac_cv_prog_cc_g" >&5
+echo "$as_me:1772: result: $ac_cv_prog_cc_g" >&5
 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
@@ -1759,16 +1796,16 @@ cat >"conftest.$ac_ext" <<_ACEOF
 #endif
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1762: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1799: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1765: \$? = $ac_status" >&5
+  echo "$as_me:1802: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1768: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1805: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1771: \$? = $ac_status" >&5
+  echo "$as_me:1808: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   for ac_declaration in \
    ''\
@@ -1780,7 +1817,7 @@ if { (eval echo "$as_me:1762: \"$ac_compile\"") >&5
    'void exit (int);'
 do
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 1783 "configure"
+#line 1820 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 $ac_declaration
@@ -1793,16 +1830,16 @@ exit (42);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1796: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1833: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1799: \$? = $ac_status" >&5
+  echo "$as_me:1836: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1802: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1839: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1805: \$? = $ac_status" >&5
+  echo "$as_me:1842: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -1812,7 +1849,7 @@ continue
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 1815 "configure"
+#line 1852 "configure"
 #include "confdefs.h"
 $ac_declaration
 int
@@ -1824,16 +1861,16 @@ exit (42);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1827: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1864: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1830: \$? = $ac_status" >&5
+  echo "$as_me:1867: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1833: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1870: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1836: \$? = $ac_status" >&5
+  echo "$as_me:1873: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   break
 else
@@ -1863,11 +1900,11 @@ ac_main_return="return"
 
 GCC_VERSION=none
 if test "$GCC" = yes ; then
-       echo "$as_me:1866: checking version of $CC" >&5
+       echo "$as_me:1903: checking version of $CC" >&5
 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
-       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
+       GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[^(]*([^)][^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
        test -z "$GCC_VERSION" && GCC_VERSION=unknown
-       echo "$as_me:1870: result: $GCC_VERSION" >&5
+       echo "$as_me:1907: result: $GCC_VERSION" >&5
 echo "${ECHO_T}$GCC_VERSION" >&6
 fi
 
@@ -1876,12 +1913,12 @@ INTEL_COMPILER=no
 if test "$GCC" = yes ; then
        case "$host_os" in
        (linux*|gnu*)
-               echo "$as_me:1879: checking if this is really Intel C compiler" >&5
+               echo "$as_me:1916: checking if this is really Intel C compiler" >&5
 echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
                cf_save_CFLAGS="$CFLAGS"
                CFLAGS="$CFLAGS -no-gcc"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 1884 "configure"
+#line 1921 "configure"
 #include "confdefs.h"
 
 int
@@ -1890,7 +1927,7 @@ main (void)
 
 #ifdef __INTEL_COMPILER
 #else
-make an error
+#error __INTEL_COMPILER is not defined
 #endif
 
   ;
@@ -1898,16 +1935,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1901: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1938: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1904: \$? = $ac_status" >&5
+  echo "$as_me:1941: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1907: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1944: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1910: \$? = $ac_status" >&5
+  echo "$as_me:1947: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   INTEL_COMPILER=yes
 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
@@ -1918,7 +1955,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CFLAGS="$cf_save_CFLAGS"
-               echo "$as_me:1921: result: $INTEL_COMPILER" >&5
+               echo "$as_me:1958: result: $INTEL_COMPILER" >&5
 echo "${ECHO_T}$INTEL_COMPILER" >&6
                ;;
        esac
@@ -1927,11 +1964,11 @@ fi
 CLANG_COMPILER=no
 
 if test "$GCC" = yes ; then
-       echo "$as_me:1930: checking if this is really Clang C compiler" >&5
+       echo "$as_me:1967: checking if this is really Clang C compiler" >&5
 echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
        cf_save_CFLAGS="$CFLAGS"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 1934 "configure"
+#line 1971 "configure"
 #include "confdefs.h"
 
 int
@@ -1940,7 +1977,7 @@ main (void)
 
 #ifdef __clang__
 #else
-make an error
+#error __clang__ is not defined
 #endif
 
   ;
@@ -1948,16 +1985,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:1951: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1988: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:1954: \$? = $ac_status" >&5
+  echo "$as_me:1991: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:1957: \"$ac_try\"") >&5
+  { (eval echo "$as_me:1994: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:1960: \$? = $ac_status" >&5
+  echo "$as_me:1997: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   CLANG_COMPILER=yes
 
@@ -1967,7 +2004,7 @@ cat "conftest.$ac_ext" >&5
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        CFLAGS="$cf_save_CFLAGS"
-       echo "$as_me:1970: result: $CLANG_COMPILER" >&5
+       echo "$as_me:2007: result: $CLANG_COMPILER" >&5
 echo "${ECHO_T}$CLANG_COMPILER" >&6
 fi
 
@@ -1976,30 +2013,30 @@ CLANG_VERSION=none
 if test "x$CLANG_COMPILER" = "xyes" ; then
        case "$CC" in
        (c[1-9][0-9]|*/c[1-9][0-9])
-               { echo "$as_me:1979: WARNING: replacing broken compiler alias $CC" >&5
+               { echo "$as_me:2016: WARNING: replacing broken compiler alias $CC" >&5
 echo "$as_me: WARNING: replacing broken compiler alias $CC" >&2;}
                CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
                CC=clang
                ;;
        esac
 
-       echo "$as_me:1986: checking version of $CC" >&5
+       echo "$as_me:2023: checking version of $CC" >&5
 echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
        CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
        test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
-       echo "$as_me:1990: result: $CLANG_VERSION" >&5
+       echo "$as_me:2027: result: $CLANG_VERSION" >&5
 echo "${ECHO_T}$CLANG_VERSION" >&6
 
        for cf_clang_opt in \
                -Qunused-arguments \
                -Wno-error=implicit-function-declaration
        do
-               echo "$as_me:1997: checking if option $cf_clang_opt works" >&5
+               echo "$as_me:2034: checking if option $cf_clang_opt works" >&5
 echo $ECHO_N "checking if option $cf_clang_opt works... $ECHO_C" >&6
                cf_save_CFLAGS="$CFLAGS"
                CFLAGS="$CFLAGS $cf_clang_opt"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 2002 "configure"
+#line 2039 "configure"
 #include "confdefs.h"
 
                        #include <stdio.h>
@@ -2013,16 +2050,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:2016: \"$ac_link\"") >&5
+if { (eval echo "$as_me:2053: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:2019: \$? = $ac_status" >&5
+  echo "$as_me:2056: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:2022: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2059: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2025: \$? = $ac_status" >&5
+  echo "$as_me:2062: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                        cf_clang_optok=yes
@@ -2033,13 +2070,13 @@ cat "conftest.$ac_ext" >&5
                        cf_clang_optok=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:2036: result: $cf_clang_optok" >&5
+               echo "$as_me:2073: result: $cf_clang_optok" >&5
 echo "${ECHO_T}$cf_clang_optok" >&6
                CFLAGS="$cf_save_CFLAGS"
                if test "$cf_clang_optok" = yes; then
                        test -n "$verbose" && echo "    adding option $cf_clang_opt" 1>&6
 
-echo "${as_me:-configure}:2042: testing adding option $cf_clang_opt ..." 1>&5
+echo "${as_me:-configure}:2079: testing adding option $cf_clang_opt ..." 1>&5
 
        test -n "$CFLAGS" && CFLAGS="$CFLAGS "
        CFLAGS="${CFLAGS}$cf_clang_opt"
@@ -2048,7 +2085,7 @@ echo "${as_me:-configure}:2042: testing adding option $cf_clang_opt ..." 1>&5
        done
 fi
 
-echo "$as_me:2051: checking for $CC option to accept ANSI C" >&5
+echo "$as_me:2088: checking for $CC option to accept ANSI C" >&5
 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
 if test "${ac_cv_prog_cc_stdc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2056,7 +2093,7 @@ else
   ac_cv_prog_cc_stdc=no
 ac_save_CC=$CC
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 2059 "configure"
+#line 2096 "configure"
 #include "confdefs.h"
 #include <stdarg.h>
 #include <stdio.h>
@@ -2103,16 +2140,16 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO
 do
   CC="$ac_save_CC $ac_arg"
   rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2106: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2143: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2109: \$? = $ac_status" >&5
+  echo "$as_me:2146: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2112: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2149: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2115: \$? = $ac_status" >&5
+  echo "$as_me:2152: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_prog_cc_stdc=$ac_arg
 break
@@ -2129,10 +2166,10 @@ fi
 
 case "x$ac_cv_prog_cc_stdc" in
   x|xno)
-    echo "$as_me:2132: result: none needed" >&5
+    echo "$as_me:2169: result: none needed" >&5
 echo "${ECHO_T}none needed" >&6 ;;
   *)
-    echo "$as_me:2135: result: $ac_cv_prog_cc_stdc" >&5
+    echo "$as_me:2172: result: $ac_cv_prog_cc_stdc" >&5
 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
     CC="$CC $ac_cv_prog_cc_stdc" ;;
 esac
@@ -2140,13 +2177,13 @@ esac
 # This should have been defined by AC_PROG_CC
 : "${CC:=cc}"
 
-echo "$as_me:2143: checking \$CFLAGS variable" >&5
+echo "$as_me:2180: checking \$CFLAGS variable" >&5
 echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6
 case "x$CFLAGS" in
 (*-[IUD]*)
-       echo "$as_me:2147: result: broken" >&5
+       echo "$as_me:2184: result: broken" >&5
 echo "${ECHO_T}broken" >&6
-       { echo "$as_me:2149: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5
+       { echo "$as_me:2186: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&5
 echo "$as_me: WARNING: your environment uses the CFLAGS variable to hold CPPFLAGS options" >&2;}
        cf_flags="$CFLAGS"
        CFLAGS=
@@ -2254,22 +2291,22 @@ fi
        done
        ;;
 (*)
-       echo "$as_me:2257: result: ok" >&5
+       echo "$as_me:2294: result: ok" >&5
 echo "${ECHO_T}ok" >&6
        ;;
 esac
 
-echo "$as_me:2262: checking \$CC variable" >&5
+echo "$as_me:2299: checking \$CC variable" >&5
 echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
 case "$CC" in
 (*[\ \ ]-*)
-       echo "$as_me:2266: result: broken" >&5
+       echo "$as_me:2303: result: broken" >&5
 echo "${ECHO_T}broken" >&6
-       { echo "$as_me:2268: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
+       { echo "$as_me:2305: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
 echo "$as_me: WARNING: your environment uses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
        # humor him...
        cf_prog=`echo "$CC" | sed -e 's/        / /g' -e 's/[ ]* / /g' -e 's/[ ]*[ ]-[^ ].*//'`
-       cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'`
+       cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
        CC="$cf_prog"
        for cf_arg in $cf_flags
        do
@@ -2382,24 +2419,24 @@ fi
        done
        test -n "$verbose" && echo "    resulting CC: '$CC'" 1>&6
 
-echo "${as_me:-configure}:2385: testing resulting CC: '$CC' ..." 1>&5
+echo "${as_me:-configure}:2422: testing resulting CC: '$CC' ..." 1>&5
 
        test -n "$verbose" && echo "    resulting CFLAGS: '$CFLAGS'" 1>&6
 
-echo "${as_me:-configure}:2389: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
+echo "${as_me:-configure}:2426: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5
 
        test -n "$verbose" && echo "    resulting CPPFLAGS: '$CPPFLAGS'" 1>&6
 
-echo "${as_me:-configure}:2393: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
+echo "${as_me:-configure}:2430: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5
 
        ;;
 (*)
-       echo "$as_me:2397: result: ok" >&5
+       echo "$as_me:2434: result: ok" >&5
 echo "${ECHO_T}ok" >&6
        ;;
 esac
 
-echo "$as_me:2402: checking for inline" >&5
+echo "$as_me:2439: checking for inline" >&5
 echo $ECHO_N "checking for inline... $ECHO_C" >&6
 if test "${ac_cv_c_inline+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2407,25 +2444,25 @@ else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2410 "configure"
+#line 2447 "configure"
 #include "confdefs.h"
 #ifndef __cplusplus
-static $ac_kw int static_foo () {return 0; }
-$ac_kw int foo () {return 0; }
+static $ac_kw int static_foo (void) {return 0; }
+$ac_kw int foo (void) {return 0; }
 #endif
 
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:2419: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2456: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:2422: \$? = $ac_status" >&5
+  echo "$as_me:2459: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:2425: \"$ac_try\"") >&5
+  { (eval echo "$as_me:2462: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:2428: \$? = $ac_status" >&5
+  echo "$as_me:2465: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_c_inline=$ac_kw; break
 else
@@ -2436,7 +2473,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:2439: result: $ac_cv_c_inline" >&5
+echo "$as_me:2476: result: $ac_cv_c_inline" >&5
 echo "${ECHO_T}$ac_cv_c_inline" >&6
 case $ac_cv_c_inline in
   inline | yes) ;;
@@ -2455,7 +2492,7 @@ for ac_prog in ggrep grep
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:2458: checking for $ac_word" >&5
+echo "$as_me:2495: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_GREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2470,7 +2507,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_GREP="$ac_prog"
-echo "$as_me:2473: found $ac_dir/$ac_word" >&5
+echo "$as_me:2510: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -2478,10 +2515,10 @@ fi
 fi
 GREP=$ac_cv_prog_GREP
 if test -n "$GREP"; then
-  echo "$as_me:2481: result: $GREP" >&5
+  echo "$as_me:2518: result: $GREP" >&5
 echo "${ECHO_T}$GREP" >&6
 else
-  echo "$as_me:2484: result: no" >&5
+  echo "$as_me:2521: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -2489,7 +2526,7 @@ fi
 done
 test -n "$GREP" || GREP=": "
 
-echo "$as_me:2492: checking for egrep" >&5
+echo "$as_me:2529: checking for egrep" >&5
 echo $ECHO_N "checking for egrep... $ECHO_C" >&6
 if test "${ac_cv_path_EGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2501,7 +2538,7 @@ else
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:2504: checking for $ac_word" >&5
+echo "$as_me:2541: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_EGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2518,7 +2555,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_EGREP="$ac_dir/$ac_word"
-   echo "$as_me:2521: found $ac_dir/$ac_word" >&5
+   echo "$as_me:2558: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -2529,10 +2566,10 @@ fi
 EGREP=$ac_cv_path_EGREP
 
 if test -n "$EGREP"; then
-  echo "$as_me:2532: result: $EGREP" >&5
+  echo "$as_me:2569: result: $EGREP" >&5
 echo "${ECHO_T}$EGREP" >&6
 else
-  echo "$as_me:2535: result: no" >&5
+  echo "$as_me:2572: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -2540,12 +2577,12 @@ fi
 done
 test -n "$EGREP" || EGREP=": "
 
-     test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:2543: error: cannot find workable egrep" >&5
+     test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:2580: error: cannot find workable egrep" >&5
 echo "$as_me: error: cannot find workable egrep" >&2;}
    { (exit 1); exit 1; }; }
    fi
 fi
-echo "$as_me:2548: result: $ac_cv_path_EGREP" >&5
+echo "$as_me:2585: result: $ac_cv_path_EGREP" >&5
 echo "${ECHO_T}$ac_cv_path_EGREP" >&6
  EGREP="$ac_cv_path_EGREP"
 
@@ -2555,7 +2592,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS "conftest.$ac_ext" >&5'
 ac_link='$CC -o "conftest$ac_exeext" $CFLAGS $CPPFLAGS $LDFLAGS "conftest.$ac_ext" $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 ac_main_return="return"
-echo "$as_me:2558: checking how to run the C preprocessor" >&5
+echo "$as_me:2595: checking how to run the C preprocessor" >&5
 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
@@ -2576,18 +2613,18 @@ do
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2579 "configure"
+#line 2616 "configure"
 #include "confdefs.h"
 #include <assert.h>
                      Syntax error
 _ACEOF
-if { (eval echo "$as_me:2584: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2621: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2590: \$? = $ac_status" >&5
+  echo "$as_me:2627: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2610,17 +2647,17 @@ rm -f conftest.err "conftest.$ac_ext"
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2613 "configure"
+#line 2650 "configure"
 #include "confdefs.h"
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:2617: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2654: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2623: \$? = $ac_status" >&5
+  echo "$as_me:2660: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2657,7 +2694,7 @@ fi
 else
   ac_cv_prog_CPP=$CPP
 fi
-echo "$as_me:2660: result: $CPP" >&5
+echo "$as_me:2697: result: $CPP" >&5
 echo "${ECHO_T}$CPP" >&6
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
@@ -2667,18 +2704,18 @@ do
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2670 "configure"
+#line 2707 "configure"
 #include "confdefs.h"
 #include <assert.h>
                      Syntax error
 _ACEOF
-if { (eval echo "$as_me:2675: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2712: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2681: \$? = $ac_status" >&5
+  echo "$as_me:2718: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2701,17 +2738,17 @@ rm -f conftest.err "conftest.$ac_ext"
   # OK, works on sane cases.  Now check whether non-existent headers
   # can be detected and how.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 2704 "configure"
+#line 2741 "configure"
 #include "confdefs.h"
 #include <ac_nonexistent.h>
 _ACEOF
-if { (eval echo "$as_me:2708: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:2745: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:2714: \$? = $ac_status" >&5
+  echo "$as_me:2751: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2739,7 +2776,7 @@ rm -f conftest.err "conftest.$ac_ext"
 if $ac_preproc_ok; then
   :
 else
-  { { echo "$as_me:2742: error: C preprocessor \"$CPP\" fails sanity check" >&5
+  { { echo "$as_me:2779: error: C preprocessor \"$CPP\" fails sanity check" >&5
 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -2755,7 +2792,7 @@ for ac_prog in mawk gawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:2758: checking for $ac_word" >&5
+echo "$as_me:2795: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_AWK+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2770,7 +2807,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_AWK="$ac_prog"
-echo "$as_me:2773: found $ac_dir/$ac_word" >&5
+echo "$as_me:2810: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -2778,10 +2815,10 @@ fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  echo "$as_me:2781: result: $AWK" >&5
+  echo "$as_me:2818: result: $AWK" >&5
 echo "${ECHO_T}$AWK" >&6
 else
-  echo "$as_me:2784: result: no" >&5
+  echo "$as_me:2821: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -2800,7 +2837,7 @@ done
 # AFS /usr/afsws/bin/install, which mishandles nonexistent args
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:2803: checking for a BSD compatible install" >&5
+echo "$as_me:2840: checking for a BSD compatible install" >&5
 echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
 if test -z "$INSTALL"; then
 if test "${ac_cv_path_install+set}" = set; then
@@ -2849,7 +2886,7 @@ fi
     INSTALL=$ac_install_sh
   fi
 fi
-echo "$as_me:2852: result: $INSTALL" >&5
+echo "$as_me:2889: result: $INSTALL" >&5
 echo "${ECHO_T}$INSTALL" >&6
 
 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -2870,7 +2907,7 @@ case $INSTALL in
        ;;
 esac
 
-echo "$as_me:2873: checking if you want to install stripped executables" >&5
+echo "$as_me:2910: checking if you want to install stripped executables" >&5
 echo $ECHO_N "checking if you want to install stripped executables... $ECHO_C" >&6
 
 # Check whether --enable-stripping or --disable-stripping was given.
@@ -2887,7 +2924,7 @@ else
        enable_stripping=yes
 
 fi;
-echo "$as_me:2890: result: $enable_stripping" >&5
+echo "$as_me:2927: result: $enable_stripping" >&5
 echo "${ECHO_T}$enable_stripping" >&6
 
 if test "$enable_stripping" = yes
@@ -2898,7 +2935,7 @@ else
 fi
 
 : "${INSTALL:=install}"
-echo "$as_me:2901: checking if install accepts -p option" >&5
+echo "$as_me:2938: checking if install accepts -p option" >&5
 echo $ECHO_N "checking if install accepts -p option... $ECHO_C" >&6
 if test "${cf_cv_install_p+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2929,10 +2966,10 @@ else
        rm -rf ./conftest*
 
 fi
-echo "$as_me:2932: result: $cf_cv_install_p" >&5
+echo "$as_me:2969: result: $cf_cv_install_p" >&5
 echo "${ECHO_T}$cf_cv_install_p" >&6
 
-echo "$as_me:2935: checking if install needs to be told about ownership" >&5
+echo "$as_me:2972: checking if install needs to be told about ownership" >&5
 echo $ECHO_N "checking if install needs to be told about ownership... $ECHO_C" >&6
 case `$ac_config_guess` in
 (*minix)
@@ -2943,7 +2980,7 @@ case `$ac_config_guess` in
        ;;
 esac
 
-echo "$as_me:2946: result: $with_install_o" >&5
+echo "$as_me:2983: result: $with_install_o" >&5
 echo "${ECHO_T}$with_install_o" >&6
 if test "x$with_install_o" = xyes
 then
@@ -2952,11 +2989,77 @@ else
        INSTALL_OPT_O=
 fi
 
+if test -n "$INSTALL_OPT_S"
+then
+       echo "$as_me:2994: checking if you want to specify strip-program" >&5
+echo $ECHO_N "checking if you want to specify strip-program... $ECHO_C" >&6
+
+# Check whether --with-strip-program or --without-strip-program was given.
+if test "${with_strip_program+set}" = set; then
+  withval="$with_strip_program"
+  with_strip_program=$withval
+else
+  with_strip_program=no
+fi;
+       echo "$as_me:3004: result: $with_strip_program" >&5
+echo "${ECHO_T}$with_strip_program" >&6
+       if test "$with_strip_program" != no
+       then
+               echo "$as_me:3008: checking if strip-program is supported with this installer" >&5
+echo $ECHO_N "checking if strip-program is supported with this installer... $ECHO_C" >&6
+               cf_install_program=`echo "$INSTALL" | sed -e 's%[ ]*[ ]-.%%'`
+               check_install_strip=no
+               if test -f "$cf_install_program"
+               then
+                       check_install_version=`"$cf_install_program" --version 2>/dev/null | head -n 1 | grep coreutils`
+                       if test -n "$check_install_version"
+                       then
+                               check_install_strip="option"
+                       else
+                               for check_strip_variable in STRIPBIN STRIP
+                               do
+                                       if strings "$cf_install_program" | grep "^$check_strip_variable$" >/dev/null
+                                       then
+                                               check_install_strip="environ"
+                                               break
+                                       fi
+                               done
+                       fi
+               fi
+               echo "$as_me:3029: result: $check_install_strip" >&5
+echo "${ECHO_T}$check_install_strip" >&6
+               case "$check_install_strip" in
+               (no)
+                       { echo "$as_me:3033: WARNING: $cf_install_program does not support strip program option" >&5
+echo "$as_me: WARNING: $cf_install_program does not support strip program option" >&2;}
+                       with_strip_program=no
+                       ;;
+               (environ)
+                       cat >install.tmp <<-CF_EOF
+                       #! $SHELL
+                       STRIPBIN="$with_strip_program" \\
+                       STRIP="$with_strip_program" \\
+                       $INSTALL "$@"
+                       CF_EOF
+                       INSTALL="`pwd`/install.tmp"
+                       chmod +x "$INSTALL"
+                       test -n "$verbose" && echo "    created $INSTALL" 1>&6
+
+echo "${as_me:-configure}:3048: testing created $INSTALL ..." 1>&5
+
+                       ;;
+               (option)
+                       INSTALL_OPT_S="$INSTALL_OPT_S --strip-program=\"$with_strip_program\""
+                       ;;
+               esac
+       fi
+fi
+
 for ac_prog in lint cppcheck splint
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:2959: checking for $ac_word" >&5
+echo "$as_me:3062: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_LINT+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -2971,7 +3074,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_LINT="$ac_prog"
-echo "$as_me:2974: found $ac_dir/$ac_word" >&5
+echo "$as_me:3077: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -2979,10 +3082,10 @@ fi
 fi
 LINT=$ac_cv_prog_LINT
 if test -n "$LINT"; then
-  echo "$as_me:2982: result: $LINT" >&5
+  echo "$as_me:3085: result: $LINT" >&5
 echo "${ECHO_T}$LINT" >&6
 else
-  echo "$as_me:2985: result: no" >&5
+  echo "$as_me:3088: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -2995,7 +3098,7 @@ case "x$LINT" in
        ;;
 esac
 
-echo "$as_me:2998: checking for \".PHONY\" make-support" >&5
+echo "$as_me:3101: checking for \".PHONY\" make-support" >&5
 echo $ECHO_N "checking for \".PHONY\" make-support... $ECHO_C" >&6
 if test "${cf_cv_make_PHONY+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3050,14 +3153,14 @@ CF_EOF
        rm -rf conftest*
 
 fi
-echo "$as_me:3053: result: $cf_cv_make_PHONY" >&5
+echo "$as_me:3156: result: $cf_cv_make_PHONY" >&5
 echo "${ECHO_T}$cf_cv_make_PHONY" >&6
 MAKE_NO_PHONY="#"
 MAKE_PHONY="#"
 test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY=
 test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY=
 
-echo "$as_me:3060: checking if filesystem supports mixed-case filenames" >&5
+echo "$as_me:3163: checking if filesystem supports mixed-case filenames" >&5
 echo $ECHO_N "checking if filesystem supports mixed-case filenames... $ECHO_C" >&6
 if test "${cf_cv_mixedcase+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3084,7 +3187,7 @@ else
 fi
 
 fi
-echo "$as_me:3087: result: $cf_cv_mixedcase" >&5
+echo "$as_me:3190: result: $cf_cv_mixedcase" >&5
 echo "${ECHO_T}$cf_cv_mixedcase" >&6
 test "$cf_cv_mixedcase" = yes &&
 cat >>confdefs.h <<\EOF
@@ -3095,7 +3198,7 @@ for ac_prog in exctags ctags
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:3098: checking for $ac_word" >&5
+echo "$as_me:3201: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_CTAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3110,7 +3213,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_CTAGS="$ac_prog"
-echo "$as_me:3113: found $ac_dir/$ac_word" >&5
+echo "$as_me:3216: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3118,10 +3221,10 @@ fi
 fi
 CTAGS=$ac_cv_prog_CTAGS
 if test -n "$CTAGS"; then
-  echo "$as_me:3121: result: $CTAGS" >&5
+  echo "$as_me:3224: result: $CTAGS" >&5
 echo "${ECHO_T}$CTAGS" >&6
 else
-  echo "$as_me:3124: result: no" >&5
+  echo "$as_me:3227: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3132,7 +3235,7 @@ for ac_prog in exetags etags
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:3135: checking for $ac_word" >&5
+echo "$as_me:3238: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ETAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3147,7 +3250,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ETAGS="$ac_prog"
-echo "$as_me:3150: found $ac_dir/$ac_word" >&5
+echo "$as_me:3253: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3155,10 +3258,10 @@ fi
 fi
 ETAGS=$ac_cv_prog_ETAGS
 if test -n "$ETAGS"; then
-  echo "$as_me:3158: result: $ETAGS" >&5
+  echo "$as_me:3261: result: $ETAGS" >&5
 echo "${ECHO_T}$ETAGS" >&6
 else
-  echo "$as_me:3161: result: no" >&5
+  echo "$as_me:3264: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3167,7 +3270,7 @@ done
 
 # Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args.
 set dummy ${CTAGS:-ctags}; ac_word=$2
-echo "$as_me:3170: checking for $ac_word" >&5
+echo "$as_me:3273: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_MAKE_LOWER_TAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3182,7 +3285,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_MAKE_LOWER_TAGS="yes"
-echo "$as_me:3185: found $ac_dir/$ac_word" >&5
+echo "$as_me:3288: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3191,17 +3294,17 @@ fi
 fi
 MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS
 if test -n "$MAKE_LOWER_TAGS"; then
-  echo "$as_me:3194: result: $MAKE_LOWER_TAGS" >&5
+  echo "$as_me:3297: result: $MAKE_LOWER_TAGS" >&5
 echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
 else
-  echo "$as_me:3197: result: no" >&5
+  echo "$as_me:3300: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
 if test "$cf_cv_mixedcase" = yes ; then
        # Extract the first word of "${ETAGS:-etags}", so it can be a program name with args.
 set dummy ${ETAGS:-etags}; ac_word=$2
-echo "$as_me:3204: checking for $ac_word" >&5
+echo "$as_me:3307: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_MAKE_UPPER_TAGS+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3216,7 +3319,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_MAKE_UPPER_TAGS="yes"
-echo "$as_me:3219: found $ac_dir/$ac_word" >&5
+echo "$as_me:3322: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -3225,10 +3328,10 @@ fi
 fi
 MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS
 if test -n "$MAKE_UPPER_TAGS"; then
-  echo "$as_me:3228: result: $MAKE_UPPER_TAGS" >&5
+  echo "$as_me:3331: result: $MAKE_UPPER_TAGS" >&5
 echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
 else
-  echo "$as_me:3231: result: no" >&5
+  echo "$as_me:3334: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3248,14 +3351,14 @@ else
        MAKE_LOWER_TAGS="#"
 fi
 
-echo "$as_me:3251: checking if -lm needed for math functions" >&5
+echo "$as_me:3354: checking if -lm needed for math functions" >&5
 echo $ECHO_N "checking if -lm needed for math functions... $ECHO_C" >&6
 if test "${cf_cv_need_libm+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 3258 "configure"
+#line 3361 "configure"
 #include "confdefs.h"
 
                #include <stdio.h>
@@ -3271,16 +3374,16 @@ double x = rand(); printf("result = %g\\n", pow(sin(x),x))
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:3274: \"$ac_link\"") >&5
+if { (eval echo "$as_me:3377: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:3277: \$? = $ac_status" >&5
+  echo "$as_me:3380: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:3280: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3383: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3283: \$? = $ac_status" >&5
+  echo "$as_me:3386: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_need_libm=no
 else
@@ -3290,7 +3393,7 @@ cf_cv_need_libm=yes
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:3293: result: $cf_cv_need_libm" >&5
+echo "$as_me:3396: result: $cf_cv_need_libm" >&5
 echo "${ECHO_T}$cf_cv_need_libm" >&6
 
 if test "$cf_cv_need_libm" = yes
@@ -3298,14 +3401,14 @@ then
 
        cf_save_LIBS="$LIBS"
        LIBS="$LIBS -lm"
-       echo "$as_me:3301: checking if -lm is available for math functions" >&5
+       echo "$as_me:3404: checking if -lm is available for math functions" >&5
 echo $ECHO_N "checking if -lm is available for math functions... $ECHO_C" >&6
 if test "${cf_cv_have_libm+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 3308 "configure"
+#line 3411 "configure"
 #include "confdefs.h"
 
                #include <stdio.h>
@@ -3321,16 +3424,16 @@ double x = rand(); printf("result = %g\\n", pow(sin(x),x))
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:3324: \"$ac_link\"") >&5
+if { (eval echo "$as_me:3427: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:3327: \$? = $ac_status" >&5
+  echo "$as_me:3430: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:3330: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3433: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3333: \$? = $ac_status" >&5
+  echo "$as_me:3436: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have_libm=yes
 else
@@ -3340,7 +3443,7 @@ cf_cv_have_libm=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:3343: result: $cf_cv_have_libm" >&5
+echo "$as_me:3446: result: $cf_cv_have_libm" >&5
 echo "${ECHO_T}$cf_cv_have_libm" >&6
        LIBS="$cf_save_LIBS"
 
@@ -3395,7 +3498,7 @@ includesubdir=""
 cf_cv_screen=curses
 cf_cv_libtype=
 
-echo "$as_me:3398: checking for fgrep" >&5
+echo "$as_me:3501: checking for fgrep" >&5
 echo $ECHO_N "checking for fgrep... $ECHO_C" >&6
 if test "${ac_cv_path_FGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3407,7 +3510,7 @@ else
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:3410: checking for $ac_word" >&5
+echo "$as_me:3513: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_FGREP+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3424,7 +3527,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_FGREP="$ac_dir/$ac_word"
-   echo "$as_me:3427: found $ac_dir/$ac_word" >&5
+   echo "$as_me:3530: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -3435,10 +3538,10 @@ fi
 FGREP=$ac_cv_path_FGREP
 
 if test -n "$FGREP"; then
-  echo "$as_me:3438: result: $FGREP" >&5
+  echo "$as_me:3541: result: $FGREP" >&5
 echo "${ECHO_T}$FGREP" >&6
 else
-  echo "$as_me:3441: result: no" >&5
+  echo "$as_me:3544: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -3446,16 +3549,16 @@ fi
 done
 test -n "$FGREP" || FGREP=": "
 
-     test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:3449: error: cannot find workable fgrep" >&5
+     test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:3552: error: cannot find workable fgrep" >&5
 echo "$as_me: error: cannot find workable fgrep" >&2;}
    { (exit 1); exit 1; }; }
    fi
 fi
-echo "$as_me:3454: result: $ac_cv_path_FGREP" >&5
+echo "$as_me:3557: result: $ac_cv_path_FGREP" >&5
 echo "${ECHO_T}$ac_cv_path_FGREP" >&6
  FGREP="$ac_cv_path_FGREP"
 
-echo "$as_me:3458: checking if you want to use C11 _Noreturn feature" >&5
+echo "$as_me:3561: checking if you want to use C11 _Noreturn feature" >&5
 echo $ECHO_N "checking if you want to use C11 _Noreturn feature... $ECHO_C" >&6
 
 # Check whether --enable-stdnoreturn or --disable-stdnoreturn was given.
@@ -3472,21 +3575,20 @@ else
        enable_stdnoreturn=no
 
 fi;
-echo "$as_me:3475: result: $enable_stdnoreturn" >&5
+echo "$as_me:3578: result: $enable_stdnoreturn" >&5
 echo "${ECHO_T}$enable_stdnoreturn" >&6
 
 if test $enable_stdnoreturn = yes; then
-echo "$as_me:3479: checking for C11 _Noreturn feature" >&5
+echo "$as_me:3582: checking for C11 _Noreturn feature" >&5
 echo $ECHO_N "checking for C11 _Noreturn feature... $ECHO_C" >&6
 if test "${cf_cv_c11_noreturn+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 3485 "configure"
+#line 3588 "configure"
 #include "confdefs.h"
 
-#include <stdio.h>
-#include <stdlib.h>
+$ac_includes_default
 #include <stdnoreturn.h>
 static _Noreturn void giveup(void) { exit(0); }
 
@@ -3499,16 +3601,16 @@ if (feof(stdin)) giveup()
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:3502: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:3604: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3505: \$? = $ac_status" >&5
+  echo "$as_me:3607: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:3508: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3610: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3511: \$? = $ac_status" >&5
+  echo "$as_me:3613: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_c11_noreturn=yes
 else
@@ -3519,7 +3621,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:3522: result: $cf_cv_c11_noreturn" >&5
+echo "$as_me:3624: result: $cf_cv_c11_noreturn" >&5
 echo "${ECHO_T}$cf_cv_c11_noreturn" >&6
 else
        cf_cv_c11_noreturn=no,
@@ -3558,10 +3660,10 @@ cat > conftest.i <<EOF
 EOF
 if test "$GCC" = yes
 then
-       { echo "$as_me:3561: checking for $CC __attribute__ directives..." >&5
+       { echo "$as_me:3663: checking for $CC __attribute__ directives..." >&5
 echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
 cat > "conftest.$ac_ext" <<EOF
-#line 3564 "${as_me:-configure}"
+#line 3666 "${as_me:-configure}"
 #include <stdio.h>
 #include "confdefs.h"
 #include "conftest.h"
@@ -3611,12 +3713,12 @@ EOF
                        ;;
                esac
 
-               if { (eval echo "$as_me:3614: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:3716: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3617: \$? = $ac_status" >&5
+  echo "$as_me:3719: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:3619: result: ... $cf_attribute" >&5
+                       test -n "$verbose" && echo "$as_me:3721: result: ... $cf_attribute" >&5
 echo "${ECHO_T}... $cf_attribute" >&6
                        cat conftest.h >>confdefs.h
                        case "$cf_attribute" in
@@ -3675,7 +3777,7 @@ fi
 rm -rf ./conftest*
 fi
 
-echo "$as_me:3678: checking if you want to work around bogus compiler/loader warnings" >&5
+echo "$as_me:3780: checking if you want to work around bogus compiler/loader warnings" >&5
 echo $ECHO_N "checking if you want to work around bogus compiler/loader warnings... $ECHO_C" >&6
 
 # Check whether --enable-string-hacks or --disable-string-hacks was given.
@@ -3685,7 +3787,7 @@ if test "${enable_string_hacks+set}" = set; then
 else
   enable_string_hacks=no
 fi;
-echo "$as_me:3688: result: $enable_string_hacks" >&5
+echo "$as_me:3790: result: $enable_string_hacks" >&5
 echo "${ECHO_T}$enable_string_hacks" >&6
 
 if test "x$enable_string_hacks" = "xyes"; then
@@ -3694,15 +3796,15 @@ cat >>confdefs.h <<\EOF
 #define USE_STRING_HACKS 1
 EOF
 
-       { echo "$as_me:3697: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&5
+       { echo "$as_me:3799: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&5
 echo "$as_me: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&2;}
-       echo "$as_me:3699: checking for strlcat" >&5
+       echo "$as_me:3801: checking for strlcat" >&5
 echo $ECHO_N "checking for strlcat... $ECHO_C" >&6
 if test "${ac_cv_func_strlcat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 3705 "configure"
+#line 3807 "configure"
 #include "confdefs.h"
 #define strlcat autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -3733,16 +3835,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:3736: \"$ac_link\"") >&5
+if { (eval echo "$as_me:3838: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:3739: \$? = $ac_status" >&5
+  echo "$as_me:3841: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:3742: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3844: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3745: \$? = $ac_status" >&5
+  echo "$as_me:3847: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_strlcat=yes
 else
@@ -3752,7 +3854,7 @@ ac_cv_func_strlcat=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:3755: result: $ac_cv_func_strlcat" >&5
+echo "$as_me:3857: result: $ac_cv_func_strlcat" >&5
 echo "${ECHO_T}$ac_cv_func_strlcat" >&6
 if test "$ac_cv_func_strlcat" = yes; then
 
@@ -3762,7 +3864,7 @@ EOF
 
 else
 
-               echo "$as_me:3765: checking for strlcat in -lbsd" >&5
+               echo "$as_me:3867: checking for strlcat in -lbsd" >&5
 echo $ECHO_N "checking for strlcat in -lbsd... $ECHO_C" >&6
 if test "${ac_cv_lib_bsd_strlcat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3770,7 +3872,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 3773 "configure"
+#line 3875 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -3779,7 +3881,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char strlcat ();
+char strlcat (void);
 int
 main (void)
 {
@@ -3789,16 +3891,16 @@ strlcat ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:3792: \"$ac_link\"") >&5
+if { (eval echo "$as_me:3894: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:3795: \$? = $ac_status" >&5
+  echo "$as_me:3897: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:3798: \"$ac_try\"") >&5
+  { (eval echo "$as_me:3900: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3801: \$? = $ac_status" >&5
+  echo "$as_me:3903: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_bsd_strlcat=yes
 else
@@ -3809,7 +3911,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:3812: result: $ac_cv_lib_bsd_strlcat" >&5
+echo "$as_me:3914: result: $ac_cv_lib_bsd_strlcat" >&5
 echo "${ECHO_T}$ac_cv_lib_bsd_strlcat" >&6
 if test "$ac_cv_lib_bsd_strlcat" = yes; then
 
@@ -3832,23 +3934,23 @@ LIBS="$cf_add_libs"
 for ac_header in bsd/string.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:3835: checking for $ac_header" >&5
+echo "$as_me:3937: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 3841 "configure"
+#line 3943 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:3845: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:3947: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:3851: \$? = $ac_status" >&5
+  echo "$as_me:3953: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -3867,7 +3969,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:3870: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:3972: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -3888,13 +3990,13 @@ fi
 for ac_func in strlcpy snprintf
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:3891: checking for $ac_func" >&5
+echo "$as_me:3993: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 3897 "configure"
+#line 3999 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -3925,16 +4027,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:3928: \"$ac_link\"") >&5
+if { (eval echo "$as_me:4030: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:3931: \$? = $ac_status" >&5
+  echo "$as_me:4033: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:3934: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4036: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3937: \$? = $ac_status" >&5
+  echo "$as_me:4039: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -3944,7 +4046,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:3947: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:4049: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -3956,14 +4058,14 @@ done
 
 fi
 
-echo "$as_me:3959: checking if the POSIX test-macros are already defined" >&5
+echo "$as_me:4061: checking if the POSIX test-macros are already defined" >&5
 echo $ECHO_N "checking if the POSIX test-macros are already defined... $ECHO_C" >&6
 if test "${cf_cv_posix_visible+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 3966 "configure"
+#line 4068 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -3982,16 +4084,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:3985: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4087: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:3988: \$? = $ac_status" >&5
+  echo "$as_me:4090: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:3991: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4093: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:3994: \$? = $ac_status" >&5
+  echo "$as_me:4096: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_posix_visible=no
 else
@@ -4002,7 +4104,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:4005: result: $cf_cv_posix_visible" >&5
+echo "$as_me:4107: result: $cf_cv_posix_visible" >&5
 echo "${ECHO_T}$cf_cv_posix_visible" >&6
 
 if test "$cf_cv_posix_visible" = no; then
@@ -4015,9 +4117,6 @@ case "$host_os" in
 (aix[4-7]*)
        cf_xopen_source="-D_ALL_SOURCE"
        ;;
-(msys)
-       cf_XOPEN_SOURCE=600
-       ;;
 (darwin[0-8].*)
        cf_xopen_source="-D_APPLE_C_SOURCE"
        ;;
@@ -4043,18 +4142,18 @@ case "$host_os" in
        cf_xopen_source="-D_SGI_SOURCE"
        cf_XOPEN_SOURCE=
        ;;
-(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
+(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
 
 cf_gnu_xopen_source=$cf_XOPEN_SOURCE
 
-echo "$as_me:4050: checking if this is the GNU C library" >&5
+echo "$as_me:4149: checking if this is the GNU C library" >&5
 echo $ECHO_N "checking if this is the GNU C library... $ECHO_C" >&6
 if test "${cf_cv_gnu_library+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 4057 "configure"
+#line 4156 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -4073,16 +4172,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4076: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4175: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4079: \$? = $ac_status" >&5
+  echo "$as_me:4178: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4082: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4181: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4085: \$? = $ac_status" >&5
+  echo "$as_me:4184: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_library=yes
 else
@@ -4093,7 +4192,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:4096: result: $cf_cv_gnu_library" >&5
+echo "$as_me:4195: result: $cf_cv_gnu_library" >&5
 echo "${ECHO_T}$cf_cv_gnu_library" >&6
 
 if test x$cf_cv_gnu_library = xyes; then
@@ -4101,7 +4200,7 @@ if test x$cf_cv_gnu_library = xyes; then
        # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
        # was changed to help a little.  newlib incorporated the change about 4
        # years later.
-       echo "$as_me:4104: checking if _DEFAULT_SOURCE can be used as a basis" >&5
+       echo "$as_me:4203: checking if _DEFAULT_SOURCE can be used as a basis" >&5
 echo $ECHO_N "checking if _DEFAULT_SOURCE can be used as a basis... $ECHO_C" >&6
 if test "${cf_cv_gnu_library_219+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4113,7 +4212,7 @@ else
        CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 4116 "configure"
+#line 4215 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -4132,16 +4231,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4135: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4234: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4138: \$? = $ac_status" >&5
+  echo "$as_me:4237: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4141: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4240: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4144: \$? = $ac_status" >&5
+  echo "$as_me:4243: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_library_219=yes
 else
@@ -4153,12 +4252,12 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CPPFLAGS="$cf_save"
 
 fi
-echo "$as_me:4156: result: $cf_cv_gnu_library_219" >&5
+echo "$as_me:4255: result: $cf_cv_gnu_library_219" >&5
 echo "${ECHO_T}$cf_cv_gnu_library_219" >&6
 
        if test "x$cf_cv_gnu_library_219" = xyes; then
                cf_save="$CPPFLAGS"
-               echo "$as_me:4161: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5
+               echo "$as_me:4260: checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE" >&5
 echo $ECHO_N "checking if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_gnu_dftsrc_219+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4263,7 +4362,7 @@ if test -n "$cf_new_extra_cppflags" ; then
 fi
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 4266 "configure"
+#line 4365 "configure"
 #include "confdefs.h"
 
                                #include <limits.h>
@@ -4283,16 +4382,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4286: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4385: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4289: \$? = $ac_status" >&5
+  echo "$as_me:4388: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4292: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4391: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4295: \$? = $ac_status" >&5
+  echo "$as_me:4394: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_dftsrc_219=yes
 else
@@ -4303,7 +4402,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:4306: result: $cf_cv_gnu_dftsrc_219" >&5
+echo "$as_me:4405: result: $cf_cv_gnu_dftsrc_219" >&5
 echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6
                test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
        else
@@ -4312,14 +4411,14 @@ echo "${ECHO_T}$cf_cv_gnu_dftsrc_219" >&6
 
        if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
 
-               echo "$as_me:4315: checking if we must define _GNU_SOURCE" >&5
+               echo "$as_me:4414: checking if we must define _GNU_SOURCE" >&5
 echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_gnu_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 4322 "configure"
+#line 4421 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -4334,16 +4433,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4337: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4436: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4340: \$? = $ac_status" >&5
+  echo "$as_me:4439: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4343: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4442: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4346: \$? = $ac_status" >&5
+  echo "$as_me:4445: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_source=no
 else
@@ -4450,7 +4549,7 @@ if test -n "$cf_new_extra_cppflags" ; then
 fi
 
                         cat >"conftest.$ac_ext" <<_ACEOF
-#line 4453 "configure"
+#line 4552 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -4465,16 +4564,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4468: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4567: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4471: \$? = $ac_status" >&5
+  echo "$as_me:4570: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4474: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4573: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4477: \$? = $ac_status" >&5
+  echo "$as_me:4576: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_gnu_source=no
 else
@@ -4489,12 +4588,12 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:4492: result: $cf_cv_gnu_source" >&5
+echo "$as_me:4591: result: $cf_cv_gnu_source" >&5
 echo "${ECHO_T}$cf_cv_gnu_source" >&6
 
                if test "$cf_cv_gnu_source" = yes
                then
-               echo "$as_me:4497: checking if we should also define _DEFAULT_SOURCE" >&5
+               echo "$as_me:4596: checking if we should also define _DEFAULT_SOURCE" >&5
 echo $ECHO_N "checking if we should also define _DEFAULT_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_default_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4504,7 +4603,7 @@ else
        CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 4507 "configure"
+#line 4606 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -4519,16 +4618,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4522: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4621: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4525: \$? = $ac_status" >&5
+  echo "$as_me:4624: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4528: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4627: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4531: \$? = $ac_status" >&5
+  echo "$as_me:4630: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_default_source=no
 else
@@ -4539,7 +4638,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:4542: result: $cf_cv_default_source" >&5
+echo "$as_me:4641: result: $cf_cv_default_source" >&5
 echo "${ECHO_T}$cf_cv_default_source" >&6
                        if test "$cf_cv_default_source" = yes
                        then
@@ -4576,16 +4675,16 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
        sed     -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?[         ]/ /g' \
                -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?$//g'`
 
-echo "$as_me:4579: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:4678: checking if we should define _POSIX_C_SOURCE" >&5
 echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_posix_c_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
-echo "${as_me:-configure}:4585: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:4684: testing if the symbol is already defined go no further ..." 1>&5
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 4588 "configure"
+#line 4687 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -4593,23 +4692,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4603: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4702: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4606: \$? = $ac_status" >&5
+  echo "$as_me:4705: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4609: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4708: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4612: \$? = $ac_status" >&5
+  echo "$as_me:4711: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_posix_c_source=no
 else
@@ -4630,7 +4729,7 @@ cf_want_posix_source=no
         esac
         if test "$cf_want_posix_source" = yes ; then
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 4633 "configure"
+#line 4732 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -4638,23 +4737,23 @@ main (void)
 {
 
 #ifdef _POSIX_SOURCE
-make an error
+#error _POSIX_SOURCE is defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4648: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4747: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4651: \$? = $ac_status" >&5
+  echo "$as_me:4750: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4654: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4753: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4657: \$? = $ac_status" >&5
+  echo "$as_me:4756: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -4665,7 +4764,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
         fi
 
-echo "${as_me:-configure}:4668: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:4767: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
 
         CFLAGS="$cf_trim_CFLAGS"
         CPPFLAGS="$cf_trim_CPPFLAGS"
@@ -4673,10 +4772,10 @@ echo "${as_me:-configure}:4668: testing ifdef from value $cf_POSIX_C_SOURCE ..."
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
 
-echo "${as_me:-configure}:4676: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:4775: testing if the second compile does not leave our definition intact error ..." 1>&5
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 4679 "configure"
+#line 4778 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -4684,23 +4783,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4694: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4793: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4697: \$? = $ac_status" >&5
+  echo "$as_me:4796: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4700: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4799: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4703: \$? = $ac_status" >&5
+  echo "$as_me:4802: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -4716,7 +4815,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:4719: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:4818: result: $cf_cv_posix_c_source" >&5
 echo "${ECHO_T}$cf_cv_posix_c_source" >&6
 
 if test "$cf_cv_posix_c_source" != no ; then
@@ -4833,7 +4932,7 @@ fi # cf_cv_posix_visible
        # OpenBSD 6.x has broken locale support, both compile-time and runtime.
        # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
        # Abusing the conformance level is a workaround.
-       { echo "$as_me:4836: WARNING: this system does not provide usable locale support" >&5
+       { echo "$as_me:4935: WARNING: this system does not provide usable locale support" >&5
 echo "$as_me: WARNING: this system does not provide usable locale support" >&2;}
        cf_xopen_source="-D_BSD_SOURCE"
        cf_XOPEN_SOURCE=700
@@ -4865,26 +4964,24 @@ echo "$as_me: WARNING: this system does not provide usable locale support" >&2;}
        ;;
 (*)
 
-echo "$as_me:4868: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:4967: checking if we should define _XOPEN_SOURCE" >&5
 echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_xopen_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 4875 "configure"
+#line 4974 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -4892,16 +4989,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4895: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:4992: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4898: \$? = $ac_status" >&5
+  echo "$as_me:4995: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4901: \"$ac_try\"") >&5
+  { (eval echo "$as_me:4998: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4904: \$? = $ac_status" >&5
+  echo "$as_me:5001: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -4913,19 +5010,17 @@ cf_save="$CPPFLAGS"
        CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 4916 "configure"
+#line 5013 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -4933,16 +5028,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:4936: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5031: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:4939: \$? = $ac_status" >&5
+  echo "$as_me:5034: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:4942: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5037: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:4945: \$? = $ac_status" >&5
+  echo "$as_me:5040: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -4957,7 +5052,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:4960: result: $cf_cv_xopen_source" >&5
+echo "$as_me:5055: result: $cf_cv_xopen_source" >&5
 echo "${ECHO_T}$cf_cv_xopen_source" >&6
 
 if test "$cf_cv_xopen_source" != no ; then
@@ -5117,16 +5212,16 @@ cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
        sed     -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?[         ]/ /g' \
                -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^     ]*\)\?$//g'`
 
-echo "$as_me:5120: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:5215: checking if we should define _POSIX_C_SOURCE" >&5
 echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_posix_c_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
-echo "${as_me:-configure}:5126: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:5221: testing if the symbol is already defined go no further ..." 1>&5
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 5129 "configure"
+#line 5224 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -5134,23 +5229,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5144: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5239: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5147: \$? = $ac_status" >&5
+  echo "$as_me:5242: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5150: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5245: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5153: \$? = $ac_status" >&5
+  echo "$as_me:5248: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_posix_c_source=no
 else
@@ -5171,7 +5266,7 @@ cf_want_posix_source=no
         esac
         if test "$cf_want_posix_source" = yes ; then
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 5174 "configure"
+#line 5269 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -5179,23 +5274,23 @@ main (void)
 {
 
 #ifdef _POSIX_SOURCE
-make an error
+#error _POSIX_SOURCE is defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5189: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5284: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5192: \$? = $ac_status" >&5
+  echo "$as_me:5287: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5195: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5290: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5198: \$? = $ac_status" >&5
+  echo "$as_me:5293: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -5206,7 +5301,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
         fi
 
-echo "${as_me:-configure}:5209: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:5304: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
 
         CFLAGS="$cf_trim_CFLAGS"
         CPPFLAGS="$cf_trim_CPPFLAGS"
@@ -5214,10 +5309,10 @@ echo "${as_me:-configure}:5209: testing ifdef from value $cf_POSIX_C_SOURCE ..."
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source"
 
-echo "${as_me:-configure}:5217: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:5312: testing if the second compile does not leave our definition intact error ..." 1>&5
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 5220 "configure"
+#line 5315 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 int
@@ -5225,23 +5320,23 @@ main (void)
 {
 
 #ifndef _POSIX_C_SOURCE
-make an error
+#error _POSIX_C_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5235: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5330: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5238: \$? = $ac_status" >&5
+  echo "$as_me:5333: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5241: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5336: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5244: \$? = $ac_status" >&5
+  echo "$as_me:5339: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -5257,7 +5352,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:5260: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:5355: result: $cf_cv_posix_c_source" >&5
 echo "${ECHO_T}$cf_cv_posix_c_source" >&6
 
 if test "$cf_cv_posix_c_source" != no ; then
@@ -5367,25 +5462,23 @@ fi
 fi # cf_cv_posix_visible
 
        # Some of these niche implementations use copy/paste, double-check...
-       if test "$cf_cv_xopen_source" != no ; then
-               test -n "$verbose" && echo "    checking if _POSIX_C_SOURCE inteferes" 1>&6
+       if test "$cf_cv_xopen_source" = no ; then
+               test -n "$verbose" && echo "    checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE" 1>&6
 
-echo "${as_me:-configure}:5373: testing checking if _POSIX_C_SOURCE inteferes ..." 1>&5
+echo "${as_me:-configure}:5468: testing checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE ..." 1>&5
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 5376 "configure"
+#line 5471 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -5393,23 +5486,23 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5396: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5489: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5399: \$? = $ac_status" >&5
+  echo "$as_me:5492: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5402: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5495: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5405: \$? = $ac_status" >&5
+  echo "$as_me:5498: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 
-                       { echo "$as_me:5412: WARNING: _POSIX_C_SOURCE definition is not usable" >&5
+                       { echo "$as_me:5505: WARNING: _POSIX_C_SOURCE definition is not usable" >&5
 echo "$as_me: WARNING: _POSIX_C_SOURCE definition is not usable" >&2;}
                        CPPFLAGS="$cf_save_xopen_cppflags"
 fi
@@ -5432,7 +5525,7 @@ do
        test "$CFLAGS" != "$cf_old_cflag" || break
        test -n "$verbose" && echo "    removing old option $cf_add_cflags from CFLAGS" 1>&6
 
-echo "${as_me:-configure}:5435: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5
+echo "${as_me:-configure}:5528: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5
 
        CFLAGS="$cf_old_cflag"
 done
@@ -5444,7 +5537,7 @@ do
        test "$CPPFLAGS" != "$cf_old_cflag" || break
        test -n "$verbose" && echo "    removing old option $cf_add_cflags from CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:5447: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:5540: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5
 
        CPPFLAGS="$cf_old_cflag"
 done
@@ -5532,7 +5625,7 @@ done
 if test -n "$cf_new_cflags" ; then
        test -n "$verbose" && echo "    add to \$CFLAGS $cf_new_cflags" 1>&6
 
-echo "${as_me:-configure}:5535: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+echo "${as_me:-configure}:5628: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
 
        test -n "$CFLAGS" && CFLAGS="$CFLAGS "
        CFLAGS="${CFLAGS}$cf_new_cflags"
@@ -5542,7 +5635,7 @@ fi
 if test -n "$cf_new_cppflags" ; then
        test -n "$verbose" && echo "    add to \$CPPFLAGS $cf_new_cppflags" 1>&6
 
-echo "${as_me:-configure}:5545: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+echo "${as_me:-configure}:5638: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
 
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
@@ -5552,7 +5645,7 @@ fi
 if test -n "$cf_new_extra_cppflags" ; then
        test -n "$verbose" && echo "    add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
 
-echo "${as_me:-configure}:5555: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+echo "${as_me:-configure}:5648: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
 
        test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
        EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
@@ -5564,10 +5657,10 @@ done
 fi
 
 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
-       echo "$as_me:5567: checking if _XOPEN_SOURCE really is set" >&5
+       echo "$as_me:5660: checking if _XOPEN_SOURCE really is set" >&5
 echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 5570 "configure"
+#line 5663 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 int
@@ -5575,23 +5668,23 @@ main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5585: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5678: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5588: \$? = $ac_status" >&5
+  echo "$as_me:5681: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5591: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5684: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5594: \$? = $ac_status" >&5
+  echo "$as_me:5687: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_XOPEN_SOURCE_set=yes
 else
@@ -5600,12 +5693,12 @@ cat "conftest.$ac_ext" >&5
 cf_XOPEN_SOURCE_set=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-       echo "$as_me:5603: result: $cf_XOPEN_SOURCE_set" >&5
+       echo "$as_me:5696: result: $cf_XOPEN_SOURCE_set" >&5
 echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6
        if test "$cf_XOPEN_SOURCE_set" = yes
        then
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 5608 "configure"
+#line 5701 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 int
@@ -5613,23 +5706,23 @@ main (void)
 {
 
 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
-make an error
+#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
 #endif
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5623: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5716: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5626: \$? = $ac_status" >&5
+  echo "$as_me:5719: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5629: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5722: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5632: \$? = $ac_status" >&5
+  echo "$as_me:5725: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_XOPEN_SOURCE_set_ok=yes
 else
@@ -5640,31 +5733,29 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_XOPEN_SOURCE_set_ok" = no
                then
-                       { echo "$as_me:5643: WARNING: _XOPEN_SOURCE is lower than requested" >&5
+                       { echo "$as_me:5736: WARNING: _XOPEN_SOURCE is lower than requested" >&5
 echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;}
                fi
        else
 
-echo "$as_me:5648: checking if we should define _XOPEN_SOURCE" >&5
+echo "$as_me:5741: checking if we should define _XOPEN_SOURCE" >&5
 echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
 if test "${cf_cv_xopen_source+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 5655 "configure"
+#line 5748 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -5672,16 +5763,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5675: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5766: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5678: \$? = $ac_status" >&5
+  echo "$as_me:5769: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5681: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5772: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5684: \$? = $ac_status" >&5
+  echo "$as_me:5775: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -5693,19 +5784,17 @@ cf_save="$CPPFLAGS"
        CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
 
         cat >"conftest.$ac_ext" <<_ACEOF
-#line 5696 "configure"
+#line 5787 "configure"
 #include "confdefs.h"
 
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
+$ac_includes_default
 
 int
 main (void)
 {
 
 #ifndef _XOPEN_SOURCE
-make an error
+#error _XOPEN_SOURCE is not defined
 #endif
 
   ;
@@ -5713,16 +5802,16 @@ make an error
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5716: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5805: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5719: \$? = $ac_status" >&5
+  echo "$as_me:5808: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5722: \"$ac_try\"") >&5
+  { (eval echo "$as_me:5811: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5725: \$? = $ac_status" >&5
+  echo "$as_me:5814: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xopen_source=no
 else
@@ -5737,7 +5826,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:5740: result: $cf_cv_xopen_source" >&5
+echo "$as_me:5829: result: $cf_cv_xopen_source" >&5
 echo "${ECHO_T}$cf_cv_xopen_source" >&6
 
 if test "$cf_cv_xopen_source" != no ; then
 fi
 fi # cf_cv_posix_visible
 
-echo "$as_me:5887: checking for signal global datatype" >&5
-echo $ECHO_N "checking for signal global datatype... $ECHO_C" >&6
-if test "${cf_cv_sig_atomic_t+set}" = set; then
+echo "$as_me:5976: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 5982 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
 
-       for cf_type in \
-               "volatile sig_atomic_t" \
-               "sig_atomic_t" \
-               "int"
-       do
-       cat >"conftest.$ac_ext" <<_ACEOF
-#line 5899 "configure"
+_ACEOF
+if { (eval echo "$as_me:5990: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+  (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  $EGREP -v '^ *\+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:5996: \$? = $ac_status" >&5
+  (exit "$ac_status"); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+  cat "conftest.$ac_ext" >&5
+  ac_cv_header_stdc=no
+fi
+rm -f conftest.err "conftest.$ac_ext"
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 6018 "configure"
 #include "confdefs.h"
+#include <string.h>
 
-#include <sys/types.h>
-#include <signal.h>
-#include <stdio.h>
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -rf conftest*
 
-extern $cf_type x;
-$cf_type x;
-static void handler(int sig)
-{
-       (void)sig;
-       x = 5;
-}
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 6036 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -rf conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 6057 "configure"
+#include "confdefs.h"
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
+                     || ('j' <= (c) && (c) <= 'r') \
+                     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
 int
 main (void)
 {
-signal(SIGINT, handler);
-                x = 1
-  ;
-  return 0;
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+        || toupper (i) != TOUPPER (i))
+      $ac_main_return(2);
+  $ac_main_return (0);
 }
 _ACEOF
+rm -f "conftest$ac_exeext"
+if { (eval echo "$as_me:6083: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:6086: \$? = $ac_status" >&5
+  (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
+  { (eval echo "$as_me:6088: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:6091: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+ac_cv_header_stdc=no
+fi
+rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
+fi
+fi
+fi
+echo "$as_me:6104: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\EOF
+#define STDC_HEADERS 1
+EOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:6120: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 6126 "configure"
+#include "confdefs.h"
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5923: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6132: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5926: \$? = $ac_status" >&5
+  echo "$as_me:6135: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5929: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6138: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5932: \$? = $ac_status" >&5
+  echo "$as_me:6141: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  cf_cv_sig_atomic_t=$cf_type
+  eval "$as_ac_Header=yes"
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-cf_cv_sig_atomic_t=no
+eval "$as_ac_Header=no"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-               test "$cf_cv_sig_atomic_t" != no && break
-       done
-
 fi
-
-echo "$as_me:5946: result: $cf_cv_sig_atomic_t" >&5
-echo "${ECHO_T}$cf_cv_sig_atomic_t" >&6
-test "$cf_cv_sig_atomic_t" != no &&
-cat >>confdefs.h <<EOF
-#define SIG_ATOMIC_T $cf_cv_sig_atomic_t
+echo "$as_me:6151: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
+if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
+  cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
 EOF
 
-# Work around breakage on OS X
+fi
+done
 
-echo "$as_me:5955: checking if SIGWINCH is defined" >&5
-echo $ECHO_N "checking if SIGWINCH is defined... $ECHO_C" >&6
-if test "${cf_cv_define_sigwinch+set}" = set; then
+echo "$as_me:6161: checking whether exit is declared" >&5
+echo $ECHO_N "checking whether exit is declared... $ECHO_C" >&6
+if test "${ac_cv_have_decl_exit+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-
-       cat >"conftest.$ac_ext" <<_ACEOF
-#line 5962 "configure"
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 6167 "configure"
 #include "confdefs.h"
-
-#include <sys/types.h>
-#include <sys/signal.h>
-
+$ac_includes_default
 int
 main (void)
 {
-int x = SIGWINCH; (void)x
+#ifndef exit
+  (void) exit;
+#endif
+
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:5977: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6182: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:5980: \$? = $ac_status" >&5
+  echo "$as_me:6185: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:5983: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6188: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:5986: \$? = $ac_status" >&5
+  echo "$as_me:6191: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  cf_cv_define_sigwinch=yes
+  ac_cv_have_decl_exit=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+ac_cv_have_decl_exit=no
+fi
+rm -f "conftest.$ac_objext" "conftest.$ac_ext"
+fi
+echo "$as_me:6201: result: $ac_cv_have_decl_exit" >&5
+echo "${ECHO_T}$ac_cv_have_decl_exit" >&6
+
+echo "$as_me:6204: checking for signal global datatype" >&5
+echo $ECHO_N "checking for signal global datatype... $ECHO_C" >&6
+if test "${cf_cv_sig_atomic_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+       for cf_type in \
+               "volatile sig_atomic_t" \
+               "sig_atomic_t" \
+               "int"
+       do
+       cat >"conftest.$ac_ext" <<_ACEOF
+#line 6216 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <signal.h>
+#include <stdio.h>
+
+extern $cf_type x;
+$cf_type x;
+static void handler(int sig)
+{
+       (void)sig;
+       x = 5;
+}
+int
+main (void)
+{
+signal(SIGINT, handler);
+                x = 1
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext"
+if { (eval echo "$as_me:6240: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:6243: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest.$ac_objext"'
+  { (eval echo "$as_me:6246: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:6249: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  cf_cv_sig_atomic_t=$cf_type
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+cf_cv_sig_atomic_t=no
+fi
+rm -f "conftest.$ac_objext" "conftest.$ac_ext"
+               test "$cf_cv_sig_atomic_t" != no && break
+       done
+
+fi
+
+echo "$as_me:6263: result: $cf_cv_sig_atomic_t" >&5
+echo "${ECHO_T}$cf_cv_sig_atomic_t" >&6
+test "$cf_cv_sig_atomic_t" != no &&
+cat >>confdefs.h <<EOF
+#define SIG_ATOMIC_T $cf_cv_sig_atomic_t
+EOF
+
+# Work around breakage on OS X
+
+echo "$as_me:6272: checking if SIGWINCH is defined" >&5
+echo $ECHO_N "checking if SIGWINCH is defined... $ECHO_C" >&6
+if test "${cf_cv_define_sigwinch+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+       cat >"conftest.$ac_ext" <<_ACEOF
+#line 6279 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <sys/signal.h>
+
+int
+main (void)
+{
+int x = SIGWINCH; (void)x
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext"
+if { (eval echo "$as_me:6294: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:6297: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest.$ac_objext"'
+  { (eval echo "$as_me:6300: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:6303: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  cf_cv_define_sigwinch=yes
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 5993 "configure"
+#line 6310 "configure"
 #include "confdefs.h"
 
 #undef _XOPEN_SOURCE
@@ -6008,16 +6325,16 @@ int x = SIGWINCH; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:6011: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6328: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:6014: \$? = $ac_status" >&5
+  echo "$as_me:6331: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6017: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6334: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6020: \$? = $ac_status" >&5
+  echo "$as_me:6337: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_define_sigwinch=maybe
 else
@@ -6031,11 +6348,11 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:6034: result: $cf_cv_define_sigwinch" >&5
+echo "$as_me:6351: result: $cf_cv_define_sigwinch" >&5
 echo "${ECHO_T}$cf_cv_define_sigwinch" >&6
 
 if test "$cf_cv_define_sigwinch" = maybe ; then
-echo "$as_me:6038: checking for actual SIGWINCH definition" >&5
+echo "$as_me:6355: checking for actual SIGWINCH definition" >&5
 echo $ECHO_N "checking for actual SIGWINCH definition... $ECHO_C" >&6
 if test "${cf_cv_fixup_sigwinch+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6046,7 +6363,7 @@ cf_sigwinch=32
 while test "$cf_sigwinch" != 1
 do
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 6049 "configure"
+#line 6366 "configure"
 #include "confdefs.h"
 
 #undef _XOPEN_SOURCE
@@ -6060,7 +6377,7 @@ main (void)
 {
 
 #if SIGWINCH != $cf_sigwinch
-make an error
+#error SIGWINCH is not $cf_sigwinch
 #endif
 int x = SIGWINCH; (void)x
   ;
@@ -6068,16 +6385,16 @@ int x = SIGWINCH; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:6071: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6388: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:6074: \$? = $ac_status" >&5
+  echo "$as_me:6391: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6077: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6394: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6080: \$? = $ac_status" >&5
+  echo "$as_me:6397: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_fixup_sigwinch=$cf_sigwinch
         break
@@ -6091,7 +6408,7 @@ cf_sigwinch="`expr "$cf_sigwinch" - 1`"
 done
 
 fi
-echo "$as_me:6094: result: $cf_cv_fixup_sigwinch" >&5
+echo "$as_me:6411: result: $cf_cv_fixup_sigwinch" >&5
 echo "${ECHO_T}$cf_cv_fixup_sigwinch" >&6
 
        if test "$cf_cv_fixup_sigwinch" != unknown ; then
@@ -6101,13 +6418,13 @@ fi
 
 # Checks for CODESET support.
 
-echo "$as_me:6104: checking for nl_langinfo and CODESET" >&5
+echo "$as_me:6421: checking for nl_langinfo and CODESET" >&5
 echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6
 if test "${am_cv_langinfo_codeset+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6110 "configure"
+#line 6427 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -6121,16 +6438,16 @@ char* cs = nl_langinfo(CODESET); (void)cs
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6124: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6441: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6127: \$? = $ac_status" >&5
+  echo "$as_me:6444: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6130: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6447: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6133: \$? = $ac_status" >&5
+  echo "$as_me:6450: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   am_cv_langinfo_codeset=yes
 else
@@ -6141,7 +6458,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:6144: result: $am_cv_langinfo_codeset" >&5
+echo "$as_me:6461: result: $am_cv_langinfo_codeset" >&5
 echo "${ECHO_T}$am_cv_langinfo_codeset" >&6
        if test "$am_cv_langinfo_codeset" = yes; then
 
@@ -6151,7 +6468,7 @@ EOF
 
        fi
 
-echo "$as_me:6154: checking if you want to use pkg-config" >&5
+echo "$as_me:6471: checking if you want to use pkg-config" >&5
 echo $ECHO_N "checking if you want to use pkg-config... $ECHO_C" >&6
 
 # Check whether --with-pkg-config or --without-pkg-config was given.
@@ -6161,7 +6478,7 @@ if test "${with_pkg_config+set}" = set; then
 else
   cf_pkg_config=yes
 fi;
-echo "$as_me:6164: result: $cf_pkg_config" >&5
+echo "$as_me:6481: result: $cf_pkg_config" >&5
 echo "${ECHO_T}$cf_pkg_config" >&6
 
 case "$cf_pkg_config" in
@@ -6173,7 +6490,7 @@ case "$cf_pkg_config" in
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
 set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-echo "$as_me:6176: checking for $ac_word" >&5
+echo "$as_me:6493: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6190,7 +6507,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word"
-   echo "$as_me:6193: found $ac_dir/$ac_word" >&5
+   echo "$as_me:6510: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -6201,10 +6518,10 @@ fi
 PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 
 if test -n "$PKG_CONFIG"; then
-  echo "$as_me:6204: result: $PKG_CONFIG" >&5
+  echo "$as_me:6521: result: $PKG_CONFIG" >&5
 echo "${ECHO_T}$PKG_CONFIG" >&6
 else
-  echo "$as_me:6207: result: no" >&5
+  echo "$as_me:6524: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -6213,7 +6530,7 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then
   ac_pt_PKG_CONFIG=$PKG_CONFIG
   # Extract the first word of "pkg-config", so it can be a program name with args.
 set dummy pkg-config; ac_word=$2
-echo "$as_me:6216: checking for $ac_word" >&5
+echo "$as_me:6533: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6230,7 +6547,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   if $as_executable_p "$ac_dir/$ac_word"; then
    ac_cv_path_ac_pt_PKG_CONFIG="$ac_dir/$ac_word"
-   echo "$as_me:6233: found $ac_dir/$ac_word" >&5
+   echo "$as_me:6550: found $ac_dir/$ac_word" >&5
    break
 fi
 done
@@ -6242,10 +6559,10 @@ fi
 ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
 
 if test -n "$ac_pt_PKG_CONFIG"; then
-  echo "$as_me:6245: result: $ac_pt_PKG_CONFIG" >&5
+  echo "$as_me:6562: result: $ac_pt_PKG_CONFIG" >&5
 echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
 else
-  echo "$as_me:6248: result: no" >&5
+  echo "$as_me:6565: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -6288,18 +6605,18 @@ case ".$PKG_CONFIG" in
        PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:6291: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
+       { { echo "$as_me:6608: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
 echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
 esac
 
 elif test "x$cf_pkg_config" != xno ; then
-       { echo "$as_me:6298: WARNING: pkg-config is not installed" >&5
+       { echo "$as_me:6615: WARNING: pkg-config is not installed" >&5
 echo "$as_me: WARNING: pkg-config is not installed" >&2;}
 fi
 
-echo "$as_me:6302: checking if you want to see long compiling messages" >&5
+echo "$as_me:6619: checking if you want to see long compiling messages" >&5
 echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6
 
 # Check whether --enable-echo or --disable-echo was given.
@@ -6333,10 +6650,10 @@ else
        ECHO_CC=''
 
 fi;
-echo "$as_me:6336: result: $enableval" >&5
+echo "$as_me:6653: result: $enableval" >&5
 echo "${ECHO_T}$enableval" >&6
 
-echo "$as_me:6339: checking for ncurses wrap-prefix" >&5
+echo "$as_me:6656: checking for ncurses wrap-prefix" >&5
 echo $ECHO_N "checking for ncurses wrap-prefix... $ECHO_C" >&6
 
 # Check whether --with-ncurses-wrap-prefix or --without-ncurses-wrap-prefix was given.
@@ -6346,10 +6663,10 @@ if test "${with_ncurses_wrap_prefix+set}" = set; then
 else
   NCURSES_WRAP_PREFIX=_nc_
 fi;
-echo "$as_me:6349: result: $NCURSES_WRAP_PREFIX" >&5
+echo "$as_me:6666: result: $NCURSES_WRAP_PREFIX" >&5
 echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6
 
-echo "$as_me:6352: checking if you want to check for wide-character functions" >&5
+echo "$as_me:6669: checking if you want to check for wide-character functions" >&5
 echo $ECHO_N "checking if you want to check for wide-character functions... $ECHO_C" >&6
 
 # Check whether --enable-widec or --disable-widec was given.
@@ -6366,10 +6683,10 @@ else
        cf_enable_widec=yes
 
 fi;
-echo "$as_me:6369: result: $cf_enable_widec" >&5
+echo "$as_me:6686: result: $cf_enable_widec" >&5
 echo "${ECHO_T}$cf_enable_widec" >&6
 
-echo "$as_me:6372: checking for specific curses-directory" >&5
+echo "$as_me:6689: checking for specific curses-directory" >&5
 echo $ECHO_N "checking for specific curses-directory... $ECHO_C" >&6
 
 # Check whether --with-curses-dir or --without-curses-dir was given.
@@ -6379,7 +6696,7 @@ if test "${with_curses_dir+set}" = set; then
 else
   cf_cv_curses_dir=no
 fi;
-echo "$as_me:6382: result: $cf_cv_curses_dir" >&5
+echo "$as_me:6699: result: $cf_cv_curses_dir" >&5
 echo "${ECHO_T}$cf_cv_curses_dir" >&6
 
 if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no"
@@ -6410,7 +6727,7 @@ case ".$withval" in
        withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:6413: error: expected a pathname, not \"$withval\"" >&5
+       { { echo "$as_me:6730: error: expected a pathname, not \"$withval\"" >&5
 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -6446,7 +6763,7 @@ if test -n "$cf_cv_curses_dir/include" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 6449 "configure"
+#line 6766 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -6458,16 +6775,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:6461: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6778: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:6464: \$? = $ac_status" >&5
+  echo "$as_me:6781: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6467: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6784: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6470: \$? = $ac_status" >&5
+  echo "$as_me:6787: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -6484,7 +6801,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:6487: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:6804: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -6520,7 +6837,7 @@ if test -n "$cf_cv_curses_dir/lib" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:6523: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:6840: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
@@ -6533,7 +6850,7 @@ fi
 
 cf_cv_screen=curses
 
-echo "$as_me:6536: checking for specified curses library type" >&5
+echo "$as_me:6853: checking for specified curses library type" >&5
 echo $ECHO_N "checking for specified curses library type... $ECHO_C" >&6
 
 # Check whether --with-screen or --without-screen was given.
@@ -6577,13 +6894,13 @@ fi;
 fi;
 fi;
 
-echo "$as_me:6580: result: $cf_cv_screen" >&5
+echo "$as_me:6897: result: $cf_cv_screen" >&5
 echo "${ECHO_T}$cf_cv_screen" >&6
 
 case $cf_cv_screen in
 (curses|curses_*)
 
-echo "$as_me:6586: checking for extra include directories" >&5
+echo "$as_me:6903: checking for extra include directories" >&5
 echo $ECHO_N "checking for extra include directories... $ECHO_C" >&6
 if test "${cf_cv_curses_incdir+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6609,7 +6926,7 @@ case "$host_os" in
 esac
 
 fi
-echo "$as_me:6612: result: $cf_cv_curses_incdir" >&5
+echo "$as_me:6929: result: $cf_cv_curses_incdir" >&5
 echo "${ECHO_T}$cf_cv_curses_incdir" >&6
 if test "$cf_cv_curses_incdir" != no
 then
@@ -6619,7 +6936,7 @@ then
 
 fi
 
-echo "$as_me:6622: checking if we have identified curses headers" >&5
+echo "$as_me:6939: checking if we have identified curses headers" >&5
 echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
 if test "${cf_cv_ncurses_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6631,7 +6948,7 @@ for cf_header in \
        curses.h  ncurses/ncurses.h ncurses/curses.h
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6634 "configure"
+#line 6951 "configure"
 #include "confdefs.h"
 #include <${cf_header}>
 int
@@ -6643,16 +6960,16 @@ initscr(); endwin()
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:6646: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:6963: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:6649: \$? = $ac_status" >&5
+  echo "$as_me:6966: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6652: \"$ac_try\"") >&5
+  { (eval echo "$as_me:6969: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6655: \$? = $ac_status" >&5
+  echo "$as_me:6972: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_header=$cf_header; break
 else
@@ -6663,11 +6980,11 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:6666: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:6983: result: $cf_cv_ncurses_header" >&5
 echo "${ECHO_T}$cf_cv_ncurses_header" >&6
 
 if test "$cf_cv_ncurses_header" = none ; then
-       { { echo "$as_me:6670: error: No curses header-files found" >&5
+       { { echo "$as_me:6987: error: No curses header-files found" >&5
 echo "$as_me: error: No curses header-files found" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -6677,23 +6994,23 @@ fi
 for ac_header in $cf_cv_ncurses_header
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:6680: checking for $ac_header" >&5
+echo "$as_me:6997: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6686 "configure"
+#line 7003 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:6690: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:7007: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:6696: \$? = $ac_status" >&5
+  echo "$as_me:7013: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -6712,7 +7029,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:6715: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:7032: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -6722,7 +7039,7 @@ EOF
 fi
 done
 
-echo "$as_me:6725: checking for terminfo header" >&5
+echo "$as_me:7042: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6740,7 +7057,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6743 "configure"
+#line 7060 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -6755,16 +7072,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:6758: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7075: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:6761: \$? = $ac_status" >&5
+  echo "$as_me:7078: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:6764: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7081: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6767: \$? = $ac_status" >&5
+  echo "$as_me:7084: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -6780,7 +7097,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:6783: result: $cf_cv_term_header" >&5
+echo "$as_me:7100: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -6812,7 +7129,7 @@ EOF
        ;;
 esac
 
-echo "$as_me:6815: checking for ncurses version" >&5
+echo "$as_me:7132: checking for ncurses version" >&5
 echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
 if test "${cf_cv_ncurses_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6838,10 +7155,10 @@ Autoconf "old"
 #endif
 EOF
        cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
-       { (eval echo "$as_me:6841: \"$cf_try\"") >&5
+       { (eval echo "$as_me:7158: \"$cf_try\"") >&5
   (eval $cf_try) 2>&5
   ac_status=$?
-  echo "$as_me:6844: \$? = $ac_status" >&5
+  echo "$as_me:7161: \$? = $ac_status" >&5
   (exit "$ac_status"); }
        if test -f conftest.out ; then
                cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out`
@@ -6851,7 +7168,7 @@ EOF
 
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 6854 "configure"
+#line 7171 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -6871,22 +7188,22 @@ int main(void)
 # ifdef __NCURSES_H
        fprintf(fp, "old\\n");
 # else
-       make an error
+       #error expected ncurses header to define __NCURSES_H
 # endif
 #endif
        ${cf_cv_main_return:-return}(0);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:6881: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7198: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6884: \$? = $ac_status" >&5
+  echo "$as_me:7201: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:6886: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7203: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6889: \$? = $ac_status" >&5
+  echo "$as_me:7206: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -6900,17 +7217,17 @@ fi
        rm -f "$cf_tempfile"
 
 fi
-echo "$as_me:6903: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:7220: result: $cf_cv_ncurses_version" >&5
 echo "${ECHO_T}$cf_cv_ncurses_version" >&6
 test "$cf_cv_ncurses_version" = no ||
 cat >>confdefs.h <<\EOF
 #define NCURSES 1
 EOF
 
-echo "$as_me:6910: checking if we have identified curses libraries" >&5
+echo "$as_me:7227: checking if we have identified curses libraries" >&5
 echo $ECHO_N "checking if we have identified curses libraries... $ECHO_C" >&6
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6913 "configure"
+#line 7230 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -6922,16 +7239,16 @@ initscr(); endwin()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6925: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7242: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6928: \$? = $ac_status" >&5
+  echo "$as_me:7245: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6931: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7248: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6934: \$? = $ac_status" >&5
+  echo "$as_me:7251: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -6940,13 +7257,13 @@ cat "conftest.$ac_ext" >&5
 cf_result=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-echo "$as_me:6943: result: $cf_result" >&5
+echo "$as_me:7260: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
 
 if test "$cf_result" = no ; then
 case "$host_os" in
 (freebsd*)
-       echo "$as_me:6949: checking for tgoto in -lmytinfo" >&5
+       echo "$as_me:7266: checking for tgoto in -lmytinfo" >&5
 echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
 if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -6954,7 +7271,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmytinfo  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 6957 "configure"
+#line 7274 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -6963,7 +7280,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char tgoto ();
+char tgoto (void);
 int
 main (void)
 {
@@ -6973,16 +7290,16 @@ tgoto ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:6976: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7293: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:6979: \$? = $ac_status" >&5
+  echo "$as_me:7296: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:6982: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7299: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:6985: \$? = $ac_status" >&5
+  echo "$as_me:7302: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_mytinfo_tgoto=yes
 else
@@ -6993,7 +7310,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:6996: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:7313: result: $ac_cv_lib_mytinfo_tgoto" >&5
 echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
 if test "$ac_cv_lib_mytinfo_tgoto" = yes; then
 
@@ -7023,7 +7340,7 @@ fi
        # term.h) for cur_colr
        if test "x$cf_cv_screen" = "xcurses_colr"
        then
-               echo "$as_me:7026: checking for initscr in -lcur_colr" >&5
+               echo "$as_me:7343: checking for initscr in -lcur_colr" >&5
 echo $ECHO_N "checking for initscr in -lcur_colr... $ECHO_C" >&6
 if test "${ac_cv_lib_cur_colr_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7031,7 +7348,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lcur_colr  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 7034 "configure"
+#line 7351 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -7040,7 +7357,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char initscr ();
+char initscr (void);
 int
 main (void)
 {
@@ -7050,16 +7367,16 @@ initscr ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7053: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7370: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7056: \$? = $ac_status" >&5
+  echo "$as_me:7373: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7059: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7376: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7062: \$? = $ac_status" >&5
+  echo "$as_me:7379: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_cur_colr_initscr=yes
 else
@@ -7070,7 +7387,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:7073: result: $ac_cv_lib_cur_colr_initscr" >&5
+echo "$as_me:7390: result: $ac_cv_lib_cur_colr_initscr" >&5
 echo "${ECHO_T}$ac_cv_lib_cur_colr_initscr" >&6
 if test "$ac_cv_lib_cur_colr_initscr" = yes; then
 
@@ -7094,7 +7411,7 @@ LIBS="$cf_add_libs"
 
 else
 
-               echo "$as_me:7097: checking for initscr in -lHcurses" >&5
+               echo "$as_me:7414: checking for initscr in -lHcurses" >&5
 echo $ECHO_N "checking for initscr in -lHcurses... $ECHO_C" >&6
 if test "${ac_cv_lib_Hcurses_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7102,7 +7419,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lHcurses  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 7105 "configure"
+#line 7422 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -7111,7 +7428,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char initscr ();
+char initscr (void);
 int
 main (void)
 {
@@ -7121,16 +7438,16 @@ initscr ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7124: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7441: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7127: \$? = $ac_status" >&5
+  echo "$as_me:7444: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7130: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7447: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7133: \$? = $ac_status" >&5
+  echo "$as_me:7450: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_Hcurses_initscr=yes
 else
@@ -7141,7 +7458,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:7144: result: $ac_cv_lib_Hcurses_initscr" >&5
+echo "$as_me:7461: result: $ac_cv_lib_Hcurses_initscr" >&5
 echo "${ECHO_T}$ac_cv_lib_Hcurses_initscr" >&6
 if test "$ac_cv_lib_Hcurses_initscr" = yes; then
 
@@ -7199,7 +7516,7 @@ if test -n "/lib64" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:7202: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:7519: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
@@ -7228,7 +7545,7 @@ if test -n "/lib" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:7231: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:7548: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
@@ -7259,7 +7576,7 @@ if test -n "/lib" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:7262: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:7579: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
@@ -7294,7 +7611,7 @@ if test -n "/usr/5lib" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:7297: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:7614: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
@@ -7338,13 +7655,13 @@ if test ".$ac_cv_func_initscr" != .yes ; then
        # because it may be needed to link the test-case for initscr.
        if test "x$cf_term_lib" = x
        then
-               echo "$as_me:7341: checking for tgoto" >&5
+               echo "$as_me:7658: checking for tgoto" >&5
 echo $ECHO_N "checking for tgoto... $ECHO_C" >&6
 if test "${ac_cv_func_tgoto+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 7347 "configure"
+#line 7664 "configure"
 #include "confdefs.h"
 #define tgoto autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -7375,16 +7692,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7378: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7695: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7381: \$? = $ac_status" >&5
+  echo "$as_me:7698: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7384: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7701: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7387: \$? = $ac_status" >&5
+  echo "$as_me:7704: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_tgoto=yes
 else
@@ -7394,7 +7711,7 @@ ac_cv_func_tgoto=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:7397: result: $ac_cv_func_tgoto" >&5
+echo "$as_me:7714: result: $ac_cv_func_tgoto" >&5
 echo "${ECHO_T}$ac_cv_func_tgoto" >&6
 if test "$ac_cv_func_tgoto" = yes; then
   cf_term_lib=predefined
@@ -7403,7 +7720,7 @@ else
                        for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown
                        do
                                as_ac_Lib=`echo "ac_cv_lib_$cf_term_lib''_tgoto" | $as_tr_sh`
-echo "$as_me:7406: checking for tgoto in -l$cf_term_lib" >&5
+echo "$as_me:7723: checking for tgoto in -l$cf_term_lib" >&5
 echo $ECHO_N "checking for tgoto in -l$cf_term_lib... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Lib+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7411,7 +7728,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-l$cf_term_lib  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 7414 "configure"
+#line 7731 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -7420,7 +7737,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char tgoto ();
+char tgoto (void);
 int
 main (void)
 {
@@ -7430,16 +7747,16 @@ tgoto ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7433: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7750: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7436: \$? = $ac_status" >&5
+  echo "$as_me:7753: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7439: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7756: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7442: \$? = $ac_status" >&5
+  echo "$as_me:7759: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_Lib=yes"
 else
@@ -7450,7 +7767,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:7453: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
+echo "$as_me:7770: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Lib"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Lib"'}'`" = yes; then
 
@@ -7473,10 +7790,10 @@ fi
                do
                        LIBS="-l$cf_curs_lib $cf_save_LIBS"
                        if test "$cf_term_lib" = unknown || test "$cf_term_lib" = "$cf_curs_lib" ; then
-                               echo "$as_me:7476: checking if we can link with $cf_curs_lib library" >&5
+                               echo "$as_me:7793: checking if we can link with $cf_curs_lib library" >&5
 echo $ECHO_N "checking if we can link with $cf_curs_lib library... $ECHO_C" >&6
                                cat >"conftest.$ac_ext" <<_ACEOF
-#line 7479 "configure"
+#line 7796 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -7488,16 +7805,16 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7491: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7808: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7494: \$? = $ac_status" >&5
+  echo "$as_me:7811: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7497: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7814: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7500: \$? = $ac_status" >&5
+  echo "$as_me:7817: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -7506,16 +7823,16 @@ cat "conftest.$ac_ext" >&5
 cf_result=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-                               echo "$as_me:7509: result: $cf_result" >&5
+                               echo "$as_me:7826: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
                                test "$cf_result" = yes && break
                        elif test "$cf_curs_lib" = "$cf_term_lib" ; then
                                cf_result=no
                        elif test "$cf_term_lib" != predefined ; then
-                               echo "$as_me:7515: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5
+                               echo "$as_me:7832: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5
 echo $ECHO_N "checking if we need both $cf_curs_lib and $cf_term_lib libraries... $ECHO_C" >&6
                                cat >"conftest.$ac_ext" <<_ACEOF
-#line 7518 "configure"
+#line 7835 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -7527,16 +7844,16 @@ initscr(); endwin();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7530: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7847: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7533: \$? = $ac_status" >&5
+  echo "$as_me:7850: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7536: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7853: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7539: \$? = $ac_status" >&5
+  echo "$as_me:7856: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=no
 else
@@ -7545,7 +7862,7 @@ cat "conftest.$ac_ext" >&5
 
                                        LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
                                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 7548 "configure"
+#line 7865 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -7557,16 +7874,16 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7560: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7877: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7563: \$? = $ac_status" >&5
+  echo "$as_me:7880: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7566: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7883: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7569: \$? = $ac_status" >&5
+  echo "$as_me:7886: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -7578,13 +7895,13 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-                               echo "$as_me:7581: result: $cf_result" >&5
+                               echo "$as_me:7898: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
                                test "$cf_result" != error && break
                        fi
                done
        fi
-       test "$cf_curs_lib" = unknown && { { echo "$as_me:7587: error: no curses library found" >&5
+       test "$cf_curs_lib" = unknown && { { echo "$as_me:7904: error: no curses library found" >&5
 echo "$as_me: error: no curses library found" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -7596,23 +7913,23 @@ fi
 for ac_header in wchar.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:7599: checking for $ac_header" >&5
+echo "$as_me:7916: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 7605 "configure"
+#line 7922 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:7609: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:7926: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:7615: \$? = $ac_status" >&5
+  echo "$as_me:7932: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -7631,7 +7948,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:7634: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:7951: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -7641,7 +7958,7 @@ EOF
 fi
 done
 
-echo "$as_me:7644: checking for multibyte character support" >&5
+echo "$as_me:7961: checking for multibyte character support" >&5
 echo $ECHO_N "checking for multibyte character support... $ECHO_C" >&6
 if test "${cf_cv_utf8_lib+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7649,7 +7966,7 @@ else
 
        cf_save_LIBS="$LIBS"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 7652 "configure"
+#line 7969 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -7666,16 +7983,16 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7669: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7986: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7672: \$? = $ac_status" >&5
+  echo "$as_me:7989: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7675: \"$ac_try\"") >&5
+  { (eval echo "$as_me:7992: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7678: \$? = $ac_status" >&5
+  echo "$as_me:7995: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_utf8_lib=yes
 else
@@ -7687,12 +8004,12 @@ cat "conftest.$ac_ext" >&5
 cf_cv_header_path_utf8=
 cf_cv_library_path_utf8=
 
-echo "${as_me:-configure}:7690: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:8007: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
 
 cf_save_LIBS="$LIBS"
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 7695 "configure"
+#line 8012 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -7705,16 +8022,16 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7708: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8025: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7711: \$? = $ac_status" >&5
+  echo "$as_me:8028: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7714: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8031: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7717: \$? = $ac_status" >&5
+  echo "$as_me:8034: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_find_linkage_utf8=yes
@@ -7728,7 +8045,7 @@ cat "conftest.$ac_ext" >&5
 LIBS="-lutf8  $cf_save_LIBS"
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 7731 "configure"
+#line 8048 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -7741,16 +8058,16 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:7744: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8061: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:7747: \$? = $ac_status" >&5
+  echo "$as_me:8064: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:7750: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8067: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7753: \$? = $ac_status" >&5
+  echo "$as_me:8070: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_find_linkage_utf8=yes
@@ -7767,9 +8084,9 @@ cat "conftest.$ac_ext" >&5
 
        test -n "$verbose" && echo "    find linkage for utf8 library" 1>&6
 
-echo "${as_me:-configure}:7770: testing find linkage for utf8 library ..." 1>&5
+echo "${as_me:-configure}:8087: testing find linkage for utf8 library ..." 1>&5
 
-echo "${as_me:-configure}:7772: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:8089: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
 
        cf_save_CPPFLAGS="$CPPFLAGS"
        cf_test_CPPFLAGS="$CPPFLAGS"
@@ -7860,7 +8177,7 @@ cf_search="$cf_search $cf_header_path_list"
                if test -d "$cf_cv_header_path_utf8" ; then
                        test -n "$verbose" && echo "    ... testing $cf_cv_header_path_utf8" 1>&6
 
-echo "${as_me:-configure}:7863: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:8180: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
 
                        CPPFLAGS="$cf_save_CPPFLAGS"
 
@@ -7868,7 +8185,7 @@ echo "${as_me:-configure}:7863: testing ... testing $cf_cv_header_path_utf8 ..."
        CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 7871 "configure"
+#line 8188 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -7881,21 +8198,21 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:7884: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8201: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:7887: \$? = $ac_status" >&5
+  echo "$as_me:8204: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:7890: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8207: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:7893: \$? = $ac_status" >&5
+  echo "$as_me:8210: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                                test -n "$verbose" && echo "    ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6
 
-echo "${as_me:-configure}:7898: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:8215: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
 
                                cf_cv_find_linkage_utf8=maybe
                                cf_test_CPPFLAGS="$CPPFLAGS"
@@ -7913,7 +8230,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
        if test "$cf_cv_find_linkage_utf8" = maybe ; then
 
-echo "${as_me:-configure}:7916: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:8233: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
 
                cf_save_LIBS="$LIBS"
                cf_save_LDFLAGS="$LDFLAGS"
@@ -7988,13 +8305,13 @@ cf_search="$cf_library_path_list $cf_search"
                                if test -d "$cf_cv_library_path_utf8" ; then
                                        test -n "$verbose" && echo "    ... testing $cf_cv_library_path_utf8" 1>&6
 
-echo "${as_me:-configure}:7991: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:8308: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
 
                                        CPPFLAGS="$cf_test_CPPFLAGS"
                                        LIBS="-lutf8  $cf_save_LIBS"
                                        LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8"
                                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 7997 "configure"
+#line 8314 "configure"
 #include "confdefs.h"
 
 #include <libutf8.h>
@@ -8007,21 +8324,21 @@ putwc(0,0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:8010: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8327: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8013: \$? = $ac_status" >&5
+  echo "$as_me:8330: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:8016: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8333: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8019: \$? = $ac_status" >&5
+  echo "$as_me:8336: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                                        test -n "$verbose" && echo "    ... found utf8 library in $cf_cv_library_path_utf8" 1>&6
 
-echo "${as_me:-configure}:8024: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:8341: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
 
                                        cf_cv_find_linkage_utf8=yes
                                        cf_cv_library_file_utf8="-lutf8"
@@ -8063,7 +8380,7 @@ fi
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:8066: result: $cf_cv_utf8_lib" >&5
+echo "$as_me:8383: result: $cf_cv_utf8_lib" >&5
 echo "${ECHO_T}$cf_cv_utf8_lib" >&6
 
 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
@@ -8101,7 +8418,7 @@ if test -n "$cf_cv_header_path_utf8" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 8104 "configure"
+#line 8421 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -8113,16 +8430,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8116: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8433: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8119: \$? = $ac_status" >&5
+  echo "$as_me:8436: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8122: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8439: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8125: \$? = $ac_status" >&5
+  echo "$as_me:8442: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -8139,7 +8456,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:8142: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:8459: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -8175,7 +8492,7 @@ if test -n "$cf_cv_library_path_utf8" ; then
                        if test "$cf_have_libdir" = no ; then
                                test -n "$verbose" && echo "    adding $cf_add_libdir to library-path" 1>&6
 
-echo "${as_me:-configure}:8178: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:8495: testing adding $cf_add_libdir to library-path ..." 1>&5
 
                                LDFLAGS="-L$cf_add_libdir $LDFLAGS"
                        fi
@@ -8205,13 +8522,13 @@ cf_ncuconfig_root=$cf_cv_screen
 cf_have_ncuconfig=no
 
 if test "x${PKG_CONFIG:=none}" != xnone; then
-       echo "$as_me:8208: checking pkg-config for $cf_ncuconfig_root" >&5
+       echo "$as_me:8525: checking pkg-config for $cf_ncuconfig_root" >&5
 echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
        if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
-               echo "$as_me:8211: result: yes" >&5
+               echo "$as_me:8528: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
-               echo "$as_me:8214: checking if the $cf_ncuconfig_root package files work" >&5
+               echo "$as_me:8531: checking if the $cf_ncuconfig_root package files work" >&5
 echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6
                cf_have_ncuconfig=unknown
 
@@ -8344,7 +8661,7 @@ done
 LIBS="$cf_add_libs"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 8347 "configure"
+#line 8664 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -8356,37 +8673,37 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:8359: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8676: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8362: \$? = $ac_status" >&5
+  echo "$as_me:8679: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:8365: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8682: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8368: \$? = $ac_status" >&5
+  echo "$as_me:8685: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_test_ncuconfig=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 8374 "configure"
+#line 8691 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
                                        int main(void)
                                        { const char *xx = curses_version(); return (xx == 0); }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:8381: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8698: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8384: \$? = $ac_status" >&5
+  echo "$as_me:8701: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:8386: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8703: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8389: \$? = $ac_status" >&5
+  echo "$as_me:8706: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_test_ncuconfig=yes
 else
@@ -8560,7 +8877,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 8563 "configure"
+#line 8880 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -8572,37 +8889,37 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:8575: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8892: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8578: \$? = $ac_status" >&5
+  echo "$as_me:8895: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:8581: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8898: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8584: \$? = $ac_status" >&5
+  echo "$as_me:8901: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_have_ncuconfig=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 8590 "configure"
+#line 8907 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
                                int main(void)
                                { const char *xx = curses_version(); return (xx == 0); }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:8597: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8914: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:8600: \$? = $ac_status" >&5
+  echo "$as_me:8917: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:8602: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8919: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8605: \$? = $ac_status" >&5
+  echo "$as_me:8922: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_have_ncuconfig=yes
 else
@@ -8619,7 +8936,7 @@ cat "conftest.$ac_ext" >&5
 cf_have_ncuconfig=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:8622: result: $cf_have_ncuconfig" >&5
+               echo "$as_me:8939: result: $cf_have_ncuconfig" >&5
 echo "${ECHO_T}$cf_have_ncuconfig" >&6
                test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
                if test "$cf_have_ncuconfig" != "yes"
@@ -8635,7 +8952,7 @@ EOF
 
                        NCURSES_CONFIG_PKG=$cf_ncuconfig_root
 
-echo "$as_me:8638: checking for terminfo header" >&5
+echo "$as_me:8955: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8653,7 +8970,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 8656 "configure"
+#line 8973 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -8668,16 +8985,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8671: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8988: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8674: \$? = $ac_status" >&5
+  echo "$as_me:8991: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8677: \"$ac_try\"") >&5
+  { (eval echo "$as_me:8994: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:8680: \$? = $ac_status" >&5
+  echo "$as_me:8997: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -8693,7 +9010,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:8696: result: $cf_cv_term_header" >&5
+echo "$as_me:9013: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -8728,7 +9045,7 @@ esac
                fi
 
        else
-               echo "$as_me:8731: result: no" >&5
+               echo "$as_me:9048: result: no" >&5
 echo "${ECHO_T}no" >&6
                NCURSES_CONFIG_PKG=none
        fi
@@ -8744,7 +9061,7 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:8747: checking for $ac_word" >&5
+echo "$as_me:9064: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8759,7 +9076,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:8762: found $ac_dir/$ac_word" >&5
+echo "$as_me:9079: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -8767,10 +9084,10 @@ fi
 fi
 NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG
 if test -n "$NCURSES_CONFIG"; then
-  echo "$as_me:8770: result: $NCURSES_CONFIG" >&5
+  echo "$as_me:9087: result: $NCURSES_CONFIG" >&5
 echo "${ECHO_T}$NCURSES_CONFIG" >&6
 else
-  echo "$as_me:8773: result: no" >&5
+  echo "$as_me:9090: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -8783,7 +9100,7 @@ if test -z "$NCURSES_CONFIG"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:8786: checking for $ac_word" >&5
+echo "$as_me:9103: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8798,7 +9115,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog"
-echo "$as_me:8801: found $ac_dir/$ac_word" >&5
+echo "$as_me:9118: found $ac_dir/$ac_word" >&5
 break
 done
 
@@ -8806,10 +9123,10 @@ fi
 fi
 ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG
 if test -n "$ac_ct_NCURSES_CONFIG"; then
-  echo "$as_me:8809: result: $ac_ct_NCURSES_CONFIG" >&5
+  echo "$as_me:9126: result: $ac_ct_NCURSES_CONFIG" >&5
 echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6
 else
-  echo "$as_me:8812: result: no" >&5
+  echo "$as_me:9129: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -8966,7 +9283,7 @@ LIBS="$cf_add_libs"
 
                # even with config script, some packages use no-override for curses.h
 
-echo "$as_me:8969: checking if we have identified curses headers" >&5
+echo "$as_me:9286: checking if we have identified curses headers" >&5
 echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
 if test "${cf_cv_ncurses_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -8978,7 +9295,7 @@ for cf_header in \
        curses.h $cf_cv_screen/curses.h
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 8981 "configure"
+#line 9298 "configure"
 #include "confdefs.h"
 #include <${cf_header}>
 int
@@ -8990,16 +9307,16 @@ initscr(); endwin()
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:8993: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9310: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:8996: \$? = $ac_status" >&5
+  echo "$as_me:9313: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:8999: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9316: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9002: \$? = $ac_status" >&5
+  echo "$as_me:9319: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_header=$cf_header; break
 else
@@ -9010,11 +9327,11 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:9013: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:9330: result: $cf_cv_ncurses_header" >&5
 echo "${ECHO_T}$cf_cv_ncurses_header" >&6
 
 if test "$cf_cv_ncurses_header" = none ; then
-       { { echo "$as_me:9017: error: No curses header-files found" >&5
+       { { echo "$as_me:9334: error: No curses header-files found" >&5
 echo "$as_me: error: No curses header-files found" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -9024,23 +9341,23 @@ fi
 for ac_header in $cf_cv_ncurses_header
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:9027: checking for $ac_header" >&5
+echo "$as_me:9344: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 9033 "configure"
+#line 9350 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:9037: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:9354: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:9043: \$? = $ac_status" >&5
+  echo "$as_me:9360: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -9059,7 +9376,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:9062: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:9379: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -9115,7 +9432,7 @@ if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 9118 "configure"
+#line 9435 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -9127,16 +9444,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:9130: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9447: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:9133: \$? = $ac_status" >&5
+  echo "$as_me:9450: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:9136: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9453: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9139: \$? = $ac_status" >&5
+  echo "$as_me:9456: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -9153,7 +9470,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:9156: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:9473: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -9172,7 +9489,7 @@ fi
 
 }
 
-echo "$as_me:9175: checking for $cf_ncuhdr_root header in include-path" >&5
+echo "$as_me:9492: checking for $cf_ncuhdr_root header in include-path" >&5
 echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6
 if test "${cf_cv_ncurses_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9184,7 +9501,7 @@ else
        do
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 9187 "configure"
+#line 9504 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -9199,7 +9516,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
 
@@ -9208,16 +9525,16 @@ printf("old\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:9211: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9528: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:9214: \$? = $ac_status" >&5
+  echo "$as_me:9531: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:9217: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9534: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9220: \$? = $ac_status" >&5
+  echo "$as_me:9537: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_h=$cf_header
 
@@ -9232,14 +9549,14 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        done
 
 fi
-echo "$as_me:9235: result: $cf_cv_ncurses_h" >&5
+echo "$as_me:9552: result: $cf_cv_ncurses_h" >&5
 echo "${ECHO_T}$cf_cv_ncurses_h" >&6
 
 if test "$cf_cv_ncurses_h" != no ; then
        cf_cv_ncurses_header=$cf_cv_ncurses_h
 else
 
-echo "$as_me:9242: checking for $cf_ncuhdr_root include-path" >&5
+echo "$as_me:9559: checking for $cf_ncuhdr_root include-path" >&5
 echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6
 if test "${cf_cv_ncurses_h2+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9360,7 +9677,7 @@ if test -n "$cf_incdir" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 9363 "configure"
+#line 9680 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -9372,16 +9689,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:9375: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9692: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:9378: \$? = $ac_status" >&5
+  echo "$as_me:9695: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:9381: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9698: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9384: \$? = $ac_status" >&5
+  echo "$as_me:9701: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -9398,7 +9715,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:9401: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:9718: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -9421,7 +9738,7 @@ fi
                do
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 9424 "configure"
+#line 9741 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -9436,7 +9753,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
 
@@ -9445,16 +9762,16 @@ printf("old\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:9448: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9765: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:9451: \$? = $ac_status" >&5
+  echo "$as_me:9768: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:9454: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9771: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9457: \$? = $ac_status" >&5
+  echo "$as_me:9774: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_h2=$cf_header
 
@@ -9475,12 +9792,12 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CPPFLAGS="$cf_save2_CPPFLAGS"
                test "$cf_cv_ncurses_h2" != no && break
        done
-       test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:9478: error: not found" >&5
+       test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:9795: error: not found" >&5
 echo "$as_me: error: not found" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:9483: result: $cf_cv_ncurses_h2" >&5
+echo "$as_me:9800: result: $cf_cv_ncurses_h2" >&5
 echo "${ECHO_T}$cf_cv_ncurses_h2" >&6
 
        cf_1st_incdir=`echo "$cf_cv_ncurses_h2" | sed -e 's%/[^/]*$%%'`
@@ -9516,7 +9833,7 @@ if test -n "$cf_1st_incdir" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 9519 "configure"
+#line 9836 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -9528,16 +9845,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:9531: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9848: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:9534: \$? = $ac_status" >&5
+  echo "$as_me:9851: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:9537: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9854: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9540: \$? = $ac_status" >&5
+  echo "$as_me:9857: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -9554,7 +9871,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:9557: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:9874: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -9602,7 +9919,7 @@ EOF
        ;;
 esac
 
-echo "$as_me:9605: checking for terminfo header" >&5
+echo "$as_me:9922: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9620,7 +9937,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 9623 "configure"
+#line 9940 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -9635,16 +9952,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:9638: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9955: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:9641: \$? = $ac_status" >&5
+  echo "$as_me:9958: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:9644: \"$ac_try\"") >&5
+  { (eval echo "$as_me:9961: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9647: \$? = $ac_status" >&5
+  echo "$as_me:9964: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -9660,7 +9977,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:9663: result: $cf_cv_term_header" >&5
+echo "$as_me:9980: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -9698,7 +10015,7 @@ cat >>confdefs.h <<\EOF
 #define NCURSES 1
 EOF
 
-echo "$as_me:9701: checking for ncurses version" >&5
+echo "$as_me:10018: checking for ncurses version" >&5
 echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
 if test "${cf_cv_ncurses_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9724,10 +10041,10 @@ Autoconf "old"
 #endif
 EOF
        cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
-       { (eval echo "$as_me:9727: \"$cf_try\"") >&5
+       { (eval echo "$as_me:10044: \"$cf_try\"") >&5
   (eval $cf_try) 2>&5
   ac_status=$?
-  echo "$as_me:9730: \$? = $ac_status" >&5
+  echo "$as_me:10047: \$? = $ac_status" >&5
   (exit "$ac_status"); }
        if test -f conftest.out ; then
                cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out`
@@ -9737,7 +10054,7 @@ EOF
 
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 9740 "configure"
+#line 10057 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -9757,22 +10074,22 @@ int main(void)
 # ifdef __NCURSES_H
        fprintf(fp, "old\\n");
 # else
-       make an error
+       #error expected ncurses header to define __NCURSES_H
 # endif
 #endif
        ${cf_cv_main_return:-return}(0);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:9767: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10084: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9770: \$? = $ac_status" >&5
+  echo "$as_me:10087: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:9772: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10089: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9775: \$? = $ac_status" >&5
+  echo "$as_me:10092: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -9786,7 +10103,7 @@ fi
        rm -f "$cf_tempfile"
 
 fi
-echo "$as_me:9789: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:10106: result: $cf_cv_ncurses_version" >&5
 echo "${ECHO_T}$cf_cv_ncurses_version" >&6
 test "$cf_cv_ncurses_version" = no ||
 cat >>confdefs.h <<\EOF
@@ -9799,7 +10116,7 @@ cf_nculib_root=$cf_cv_screen
        # to link gpm.
 cf_ncurses_LIBS=""
 cf_ncurses_SAVE="$LIBS"
-echo "$as_me:9802: checking for Gpm_Open in -lgpm" >&5
+echo "$as_me:10119: checking for Gpm_Open in -lgpm" >&5
 echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9807,7 +10124,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 9810 "configure"
+#line 10127 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -9816,7 +10133,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char Gpm_Open ();
+char Gpm_Open (void);
 int
 main (void)
 {
@@ -9826,16 +10143,16 @@ Gpm_Open ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:9829: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10146: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9832: \$? = $ac_status" >&5
+  echo "$as_me:10149: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:9835: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10152: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9838: \$? = $ac_status" >&5
+  echo "$as_me:10155: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_Gpm_Open=yes
 else
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:9849: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:10166: result: $ac_cv_lib_gpm_Gpm_Open" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
 if test "$ac_cv_lib_gpm_Gpm_Open" = yes; then
-  echo "$as_me:9852: checking for initscr in -lgpm" >&5
+  echo "$as_me:10169: checking for initscr in -lgpm" >&5
 echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9857,7 +10174,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 9860 "configure"
+#line 10177 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -9866,7 +10183,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char initscr ();
+char initscr (void);
 int
 main (void)
 {
@@ -9876,16 +10193,16 @@ initscr ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:9879: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10196: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9882: \$? = $ac_status" >&5
+  echo "$as_me:10199: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:9885: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10202: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9888: \$? = $ac_status" >&5
+  echo "$as_me:10205: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_initscr=yes
 else
@@ -9896,7 +10213,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:9899: result: $ac_cv_lib_gpm_initscr" >&5
+echo "$as_me:10216: result: $ac_cv_lib_gpm_initscr" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6
 if test "$ac_cv_lib_gpm_initscr" = yes; then
   LIBS="$cf_ncurses_SAVE"
@@ -9911,7 +10228,7 @@ case "$host_os" in
        # This is only necessary if you are linking against an obsolete
        # version of ncurses (but it should do no harm, since it is static).
        if test "$cf_nculib_root" = ncurses ; then
-               echo "$as_me:9914: checking for tgoto in -lmytinfo" >&5
+               echo "$as_me:10231: checking for tgoto in -lmytinfo" >&5
 echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
 if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -9919,7 +10236,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmytinfo  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 9922 "configure"
+#line 10239 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -9928,7 +10245,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char tgoto ();
+char tgoto (void);
 int
 main (void)
 {
@@ -9938,16 +10255,16 @@ tgoto ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:9941: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10258: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:9944: \$? = $ac_status" >&5
+  echo "$as_me:10261: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:9947: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10264: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:9950: \$? = $ac_status" >&5
+  echo "$as_me:10267: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_mytinfo_tgoto=yes
 else
@@ -9958,7 +10275,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:9961: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:10278: result: $ac_cv_lib_mytinfo_tgoto" >&5
 echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
 if test "$ac_cv_lib_mytinfo_tgoto" = yes; then
   cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
@@ -10007,13 +10324,13 @@ else
 
        eval 'cf_cv_have_lib_'"$cf_nculib_root"'=no'
        cf_libdir=""
-       echo "$as_me:10010: checking for initscr" >&5
+       echo "$as_me:10327: checking for initscr" >&5
 echo $ECHO_N "checking for initscr... $ECHO_C" >&6
 if test "${ac_cv_func_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 10016 "configure"
+#line 10333 "configure"
 #include "confdefs.h"
 #define initscr autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -10044,16 +10361,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:10047: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10364: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10050: \$? = $ac_status" >&5
+  echo "$as_me:10367: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:10053: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10370: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10056: \$? = $ac_status" >&5
+  echo "$as_me:10373: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_initscr=yes
 else
@@ -10063,18 +10380,18 @@ ac_cv_func_initscr=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:10066: result: $ac_cv_func_initscr" >&5
+echo "$as_me:10383: result: $ac_cv_func_initscr" >&5
 echo "${ECHO_T}$ac_cv_func_initscr" >&6
 if test "$ac_cv_func_initscr" = yes; then
   eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
 else
 
                cf_save_LIBS="$LIBS"
-               echo "$as_me:10073: checking for initscr in -l$cf_nculib_root" >&5
+               echo "$as_me:10390: checking for initscr in -l$cf_nculib_root" >&5
 echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6
                LIBS="-l$cf_nculib_root $LIBS"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 10077 "configure"
+#line 10394 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -10086,25 +10403,25 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:10089: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10406: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10092: \$? = $ac_status" >&5
+  echo "$as_me:10409: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:10095: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10412: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10098: \$? = $ac_status" >&5
+  echo "$as_me:10415: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:10100: result: yes" >&5
+  echo "$as_me:10417: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                         eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
 
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:10107: result: no" >&5
+echo "$as_me:10424: result: no" >&5
 echo "${ECHO_T}no" >&6
 
 cf_search=
@@ -10172,11 +10489,11 @@ cf_search="$cf_library_path_list $cf_search"
 
                        for cf_libdir in $cf_search
                        do
-                               echo "$as_me:10175: checking for -l$cf_nculib_root in $cf_libdir" >&5
+                               echo "$as_me:10492: checking for -l$cf_nculib_root in $cf_libdir" >&5
 echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6
                                LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
                                cat >"conftest.$ac_ext" <<_ACEOF
-#line 10179 "configure"
+#line 10496 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -10188,25 +10505,25 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:10191: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10508: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10194: \$? = $ac_status" >&5
+  echo "$as_me:10511: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:10197: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10514: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10200: \$? = $ac_status" >&5
+  echo "$as_me:10517: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:10202: result: yes" >&5
+  echo "$as_me:10519: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                                         eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
                                         break
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:10209: result: no" >&5
+echo "$as_me:10526: result: no" >&5
 echo "${ECHO_T}no" >&6
                                         LIBS="$cf_save_LIBS"
 fi
@@ -10221,7 +10538,7 @@ fi
 eval 'cf_found_library="$cf_cv_have_lib_'"$cf_nculib_root"\"
 
 if test "$cf_found_library" = no ; then
-       { { echo "$as_me:10224: error: Cannot link $cf_nculib_root library" >&5
+       { { echo "$as_me:10541: error: Cannot link $cf_nculib_root library" >&5
 echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -10229,7 +10546,7 @@ fi
 fi
 
 if test -n "$cf_ncurses_LIBS" ; then
-       echo "$as_me:10232: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
+       echo "$as_me:10549: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
 echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6
        cf_ncurses_SAVE="$LIBS"
        for p in $cf_ncurses_LIBS ; do
@@ -10239,7 +10556,7 @@ echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS..
                fi
        done
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 10242 "configure"
+#line 10559 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -10251,23 +10568,23 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:10254: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10571: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10257: \$? = $ac_status" >&5
+  echo "$as_me:10574: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:10260: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10577: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10263: \$? = $ac_status" >&5
+  echo "$as_me:10580: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:10265: result: yes" >&5
+  echo "$as_me:10582: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:10270: result: no" >&5
+echo "$as_me:10587: result: no" >&5
 echo "${ECHO_T}no" >&6
                 LIBS="$cf_ncurses_SAVE"
 fi
@@ -10292,13 +10609,13 @@ cf_ncuconfig_root=$cf_cv_screen
 cf_have_ncuconfig=no
 
 if test "x${PKG_CONFIG:=none}" != xnone; then
-       echo "$as_me:10295: checking pkg-config for $cf_ncuconfig_root" >&5
+       echo "$as_me:10612: checking pkg-config for $cf_ncuconfig_root" >&5
 echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6
        if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
-               echo "$as_me:10298: result: yes" >&5
+               echo "$as_me:10615: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
-               echo "$as_me:10301: checking if the $cf_ncuconfig_root package files work" >&5
+               echo "$as_me:10618: checking if the $cf_ncuconfig_root package files work" >&5
 echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6
                cf_have_ncuconfig=unknown
 
@@ -10431,7 +10748,7 @@ done
 LIBS="$cf_add_libs"
 
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 10434 "configure"
+#line 10751 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -10443,37 +10760,37 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:10446: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10763: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10449: \$? = $ac_status" >&5
+  echo "$as_me:10766: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:10452: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10769: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10455: \$? = $ac_status" >&5
+  echo "$as_me:10772: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_test_ncuconfig=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 10461 "configure"
+#line 10778 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
                                        int main(void)
                                        { const char *xx = curses_version(); return (xx == 0); }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:10468: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10785: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10471: \$? = $ac_status" >&5
+  echo "$as_me:10788: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:10473: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10790: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10476: \$? = $ac_status" >&5
+  echo "$as_me:10793: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_test_ncuconfig=yes
 else
@@ -10647,7 +10964,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 10650 "configure"
+#line 10967 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -10659,37 +10976,37 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:10662: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10979: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10665: \$? = $ac_status" >&5
+  echo "$as_me:10982: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:10668: \"$ac_try\"") >&5
+  { (eval echo "$as_me:10985: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10671: \$? = $ac_status" >&5
+  echo "$as_me:10988: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_have_ncuconfig=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 10677 "configure"
+#line 10994 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
                                int main(void)
                                { const char *xx = curses_version(); return (xx == 0); }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:10684: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11001: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:10687: \$? = $ac_status" >&5
+  echo "$as_me:11004: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:10689: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11006: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10692: \$? = $ac_status" >&5
+  echo "$as_me:11009: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_have_ncuconfig=yes
 else
@@ -10706,7 +11023,7 @@ cat "conftest.$ac_ext" >&5
 cf_have_ncuconfig=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:10709: result: $cf_have_ncuconfig" >&5
+               echo "$as_me:11026: result: $cf_have_ncuconfig" >&5
 echo "${ECHO_T}$cf_have_ncuconfig" >&6
                test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
                if test "$cf_have_ncuconfig" != "yes"
@@ -10722,7 +11039,7 @@ EOF
 
                        NCURSES_CONFIG_PKG=$cf_ncuconfig_root
 
-echo "$as_me:10725: checking for terminfo header" >&5
+echo "$as_me:11042: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10740,7 +11057,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 10743 "configure"
+#line 11060 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -10755,16 +11072,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:10758: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11075: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:10761: \$? = $ac_status" >&5
+  echo "$as_me:11078: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:10764: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11081: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:10767: \$? = $ac_status" >&5
+  echo "$as_me:11084: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -10780,7 +11097,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:10783: result: $cf_cv_term_header" >&5
+echo "$as_me:11100: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -10815,7 +11132,7 @@ esac
                fi
 
        else
-               echo "$as_me:10818: result: no" >&5
+               echo "$as_me:11135: result: no" >&5
 echo "${ECHO_T}no" >&6
                NCURSES_CONFIG_PKG=none
        fi
@@ -10831,7 +11148,7 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:10834: checking for $ac_word" >&5
+echo "$as_me:11151: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10846,7 +11163,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_NCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:10849: found $ac_dir/$ac_word" >&5
+echo "$as_me:11166: found $ac_dir/$ac_word" >&5
 break
 done
 
 fi
 NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG
 if test -n "$NCURSES_CONFIG"; then
-  echo "$as_me:10857: result: $NCURSES_CONFIG" >&5
+  echo "$as_me:11174: result: $NCURSES_CONFIG" >&5
 echo "${ECHO_T}$NCURSES_CONFIG" >&6
 else
-  echo "$as_me:10860: result: no" >&5
+  echo "$as_me:11177: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -10870,7 +11187,7 @@ if test -z "$NCURSES_CONFIG"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:10873: checking for $ac_word" >&5
+echo "$as_me:11190: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10885,7 +11202,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_prog"
-echo "$as_me:10888: found $ac_dir/$ac_word" >&5
+echo "$as_me:11205: found $ac_dir/$ac_word" >&5
 break
 done
 
 fi
 ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG
 if test -n "$ac_ct_NCURSES_CONFIG"; then
-  echo "$as_me:10896: result: $ac_ct_NCURSES_CONFIG" >&5
+  echo "$as_me:11213: result: $ac_ct_NCURSES_CONFIG" >&5
 echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6
 else
-  echo "$as_me:10899: result: no" >&5
+  echo "$as_me:11216: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -11053,7 +11370,7 @@ LIBS="$cf_add_libs"
 
                # even with config script, some packages use no-override for curses.h
 
-echo "$as_me:11056: checking if we have identified curses headers" >&5
+echo "$as_me:11373: checking if we have identified curses headers" >&5
 echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6
 if test "${cf_cv_ncurses_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11065,7 +11382,7 @@ for cf_header in \
        curses.h $cf_cv_screen/curses.h
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 11068 "configure"
+#line 11385 "configure"
 #include "confdefs.h"
 #include <${cf_header}>
 int
@@ -11077,16 +11394,16 @@ initscr(); endwin()
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11080: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11397: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11083: \$? = $ac_status" >&5
+  echo "$as_me:11400: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11086: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11403: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11089: \$? = $ac_status" >&5
+  echo "$as_me:11406: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_header=$cf_header; break
 else
@@ -11097,11 +11414,11 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:11100: result: $cf_cv_ncurses_header" >&5
+echo "$as_me:11417: result: $cf_cv_ncurses_header" >&5
 echo "${ECHO_T}$cf_cv_ncurses_header" >&6
 
 if test "$cf_cv_ncurses_header" = none ; then
-       { { echo "$as_me:11104: error: No curses header-files found" >&5
+       { { echo "$as_me:11421: error: No curses header-files found" >&5
 echo "$as_me: error: No curses header-files found" >&2;}
    { (exit 1); exit 1; }; }
 fi
 for ac_header in $cf_cv_ncurses_header
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:11114: checking for $ac_header" >&5
+echo "$as_me:11431: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 11120 "configure"
+#line 11437 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:11124: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:11441: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:11130: \$? = $ac_status" >&5
+  echo "$as_me:11447: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -11146,7 +11463,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:11149: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:11466: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -11202,7 +11519,7 @@ if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 11205 "configure"
+#line 11522 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -11214,16 +11531,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11217: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11534: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11220: \$? = $ac_status" >&5
+  echo "$as_me:11537: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11223: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11540: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11226: \$? = $ac_status" >&5
+  echo "$as_me:11543: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -11240,7 +11557,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:11243: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:11560: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -11259,7 +11576,7 @@ fi
 
 }
 
-echo "$as_me:11262: checking for $cf_ncuhdr_root header in include-path" >&5
+echo "$as_me:11579: checking for $cf_ncuhdr_root header in include-path" >&5
 echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6
 if test "${cf_cv_ncurses_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11271,7 +11588,7 @@ else
        do
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 11274 "configure"
+#line 11591 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -11286,7 +11603,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
 
@@ -11295,16 +11612,16 @@ printf("old\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11298: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11615: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11301: \$? = $ac_status" >&5
+  echo "$as_me:11618: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11304: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11621: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11307: \$? = $ac_status" >&5
+  echo "$as_me:11624: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_h=$cf_header
 
@@ -11319,14 +11636,14 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        done
 
 fi
-echo "$as_me:11322: result: $cf_cv_ncurses_h" >&5
+echo "$as_me:11639: result: $cf_cv_ncurses_h" >&5
 echo "${ECHO_T}$cf_cv_ncurses_h" >&6
 
 if test "$cf_cv_ncurses_h" != no ; then
        cf_cv_ncurses_header=$cf_cv_ncurses_h
 else
 
-echo "$as_me:11329: checking for $cf_ncuhdr_root include-path" >&5
+echo "$as_me:11646: checking for $cf_ncuhdr_root include-path" >&5
 echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6
 if test "${cf_cv_ncurses_h2+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11447,7 +11764,7 @@ if test -n "$cf_incdir" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 11450 "configure"
+#line 11767 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -11459,16 +11776,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11462: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11779: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11465: \$? = $ac_status" >&5
+  echo "$as_me:11782: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11468: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11785: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11471: \$? = $ac_status" >&5
+  echo "$as_me:11788: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -11485,7 +11802,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:11488: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:11805: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -11508,7 +11825,7 @@ fi
                do
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 11511 "configure"
+#line 11828 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -11523,7 +11840,7 @@ printf("%s\\n", NCURSES_VERSION);
 #ifdef __NCURSES_H
 printf("old\\n");
 #else
-       make an error
+       #error __NCURSES_H is not defined
 #endif
 #endif
 
@@ -11532,16 +11849,16 @@ printf("old\\n");
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11535: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11852: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11538: \$? = $ac_status" >&5
+  echo "$as_me:11855: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11541: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11858: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11544: \$? = $ac_status" >&5
+  echo "$as_me:11861: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_h2=$cf_header
 
@@ -11562,12 +11879,12 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                CPPFLAGS="$cf_save2_CPPFLAGS"
                test "$cf_cv_ncurses_h2" != no && break
        done
-       test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:11565: error: not found" >&5
+       test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:11882: error: not found" >&5
 echo "$as_me: error: not found" >&2;}
    { (exit 1); exit 1; }; }
 
 fi
-echo "$as_me:11570: result: $cf_cv_ncurses_h2" >&5
+echo "$as_me:11887: result: $cf_cv_ncurses_h2" >&5
 echo "${ECHO_T}$cf_cv_ncurses_h2" >&6
 
        cf_1st_incdir=`echo "$cf_cv_ncurses_h2" | sed -e 's%/[^/]*$%%'`
@@ -11603,7 +11920,7 @@ if test -n "$cf_1st_incdir" ; then
        CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir"
 
                          cat >"conftest.$ac_ext" <<_ACEOF
-#line 11606 "configure"
+#line 11923 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -11615,16 +11932,16 @@ printf("Hello")
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11618: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11935: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11621: \$? = $ac_status" >&5
+  echo "$as_me:11938: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11624: \"$ac_try\"") >&5
+  { (eval echo "$as_me:11941: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11627: \$? = $ac_status" >&5
+  echo "$as_me:11944: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -11641,7 +11958,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                if test "$cf_have_incdir" = no ; then
                  test -n "$verbose" && echo "  adding $cf_add_incdir to include-path" 1>&6
 
-echo "${as_me:-configure}:11644: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:11961: testing adding $cf_add_incdir to include-path ..." 1>&5
 
                  CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
 
@@ -11689,7 +12006,7 @@ EOF
        ;;
 esac
 
-echo "$as_me:11692: checking for terminfo header" >&5
+echo "$as_me:12009: checking for terminfo header" >&5
 echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11707,7 +12024,7 @@ esac
 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 11710 "configure"
+#line 12027 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -11722,16 +12039,16 @@ int x = auto_left_margin; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:11725: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12042: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:11728: \$? = $ac_status" >&5
+  echo "$as_me:12045: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:11731: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12048: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11734: \$? = $ac_status" >&5
+  echo "$as_me:12051: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_term_header="$cf_test"
@@ -11747,7 +12064,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:11750: result: $cf_cv_term_header" >&5
+echo "$as_me:12067: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 # Set definitions to allow ifdef'ing to accommodate subdirectories
@@ -11785,7 +12102,7 @@ cat >>confdefs.h <<\EOF
 #define NCURSES 1
 EOF
 
-echo "$as_me:11788: checking for ncurses version" >&5
+echo "$as_me:12105: checking for ncurses version" >&5
 echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
 if test "${cf_cv_ncurses_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11811,10 +12128,10 @@ Autoconf "old"
 #endif
 EOF
        cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out"
-       { (eval echo "$as_me:11814: \"$cf_try\"") >&5
+       { (eval echo "$as_me:12131: \"$cf_try\"") >&5
   (eval $cf_try) 2>&5
   ac_status=$?
-  echo "$as_me:11817: \$? = $ac_status" >&5
+  echo "$as_me:12134: \$? = $ac_status" >&5
   (exit "$ac_status"); }
        if test -f conftest.out ; then
                cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out`
@@ -11824,7 +12141,7 @@ EOF
 
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 11827 "configure"
+#line 12144 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -11844,22 +12161,22 @@ int main(void)
 # ifdef __NCURSES_H
        fprintf(fp, "old\\n");
 # else
-       make an error
+       #error expected ncurses header to define __NCURSES_H
 # endif
 #endif
        ${cf_cv_main_return:-return}(0);
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:11854: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12171: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11857: \$? = $ac_status" >&5
+  echo "$as_me:12174: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:11859: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12176: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11862: \$? = $ac_status" >&5
+  echo "$as_me:12179: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
        cf_cv_ncurses_version=`cat $cf_tempfile`
@@ -11873,7 +12190,7 @@ fi
        rm -f "$cf_tempfile"
 
 fi
-echo "$as_me:11876: result: $cf_cv_ncurses_version" >&5
+echo "$as_me:12193: result: $cf_cv_ncurses_version" >&5
 echo "${ECHO_T}$cf_cv_ncurses_version" >&6
 test "$cf_cv_ncurses_version" = no ||
 cat >>confdefs.h <<\EOF
@@ -11886,7 +12203,7 @@ cf_nculib_root=$cf_cv_screen
        # to link gpm.
 cf_ncurses_LIBS=""
 cf_ncurses_SAVE="$LIBS"
-echo "$as_me:11889: checking for Gpm_Open in -lgpm" >&5
+echo "$as_me:12206: checking for Gpm_Open in -lgpm" >&5
 echo $ECHO_N "checking for Gpm_Open in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_Gpm_Open+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11894,7 +12211,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 11897 "configure"
+#line 12214 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -11903,7 +12220,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char Gpm_Open ();
+char Gpm_Open (void);
 int
 main (void)
 {
@@ -11913,16 +12230,16 @@ Gpm_Open ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:11916: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12233: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11919: \$? = $ac_status" >&5
+  echo "$as_me:12236: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:11922: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12239: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11925: \$? = $ac_status" >&5
+  echo "$as_me:12242: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_Gpm_Open=yes
 else
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:11936: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:12253: result: $ac_cv_lib_gpm_Gpm_Open" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_Gpm_Open" >&6
 if test "$ac_cv_lib_gpm_Gpm_Open" = yes; then
-  echo "$as_me:11939: checking for initscr in -lgpm" >&5
+  echo "$as_me:12256: checking for initscr in -lgpm" >&5
 echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6
 if test "${ac_cv_lib_gpm_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -11944,7 +12261,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lgpm  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 11947 "configure"
+#line 12264 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -11953,7 +12270,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char initscr ();
+char initscr (void);
 int
 main (void)
 {
@@ -11963,16 +12280,16 @@ initscr ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:11966: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12283: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:11969: \$? = $ac_status" >&5
+  echo "$as_me:12286: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:11972: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12289: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:11975: \$? = $ac_status" >&5
+  echo "$as_me:12292: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_gpm_initscr=yes
 else
@@ -11983,7 +12300,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:11986: result: $ac_cv_lib_gpm_initscr" >&5
+echo "$as_me:12303: result: $ac_cv_lib_gpm_initscr" >&5
 echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6
 if test "$ac_cv_lib_gpm_initscr" = yes; then
   LIBS="$cf_ncurses_SAVE"
@@ -11998,7 +12315,7 @@ case "$host_os" in
        # This is only necessary if you are linking against an obsolete
        # version of ncurses (but it should do no harm, since it is static).
        if test "$cf_nculib_root" = ncurses ; then
-               echo "$as_me:12001: checking for tgoto in -lmytinfo" >&5
+               echo "$as_me:12318: checking for tgoto in -lmytinfo" >&5
 echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6
 if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12006,7 +12323,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lmytinfo  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 12009 "configure"
+#line 12326 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -12015,7 +12332,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char tgoto ();
+char tgoto (void);
 int
 main (void)
 {
@@ -12025,16 +12342,16 @@ tgoto ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12028: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12345: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12031: \$? = $ac_status" >&5
+  echo "$as_me:12348: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12034: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12351: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12037: \$? = $ac_status" >&5
+  echo "$as_me:12354: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_mytinfo_tgoto=yes
 else
@@ -12045,7 +12362,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:12048: result: $ac_cv_lib_mytinfo_tgoto" >&5
+echo "$as_me:12365: result: $ac_cv_lib_mytinfo_tgoto" >&5
 echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6
 if test "$ac_cv_lib_mytinfo_tgoto" = yes; then
   cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"
@@ -12094,13 +12411,13 @@ else
 
        eval 'cf_cv_have_lib_'"$cf_nculib_root"'=no'
        cf_libdir=""
-       echo "$as_me:12097: checking for initscr" >&5
+       echo "$as_me:12414: checking for initscr" >&5
 echo $ECHO_N "checking for initscr... $ECHO_C" >&6
 if test "${ac_cv_func_initscr+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 12103 "configure"
+#line 12420 "configure"
 #include "confdefs.h"
 #define initscr autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -12131,16 +12448,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12134: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12451: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12137: \$? = $ac_status" >&5
+  echo "$as_me:12454: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12140: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12457: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12143: \$? = $ac_status" >&5
+  echo "$as_me:12460: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_initscr=yes
 else
@@ -12150,18 +12467,18 @@ ac_cv_func_initscr=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:12153: result: $ac_cv_func_initscr" >&5
+echo "$as_me:12470: result: $ac_cv_func_initscr" >&5
 echo "${ECHO_T}$ac_cv_func_initscr" >&6
 if test "$ac_cv_func_initscr" = yes; then
   eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
 else
 
                cf_save_LIBS="$LIBS"
-               echo "$as_me:12160: checking for initscr in -l$cf_nculib_root" >&5
+               echo "$as_me:12477: checking for initscr in -l$cf_nculib_root" >&5
 echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6
                LIBS="-l$cf_nculib_root $LIBS"
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 12164 "configure"
+#line 12481 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -12173,25 +12490,25 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12176: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12493: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12179: \$? = $ac_status" >&5
+  echo "$as_me:12496: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12182: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12499: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12185: \$? = $ac_status" >&5
+  echo "$as_me:12502: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:12187: result: yes" >&5
+  echo "$as_me:12504: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                         eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
 
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:12194: result: no" >&5
+echo "$as_me:12511: result: no" >&5
 echo "${ECHO_T}no" >&6
 
 cf_search=
@@ -12259,11 +12576,11 @@ cf_search="$cf_library_path_list $cf_search"
 
                        for cf_libdir in $cf_search
                        do
-                               echo "$as_me:12262: checking for -l$cf_nculib_root in $cf_libdir" >&5
+                               echo "$as_me:12579: checking for -l$cf_nculib_root in $cf_libdir" >&5
 echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6
                                LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS"
                                cat >"conftest.$ac_ext" <<_ACEOF
-#line 12266 "configure"
+#line 12583 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -12275,25 +12592,25 @@ initscr()
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12278: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12595: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12281: \$? = $ac_status" >&5
+  echo "$as_me:12598: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12284: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12601: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12287: \$? = $ac_status" >&5
+  echo "$as_me:12604: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:12289: result: yes" >&5
+  echo "$as_me:12606: result: yes" >&5
 echo "${ECHO_T}yes" >&6
                                         eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes'
                                         break
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:12296: result: no" >&5
+echo "$as_me:12613: result: no" >&5
 echo "${ECHO_T}no" >&6
                                         LIBS="$cf_save_LIBS"
 fi
@@ -12308,7 +12625,7 @@ fi
 eval 'cf_found_library="$cf_cv_have_lib_'"$cf_nculib_root"\"
 
 if test "$cf_found_library" = no ; then
-       { { echo "$as_me:12311: error: Cannot link $cf_nculib_root library" >&5
+       { { echo "$as_me:12628: error: Cannot link $cf_nculib_root library" >&5
 echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -12316,7 +12633,7 @@ fi
 fi
 
 if test -n "$cf_ncurses_LIBS" ; then
-       echo "$as_me:12319: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
+       echo "$as_me:12636: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5
 echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6
        cf_ncurses_SAVE="$LIBS"
        for p in $cf_ncurses_LIBS ; do
@@ -12326,7 +12643,7 @@ echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS..
                fi
        done
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 12329 "configure"
+#line 12646 "configure"
 #include "confdefs.h"
 #include <${cf_cv_ncurses_header:-curses.h}>
 int
@@ -12338,23 +12655,23 @@ initscr(); mousemask(0,0); tigetstr((char *)0);
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12341: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12658: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12344: \$? = $ac_status" >&5
+  echo "$as_me:12661: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12347: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12664: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12350: \$? = $ac_status" >&5
+  echo "$as_me:12667: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
-  echo "$as_me:12352: result: yes" >&5
+  echo "$as_me:12669: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:12357: result: no" >&5
+echo "$as_me:12674: result: no" >&5
 echo "${ECHO_T}no" >&6
                 LIBS="$cf_ncurses_SAVE"
 fi
@@ -12374,7 +12691,7 @@ fi
 
        ;;
 (pdcurses)
-       echo "$as_me:12377: checking for X" >&5
+       echo "$as_me:12694: checking for X" >&5
 echo $ECHO_N "checking for X... $ECHO_C" >&6
 
 # Check whether --with-x or --without-x was given.
@@ -12478,17 +12795,17 @@ if test "$ac_x_includes" = no; then
   # Guess where to find include files, by looking for Intrinsic.h.
   # First, try using that file with no special directory specified.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 12481 "configure"
+#line 12798 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 _ACEOF
-if { (eval echo "$as_me:12485: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:12802: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:12491: \$? = $ac_status" >&5
+  echo "$as_me:12808: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -12521,7 +12838,7 @@ if test "$ac_x_libraries" = no; then
   ac_save_LIBS=$LIBS
   LIBS="-lXt $LIBS"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 12524 "configure"
+#line 12841 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 int
@@ -12533,16 +12850,16 @@ XtMalloc (0)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12536: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12853: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12539: \$? = $ac_status" >&5
+  echo "$as_me:12856: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12542: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12859: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12545: \$? = $ac_status" >&5
+  echo "$as_me:12862: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   LIBS=$ac_save_LIBS
 # We can link X programs with no special library path.
@@ -12580,7 +12897,7 @@ fi
 fi # $with_x != no
 
 if test "$have_x" != yes; then
-  echo "$as_me:12583: result: $have_x" >&5
+  echo "$as_me:12900: result: $have_x" >&5
 echo "${ECHO_T}$have_x" >&6
   no_x=yes
 else
@@ -12590,7 +12907,7 @@ else
   # Update the cache value to reflect the command line values.
   ac_cv_have_x="have_x=yes \
                ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
-  echo "$as_me:12593: result: libraries $x_libraries, headers $x_includes" >&5
+  echo "$as_me:12910: result: libraries $x_libraries, headers $x_includes" >&5
 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6
 fi
 
@@ -12617,11 +12934,11 @@ else
     # others require no space.  Words are not sufficient . . . .
     case `(uname -sr) 2>/dev/null` in
     "SunOS 5"*)
-      echo "$as_me:12620: checking whether -R must be followed by a space" >&5
+      echo "$as_me:12937: checking whether -R must be followed by a space" >&5
 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6
       ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
       cat >"conftest.$ac_ext" <<_ACEOF
-#line 12624 "configure"
+#line 12941 "configure"
 #include "confdefs.h"
 
 int
@@ -12633,16 +12950,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12636: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12953: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12639: \$? = $ac_status" >&5
+  echo "$as_me:12956: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12642: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12959: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12645: \$? = $ac_status" >&5
+  echo "$as_me:12962: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_R_nospace=yes
 else
@@ -12652,13 +12969,13 @@ ac_R_nospace=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
       if test $ac_R_nospace = yes; then
-       echo "$as_me:12655: result: no" >&5
+       echo "$as_me:12972: result: no" >&5
 echo "${ECHO_T}no" >&6
        X_LIBS="$X_LIBS -R$x_libraries"
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 12661 "configure"
+#line 12978 "configure"
 #include "confdefs.h"
 
 int
@@ -12670,16 +12987,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12673: \"$ac_link\"") >&5
+if { (eval echo "$as_me:12990: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12676: \$? = $ac_status" >&5
+  echo "$as_me:12993: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12679: \"$ac_try\"") >&5
+  { (eval echo "$as_me:12996: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12682: \$? = $ac_status" >&5
+  echo "$as_me:12999: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_R_space=yes
 else
@@ -12689,11 +13006,11 @@ ac_R_space=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
        if test $ac_R_space = yes; then
-         echo "$as_me:12692: result: yes" >&5
+         echo "$as_me:13009: result: yes" >&5
 echo "${ECHO_T}yes" >&6
          X_LIBS="$X_LIBS -R $x_libraries"
        else
-         echo "$as_me:12696: result: neither works" >&5
+         echo "$as_me:13013: result: neither works" >&5
 echo "${ECHO_T}neither works" >&6
        fi
       fi
@@ -12713,7 +13030,7 @@ echo "${ECHO_T}neither works" >&6
     # the Alpha needs dnet_stub (dnet does not exist).
     ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 12716 "configure"
+#line 13033 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -12722,7 +13039,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char XOpenDisplay ();
+char XOpenDisplay (void);
 int
 main (void)
 {
@@ -12732,22 +13049,22 @@ XOpenDisplay ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12735: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13052: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12738: \$? = $ac_status" >&5
+  echo "$as_me:13055: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12741: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13058: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12744: \$? = $ac_status" >&5
+  echo "$as_me:13061: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:12750: checking for dnet_ntoa in -ldnet" >&5
+echo "$as_me:13067: checking for dnet_ntoa in -ldnet" >&5
 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6
 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12755,7 +13072,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 12758 "configure"
+#line 13075 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -12764,7 +13081,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char dnet_ntoa ();
+char dnet_ntoa (void);
 int
 main (void)
 {
@@ -12774,16 +13091,16 @@ dnet_ntoa ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12777: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13094: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12780: \$? = $ac_status" >&5
+  echo "$as_me:13097: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12783: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13100: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12786: \$? = $ac_status" >&5
+  echo "$as_me:13103: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dnet_dnet_ntoa=yes
 else
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:12797: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+echo "$as_me:13114: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6
 if test "$ac_cv_lib_dnet_dnet_ntoa" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
 fi
 
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-      echo "$as_me:12804: checking for dnet_ntoa in -ldnet_stub" >&5
+      echo "$as_me:13121: checking for dnet_ntoa in -ldnet_stub" >&5
 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6
 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12809,7 +13126,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet_stub  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 12812 "configure"
+#line 13129 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -12818,7 +13135,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char dnet_ntoa ();
+char dnet_ntoa (void);
 int
 main (void)
 {
@@ -12828,16 +13145,16 @@ dnet_ntoa ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12831: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13148: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12834: \$? = $ac_status" >&5
+  echo "$as_me:13151: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12837: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13154: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12840: \$? = $ac_status" >&5
+  echo "$as_me:13157: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dnet_stub_dnet_ntoa=yes
 else
@@ -12848,7 +13165,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:12851: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+echo "$as_me:13168: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6
 if test "$ac_cv_lib_dnet_stub_dnet_ntoa" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
@@ -12867,13 +13184,13 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
     # on Irix 5.2, according to T.E. Dickey.
     # The functions gethostbyname, getservbyname, and inet_addr are
     # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
-    echo "$as_me:12870: checking for gethostbyname" >&5
+    echo "$as_me:13187: checking for gethostbyname" >&5
 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6
 if test "${ac_cv_func_gethostbyname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 12876 "configure"
+#line 13193 "configure"
 #include "confdefs.h"
 #define gethostbyname autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -12904,16 +13221,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12907: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13224: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12910: \$? = $ac_status" >&5
+  echo "$as_me:13227: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12913: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13230: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12916: \$? = $ac_status" >&5
+  echo "$as_me:13233: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_gethostbyname=yes
 else
@@ -12923,11 +13240,11 @@ ac_cv_func_gethostbyname=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:12926: result: $ac_cv_func_gethostbyname" >&5
+echo "$as_me:13243: result: $ac_cv_func_gethostbyname" >&5
 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
 
     if test $ac_cv_func_gethostbyname = no; then
-      echo "$as_me:12930: checking for gethostbyname in -lnsl" >&5
+      echo "$as_me:13247: checking for gethostbyname in -lnsl" >&5
 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6
 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12935,7 +13252,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 12938 "configure"
+#line 13255 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -12944,7 +13261,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char gethostbyname ();
+char gethostbyname (void);
 int
 main (void)
 {
@@ -12954,16 +13271,16 @@ gethostbyname ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:12957: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13274: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:12960: \$? = $ac_status" >&5
+  echo "$as_me:13277: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:12963: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13280: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:12966: \$? = $ac_status" >&5
+  echo "$as_me:13283: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_nsl_gethostbyname=yes
 else
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:12977: result: $ac_cv_lib_nsl_gethostbyname" >&5
+echo "$as_me:13294: result: $ac_cv_lib_nsl_gethostbyname" >&5
 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6
 if test "$ac_cv_lib_nsl_gethostbyname" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
 fi
 
       if test $ac_cv_lib_nsl_gethostbyname = no; then
-        echo "$as_me:12984: checking for gethostbyname in -lbsd" >&5
+        echo "$as_me:13301: checking for gethostbyname in -lbsd" >&5
 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6
 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -12989,7 +13306,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 12992 "configure"
+#line 13309 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -12998,7 +13315,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char gethostbyname ();
+char gethostbyname (void);
 int
 main (void)
 {
@@ -13008,16 +13325,16 @@ gethostbyname ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13011: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13328: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13014: \$? = $ac_status" >&5
+  echo "$as_me:13331: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13017: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13334: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13020: \$? = $ac_status" >&5
+  echo "$as_me:13337: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_bsd_gethostbyname=yes
 else
@@ -13028,7 +13345,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:13031: result: $ac_cv_lib_bsd_gethostbyname" >&5
+echo "$as_me:13348: result: $ac_cv_lib_bsd_gethostbyname" >&5
 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6
 if test "$ac_cv_lib_bsd_gethostbyname" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
     # variants that don't use the nameserver (or something).  -lsocket
     # must be given before -lnsl if both are needed.  We assume that
     # if connect needs -lnsl, so does gethostbyname.
-    echo "$as_me:13047: checking for connect" >&5
+    echo "$as_me:13364: checking for connect" >&5
 echo $ECHO_N "checking for connect... $ECHO_C" >&6
 if test "${ac_cv_func_connect+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 13053 "configure"
+#line 13370 "configure"
 #include "confdefs.h"
 #define connect autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -13081,16 +13398,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13084: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13401: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13087: \$? = $ac_status" >&5
+  echo "$as_me:13404: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13090: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13407: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13093: \$? = $ac_status" >&5
+  echo "$as_me:13410: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_connect=yes
 else
@@ -13100,11 +13417,11 @@ ac_cv_func_connect=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:13103: result: $ac_cv_func_connect" >&5
+echo "$as_me:13420: result: $ac_cv_func_connect" >&5
 echo "${ECHO_T}$ac_cv_func_connect" >&6
 
     if test $ac_cv_func_connect = no; then
-      echo "$as_me:13107: checking for connect in -lsocket" >&5
+      echo "$as_me:13424: checking for connect in -lsocket" >&5
 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6
 if test "${ac_cv_lib_socket_connect+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13112,7 +13429,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13115 "configure"
+#line 13432 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -13121,7 +13438,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char connect ();
+char connect (void);
 int
 main (void)
 {
@@ -13131,16 +13448,16 @@ connect ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13134: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13451: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13137: \$? = $ac_status" >&5
+  echo "$as_me:13454: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13140: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13457: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13143: \$? = $ac_status" >&5
+  echo "$as_me:13460: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_socket_connect=yes
 else
@@ -13151,7 +13468,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:13154: result: $ac_cv_lib_socket_connect" >&5
+echo "$as_me:13471: result: $ac_cv_lib_socket_connect" >&5
 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6
 if test "$ac_cv_lib_socket_connect" = yes; then
   X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
     fi
 
     # Guillermo Gomez says -lposix is necessary on A/UX.
-    echo "$as_me:13163: checking for remove" >&5
+    echo "$as_me:13480: checking for remove" >&5
 echo $ECHO_N "checking for remove... $ECHO_C" >&6
 if test "${ac_cv_func_remove+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 13169 "configure"
+#line 13486 "configure"
 #include "confdefs.h"
 #define remove autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -13197,16 +13514,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13200: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13517: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13203: \$? = $ac_status" >&5
+  echo "$as_me:13520: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13206: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13523: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13209: \$? = $ac_status" >&5
+  echo "$as_me:13526: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_remove=yes
 else
@@ -13216,11 +13533,11 @@ ac_cv_func_remove=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:13219: result: $ac_cv_func_remove" >&5
+echo "$as_me:13536: result: $ac_cv_func_remove" >&5
 echo "${ECHO_T}$ac_cv_func_remove" >&6
 
     if test $ac_cv_func_remove = no; then
-      echo "$as_me:13223: checking for remove in -lposix" >&5
+      echo "$as_me:13540: checking for remove in -lposix" >&5
 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6
 if test "${ac_cv_lib_posix_remove+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13228,7 +13545,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lposix  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13231 "configure"
+#line 13548 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -13237,7 +13554,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char remove ();
+char remove (void);
 int
 main (void)
 {
@@ -13247,16 +13564,16 @@ remove ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13250: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13567: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13253: \$? = $ac_status" >&5
+  echo "$as_me:13570: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13256: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13573: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13259: \$? = $ac_status" >&5
+  echo "$as_me:13576: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_posix_remove=yes
 else
@@ -13267,7 +13584,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:13270: result: $ac_cv_lib_posix_remove" >&5
+echo "$as_me:13587: result: $ac_cv_lib_posix_remove" >&5
 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6
 if test "$ac_cv_lib_posix_remove" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
     fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-    echo "$as_me:13279: checking for shmat" >&5
+    echo "$as_me:13596: checking for shmat" >&5
 echo $ECHO_N "checking for shmat... $ECHO_C" >&6
 if test "${ac_cv_func_shmat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 13285 "configure"
+#line 13602 "configure"
 #include "confdefs.h"
 #define shmat autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -13313,16 +13630,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13316: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13633: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13319: \$? = $ac_status" >&5
+  echo "$as_me:13636: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13322: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13639: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13325: \$? = $ac_status" >&5
+  echo "$as_me:13642: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_shmat=yes
 else
@@ -13332,11 +13649,11 @@ ac_cv_func_shmat=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:13335: result: $ac_cv_func_shmat" >&5
+echo "$as_me:13652: result: $ac_cv_func_shmat" >&5
 echo "${ECHO_T}$ac_cv_func_shmat" >&6
 
     if test $ac_cv_func_shmat = no; then
-      echo "$as_me:13339: checking for shmat in -lipc" >&5
+      echo "$as_me:13656: checking for shmat in -lipc" >&5
 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6
 if test "${ac_cv_lib_ipc_shmat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13344,7 +13661,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lipc  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13347 "configure"
+#line 13664 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -13353,7 +13670,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char shmat ();
+char shmat (void);
 int
 main (void)
 {
@@ -13363,16 +13680,16 @@ shmat ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13366: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13683: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13369: \$? = $ac_status" >&5
+  echo "$as_me:13686: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13372: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13689: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13375: \$? = $ac_status" >&5
+  echo "$as_me:13692: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_ipc_shmat=yes
 else
@@ -13383,7 +13700,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:13386: result: $ac_cv_lib_ipc_shmat" >&5
+echo "$as_me:13703: result: $ac_cv_lib_ipc_shmat" >&5
 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6
 if test "$ac_cv_lib_ipc_shmat" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
@@ -13401,7 +13718,7 @@ fi
   # These have to be linked with before -lX11, unlike the other
   # libraries we check for below, so use a different variable.
   # John Interrante, Karl Berry
-  echo "$as_me:13404: checking for IceConnectionNumber in -lICE" >&5
+  echo "$as_me:13721: checking for IceConnectionNumber in -lICE" >&5
 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6
 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13409,7 +13726,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13412 "configure"
+#line 13729 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -13418,7 +13735,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char IceConnectionNumber ();
+char IceConnectionNumber (void);
 int
 main (void)
 {
@@ -13428,16 +13745,16 @@ IceConnectionNumber ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13431: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13748: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13434: \$? = $ac_status" >&5
+  echo "$as_me:13751: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13437: \"$ac_try\"") >&5
+  { (eval echo "$as_me:13754: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13440: \$? = $ac_status" >&5
+  echo "$as_me:13757: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_ICE_IceConnectionNumber=yes
 else
@@ -13448,7 +13765,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:13451: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+echo "$as_me:13768: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6
 if test "$ac_cv_lib_ICE_IceConnectionNumber" = yes; then
   X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
@@ -13460,7 +13777,7 @@ fi
 
 cf_x_athena=${cf_x_athena:-Xaw}
 
-echo "$as_me:13463: checking if you want to link with Xaw 3d library" >&5
+echo "$as_me:13780: checking if you want to link with Xaw 3d library" >&5
 echo $ECHO_N "checking if you want to link with Xaw 3d library... $ECHO_C" >&6
 withval=
 
@@ -13471,14 +13788,14 @@ if test "${with_Xaw3d+set}" = set; then
 fi;
 if test "$withval" = yes ; then
        cf_x_athena=Xaw3d
-       echo "$as_me:13474: result: yes" >&5
+       echo "$as_me:13791: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
-       echo "$as_me:13477: result: no" >&5
+       echo "$as_me:13794: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
-echo "$as_me:13481: checking if you want to link with Xaw 3d xft library" >&5
+echo "$as_me:13798: checking if you want to link with Xaw 3d xft library" >&5
 echo $ECHO_N "checking if you want to link with Xaw 3d xft library... $ECHO_C" >&6
 withval=
 
@@ -13489,14 +13806,14 @@ if test "${with_Xaw3dxft+set}" = set; then
 fi;
 if test "$withval" = yes ; then
        cf_x_athena=Xaw3dxft
-       echo "$as_me:13492: result: yes" >&5
+       echo "$as_me:13809: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
-       echo "$as_me:13495: result: no" >&5
+       echo "$as_me:13812: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
-echo "$as_me:13499: checking if you want to link with neXT Athena library" >&5
+echo "$as_me:13816: checking if you want to link with neXT Athena library" >&5
 echo $ECHO_N "checking if you want to link with neXT Athena library... $ECHO_C" >&6
 withval=
 
@@ -13507,14 +13824,14 @@ if test "${with_neXtaw+set}" = set; then
 fi;
 if test "$withval" = yes ; then
        cf_x_athena=neXtaw
-       echo "$as_me:13510: result: yes" >&5
+       echo "$as_me:13827: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
-       echo "$as_me:13513: result: no" >&5
+       echo "$as_me:13830: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
-echo "$as_me:13517: checking if you want to link with Athena-Plus library" >&5
+echo "$as_me:13834: checking if you want to link with Athena-Plus library" >&5
 echo $ECHO_N "checking if you want to link with Athena-Plus library... $ECHO_C" >&6
 withval=
 
@@ -13525,10 +13842,10 @@ if test "${with_XawPlus+set}" = set; then
 fi;
 if test "$withval" = yes ; then
        cf_x_athena=XawPlus
-       echo "$as_me:13528: result: yes" >&5
+       echo "$as_me:13845: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 else
-       echo "$as_me:13531: result: no" >&5
+       echo "$as_me:13848: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -13548,17 +13865,17 @@ if test "$PKG_CONFIG" != none ; then
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$cf_athena_pkg"; then
        test -n "$verbose" && echo "    found package $cf_athena_pkg" 1>&6
 
-echo "${as_me:-configure}:13551: testing found package $cf_athena_pkg ..." 1>&5
+echo "${as_me:-configure}:13868: testing found package $cf_athena_pkg ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$cf_athena_pkg" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "$cf_athena_pkg" 2>/dev/null`"
        test -n "$verbose" && echo "    package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:13557: testing package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:13874: testing package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package $cf_athena_pkg LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:13561: testing package $cf_athena_pkg LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:13878: testing package $cf_athena_pkg LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -13689,20 +14006,20 @@ EOF
                        LIBS=`echo "$LIBS " | sed -e 's/  / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'`
                        test -n "$verbose" && echo "    ..trimmed $LIBS" 1>&6
 
-echo "${as_me:-configure}:13692: testing ..trimmed $LIBS ..." 1>&5
+echo "${as_me:-configure}:14009: testing ..trimmed $LIBS ..." 1>&5
 
                        ;;
                esac
        done
 
-echo "$as_me:13698: checking for usable $cf_x_athena/Xmu package" >&5
+echo "$as_me:14015: checking for usable $cf_x_athena/Xmu package" >&5
 echo $ECHO_N "checking for usable $cf_x_athena/Xmu package... $ECHO_C" >&6
 if test "${cf_cv_xaw_compat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 13705 "configure"
+#line 14022 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -13720,16 +14037,16 @@ int check = XmuCompareISOLatin1("big", "small");
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:13723: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14040: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:13726: \$? = $ac_status" >&5
+  echo "$as_me:14043: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:13729: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14046: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:13732: \$? = $ac_status" >&5
+  echo "$as_me:14049: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xaw_compat=yes
 else
@@ -13739,7 +14056,7 @@ cf_cv_xaw_compat=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:13742: result: $cf_cv_xaw_compat" >&5
+echo "$as_me:14059: result: $cf_cv_xaw_compat" >&5
 echo "${ECHO_T}$cf_cv_xaw_compat" >&6
 
                        if test "$cf_cv_xaw_compat" = no
@@ -13751,7 +14068,7 @@ echo "${ECHO_T}$cf_cv_xaw_compat" >&6
                                (*)
                                        test -n "$verbose" && echo "    work around broken package" 1>&6
 
-echo "${as_me:-configure}:13754: testing work around broken package ..." 1>&5
+echo "${as_me:-configure}:14071: testing work around broken package ..." 1>&5
 
                                        cf_save_xmu="$LIBS"
                                        cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^  *//' -e 's/ .*//'`
@@ -13759,17 +14076,17 @@ echo "${as_me:-configure}:13754: testing work around broken package ..." 1>&5
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "xmu"; then
        test -n "$verbose" && echo "    found package xmu" 1>&6
 
-echo "${as_me:-configure}:13762: testing found package xmu ..." 1>&5
+echo "${as_me:-configure}:14079: testing found package xmu ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "xmu" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "xmu" 2>/dev/null`"
        test -n "$verbose" && echo "    package xmu CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:13768: testing package xmu CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:14085: testing package xmu CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package xmu LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:13772: testing package xmu LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:14089: testing package xmu LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -13889,12 +14206,12 @@ LIBS="$cf_add_libs"
 
 test -n "$verbose" && echo "   ...before $LIBS" 1>&6
 
-echo "${as_me:-configure}:13892: testing ...before $LIBS ..." 1>&5
+echo "${as_me:-configure}:14209: testing ...before $LIBS ..." 1>&5
 
 LIBS=`echo "$LIBS" | sed -e "s/[       ][      ]*/ /g" -e "s%$cf_first_lib %$cf_first_lib $cf_pkgconfig_libs %" -e 's%  % %g'`
 test -n "$verbose" && echo "   ...after  $LIBS" 1>&6
 
-echo "${as_me:-configure}:13897: testing ...after  $LIBS ..." 1>&5
+echo "${as_me:-configure}:14214: testing ...after  $LIBS ..." 1>&5
 
 else
        cf_pkgconfig_incs=
@@ -13902,12 +14219,12 @@ else
 
 test -n "$verbose" && echo "   ...before $LIBS" 1>&6
 
-echo "${as_me:-configure}:13905: testing ...before $LIBS ..." 1>&5
+echo "${as_me:-configure}:14222: testing ...before $LIBS ..." 1>&5
 
 LIBS=`echo "$LIBS" | sed -e "s/[       ][      ]*/ /g" -e "s%$cf_first_lib %$cf_first_lib -lXmu %" -e 's%  % %g'`
 test -n "$verbose" && echo "   ...after  $LIBS" 1>&6
 
-echo "${as_me:-configure}:13910: testing ...after  $LIBS ..." 1>&5
+echo "${as_me:-configure}:14227: testing ...after  $LIBS ..." 1>&5
 
 fi
 
@@ -13918,7 +14235,7 @@ fi
                        LIBS=`echo "$LIBS " | sed -e 's/  / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'`
                        test -n "$verbose" && echo "    ..trimmed $LIBS" 1>&6
 
-echo "${as_me:-configure}:13921: testing ..trimmed $LIBS ..." 1>&5
+echo "${as_me:-configure}:14238: testing ..trimmed $LIBS ..." 1>&5
 
                        ;;
                esac
@@ -13943,17 +14260,17 @@ if test -z "$cf_x_athena_lib" ; then
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "Xext"; then
        test -n "$verbose" && echo "    found package Xext" 1>&6
 
-echo "${as_me:-configure}:13946: testing found package Xext ..." 1>&5
+echo "${as_me:-configure}:14263: testing found package Xext ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "Xext" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "Xext" 2>/dev/null`"
        test -n "$verbose" && echo "    package Xext CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:13952: testing package Xext CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:14269: testing package Xext CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package Xext LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:13956: testing package Xext LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:14273: testing package Xext LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -14074,7 +14391,7 @@ else
        cf_pkgconfig_incs=
        cf_pkgconfig_libs=
 
-       echo "$as_me:14077: checking for XextCreateExtension in -lXext" >&5
+       echo "$as_me:14394: checking for XextCreateExtension in -lXext" >&5
 echo $ECHO_N "checking for XextCreateExtension in -lXext... $ECHO_C" >&6
 if test "${ac_cv_lib_Xext_XextCreateExtension+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -14082,7 +14399,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXext  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 14085 "configure"
+#line 14402 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -14091,7 +14408,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char XextCreateExtension ();
+char XextCreateExtension (void);
 int
 main (void)
 {
@@ -14101,16 +14418,16 @@ XextCreateExtension ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:14104: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14421: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:14107: \$? = $ac_status" >&5
+  echo "$as_me:14424: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:14110: \"$ac_try\"") >&5
+  { (eval echo "$as_me:14427: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14113: \$? = $ac_status" >&5
+  echo "$as_me:14430: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_Xext_XextCreateExtension=yes
 else
@@ -14121,7 +14438,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:14124: result: $ac_cv_lib_Xext_XextCreateExtension" >&5
+echo "$as_me:14441: result: $ac_cv_lib_Xext_XextCreateExtension" >&5
 echo "${ECHO_T}$ac_cv_lib_Xext_XextCreateExtension" >&6
 if test "$ac_cv_lib_Xext_XextCreateExtension" = yes; then
 
@@ -14157,17 +14474,17 @@ then
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "x11"; then
        test -n "$verbose" && echo "    found package x11" 1>&6
 
-echo "${as_me:-configure}:14160: testing found package x11 ..." 1>&5
+echo "${as_me:-configure}:14477: testing found package x11 ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "x11" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "x11" 2>/dev/null`"
        test -n "$verbose" && echo "    package x11 CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:14166: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:14483: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package x11 LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:14170: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:14487: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -14287,24 +14604,24 @@ LIBS="$cf_add_libs"
 else
        cf_pkgconfig_incs=
        cf_pkgconfig_libs=
-       { echo "$as_me:14290: WARNING: unable to find X11 library" >&5
+       { echo "$as_me:14607: WARNING: unable to find X11 library" >&5
 echo "$as_me: WARNING: unable to find X11 library" >&2;}
 fi
 
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "ice"; then
        test -n "$verbose" && echo "    found package ice" 1>&6
 
-echo "${as_me:-configure}:14297: testing found package ice ..." 1>&5
+echo "${as_me:-configure}:14614: testing found package ice ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "ice" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "ice" 2>/dev/null`"
        test -n "$verbose" && echo "    package ice CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:14303: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:14620: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package ice LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:14307: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:14624: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -14424,24 +14741,24 @@ LIBS="$cf_add_libs"
 else
        cf_pkgconfig_incs=
        cf_pkgconfig_libs=
-       { echo "$as_me:14427: WARNING: unable to find ICE library" >&5
+       { echo "$as_me:14744: WARNING: unable to find ICE library" >&5
 echo "$as_me: WARNING: unable to find ICE library" >&2;}
 fi
 
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "sm"; then
        test -n "$verbose" && echo "    found package sm" 1>&6
 
-echo "${as_me:-configure}:14434: testing found package sm ..." 1>&5
+echo "${as_me:-configure}:14751: testing found package sm ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "sm" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "sm" 2>/dev/null`"
        test -n "$verbose" && echo "    package sm CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:14440: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:14757: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package sm LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:14444: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:14761: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -14561,24 +14878,24 @@ LIBS="$cf_add_libs"
 else
        cf_pkgconfig_incs=
        cf_pkgconfig_libs=
-       { echo "$as_me:14564: WARNING: unable to find SM library" >&5
+       { echo "$as_me:14881: WARNING: unable to find SM library" >&5
 echo "$as_me: WARNING: unable to find SM library" >&2;}
 fi
 
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "xt"; then
        test -n "$verbose" && echo "    found package xt" 1>&6
 
-echo "${as_me:-configure}:14571: testing found package xt ..." 1>&5
+echo "${as_me:-configure}:14888: testing found package xt ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "xt" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "xt" 2>/dev/null`"
        test -n "$verbose" && echo "    package xt CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:14577: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:14894: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package xt LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:14581: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:14898: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -14698,7 +15015,7 @@ LIBS="$cf_add_libs"
 else
        cf_pkgconfig_incs=
        cf_pkgconfig_libs=
-       { echo "$as_me:14701: WARNING: unable to find Xt library" >&5
+       { echo "$as_me:15018: WARNING: unable to find Xt library" >&5
 echo "$as_me: WARNING: unable to find Xt library" >&2;}
 fi
 
@@ -14711,17 +15028,17 @@ cf_have_X_LIBS=no
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "xt"; then
        test -n "$verbose" && echo "    found package xt" 1>&6
 
-echo "${as_me:-configure}:14714: testing found package xt ..." 1>&5
+echo "${as_me:-configure}:15031: testing found package xt ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "xt" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "xt" 2>/dev/null`"
        test -n "$verbose" && echo "    package xt CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:14720: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:15037: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package xt LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:14724: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:15041: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -14842,14 +15159,14 @@ LIBS="$cf_add_libs"
                ;;
        (*)
 # we have an "xt" package, but it may omit Xt's dependency on X11
-echo "$as_me:14845: checking for usable X dependency" >&5
+echo "$as_me:15162: checking for usable X dependency" >&5
 echo $ECHO_N "checking for usable X dependency... $ECHO_C" >&6
 if test "${cf_cv_xt_x11_compat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 14852 "configure"
+#line 15169 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -14869,16 +15186,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:14872: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15189: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:14875: \$? = $ac_status" >&5
+  echo "$as_me:15192: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:14878: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15195: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:14881: \$? = $ac_status" >&5
+  echo "$as_me:15198: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xt_x11_compat=yes
 else
@@ -14888,30 +15205,30 @@ cf_cv_xt_x11_compat=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:14891: result: $cf_cv_xt_x11_compat" >&5
+echo "$as_me:15208: result: $cf_cv_xt_x11_compat" >&5
 echo "${ECHO_T}$cf_cv_xt_x11_compat" >&6
                if test "$cf_cv_xt_x11_compat" = no
                then
                        test -n "$verbose" && echo "    work around broken X11 dependency" 1>&6
 
-echo "${as_me:-configure}:14897: testing work around broken X11 dependency ..." 1>&5
+echo "${as_me:-configure}:15214: testing work around broken X11 dependency ..." 1>&5
 
                        # 2010/11/19 - good enough until a working Xt on Xcb is delivered.
 
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "x11"; then
        test -n "$verbose" && echo "    found package x11" 1>&6
 
-echo "${as_me:-configure}:14904: testing found package x11 ..." 1>&5
+echo "${as_me:-configure}:15221: testing found package x11 ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "x11" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "x11" 2>/dev/null`"
        test -n "$verbose" && echo "    package x11 CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:14910: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:15227: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package x11 LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:14914: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:15231: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -15034,12 +15351,12 @@ else
 
 test -n "$verbose" && echo "   ...before $LIBS" 1>&6
 
-echo "${as_me:-configure}:15037: testing ...before $LIBS ..." 1>&5
+echo "${as_me:-configure}:15354: testing ...before $LIBS ..." 1>&5
 
 LIBS=`echo "$LIBS" | sed -e "s/[       ][      ]*/ /g" -e "s%-lXt %-lXt -lX11 %" -e 's%  % %g'`
 test -n "$verbose" && echo "   ...after  $LIBS" 1>&6
 
-echo "${as_me:-configure}:15042: testing ...after  $LIBS ..." 1>&5
+echo "${as_me:-configure}:15359: testing ...after  $LIBS ..." 1>&5
 
 fi
 
                ;;
        esac
 
-echo "$as_me:15050: checking for usable X Toolkit package" >&5
+echo "$as_me:15367: checking for usable X Toolkit package" >&5
 echo $ECHO_N "checking for usable X Toolkit package... $ECHO_C" >&6
 if test "${cf_cv_xt_ice_compat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 15057 "configure"
+#line 15374 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -15070,16 +15387,16 @@ int num = IceConnectionNumber(0); (void) num
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:15073: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15390: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:15076: \$? = $ac_status" >&5
+  echo "$as_me:15393: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:15079: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15396: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15082: \$? = $ac_status" >&5
+  echo "$as_me:15399: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_xt_ice_compat=yes
 else
@@ -15089,7 +15406,7 @@ cf_cv_xt_ice_compat=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:15092: result: $cf_cv_xt_ice_compat" >&5
+echo "$as_me:15409: result: $cf_cv_xt_ice_compat" >&5
 echo "${ECHO_T}$cf_cv_xt_ice_compat" >&6
 
        if test "$cf_cv_xt_ice_compat" = no
@@ -15103,22 +15420,22 @@ echo "${ECHO_T}$cf_cv_xt_ice_compat" >&6
                        (*)
                                test -n "$verbose" && echo "    work around broken ICE dependency" 1>&6
 
-echo "${as_me:-configure}:15106: testing work around broken ICE dependency ..." 1>&5
+echo "${as_me:-configure}:15423: testing work around broken ICE dependency ..." 1>&5
 
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "ice"; then
        test -n "$verbose" && echo "    found package ice" 1>&6
 
-echo "${as_me:-configure}:15111: testing found package ice ..." 1>&5
+echo "${as_me:-configure}:15428: testing found package ice ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "ice" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "ice" 2>/dev/null`"
        test -n "$verbose" && echo "    package ice CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:15117: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:15434: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package ice LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:15121: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:15438: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -15237,17 +15554,17 @@ LIBS="$cf_add_libs"
 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "sm"; then
        test -n "$verbose" && echo "    found package sm" 1>&6
 
-echo "${as_me:-configure}:15240: testing found package sm ..." 1>&5
+echo "${as_me:-configure}:15557: testing found package sm ..." 1>&5
 
        cf_pkgconfig_incs="`$PKG_CONFIG --cflags "sm" 2>/dev/null`"
        cf_pkgconfig_libs="`$PKG_CONFIG --libs   "sm" 2>/dev/null`"
        test -n "$verbose" && echo "    package sm CFLAGS: $cf_pkgconfig_incs" 1>&6
 
-echo "${as_me:-configure}:15246: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5
+echo "${as_me:-configure}:15563: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5
 
        test -n "$verbose" && echo "    package sm LIBS: $cf_pkgconfig_libs" 1>&6
 
-echo "${as_me:-configure}:15250: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5
+echo "${as_me:-configure}:15567: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5
 
 cf_fix_cppflags=no
 cf_new_cflags=
@@ -15376,12 +15693,12 @@ else
 
 test -n "$verbose" && echo "   ...before $LIBS" 1>&6
 
-echo "${as_me:-configure}:15379: testing ...before $LIBS ..." 1>&5
+echo "${as_me:-configure}:15696: testing ...before $LIBS ..." 1>&5
 
 LIBS=`echo "$LIBS" | sed -e "s/[       ][      ]*/ /g" -e "s%-lXt %-lXt $X_PRE_LIBS %" -e 's%  % %g'`
 test -n "$verbose" && echo "   ...after  $LIBS" 1>&6
 
-echo "${as_me:-configure}:15384: testing ...after  $LIBS ..." 1>&5
+echo "${as_me:-configure}:15701: testing ...after  $LIBS ..." 1>&5
 
 fi
 
@@ -15401,7 +15718,7 @@ else
 
 test -n "$verbose" && echo "   checking additions to CFLAGS" 1>&6
 
-echo "${as_me:-configure}:15404: testing checking additions to CFLAGS ..." 1>&5
+echo "${as_me:-configure}:15721: testing checking additions to CFLAGS ..." 1>&5
 
 cf_check_cflags="$CFLAGS"
 cf_check_cppflags="$CPPFLAGS"
@@ -15486,7 +15803,7 @@ done
 if test -n "$cf_new_cflags" ; then
        test -n "$verbose" && echo "    add to \$CFLAGS $cf_new_cflags" 1>&6
 
-echo "${as_me:-configure}:15489: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+echo "${as_me:-configure}:15806: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
 
        test -n "$CFLAGS" && CFLAGS="$CFLAGS "
        CFLAGS="${CFLAGS}$cf_new_cflags"
@@ -15496,7 +15813,7 @@ fi
 if test -n "$cf_new_cppflags" ; then
        test -n "$verbose" && echo "    add to \$CPPFLAGS $cf_new_cppflags" 1>&6
 
-echo "${as_me:-configure}:15499: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+echo "${as_me:-configure}:15816: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
 
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
@@ -15506,7 +15823,7 @@ fi
 if test -n "$cf_new_extra_cppflags" ; then
        test -n "$verbose" && echo "    add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
 
-echo "${as_me:-configure}:15509: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+echo "${as_me:-configure}:15826: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
 
        test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
        EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
@@ -15515,7 +15832,7 @@ fi
 
 if test "x$cf_check_cflags" != "x$CFLAGS" ; then
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 15518 "configure"
+#line 15835 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -15527,16 +15844,16 @@ printf("Hello world");
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:15530: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15847: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:15533: \$? = $ac_status" >&5
+  echo "$as_me:15850: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:15536: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15853: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15539: \$? = $ac_status" >&5
+  echo "$as_me:15856: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -15544,12 +15861,12 @@ else
 cat "conftest.$ac_ext" >&5
 test -n "$verbose" && echo "   test-compile failed.  Undoing change to \$CFLAGS" 1>&6
 
-echo "${as_me:-configure}:15547: testing test-compile failed.  Undoing change to \$CFLAGS ..." 1>&5
+echo "${as_me:-configure}:15864: testing test-compile failed.  Undoing change to \$CFLAGS ..." 1>&5
 
         if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then
                 test -n "$verbose" && echo "   but keeping change to \$CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:15552: testing but keeping change to \$CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:15869: testing but keeping change to \$CPPFLAGS ..." 1>&5
 
         fi
         CFLAGS="$cf_check_cflags"
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
 
-       echo "$as_me:15560: checking for XOpenDisplay" >&5
+       echo "$as_me:15877: checking for XOpenDisplay" >&5
 echo $ECHO_N "checking for XOpenDisplay... $ECHO_C" >&6
 if test "${ac_cv_func_XOpenDisplay+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 15566 "configure"
+#line 15883 "configure"
 #include "confdefs.h"
 #define XOpenDisplay autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -15594,16 +15911,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:15597: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15914: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:15600: \$? = $ac_status" >&5
+  echo "$as_me:15917: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:15603: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15920: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15606: \$? = $ac_status" >&5
+  echo "$as_me:15923: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_XOpenDisplay=yes
 else
@@ -15613,13 +15930,13 @@ ac_cv_func_XOpenDisplay=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:15616: result: $ac_cv_func_XOpenDisplay" >&5
+echo "$as_me:15933: result: $ac_cv_func_XOpenDisplay" >&5
 echo "${ECHO_T}$ac_cv_func_XOpenDisplay" >&6
 if test "$ac_cv_func_XOpenDisplay" = yes; then
   :
 else
 
-       echo "$as_me:15622: checking for XOpenDisplay in -lX11" >&5
+       echo "$as_me:15939: checking for XOpenDisplay in -lX11" >&5
 echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6
 if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -15627,7 +15944,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lX11  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 15630 "configure"
+#line 15947 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -15636,7 +15953,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char XOpenDisplay ();
+char XOpenDisplay (void);
 int
 main (void)
 {
@@ -15646,16 +15963,16 @@ XOpenDisplay ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:15649: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15966: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:15652: \$? = $ac_status" >&5
+  echo "$as_me:15969: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:15655: \"$ac_try\"") >&5
+  { (eval echo "$as_me:15972: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15658: \$? = $ac_status" >&5
+  echo "$as_me:15975: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_X11_XOpenDisplay=yes
 else
@@ -15666,7 +15983,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:15669: result: $ac_cv_lib_X11_XOpenDisplay" >&5
+echo "$as_me:15986: result: $ac_cv_lib_X11_XOpenDisplay" >&5
 echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6
 if test "$ac_cv_lib_X11_XOpenDisplay" = yes; then
 
 
 fi
 
-       echo "$as_me:15693: checking for XtAppInitialize" >&5
+       echo "$as_me:16010: checking for XtAppInitialize" >&5
 echo $ECHO_N "checking for XtAppInitialize... $ECHO_C" >&6
 if test "${ac_cv_func_XtAppInitialize+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 15699 "configure"
+#line 16016 "configure"
 #include "confdefs.h"
 #define XtAppInitialize autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -15727,16 +16044,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:15730: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16047: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:15733: \$? = $ac_status" >&5
+  echo "$as_me:16050: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:15736: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16053: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15739: \$? = $ac_status" >&5
+  echo "$as_me:16056: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_XtAppInitialize=yes
 else
@@ -15746,13 +16063,13 @@ ac_cv_func_XtAppInitialize=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:15749: result: $ac_cv_func_XtAppInitialize" >&5
+echo "$as_me:16066: result: $ac_cv_func_XtAppInitialize" >&5
 echo "${ECHO_T}$ac_cv_func_XtAppInitialize" >&6
 if test "$ac_cv_func_XtAppInitialize" = yes; then
   :
 else
 
-       echo "$as_me:15755: checking for XtAppInitialize in -lXt" >&5
+       echo "$as_me:16072: checking for XtAppInitialize in -lXt" >&5
 echo $ECHO_N "checking for XtAppInitialize in -lXt... $ECHO_C" >&6
 if test "${ac_cv_lib_Xt_XtAppInitialize+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -15760,7 +16077,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXt  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 15763 "configure"
+#line 16080 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -15769,7 +16086,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char XtAppInitialize ();
+char XtAppInitialize (void);
 int
 main (void)
 {
@@ -15779,16 +16096,16 @@ XtAppInitialize ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:15782: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16099: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:15785: \$? = $ac_status" >&5
+  echo "$as_me:16102: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:15788: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16105: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15791: \$? = $ac_status" >&5
+  echo "$as_me:16108: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_Xt_XtAppInitialize=yes
 else
@@ -15799,7 +16116,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:15802: result: $ac_cv_lib_Xt_XtAppInitialize" >&5
+echo "$as_me:16119: result: $ac_cv_lib_Xt_XtAppInitialize" >&5
 echo "${ECHO_T}$ac_cv_lib_Xt_XtAppInitialize" >&6
 if test "$ac_cv_lib_Xt_XtAppInitialize" = yes; then
 
@@ -15816,7 +16133,7 @@ fi
 fi
 
 if test "$cf_have_X_LIBS" = no ; then
-       { echo "$as_me:15819: WARNING: Unable to successfully link X Toolkit library (-lXt) with
+       { echo "$as_me:16136: WARNING: Unable to successfully link X Toolkit library (-lXt) with
 test program.  You will have to check and add the proper libraries by hand
 to makefile." >&5
 echo "$as_me: WARNING: Unable to successfully link X Toolkit library (-lXt) with
@@ -15857,14 +16174,14 @@ done
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}-I$cf_path/include"
 
-                       echo "$as_me:15860: checking for $cf_test in $cf_path" >&5
+                       echo "$as_me:16177: checking for $cf_test in $cf_path" >&5
 echo $ECHO_N "checking for $cf_test in $cf_path... $ECHO_C" >&6
                else
-                       echo "$as_me:15863: checking for $cf_test" >&5
+                       echo "$as_me:16180: checking for $cf_test" >&5
 echo $ECHO_N "checking for $cf_test... $ECHO_C" >&6
                fi
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 15867 "configure"
+#line 16184 "configure"
 #include "confdefs.h"
 
 #include <X11/Intrinsic.h>
@@ -15878,16 +16195,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:15881: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16198: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:15884: \$? = $ac_status" >&5
+  echo "$as_me:16201: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:15887: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16204: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:15890: \$? = $ac_status" >&5
+  echo "$as_me:16207: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -15896,7 +16213,7 @@ cat "conftest.$ac_ext" >&5
 cf_result=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-               echo "$as_me:15899: result: $cf_result" >&5
+               echo "$as_me:16216: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
 
 LIBS="$cf_save_LIBS_CF_X_ATHENA_CPPFLAGS"
@@ -15912,7 +16229,7 @@ CPPFLAGS="$cf_save_CPPFLAGS_CF_X_ATHENA_CPPFLAGS"
 done
 
 if test -z "$cf_x_athena_inc" ; then
-       { echo "$as_me:15915: WARNING: Unable to find Athena header files" >&5
+       { echo "$as_me:16232: WARNING: Unable to find Athena header files" >&5
 echo "$as_me: WARNING: Unable to find Athena header files" >&2;}
 elif test "$cf_x_athena_inc" != default ; then
 
@@ -15977,10 +16294,10 @@ for cf_add_1lib in $cf_add_0lib; do
 done
 LIBS="$cf_add_libs"
 
-               echo "$as_me:15980: checking for $cf_test in $cf_libs" >&5
+               echo "$as_me:16297: checking for $cf_test in $cf_libs" >&5
 echo $ECHO_N "checking for $cf_test in $cf_libs... $ECHO_C" >&6
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 15983 "configure"
+#line 16300 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -15997,16 +16314,16 @@ $cf_test((XtAppContext) 0)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16000: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16317: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16003: \$? = $ac_status" >&5
+  echo "$as_me:16320: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16006: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16323: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16009: \$? = $ac_status" >&5
+  echo "$as_me:16326: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -16015,7 +16332,7 @@ cat "conftest.$ac_ext" >&5
 cf_result=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:16018: result: $cf_result" >&5
+               echo "$as_me:16335: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
 
 LIBS="$cf_save_LIBS_CF_X_ATHENA_LIBS"
@@ -16032,7 +16349,7 @@ CPPFLAGS="$cf_save_CPPFLAGS_CF_X_ATHENA_LIBS"
 done
 
 if test -z "$cf_x_athena_lib" ; then
-       { { echo "$as_me:16035: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&5
+       { { echo "$as_me:16352: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&5
 echo "$as_me: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -16066,7 +16383,7 @@ if test -n "$ac_tool_prefix"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:16069: checking for $ac_word" >&5
+echo "$as_me:16386: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_XCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16081,7 +16398,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_XCURSES_CONFIG="$ac_tool_prefix$ac_prog"
-echo "$as_me:16084: found $ac_dir/$ac_word" >&5
+echo "$as_me:16401: found $ac_dir/$ac_word" >&5
 break
 done
 
 fi
 XCURSES_CONFIG=$ac_cv_prog_XCURSES_CONFIG
 if test -n "$XCURSES_CONFIG"; then
-  echo "$as_me:16092: result: $XCURSES_CONFIG" >&5
+  echo "$as_me:16409: result: $XCURSES_CONFIG" >&5
 echo "${ECHO_T}$XCURSES_CONFIG" >&6
 else
-  echo "$as_me:16095: result: no" >&5
+  echo "$as_me:16412: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -16105,7 +16422,7 @@ if test -z "$XCURSES_CONFIG"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:16108: checking for $ac_word" >&5
+echo "$as_me:16425: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_ac_ct_XCURSES_CONFIG+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16120,7 +16437,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_ac_ct_XCURSES_CONFIG="$ac_prog"
-echo "$as_me:16123: found $ac_dir/$ac_word" >&5
+echo "$as_me:16440: found $ac_dir/$ac_word" >&5
 break
 done
 
 fi
 ac_ct_XCURSES_CONFIG=$ac_cv_prog_ac_ct_XCURSES_CONFIG
 if test -n "$ac_ct_XCURSES_CONFIG"; then
-  echo "$as_me:16131: result: $ac_ct_XCURSES_CONFIG" >&5
+  echo "$as_me:16448: result: $ac_ct_XCURSES_CONFIG" >&5
 echo "${ECHO_T}$ac_ct_XCURSES_CONFIG" >&6
 else
-  echo "$as_me:16134: result: no" >&5
+  echo "$as_me:16451: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -16266,7 +16583,7 @@ LDFLAGS="$LDFLAGS $X_LIBS"
 
 test -n "$verbose" && echo "   checking additions to CFLAGS" 1>&6
 
-echo "${as_me:-configure}:16269: testing checking additions to CFLAGS ..." 1>&5
+echo "${as_me:-configure}:16586: testing checking additions to CFLAGS ..." 1>&5
 
 cf_check_cflags="$CFLAGS"
 cf_check_cppflags="$CPPFLAGS"
@@ -16351,7 +16668,7 @@ done
 if test -n "$cf_new_cflags" ; then
        test -n "$verbose" && echo "    add to \$CFLAGS $cf_new_cflags" 1>&6
 
-echo "${as_me:-configure}:16354: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
+echo "${as_me:-configure}:16671: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5
 
        test -n "$CFLAGS" && CFLAGS="$CFLAGS "
        CFLAGS="${CFLAGS}$cf_new_cflags"
@@ -16361,7 +16678,7 @@ fi
 if test -n "$cf_new_cppflags" ; then
        test -n "$verbose" && echo "    add to \$CPPFLAGS $cf_new_cppflags" 1>&6
 
-echo "${as_me:-configure}:16364: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
+echo "${as_me:-configure}:16681: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5
 
        test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS "
        CPPFLAGS="${CPPFLAGS}$cf_new_cppflags"
@@ -16371,7 +16688,7 @@ fi
 if test -n "$cf_new_extra_cppflags" ; then
        test -n "$verbose" && echo "    add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags" 1>&6
 
-echo "${as_me:-configure}:16374: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
+echo "${as_me:-configure}:16691: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5
 
        test -n "$EXTRA_CPPFLAGS" && EXTRA_CPPFLAGS="$EXTRA_CPPFLAGS "
        EXTRA_CPPFLAGS="${EXTRA_CPPFLAGS}$cf_new_extra_cppflags"
@@ -16380,7 +16697,7 @@ fi
 
 if test "x$cf_check_cflags" != "x$CFLAGS" ; then
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 16383 "configure"
+#line 16700 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -16392,16 +16709,16 @@ printf("Hello world");
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16395: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16712: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16398: \$? = $ac_status" >&5
+  echo "$as_me:16715: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16401: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16718: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16404: \$? = $ac_status" >&5
+  echo "$as_me:16721: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -16409,12 +16726,12 @@ else
 cat "conftest.$ac_ext" >&5
 test -n "$verbose" && echo "   test-compile failed.  Undoing change to \$CFLAGS" 1>&6
 
-echo "${as_me:-configure}:16412: testing test-compile failed.  Undoing change to \$CFLAGS ..." 1>&5
+echo "${as_me:-configure}:16729: testing test-compile failed.  Undoing change to \$CFLAGS ..." 1>&5
 
         if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then
                 test -n "$verbose" && echo "   but keeping change to \$CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:16417: testing but keeping change to \$CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:16734: testing but keeping change to \$CPPFLAGS ..." 1>&5
 
         fi
         CFLAGS="$cf_check_cflags"
@@ -16422,7 +16739,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
 
-echo "$as_me:16425: checking for XOpenDisplay in -lX11" >&5
+echo "$as_me:16742: checking for XOpenDisplay in -lX11" >&5
 echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6
 if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16430,7 +16747,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 16433 "configure"
+#line 16750 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -16439,7 +16756,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char XOpenDisplay ();
+char XOpenDisplay (void);
 int
 main (void)
 {
@@ -16449,16 +16766,16 @@ XOpenDisplay ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16452: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16769: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16455: \$? = $ac_status" >&5
+  echo "$as_me:16772: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16458: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16775: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16461: \$? = $ac_status" >&5
+  echo "$as_me:16778: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_X11_XOpenDisplay=yes
 else
@@ -16469,7 +16786,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:16472: result: $ac_cv_lib_X11_XOpenDisplay" >&5
+echo "$as_me:16789: result: $ac_cv_lib_X11_XOpenDisplay" >&5
 echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6
 if test "$ac_cv_lib_X11_XOpenDisplay" = yes; then
 
@@ -16491,7 +16808,7 @@ LIBS="$cf_add_libs"
 
 fi
 
-echo "$as_me:16494: checking for XCurses library" >&5
+echo "$as_me:16811: checking for XCurses library" >&5
 echo $ECHO_N "checking for XCurses library... $ECHO_C" >&6
 if test "${cf_cv_lib_XCurses+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16514,7 +16831,7 @@ done
 LIBS="$cf_add_libs"
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 16517 "configure"
+#line 16834 "configure"
 #include "confdefs.h"
 
 #include <xcurses.h>
@@ -16529,16 +16846,16 @@ XCursesExit();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16532: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16849: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16535: \$? = $ac_status" >&5
+  echo "$as_me:16852: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16538: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16855: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16541: \$? = $ac_status" >&5
+  echo "$as_me:16858: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_lib_XCurses=yes
 else
@@ -16549,7 +16866,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:16552: result: $cf_cv_lib_XCurses" >&5
+echo "$as_me:16869: result: $cf_cv_lib_XCurses" >&5
 echo "${ECHO_T}$cf_cv_lib_XCurses" >&6
 
 fi
@@ -16564,23 +16881,23 @@ cat >>confdefs.h <<\EOF
 #define XCURSES 1
 EOF
 
-       echo "$as_me:16567: checking for xcurses.h" >&5
+       echo "$as_me:16884: checking for xcurses.h" >&5
 echo $ECHO_N "checking for xcurses.h... $ECHO_C" >&6
 if test "${ac_cv_header_xcurses_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 16573 "configure"
+#line 16890 "configure"
 #include "confdefs.h"
 #include <xcurses.h>
 _ACEOF
-if { (eval echo "$as_me:16577: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:16894: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:16583: \$? = $ac_status" >&5
+  echo "$as_me:16900: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -16599,7 +16916,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:16602: result: $ac_cv_header_xcurses_h" >&5
+echo "$as_me:16919: result: $ac_cv_header_xcurses_h" >&5
 echo "${ECHO_T}$ac_cv_header_xcurses_h" >&6
 if test "$ac_cv_header_xcurses_h" = yes; then
 
@@ -16610,14 +16927,14 @@ EOF
 fi
 
 else
-       { { echo "$as_me:16613: error: Cannot link with XCurses" >&5
+       { { echo "$as_me:16930: error: Cannot link with XCurses" >&5
 echo "$as_me: error: Cannot link with XCurses" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
        ;;
 (*)
-       { { echo "$as_me:16620: error: unexpected screen-value: $cf_cv_screen" >&5
+       { { echo "$as_me:16937: error: unexpected screen-value: $cf_cv_screen" >&5
 echo "$as_me: error: unexpected screen-value: $cf_cv_screen" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -16625,7 +16942,7 @@ esac
 
 : ${cf_nculib_root:=$cf_cv_screen}
 as_ac_Lib=`echo "ac_cv_lib_$cf_nculib_root''__nc_init_pthreads" | $as_tr_sh`
-echo "$as_me:16628: checking for _nc_init_pthreads in -l$cf_nculib_root" >&5
+echo "$as_me:16945: checking for _nc_init_pthreads in -l$cf_nculib_root" >&5
 echo $ECHO_N "checking for _nc_init_pthreads in -l$cf_nculib_root... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Lib+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16633,7 +16950,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-l$cf_nculib_root  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 16636 "configure"
+#line 16953 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -16642,7 +16959,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char _nc_init_pthreads ();
+char _nc_init_pthreads (void);
 int
 main (void)
 {
@@ -16652,16 +16969,16 @@ _nc_init_pthreads ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:16655: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16972: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:16658: \$? = $ac_status" >&5
+  echo "$as_me:16975: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:16661: \"$ac_try\"") >&5
+  { (eval echo "$as_me:16978: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:16664: \$? = $ac_status" >&5
+  echo "$as_me:16981: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_Lib=yes"
 else
@@ -16672,7 +16989,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:16675: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
+echo "$as_me:16992: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Lib"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Lib"'}'`" = yes; then
   cf_cv_ncurses_pthreads=yes
@@ -16707,7 +17024,7 @@ case $cf_cv_screen in
        ;;
 esac
 
-echo "$as_me:16710: checking for X11 rgb file" >&5
+echo "$as_me:17027: checking for X11 rgb file" >&5
 echo $ECHO_N "checking for X11 rgb file... $ECHO_C" >&6
 
 # Check whether --with-x11-rgb or --without-x11-rgb was given.
@@ -16771,7 +17088,7 @@ case ".$cf_path" in
        cf_path=`echo "$cf_path" | sed -e s%NONE%$cf_path_syntax%`
        ;;
 (*)
-       { { echo "$as_me:16774: error: expected a pathname, not \"$cf_path\"" >&5
+       { { echo "$as_me:17091: error: expected a pathname, not \"$cf_path\"" >&5
 echo "$as_me: error: expected a pathname, not \"$cf_path\"" >&2;}
    { (exit 1); exit 1; }; }
        ;;
@@ -16779,7 +17096,7 @@ esac
 
 fi
 
-echo "$as_me:16782: result: $RGB_PATH" >&5
+echo "$as_me:17099: result: $RGB_PATH" >&5
 echo "${ECHO_T}$RGB_PATH" >&6
 
 cat >>confdefs.h <<EOF
@@ -16820,7 +17137,7 @@ case $cf_cv_screen in
        ;;
 esac
 
-echo "$as_me:16823: checking for desired basename for form library" >&5
+echo "$as_me:17140: checking for desired basename for form library" >&5
 echo $ECHO_N "checking for desired basename for form library... $ECHO_C" >&6
 
 # Check whether --with-form-libname or --without-form-libname was given.
@@ -16840,10 +17157,10 @@ case "x$FORM_NAME" in
        ;;
 esac
 
-echo "$as_me:16843: result: $FORM_NAME" >&5
+echo "$as_me:17160: result: $FORM_NAME" >&5
 echo "${ECHO_T}$FORM_NAME" >&6
 
-echo "$as_me:16846: checking for desired basename for menu library" >&5
+echo "$as_me:17163: checking for desired basename for menu library" >&5
 echo $ECHO_N "checking for desired basename for menu library... $ECHO_C" >&6
 
 # Check whether --with-menu-libname or --without-menu-libname was given.
@@ -16863,10 +17180,10 @@ case "x$MENU_NAME" in
        ;;
 esac
 
-echo "$as_me:16866: result: $MENU_NAME" >&5
+echo "$as_me:17183: result: $MENU_NAME" >&5
 echo "${ECHO_T}$MENU_NAME" >&6
 
-echo "$as_me:16869: checking for desired basename for panel library" >&5
+echo "$as_me:17186: checking for desired basename for panel library" >&5
 echo $ECHO_N "checking for desired basename for panel library... $ECHO_C" >&6
 
 # Check whether --with-panel-libname or --without-panel-libname was given.
@@ -16886,10 +17203,10 @@ case "x$PANEL_NAME" in
        ;;
 esac
 
-echo "$as_me:16889: result: $PANEL_NAME" >&5
+echo "$as_me:17206: result: $PANEL_NAME" >&5
 echo "${ECHO_T}$PANEL_NAME" >&6
 
-echo "$as_me:16892: checking if you want to check for panel functions" >&5
+echo "$as_me:17209: checking if you want to check for panel functions" >&5
 echo $ECHO_N "checking if you want to check for panel functions... $ECHO_C" >&6
 
 # Check whether --enable-panel or --disable-panel was given.
@@ -16906,7 +17223,7 @@ else
        cf_enable_panel=$cf_default_panel
 
 fi;
-echo "$as_me:16909: result: $cf_enable_panel" >&5
+echo "$as_me:17226: result: $cf_enable_panel" >&5
 echo "${ECHO_T}$cf_enable_panel" >&6
 if test $cf_enable_panel = yes
 then
@@ -16917,13 +17234,13 @@ cf_have_curses_lib=no
 if test "x${NCURSES_CONFIG_PKG}" = xnone; then
        :
 elif test "x${PKG_CONFIG:=none}" != xnone; then
-       echo "$as_me:16920: checking pkg-config for $PANEL_NAME$cf_cv_libtype" >&5
+       echo "$as_me:17237: checking pkg-config for $PANEL_NAME$cf_cv_libtype" >&5
 echo $ECHO_N "checking pkg-config for $PANEL_NAME$cf_cv_libtype... $ECHO_C" >&6
        if "$PKG_CONFIG" --exists "$PANEL_NAME$cf_cv_libtype" ; then
-               echo "$as_me:16923: result: yes" >&5
+               echo "$as_me:17240: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
-               echo "$as_me:16926: checking if the $PANEL_NAME$cf_cv_libtype package files work" >&5
+               echo "$as_me:17243: checking if the $PANEL_NAME$cf_cv_libtype package files work" >&5
 echo $ECHO_N "checking if the $PANEL_NAME$cf_cv_libtype package files work... $ECHO_C" >&6
 
                cf_save_CFLAGS="$CFLAGS"
@@ -17073,7 +17390,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 17076 "configure"
+#line 17393 "configure"
 #include "confdefs.h"
 #include <$PANEL_NAME.h>
 int
@@ -17085,37 +17402,37 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17088: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17405: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17091: \$? = $ac_status" >&5
+  echo "$as_me:17408: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:17094: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17411: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17097: \$? = $ac_status" >&5
+  echo "$as_me:17414: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_have_curses_lib=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17103 "configure"
+#line 17420 "configure"
 #include "confdefs.h"
 #include <$PANEL_NAME.h>
                                int main(void)
                                { (void) new_panel ( 0 ); return 0; }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:17110: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17427: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17113: \$? = $ac_status" >&5
+  echo "$as_me:17430: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:17115: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17432: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17118: \$? = $ac_status" >&5
+  echo "$as_me:17435: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_have_curses_lib=yes
 else
@@ -17132,7 +17449,7 @@ cat "conftest.$ac_ext" >&5
 cf_have_curses_lib=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:17135: result: $cf_have_curses_lib" >&5
+               echo "$as_me:17452: result: $cf_have_curses_lib" >&5
 echo "${ECHO_T}$cf_have_curses_lib" >&6
                test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes
                if test "$cf_have_curses_lib" = "yes"
@@ -17153,7 +17470,7 @@ EOF
 fi
 if test "$cf_have_curses_lib" = no; then
        as_ac_Lib=`echo "ac_cv_lib_$PANEL_NAME$cf_cv_libtype''_new_panel" | $as_tr_sh`
-echo "$as_me:17156: checking for new_panel in -l$PANEL_NAME$cf_cv_libtype" >&5
+echo "$as_me:17473: checking for new_panel in -l$PANEL_NAME$cf_cv_libtype" >&5
 echo $ECHO_N "checking for new_panel in -l$PANEL_NAME$cf_cv_libtype... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Lib+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17161,7 +17478,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-l$PANEL_NAME$cf_cv_libtype  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 17164 "configure"
+#line 17481 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -17170,7 +17487,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char new_panel ();
+char new_panel (void);
 int
 main (void)
 {
@@ -17180,16 +17497,16 @@ new_panel ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17183: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17500: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17186: \$? = $ac_status" >&5
+  echo "$as_me:17503: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:17189: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17506: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17192: \$? = $ac_status" >&5
+  echo "$as_me:17509: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_Lib=yes"
 else
@@ -17200,7 +17517,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:17203: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
+echo "$as_me:17520: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Lib"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Lib"'}'`" = yes; then
 
@@ -17233,7 +17550,7 @@ fi
        cf_curses_headers="$cf_curses_headers panel.h"
 fi
 
-echo "$as_me:17236: checking if you want to check for menu functions" >&5
+echo "$as_me:17553: checking if you want to check for menu functions" >&5
 echo $ECHO_N "checking if you want to check for menu functions... $ECHO_C" >&6
 
 # Check whether --enable-menu or --disable-menu was given.
@@ -17250,7 +17567,7 @@ else
        cf_enable_menu=$cf_default_menu
 
 fi;
-echo "$as_me:17253: result: $cf_enable_menu" >&5
+echo "$as_me:17570: result: $cf_enable_menu" >&5
 echo "${ECHO_T}$cf_enable_menu" >&6
 if test $cf_enable_menu = yes
 then
@@ -17259,14 +17576,14 @@ then
                ;;
        (curses*)
 
-echo "$as_me:17262: checking for NetBSD menu.h" >&5
+echo "$as_me:17579: checking for NetBSD menu.h" >&5
 echo $ECHO_N "checking for NetBSD menu.h... $ECHO_C" >&6
 if test "${cf_cv_netbsd_menu_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 17269 "configure"
+#line 17586 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -17284,16 +17601,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:17287: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17604: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17290: \$? = $ac_status" >&5
+  echo "$as_me:17607: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:17293: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17610: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17296: \$? = $ac_status" >&5
+  echo "$as_me:17613: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_netbsd_menu_h=yes
 
@@ -17305,7 +17622,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:17308: result: $cf_cv_netbsd_menu_h" >&5
+echo "$as_me:17625: result: $cf_cv_netbsd_menu_h" >&5
 echo "${ECHO_T}$cf_cv_netbsd_menu_h" >&6
 
 test "$cf_cv_netbsd_menu_h" = yes &&
@@ -17322,13 +17639,13 @@ cf_have_curses_lib=no
 if test "x${NCURSES_CONFIG_PKG}" = xnone; then
        :
 elif test "x${PKG_CONFIG:=none}" != xnone; then
-       echo "$as_me:17325: checking pkg-config for $MENU_NAME$cf_cv_libtype" >&5
+       echo "$as_me:17642: checking pkg-config for $MENU_NAME$cf_cv_libtype" >&5
 echo $ECHO_N "checking pkg-config for $MENU_NAME$cf_cv_libtype... $ECHO_C" >&6
        if "$PKG_CONFIG" --exists "$MENU_NAME$cf_cv_libtype" ; then
-               echo "$as_me:17328: result: yes" >&5
+               echo "$as_me:17645: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
-               echo "$as_me:17331: checking if the $MENU_NAME$cf_cv_libtype package files work" >&5
+               echo "$as_me:17648: checking if the $MENU_NAME$cf_cv_libtype package files work" >&5
 echo $ECHO_N "checking if the $MENU_NAME$cf_cv_libtype package files work... $ECHO_C" >&6
 
                cf_save_CFLAGS="$CFLAGS"
@@ -17478,7 +17795,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 17481 "configure"
+#line 17798 "configure"
 #include "confdefs.h"
 #include <$MENU_NAME.h>
 int
@@ -17490,37 +17807,37 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17493: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17810: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17496: \$? = $ac_status" >&5
+  echo "$as_me:17813: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:17499: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17816: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17502: \$? = $ac_status" >&5
+  echo "$as_me:17819: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_have_curses_lib=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17508 "configure"
+#line 17825 "configure"
 #include "confdefs.h"
 #include <$MENU_NAME.h>
                                int main(void)
                                { (void) menu_driver ( 0,0 ); return 0; }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:17515: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17832: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17518: \$? = $ac_status" >&5
+  echo "$as_me:17835: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:17520: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17837: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17523: \$? = $ac_status" >&5
+  echo "$as_me:17840: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_have_curses_lib=yes
 else
@@ -17537,7 +17854,7 @@ cat "conftest.$ac_ext" >&5
 cf_have_curses_lib=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:17540: result: $cf_have_curses_lib" >&5
+               echo "$as_me:17857: result: $cf_have_curses_lib" >&5
 echo "${ECHO_T}$cf_have_curses_lib" >&6
                test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes
                if test "$cf_have_curses_lib" = "yes"
@@ -17558,7 +17875,7 @@ EOF
 fi
 if test "$cf_have_curses_lib" = no; then
        as_ac_Lib=`echo "ac_cv_lib_$MENU_NAME$cf_cv_libtype''_menu_driver" | $as_tr_sh`
-echo "$as_me:17561: checking for menu_driver in -l$MENU_NAME$cf_cv_libtype" >&5
+echo "$as_me:17878: checking for menu_driver in -l$MENU_NAME$cf_cv_libtype" >&5
 echo $ECHO_N "checking for menu_driver in -l$MENU_NAME$cf_cv_libtype... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Lib+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17566,7 +17883,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-l$MENU_NAME$cf_cv_libtype  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 17569 "configure"
+#line 17886 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -17575,7 +17892,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char menu_driver ();
+char menu_driver (void);
 int
 main (void)
 {
@@ -17585,16 +17902,16 @@ menu_driver ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17588: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17905: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17591: \$? = $ac_status" >&5
+  echo "$as_me:17908: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:17594: \"$ac_try\"") >&5
+  { (eval echo "$as_me:17911: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17597: \$? = $ac_status" >&5
+  echo "$as_me:17914: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_Lib=yes"
 else
@@ -17605,7 +17922,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:17608: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
+echo "$as_me:17925: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Lib"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Lib"'}'`" = yes; then
 
@@ -17638,7 +17955,7 @@ fi
        cf_curses_headers="$cf_curses_headers menu.h"
 fi
 
-echo "$as_me:17641: checking if you want to check for form functions" >&5
+echo "$as_me:17958: checking if you want to check for form functions" >&5
 echo $ECHO_N "checking if you want to check for form functions... $ECHO_C" >&6
 
 # Check whether --enable-form or --disable-form was given.
@@ -17655,7 +17972,7 @@ else
        cf_enable_form=$cf_default_form
 
 fi;
-echo "$as_me:17658: result: $cf_enable_form" >&5
+echo "$as_me:17975: result: $cf_enable_form" >&5
 echo "${ECHO_T}$cf_enable_form" >&6
 if test $cf_enable_form = yes
 then
@@ -17664,14 +17981,14 @@ then
                ;;
        (curses*)
 
-echo "$as_me:17667: checking for NetBSD form.h" >&5
+echo "$as_me:17984: checking for NetBSD form.h" >&5
 echo $ECHO_N "checking for NetBSD form.h... $ECHO_C" >&6
 if test "${cf_cv_netbsd_form_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 17674 "configure"
+#line 17991 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -17690,16 +18007,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:17693: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18010: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:17696: \$? = $ac_status" >&5
+  echo "$as_me:18013: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:17699: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18016: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17702: \$? = $ac_status" >&5
+  echo "$as_me:18019: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_netbsd_form_h=yes
 
@@ -17711,7 +18028,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:17714: result: $cf_cv_netbsd_form_h" >&5
+echo "$as_me:18031: result: $cf_cv_netbsd_form_h" >&5
 echo "${ECHO_T}$cf_cv_netbsd_form_h" >&6
 
 test "$cf_cv_netbsd_form_h" = yes &&
@@ -17728,13 +18045,13 @@ cf_have_curses_lib=no
 if test "x${NCURSES_CONFIG_PKG}" = xnone; then
        :
 elif test "x${PKG_CONFIG:=none}" != xnone; then
-       echo "$as_me:17731: checking pkg-config for $FORM_NAME$cf_cv_libtype" >&5
+       echo "$as_me:18048: checking pkg-config for $FORM_NAME$cf_cv_libtype" >&5
 echo $ECHO_N "checking pkg-config for $FORM_NAME$cf_cv_libtype... $ECHO_C" >&6
        if "$PKG_CONFIG" --exists "$FORM_NAME$cf_cv_libtype" ; then
-               echo "$as_me:17734: result: yes" >&5
+               echo "$as_me:18051: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 
-               echo "$as_me:17737: checking if the $FORM_NAME$cf_cv_libtype package files work" >&5
+               echo "$as_me:18054: checking if the $FORM_NAME$cf_cv_libtype package files work" >&5
 echo $ECHO_N "checking if the $FORM_NAME$cf_cv_libtype package files work... $ECHO_C" >&6
 
                cf_save_CFLAGS="$CFLAGS"
@@ -17884,7 +18201,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 17887 "configure"
+#line 18204 "configure"
 #include "confdefs.h"
 #include <$FORM_NAME.h>
 int
@@ -17896,37 +18213,37 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17899: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18216: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17902: \$? = $ac_status" >&5
+  echo "$as_me:18219: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:17905: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18222: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17908: \$? = $ac_status" >&5
+  echo "$as_me:18225: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   if test "$cross_compiling" = yes; then
   cf_have_curses_lib=maybe
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 17914 "configure"
+#line 18231 "configure"
 #include "confdefs.h"
 #include <$FORM_NAME.h>
                                int main(void)
                                { (void) form_driver ( 0,0 ); return 0; }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:17921: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18238: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17924: \$? = $ac_status" >&5
+  echo "$as_me:18241: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:17926: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18243: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:17929: \$? = $ac_status" >&5
+  echo "$as_me:18246: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_have_curses_lib=yes
 else
@@ -17943,7 +18260,7 @@ cat "conftest.$ac_ext" >&5
 cf_have_curses_lib=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
-               echo "$as_me:17946: result: $cf_have_curses_lib" >&5
+               echo "$as_me:18263: result: $cf_have_curses_lib" >&5
 echo "${ECHO_T}$cf_have_curses_lib" >&6
                test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes
                if test "$cf_have_curses_lib" = "yes"
@@ -17964,7 +18281,7 @@ EOF
 fi
 if test "$cf_have_curses_lib" = no; then
        as_ac_Lib=`echo "ac_cv_lib_$FORM_NAME$cf_cv_libtype''_form_driver" | $as_tr_sh`
-echo "$as_me:17967: checking for form_driver in -l$FORM_NAME$cf_cv_libtype" >&5
+echo "$as_me:18284: checking for form_driver in -l$FORM_NAME$cf_cv_libtype" >&5
 echo $ECHO_N "checking for form_driver in -l$FORM_NAME$cf_cv_libtype... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Lib+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -17972,7 +18289,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-l$FORM_NAME$cf_cv_libtype  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 17975 "configure"
+#line 18292 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -17981,7 +18298,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char form_driver ();
+char form_driver (void);
 int
 main (void)
 {
@@ -17991,16 +18308,16 @@ form_driver ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:17994: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18311: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:17997: \$? = $ac_status" >&5
+  echo "$as_me:18314: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:18000: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18317: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18003: \$? = $ac_status" >&5
+  echo "$as_me:18320: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_Lib=yes"
 else
@@ -18011,7 +18328,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:18014: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
+echo "$as_me:18331: result: `eval echo '${'"$as_ac_Lib"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Lib"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Lib"'}'`" = yes; then
 
 for ac_header in $cf_curses_headers
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:18052: checking for $ac_header" >&5
+echo "$as_me:18369: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 18058 "configure"
+#line 18375 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:18062: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:18379: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:18068: \$? = $ac_status" >&5
+  echo "$as_me:18385: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -18084,7 +18401,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:18087: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:18404: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
 fi
 done
 
-echo "$as_me:18097: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 18103 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-_ACEOF
-if { (eval echo "$as_me:18111: \"$ac_cpp "conftest.$ac_ext"\"") >&5
-  (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  $EGREP -v '^ *\+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:18117: \$? = $ac_status" >&5
-  (exit "$ac_status"); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_cv_header_stdc=yes
-else
-  echo "$as_me: failed program was:" >&5
-  cat "conftest.$ac_ext" >&5
-  ac_cv_header_stdc=no
-fi
-rm -f conftest.err "conftest.$ac_ext"
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 18139 "configure"
-#include "confdefs.h"
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -rf conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 18157 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
-else
-  ac_cv_header_stdc=no
-fi
-rm -rf conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
-  :
-else
-  cat >"conftest.$ac_ext" <<_ACEOF
-#line 18178 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \
-                     || ('j' <= (c) && (c) <= 'r') \
-                     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main (void)
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-        || toupper (i) != TOUPPER (i))
-      $ac_main_return(2);
-  $ac_main_return (0);
-}
-_ACEOF
-rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:18204: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:18207: \$? = $ac_status" >&5
-  (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:18209: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:18212: \$? = $ac_status" >&5
-  (exit "$ac_status"); }; }; then
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-cat "conftest.$ac_ext" >&5
-ac_cv_header_stdc=no
-fi
-rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
-fi
-fi
-fi
-echo "$as_me:18225: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-echo "$as_me:18235: checking whether time.h and sys/time.h may both be included" >&5
+echo "$as_me:18414: checking whether time.h and sys/time.h may both be included" >&5
 echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
 if test "${ac_cv_header_time+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 18241 "configure"
+#line 18420 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -18254,16 +18433,16 @@ return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:18257: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18436: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:18260: \$? = $ac_status" >&5
+  echo "$as_me:18439: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:18263: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18442: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18266: \$? = $ac_status" >&5
+  echo "$as_me:18445: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_header_time=yes
 else
@@ -18273,7 +18452,7 @@ ac_cv_header_time=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:18276: result: $ac_cv_header_time" >&5
+echo "$as_me:18455: result: $ac_cv_header_time" >&5
 echo "${ECHO_T}$ac_cv_header_time" >&6
 if test $ac_cv_header_time = yes; then
 
@@ -18288,7 +18467,6 @@ getopt.h \
 locale.h \
 math.h \
 stdarg.h \
-stdint.h \
 sys/ioctl.h \
 sys/select.h \
 sys/time.h \
@@ -18297,23 +18475,23 @@ unistd.h \
 
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:18300: checking for $ac_header" >&5
+echo "$as_me:18478: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 18306 "configure"
+#line 18484 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:18310: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:18488: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:18316: \$? = $ac_status" >&5
+  echo "$as_me:18494: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -18332,7 +18510,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:18335: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:18513: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -18345,23 +18523,23 @@ done
 for ac_header in unistd.h getopt.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:18348: checking for $ac_header" >&5
+echo "$as_me:18526: checking for $ac_header" >&5
 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
 if eval "test \"\${$as_ac_Header+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 18354 "configure"
+#line 18532 "configure"
 #include "confdefs.h"
 #include <$ac_header>
 _ACEOF
-if { (eval echo "$as_me:18358: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:18536: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:18364: \$? = $ac_status" >&5
+  echo "$as_me:18542: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -18380,7 +18558,7 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:18383: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
+echo "$as_me:18561: result: `eval echo '${'"$as_ac_Header"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_Header"'}'`" >&6
 if test "`eval echo '${'"$as_ac_Header"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -18390,7 +18568,7 @@ EOF
 fi
 done
 
-echo "$as_me:18393: checking for header declaring getopt variables" >&5
+echo "$as_me:18571: checking for header declaring getopt variables" >&5
 echo $ECHO_N "checking for header declaring getopt variables... $ECHO_C" >&6
 if test "${cf_cv_getopt_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -18400,7 +18578,7 @@ cf_cv_getopt_header=none
 for cf_header in stdio.h stdlib.h unistd.h getopt.h
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 18403 "configure"
+#line 18581 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -18413,16 +18591,16 @@ int x = optind; char *y = optarg; (void)x; (void)y
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:18416: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18594: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:18419: \$? = $ac_status" >&5
+  echo "$as_me:18597: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:18422: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18600: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18425: \$? = $ac_status" >&5
+  echo "$as_me:18603: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_getopt_header=$cf_header
  break
@@ -18434,7 +18612,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:18437: result: $cf_cv_getopt_header" >&5
+echo "$as_me:18615: result: $cf_cv_getopt_header" >&5
 echo "${ECHO_T}$cf_cv_getopt_header" >&6
 if test "$cf_cv_getopt_header" != none ; then
 
 
 fi
 
+echo "$as_me:18632: checking for clock_gettime" >&5
+echo $ECHO_N "checking for clock_gettime... $ECHO_C" >&6
+if test "${cf_cv_func_clock_gettime+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+               cat >"conftest.$ac_ext" <<_ACEOF
+#line 18639 "configure"
+#include "confdefs.h"
+#include <time.h>
+int
+main (void)
+{
+struct timespec ts;
+               int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext" "conftest$ac_exeext"
+if { (eval echo "$as_me:18652: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:18655: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest$ac_exeext"'
+  { (eval echo "$as_me:18658: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:18661: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  cf_cv_func_clock_gettime=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+cf_cv_func_clock_gettime=no
+fi
+rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
+
+fi
+echo "$as_me:18672: result: $cf_cv_func_clock_gettime" >&5
+echo "${ECHO_T}$cf_cv_func_clock_gettime" >&6
+
+if test "$cf_cv_func_clock_gettime" = yes
+then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_CLOCK_GETTIME 1
+EOF
+
+else
+echo "$as_me:18683: checking for gettimeofday" >&5
+echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6
+if test "${ac_cv_func_gettimeofday+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >"conftest.$ac_ext" <<_ACEOF
+#line 18689 "configure"
+#include "confdefs.h"
+#define gettimeofday autoconf_temporary
+#include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
+#undef gettimeofday
+
+#ifdef __cplusplus
+extern "C"
+#endif
+
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char gettimeofday (void);
+
+int
+main (void)
+{
+
+/* The GNU C library defines stubs for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday)
+#error found stub for gettimeofday
+#endif
+
+       return gettimeofday ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext" "conftest$ac_exeext"
+if { (eval echo "$as_me:18720: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:18723: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest$ac_exeext"'
+  { (eval echo "$as_me:18726: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:18729: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  ac_cv_func_gettimeofday=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+ac_cv_func_gettimeofday=no
+fi
+rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
+fi
+echo "$as_me:18739: result: $ac_cv_func_gettimeofday" >&5
+echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6
+if test "$ac_cv_func_gettimeofday" = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_GETTIMEOFDAY 1
+EOF
+
+else
+
+echo "$as_me:18749: checking for gettimeofday in -lbsd" >&5
+echo $ECHO_N "checking for gettimeofday in -lbsd... $ECHO_C" >&6
+if test "${ac_cv_lib_bsd_gettimeofday+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat >"conftest.$ac_ext" <<_ACEOF
+#line 18757 "configure"
+#include "confdefs.h"
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char gettimeofday (void);
+int
+main (void)
+{
+gettimeofday ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f "conftest.$ac_objext" "conftest$ac_exeext"
+if { (eval echo "$as_me:18776: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:18779: \$? = $ac_status" >&5
+  (exit "$ac_status"); } &&
+         { ac_try='test -s "conftest$ac_exeext"'
+  { (eval echo "$as_me:18782: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:18785: \$? = $ac_status" >&5
+  (exit "$ac_status"); }; }; then
+  ac_cv_lib_bsd_gettimeofday=yes
+else
+  echo "$as_me: failed program was:" >&5
+cat "conftest.$ac_ext" >&5
+ac_cv_lib_bsd_gettimeofday=no
+fi
+rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:18796: result: $ac_cv_lib_bsd_gettimeofday" >&5
+echo "${ECHO_T}$ac_cv_lib_bsd_gettimeofday" >&6
+if test "$ac_cv_lib_bsd_gettimeofday" = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_GETTIMEOFDAY 1
+EOF
+
+cf_add_libs="$LIBS"
+# reverse order
+cf_add_0lib=
+for cf_add_1lib in -lbsd; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
+# filter duplicates
+for cf_add_1lib in $cf_add_0lib; do
+       for cf_add_2lib in $cf_add_libs; do
+               if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
+                       cf_add_1lib=
+                       break
+               fi
+       done
+       test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
+done
+LIBS="$cf_add_libs"
+
+fi
+
+fi
+fi
+
 for ac_func in \
-cfmakeraw \
 getopt \
-gettimeofday \
 snprintf \
 strdup \
 strstr \
@@ -18462,13 +18831,13 @@ tsearch \
 
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:18465: checking for $ac_func" >&5
+echo "$as_me:18834: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 18471 "configure"
+#line 18840 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -18499,16 +18868,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:18502: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18871: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:18505: \$? = $ac_status" >&5
+  echo "$as_me:18874: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:18508: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18877: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18511: \$? = $ac_status" >&5
+  echo "$as_me:18880: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -18518,7 +18887,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:18521: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:18890: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
 done
 
 # use a compile-check to work with ncurses*-config and subdirectory includes
-echo "$as_me:18532: checking if we can use termcap.h" >&5
+echo "$as_me:18901: checking if we can use termcap.h" >&5
 echo $ECHO_N "checking if we can use termcap.h... $ECHO_C" >&6
 if test "${cf_cv_have_termcap_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 18539 "configure"
+#line 18908 "configure"
 #include "confdefs.h"
 
 #include <curses.h>
@@ -18557,16 +18926,16 @@ return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:18560: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18929: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:18563: \$? = $ac_status" >&5
+  echo "$as_me:18932: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:18566: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18935: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18569: \$? = $ac_status" >&5
+  echo "$as_me:18938: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have_termcap_h=yes
 else
@@ -18576,7 +18945,7 @@ cf_cv_have_termcap_h=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:18579: result: $cf_cv_have_termcap_h" >&5
+echo "$as_me:18948: result: $cf_cv_have_termcap_h" >&5
 echo "${ECHO_T}$cf_cv_have_termcap_h" >&6
 if test "x$cf_cv_have_termcap_h" = xyes
 then
@@ -18586,14 +18955,14 @@ cat >>confdefs.h <<\EOF
 EOF
 
 else
-echo "$as_me:18589: checking if we can use ncurses/termcap.h" >&5
+echo "$as_me:18958: checking if we can use ncurses/termcap.h" >&5
 echo $ECHO_N "checking if we can use ncurses/termcap.h... $ECHO_C" >&6
 if test "${cf_cv_have_ncurses_termcap_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 18596 "configure"
+#line 18965 "configure"
 #include "confdefs.h"
 
 #include <ncurses/curses.h>
@@ -18614,16 +18983,16 @@ return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:18617: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18986: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:18620: \$? = $ac_status" >&5
+  echo "$as_me:18989: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:18623: \"$ac_try\"") >&5
+  { (eval echo "$as_me:18992: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18626: \$? = $ac_status" >&5
+  echo "$as_me:18995: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_have_ncurses_termcap_h=yes
 else
@@ -18633,7 +19002,7 @@ cf_cv_have_ncurses_termcap_h=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:18636: result: $cf_cv_have_ncurses_termcap_h" >&5
+echo "$as_me:19005: result: $cf_cv_have_ncurses_termcap_h" >&5
 echo "${ECHO_T}$cf_cv_have_ncurses_termcap_h" >&6
 test "x$cf_cv_have_ncurses_termcap_h" = xyes &&
 cat >>confdefs.h <<\EOF
@@ -18643,7 +19012,7 @@ EOF
 fi
 
 if test "x$ac_cv_func_getopt" = xno; then
-       { { echo "$as_me:18646: error: getopt is required for building programs" >&5
+       { { echo "$as_me:19015: error: getopt is required for building programs" >&5
 echo "$as_me: error: getopt is required for building programs" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -18662,13 +19031,13 @@ wcstombs \
 
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:18665: checking for $ac_func" >&5
+echo "$as_me:19034: checking for $ac_func" >&5
 echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
 if eval "test \"\${$as_ac_var+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 18671 "configure"
+#line 19040 "configure"
 #include "confdefs.h"
 #define $ac_func autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -18699,16 +19068,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:18702: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19071: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:18705: \$? = $ac_status" >&5
+  echo "$as_me:19074: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:18708: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19077: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18711: \$? = $ac_status" >&5
+  echo "$as_me:19080: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   eval "$as_ac_var=yes"
 else
@@ -18718,7 +19087,7 @@ eval "$as_ac_var=no"
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:18721: result: `eval echo '${'"$as_ac_var"'}'`" >&5
+echo "$as_me:19090: result: `eval echo '${'"$as_ac_var"'}'`" >&5
 echo "${ECHO_T}`eval echo '${'"$as_ac_var"'}'`" >&6
 if test "`eval echo '${'"$as_ac_var"'}'`" = yes; then
   cat >>confdefs.h <<EOF
@@ -18730,7 +19099,7 @@ done
 
 fi
 
-echo "$as_me:18733: checking definition to turn on extended curses functions" >&5
+echo "$as_me:19102: checking definition to turn on extended curses functions" >&5
 echo $ECHO_N "checking definition to turn on extended curses functions... $ECHO_C" >&6
 if test "${cf_cv_need_xopen_extension+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -18738,7 +19107,7 @@ else
 
 cf_cv_need_xopen_extension=unknown
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 18741 "configure"
+#line 19110 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -18749,15 +19118,16 @@ main (void)
 
 #if defined(NCURSES_VERSION_PATCH)
 #if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403)
-       make an error
+       #error disallow ncurses versions between 2020/04/03 and 2010/05/01
 #endif
 #endif
 #ifdef NCURSES_WIDECHAR
-make an error  /* prefer to fall-through on the second checks */
+#error prefer to fall-through on the second checks
 #endif
+       static char dummy[10];
        cchar_t check;
        int check2 = curs_set((int)sizeof(check));
-       long x = winnstr(stdscr, "", 0);
+       long x = winnstr(stdscr, dummy, 5);
        int x1, y1;
        (void)check2;
        getbegyx(stdscr, y1, x1);
@@ -18770,16 +19140,16 @@ make an error /* prefer to fall-through on the second checks */
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:18773: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19143: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:18776: \$? = $ac_status" >&5
+  echo "$as_me:19146: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:18779: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19149: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18782: \$? = $ac_status" >&5
+  echo "$as_me:19152: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_need_xopen_extension=none
 else
@@ -18789,7 +19159,7 @@ cat "conftest.$ac_ext" >&5
        for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR
        do
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 18792 "configure"
+#line 19162 "configure"
 #include "confdefs.h"
 
 #define $cf_try_xopen_extension 1
@@ -18799,9 +19169,10 @@ int
 main (void)
 {
 
+               static char dummy[10];
                cchar_t check;
                int check2 = curs_set((int)sizeof(check));
-               long x = winnstr(stdscr, "", 0);
+               long x = winnstr(stdscr, dummy, 5);
                int x1, y1;
                getbegyx(stdscr, y1, x1);
                (void)check2;
@@ -18814,16 +19185,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:18817: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19188: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:18820: \$? = $ac_status" >&5
+  echo "$as_me:19191: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:18823: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19194: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18826: \$? = $ac_status" >&5
+  echo "$as_me:19197: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_need_xopen_extension=$cf_try_xopen_extension; break
 else
@@ -18837,7 +19208,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:18840: result: $cf_cv_need_xopen_extension" >&5
+echo "$as_me:19211: result: $cf_cv_need_xopen_extension" >&5
 echo "${ECHO_T}$cf_cv_need_xopen_extension" >&6
 
 case "$cf_cv_need_xopen_extension" in
@@ -18849,7 +19220,7 @@ case "$cf_cv_need_xopen_extension" in
        ;;
 esac
 
-echo "$as_me:18852: checking for term.h" >&5
+echo "$as_me:19223: checking for term.h" >&5
 echo $ECHO_N "checking for term.h... $ECHO_C" >&6
 if test "${cf_cv_term_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -18870,7 +19241,7 @@ esac
 for cf_header in $cf_header_list
 do
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 18873 "configure"
+#line 19244 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -18884,16 +19255,16 @@ WINDOW *x; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:18887: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19258: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:18890: \$? = $ac_status" >&5
+  echo "$as_me:19261: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:18893: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19264: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18896: \$? = $ac_status" >&5
+  echo "$as_me:19267: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_term_header=$cf_header
         break
@@ -18912,14 +19283,14 @@ case "$cf_cv_term_header" in
        for cf_header in ncurses/term.h ncursesw/term.h
        do
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 18915 "configure"
+#line 19286 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
 #ifdef NCURSES_VERSION
 #include <${cf_header}>
 #else
-make an error
+#error expected NCURSES_VERSION to be defined
 #endif
 int
 main (void)
@@ -18930,16 +19301,16 @@ WINDOW *x; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:18933: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19304: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:18936: \$? = $ac_status" >&5
+  echo "$as_me:19307: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:18939: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19310: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:18942: \$? = $ac_status" >&5
+  echo "$as_me:19313: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_term_header=$cf_header
                         break
@@ -18954,7 +19325,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 esac
 
 fi
-echo "$as_me:18957: result: $cf_cv_term_header" >&5
+echo "$as_me:19328: result: $cf_cv_term_header" >&5
 echo "${ECHO_T}$cf_cv_term_header" >&6
 
 case "$cf_cv_term_header" in
@@ -18981,7 +19352,7 @@ EOF
        ;;
 esac
 
-echo "$as_me:18984: checking for unctrl.h" >&5
+echo "$as_me:19355: checking for unctrl.h" >&5
 echo $ECHO_N "checking for unctrl.h... $ECHO_C" >&6
 if test "${cf_cv_unctrl_header+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19002,7 +19373,7 @@ esac
 for cf_header in $cf_header_list
 do
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 19005 "configure"
+#line 19376 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -19016,16 +19387,16 @@ WINDOW *x; (void)x
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:19019: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19390: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:19022: \$? = $ac_status" >&5
+  echo "$as_me:19393: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:19025: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19396: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19028: \$? = $ac_status" >&5
+  echo "$as_me:19399: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_unctrl_header=$cf_header
         break
@@ -19038,12 +19409,12 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:19041: result: $cf_cv_unctrl_header" >&5
+echo "$as_me:19412: result: $cf_cv_unctrl_header" >&5
 echo "${ECHO_T}$cf_cv_unctrl_header" >&6
 
 case "$cf_cv_unctrl_header" in
 (no)
-       { echo "$as_me:19046: WARNING: unctrl.h header not found" >&5
+       { echo "$as_me:19417: WARNING: unctrl.h header not found" >&5
 echo "$as_me: WARNING: unctrl.h header not found" >&2;}
        ;;
 esac
@@ -19073,6 +19444,8 @@ EOF
 esac
 
 for cf_func in \
+_nc_tparm_analyze \
+_tracef \
 alloc_pair \
 assume_default_colors \
 chgat \
@@ -19114,6 +19487,9 @@ termname \
 tgetent \
 tigetnum \
 tigetstr \
+tiparm \
+tiparm_s \
+tiscan_s \
 tputs_sp \
 typeahead \
 unget_wch \
@@ -19131,16 +19507,15 @@ winsdelln \
 winsstr \
 wresize \
 wsyncdown \
-_tracef \
 
 do
 
 cf_tr_func=`echo "$cf_func" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
 
-       echo "$as_me:19140: checking for ${cf_func}" >&5
+       echo "$as_me:19515: checking for ${cf_func}" >&5
 echo $ECHO_N "checking for ${cf_func}... $ECHO_C" >&6
 
-echo "${as_me:-configure}:19143: testing ${cf_func} ..." 1>&5
+echo "${as_me:-configure}:19518: testing ${cf_func} ..." 1>&5
 
        if eval "test \"\${cf_cv_func_$cf_func+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19149,7 +19524,7 @@ else
                eval cf_result='$ac_cv_func_'$cf_func
                if test ".$cf_result" != ".no"; then
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 19152 "configure"
+#line 19527 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_XCURSES
@@ -19182,16 +19557,16 @@ if (foo + 1234L > 5678L)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19185: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19560: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19188: \$? = $ac_status" >&5
+  echo "$as_me:19563: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19191: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19566: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19194: \$? = $ac_status" >&5
+  echo "$as_me:19569: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -19207,7 +19582,7 @@ fi
 
        # use the computed/retrieved cache-value:
        eval 'cf_result=$cf_cv_func_'$cf_func
-       echo "$as_me:19210: result: $cf_result" >&5
+       echo "$as_me:19585: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
        if test "$cf_result" != no; then
                cat >>confdefs.h <<EOF
 
 cf_tr_func=`echo "$cf_func" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
 
-       echo "$as_me:19225: checking for ${cf_func}" >&5
+       echo "$as_me:19600: checking for ${cf_func}" >&5
 echo $ECHO_N "checking for ${cf_func}... $ECHO_C" >&6
 
-echo "${as_me:-configure}:19228: testing ${cf_func} ..." 1>&5
+echo "${as_me:-configure}:19603: testing ${cf_func} ..." 1>&5
 
        if eval "test \"\${cf_cv_func_$cf_func+set}\" = set"; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19234,7 +19609,7 @@ else
                eval cf_result='$ac_cv_func_'$cf_func
                if test ".$cf_result" != ".no"; then
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 19237 "configure"
+#line 19612 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_XCURSES
@@ -19267,16 +19642,16 @@ if (foo + 1234L > 5678L)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19270: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19645: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19273: \$? = $ac_status" >&5
+  echo "$as_me:19648: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19276: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19651: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19279: \$? = $ac_status" >&5
+  echo "$as_me:19654: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -19292,7 +19667,7 @@ fi
 
        # use the computed/retrieved cache-value:
        eval 'cf_result=$cf_cv_func_'$cf_func
-       echo "$as_me:19295: result: $cf_result" >&5
+       echo "$as_me:19670: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
        if test "$cf_result" != no; then
                cat >>confdefs.h <<EOF
@@ -19316,7 +19691,7 @@ then
                                cf_return="return value"
                        fi
                        cat >"conftest.$ac_ext" <<_ACEOF
-#line 19319 "configure"
+#line 19694 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -19336,21 +19711,21 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:19339: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19714: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:19342: \$? = $ac_status" >&5
+  echo "$as_me:19717: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:19345: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19720: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19348: \$? = $ac_status" >&5
+  echo "$as_me:19723: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                test -n "$verbose" && echo "    prototype $cf_ret func($cf_arg value)" 1>&6
 
-echo "${as_me:-configure}:19353: testing prototype $cf_ret func($cf_arg value) ..." 1>&5
+echo "${as_me:-configure}:19728: testing prototype $cf_ret func($cf_arg value) ..." 1>&5
 
                cat >>confdefs.h <<EOF
 #define TPUTS_ARG               $cf_arg
@@ -19370,14 +19745,14 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
        done
 fi
 
-echo "$as_me:19373: checking for ncurses extended functions" >&5
+echo "$as_me:19748: checking for ncurses extended functions" >&5
 echo $ECHO_N "checking for ncurses extended functions... $ECHO_C" >&6
 if test "${cf_cv_ncurses_ext_funcs+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19380 "configure"
+#line 19755 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -19392,16 +19767,16 @@ int x = NCURSES_EXT_FUNCS
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:19395: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19770: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:19398: \$? = $ac_status" >&5
+  echo "$as_me:19773: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:19401: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19776: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19404: \$? = $ac_status" >&5
+  echo "$as_me:19779: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_ext_funcs=defined
 else
@@ -19409,7 +19784,7 @@ else
 cat "conftest.$ac_ext" >&5
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19412 "configure"
+#line 19787 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -19434,16 +19809,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19437: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19812: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19440: \$? = $ac_status" >&5
+  echo "$as_me:19815: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19443: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19818: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19446: \$? = $ac_status" >&5
+  echo "$as_me:19821: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_ncurses_ext_funcs=yes
 else
@@ -19457,7 +19832,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:19460: result: $cf_cv_ncurses_ext_funcs" >&5
+echo "$as_me:19835: result: $cf_cv_ncurses_ext_funcs" >&5
 echo "${ECHO_T}$cf_cv_ncurses_ext_funcs" >&6
 test "$cf_cv_ncurses_ext_funcs" = yes &&
 cat >>confdefs.h <<\EOF
@@ -19471,11 +19846,11 @@ then
        if test -n "$cf_cv_ncurses_version" && test "x$cf_cv_ncurses_version" != xno
        then
                cf_define_xpg5=no
-               echo "$as_me:19474: checking if _XPG5 should be defined to enable wide-characters" >&5
+               echo "$as_me:19849: checking if _XPG5 should be defined to enable wide-characters" >&5
 echo $ECHO_N "checking if _XPG5 should be defined to enable wide-characters... $ECHO_C" >&6
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 19478 "configure"
+#line 19853 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -19488,16 +19863,16 @@ int x = _XPG5
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:19491: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19866: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:19494: \$? = $ac_status" >&5
+  echo "$as_me:19869: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:19497: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19872: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19500: \$? = $ac_status" >&5
+  echo "$as_me:19875: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
@@ -19506,7 +19881,7 @@ cat "conftest.$ac_ext" >&5
 cf_save_cppflags="$CPPFLAGS"
                         CPPFLAGS="$CPPFLAGS -D_XPG5"
                         cat >"conftest.$ac_ext" <<_ACEOF
-#line 19509 "configure"
+#line 19884 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -19519,16 +19894,16 @@ int x = _XPG5
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:19522: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19897: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:19525: \$? = $ac_status" >&5
+  echo "$as_me:19900: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:19528: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19903: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19531: \$? = $ac_status" >&5
+  echo "$as_me:19906: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_define_xpg5=yes
 else
@@ -19539,7 +19914,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
                         CPPFLAGS="$cf_save_cppflags"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-               echo "$as_me:19542: result: $cf_define_xpg5" >&5
+               echo "$as_me:19917: result: $cf_define_xpg5" >&5
 echo "${ECHO_T}$cf_define_xpg5" >&6
 
                if test "$cf_define_xpg5" = yes
@@ -19548,14 +19923,14 @@ echo "${ECHO_T}$cf_define_xpg5" >&6
                fi
        fi
 
-       echo "$as_me:19551: checking for wide-character functions" >&5
+       echo "$as_me:19926: checking for wide-character functions" >&5
 echo $ECHO_N "checking for wide-character functions... $ECHO_C" >&6
 if test "${cf_cv_widechar_funcs+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 19558 "configure"
+#line 19933 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -19572,16 +19947,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19575: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19950: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19578: \$? = $ac_status" >&5
+  echo "$as_me:19953: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19581: \"$ac_try\"") >&5
+  { (eval echo "$as_me:19956: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19584: \$? = $ac_status" >&5
+  echo "$as_me:19959: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_widechar_funcs=yes
 else
@@ -19592,7 +19967,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:19595: result: $cf_cv_widechar_funcs" >&5
+echo "$as_me:19970: result: $cf_cv_widechar_funcs" >&5
 echo "${ECHO_T}$cf_cv_widechar_funcs" >&6
        if test "$cf_cv_widechar_funcs" != no ; then
 
@@ -19613,14 +19988,14 @@ EOF
 
 fi
 
-echo "$as_me:19616: checking if $cf_cv_screen library uses pthreads" >&5
+echo "$as_me:19991: checking if $cf_cv_screen library uses pthreads" >&5
 echo $ECHO_N "checking if $cf_cv_screen library uses pthreads... $ECHO_C" >&6
 if test "${cf_cv_use_pthreads+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19623 "configure"
+#line 19998 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -19638,16 +20013,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19641: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20016: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19644: \$? = $ac_status" >&5
+  echo "$as_me:20019: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19647: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20022: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19650: \$? = $ac_status" >&5
+  echo "$as_me:20025: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_use_pthreads=yes
 else
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:19661: result: $cf_cv_use_pthreads" >&5
+echo "$as_me:20036: result: $cf_cv_use_pthreads" >&5
 echo "${ECHO_T}$cf_cv_use_pthreads" >&6
 test $cf_cv_use_pthreads = yes &&
 cat >>confdefs.h <<\EOF
 #define USE_PTHREADS 1
 EOF
 
-echo "$as_me:19668: checking if sys/time.h works with sys/select.h" >&5
+echo "$as_me:20043: checking if sys/time.h works with sys/select.h" >&5
 echo $ECHO_N "checking if sys/time.h works with sys/select.h... $ECHO_C" >&6
 if test "${cf_cv_sys_time_select+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19675 "configure"
+#line 20050 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -19692,16 +20067,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:19695: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20070: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:19698: \$? = $ac_status" >&5
+  echo "$as_me:20073: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:19701: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20076: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19704: \$? = $ac_status" >&5
+  echo "$as_me:20079: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_sys_time_select=yes
 else
@@ -19713,7 +20088,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
 
-echo "$as_me:19716: result: $cf_cv_sys_time_select" >&5
+echo "$as_me:20091: result: $cf_cv_sys_time_select" >&5
 echo "${ECHO_T}$cf_cv_sys_time_select" >&6
 test "$cf_cv_sys_time_select" = yes &&
 cat >>confdefs.h <<\EOF
@@ -19722,7 +20097,7 @@ EOF
 
 # special check for test/ditto.c
 
-echo "$as_me:19725: checking for openpty in -lutil" >&5
+echo "$as_me:20100: checking for openpty in -lutil" >&5
 echo $ECHO_N "checking for openpty in -lutil... $ECHO_C" >&6
 if test "${ac_cv_lib_util_openpty+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19730,7 +20105,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lutil  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19733 "configure"
+#line 20108 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -19739,7 +20114,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char openpty ();
+char openpty (void);
 int
 main (void)
 {
@@ -19749,16 +20124,16 @@ openpty ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19752: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20127: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19755: \$? = $ac_status" >&5
+  echo "$as_me:20130: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19758: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20133: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19761: \$? = $ac_status" >&5
+  echo "$as_me:20136: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_util_openpty=yes
 else
@@ -19769,7 +20144,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:19772: result: $ac_cv_lib_util_openpty" >&5
+echo "$as_me:20147: result: $ac_cv_lib_util_openpty" >&5
 echo "${ECHO_T}$ac_cv_lib_util_openpty" >&6
 if test "$ac_cv_lib_util_openpty" = yes; then
   cf_cv_lib_util=yes
@@ -19777,7 +20152,7 @@ else
   cf_cv_lib_util=no
 fi
 
-echo "$as_me:19780: checking for openpty header" >&5
+echo "$as_me:20155: checking for openpty header" >&5
 echo $ECHO_N "checking for openpty header... $ECHO_C" >&6
 if test "${cf_cv_func_openpty+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19804,7 +20179,7 @@ LIBS="$cf_add_libs"
        for cf_header in pty.h libutil.h util.h
        do
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 19807 "configure"
+#line 20182 "configure"
 #include "confdefs.h"
 
 #include <$cf_header>
@@ -19815,22 +20190,23 @@ main (void)
 
        int x = openpty((int *)0, (int *)0, (char *)0,
                                   (struct termios *)0, (struct winsize *)0);
+       (void)x;
 
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19824: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20200: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19827: \$? = $ac_status" >&5
+  echo "$as_me:20203: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19830: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20206: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19833: \$? = $ac_status" >&5
+  echo "$as_me:20209: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                cf_cv_func_openpty=$cf_header
@@ -19848,7 +20224,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
        LIBS="$cf_save_LIBS"
 
 fi
-echo "$as_me:19851: result: $cf_cv_func_openpty" >&5
+echo "$as_me:20227: result: $cf_cv_func_openpty" >&5
 echo "${ECHO_T}$cf_cv_func_openpty" >&6
 
 if test "$cf_cv_func_openpty" != no ; then
@@ -19882,7 +20258,7 @@ TEST_LIBS="$cf_add_libs"
        fi
 fi
 
-echo "$as_me:19885: checking for function curses_version" >&5
+echo "$as_me:20261: checking for function curses_version" >&5
 echo $ECHO_N "checking for function curses_version... $ECHO_C" >&6
 if test "${cf_cv_func_curses_version+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19892,7 +20268,7 @@ if test "$cross_compiling" = yes; then
   cf_cv_func_curses_version=unknown
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 19895 "configure"
+#line 20271 "configure"
 #include "confdefs.h"
 
 $ac_includes_default
@@ -19908,15 +20284,15 @@ int main(void)
 
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:19911: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20287: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19914: \$? = $ac_status" >&5
+  echo "$as_me:20290: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:19916: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20292: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19919: \$? = $ac_status" >&5
+  echo "$as_me:20295: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_func_curses_version=yes
 
@@ -19931,14 +20307,14 @@ rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftes
 fi
 rm -f core
 fi
-echo "$as_me:19934: result: $cf_cv_func_curses_version" >&5
+echo "$as_me:20310: result: $cf_cv_func_curses_version" >&5
 echo "${ECHO_T}$cf_cv_func_curses_version" >&6
 test "$cf_cv_func_curses_version" = yes &&
 cat >>confdefs.h <<\EOF
 #define HAVE_CURSES_VERSION 1
 EOF
 
-echo "$as_me:19941: checking for alternate character set array" >&5
+echo "$as_me:20317: checking for alternate character set array" >&5
 echo $ECHO_N "checking for alternate character set array... $ECHO_C" >&6
 if test "${cf_cv_curses_acs_map+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19948,7 +20324,7 @@ cf_cv_curses_acs_map=unknown
 for name in acs_map _acs_map __acs_map ${NCURSES_WRAP_PREFIX}acs_map
 do
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 19951 "configure"
+#line 20327 "configure"
 #include "confdefs.h"
 
 #include <${cf_cv_ncurses_header:-curses.h}>
@@ -19964,16 +20340,16 @@ ${name}['k'] = ACS_PLUS
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:19967: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20343: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:19970: \$? = $ac_status" >&5
+  echo "$as_me:20346: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:19973: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20349: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:19976: \$? = $ac_status" >&5
+  echo "$as_me:20352: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_curses_acs_map=$name; break
 else
@@ -19984,7 +20360,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 done
 
 fi
-echo "$as_me:19987: result: $cf_cv_curses_acs_map" >&5
+echo "$as_me:20363: result: $cf_cv_curses_acs_map" >&5
 echo "${ECHO_T}$cf_cv_curses_acs_map" >&6
 
 test "$cf_cv_curses_acs_map" != unknown &&
@@ -19994,7 +20370,7 @@ EOF
 
 if test "$cf_enable_widec" = yes; then
 
-echo "$as_me:19997: checking for wide alternate character set array" >&5
+echo "$as_me:20373: checking for wide alternate character set array" >&5
 echo $ECHO_N "checking for wide alternate character set array... $ECHO_C" >&6
 if test "${cf_cv_curses_wacs_map+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -20004,7 +20380,7 @@ else
        for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char
        do
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 20007 "configure"
+#line 20383 "configure"
 #include "confdefs.h"
 
 #ifndef _XOPEN_SOURCE_EXTENDED
@@ -20020,16 +20396,16 @@ void *foo = &(${name}['k']); (void)foo
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20023: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20399: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20026: \$? = $ac_status" >&5
+  echo "$as_me:20402: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20029: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20405: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20032: \$? = $ac_status" >&5
+  echo "$as_me:20408: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_curses_wacs_map=$name
         break
@@ -20040,7 +20416,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
        done
 fi
-echo "$as_me:20043: result: $cf_cv_curses_wacs_map" >&5
+echo "$as_me:20419: result: $cf_cv_curses_wacs_map" >&5
 echo "${ECHO_T}$cf_cv_curses_wacs_map" >&6
 
 test "$cf_cv_curses_wacs_map" != unknown &&
@@ -20048,7 +20424,7 @@ cat >>confdefs.h <<EOF
 #define CURSES_WACS_ARRAY $cf_cv_curses_wacs_map
 EOF
 
-echo "$as_me:20051: checking for wide alternate character constants" >&5
+echo "$as_me:20427: checking for wide alternate character constants" >&5
 echo $ECHO_N "checking for wide alternate character constants... $ECHO_C" >&6
 if test "${cf_cv_curses_wacs_symbols+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -20058,7 +20434,7 @@ cf_cv_curses_wacs_symbols=no
 if test "$cf_cv_curses_wacs_map" != unknown
 then
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 20061 "configure"
+#line 20437 "configure"
 #include "confdefs.h"
 
 #ifndef _XOPEN_SOURCE_EXTENDED
@@ -20075,16 +20451,16 @@ cchar_t *foo = WACS_PLUS;
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20078: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20454: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20081: \$? = $ac_status" >&5
+  echo "$as_me:20457: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20084: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20460: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20087: \$? = $ac_status" >&5
+  echo "$as_me:20463: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_curses_wacs_symbols=yes
 else
@@ -20094,7 +20470,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 else
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 20097 "configure"
+#line 20473 "configure"
 #include "confdefs.h"
 
 #ifndef _XOPEN_SOURCE_EXTENDED
@@ -20110,16 +20486,16 @@ cchar_t *foo = WACS_PLUS; (void)foo
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20113: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20489: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20116: \$? = $ac_status" >&5
+  echo "$as_me:20492: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20119: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20495: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20122: \$? = $ac_status" >&5
+  echo "$as_me:20498: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_curses_wacs_symbols=yes
 else
@@ -20130,7 +20506,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
 
 fi
-echo "$as_me:20133: result: $cf_cv_curses_wacs_symbols" >&5
+echo "$as_me:20509: result: $cf_cv_curses_wacs_symbols" >&5
 echo "${ECHO_T}$cf_cv_curses_wacs_symbols" >&6
 
 test "$cf_cv_curses_wacs_symbols" != no &&
@@ -20140,10 +20516,10 @@ EOF
 
 fi
 
-echo "$as_me:20143: checking for type attr_t in ${cf_cv_ncurses_header:-curses.h}" >&5
+echo "$as_me:20519: checking for type attr_t in ${cf_cv_ncurses_header:-curses.h}" >&5
 echo $ECHO_N "checking for type attr_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20146 "configure"
+#line 20522 "configure"
 #include "confdefs.h"
 
 #ifndef _XOPEN_SOURCE_EXTENDED
@@ -20161,16 +20537,16 @@ attr_t foo
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20164: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20540: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20167: \$? = $ac_status" >&5
+  echo "$as_me:20543: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20170: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20546: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20173: \$? = $ac_status" >&5
+  echo "$as_me:20549: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -20179,7 +20555,7 @@ cat "conftest.$ac_ext" >&5
 cf_result=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-echo "$as_me:20182: result: $cf_result" >&5
+echo "$as_me:20558: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
 if test "$cf_result" = yes ; then
 
 if test "$cf_enable_widec" = yes; then
 
 # This is needed on Tru64 5.0 to declare mbstate_t
-echo "$as_me:20203: checking if we must include wchar.h to declare mbstate_t" >&5
+echo "$as_me:20579: checking if we must include wchar.h to declare mbstate_t" >&5
 echo $ECHO_N "checking if we must include wchar.h to declare mbstate_t... $ECHO_C" >&6
 if test "${cf_cv_mbstate_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20210 "configure"
+#line 20586 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -20219,29 +20595,29 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-mbstate_t state
+mbstate_t state; (void)state
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20228: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20604: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20231: \$? = $ac_status" >&5
+  echo "$as_me:20607: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20234: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20610: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20237: \$? = $ac_status" >&5
+  echo "$as_me:20613: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_mbstate_t=no
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20244 "configure"
+#line 20620 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -20254,22 +20630,22 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-mbstate_t value
+mbstate_t value; (void) value
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20263: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20639: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20266: \$? = $ac_status" >&5
+  echo "$as_me:20642: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20269: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20645: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20272: \$? = $ac_status" >&5
+  echo "$as_me:20648: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_mbstate_t=yes
 else
@@ -20281,7 +20657,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:20284: result: $cf_cv_mbstate_t" >&5
+echo "$as_me:20660: result: $cf_cv_mbstate_t" >&5
 echo "${ECHO_T}$cf_cv_mbstate_t" >&6
 
 if test "$cf_cv_mbstate_t" = yes ; then
@@ -20304,14 +20680,14 @@ if test "$cf_cv_mbstate_t" != unknown ; then
 fi
 
 # This is needed on Tru64 5.0 to declare wchar_t
-echo "$as_me:20307: checking if we must include wchar.h to declare wchar_t" >&5
+echo "$as_me:20683: checking if we must include wchar.h to declare wchar_t" >&5
 echo $ECHO_N "checking if we must include wchar.h to declare wchar_t... $ECHO_C" >&6
 if test "${cf_cv_wchar_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20314 "configure"
+#line 20690 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -20323,29 +20699,29 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-wchar_t state
+wchar_t state; (void)state
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20332: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20708: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20335: \$? = $ac_status" >&5
+  echo "$as_me:20711: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20338: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20714: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20341: \$? = $ac_status" >&5
+  echo "$as_me:20717: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_wchar_t=no
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20348 "configure"
+#line 20724 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -20358,22 +20734,22 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-wchar_t value
+wchar_t value; (void) value
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20367: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20743: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20370: \$? = $ac_status" >&5
+  echo "$as_me:20746: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20373: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20749: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20376: \$? = $ac_status" >&5
+  echo "$as_me:20752: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_wchar_t=yes
 else
@@ -20385,7 +20761,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:20388: result: $cf_cv_wchar_t" >&5
+echo "$as_me:20764: result: $cf_cv_wchar_t" >&5
 echo "${ECHO_T}$cf_cv_wchar_t" >&6
 
 if test "$cf_cv_wchar_t" = yes ; then
@@ -20408,14 +20784,14 @@ if test "$cf_cv_wchar_t" != unknown ; then
 fi
 
 # This is needed on Tru64 5.0 to declare wint_t
-echo "$as_me:20411: checking if we must include wchar.h to declare wint_t" >&5
+echo "$as_me:20787: checking if we must include wchar.h to declare wint_t" >&5
 echo $ECHO_N "checking if we must include wchar.h to declare wint_t... $ECHO_C" >&6
 if test "${cf_cv_wint_t+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20418 "configure"
+#line 20794 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -20427,29 +20803,29 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-wint_t state
+wint_t state; (void)state
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20436: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20812: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20439: \$? = $ac_status" >&5
+  echo "$as_me:20815: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20442: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20818: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20445: \$? = $ac_status" >&5
+  echo "$as_me:20821: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_wint_t=no
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20452 "configure"
+#line 20828 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -20462,22 +20838,22 @@ cat >"conftest.$ac_ext" <<_ACEOF
 int
 main (void)
 {
-wint_t value
+wint_t value; (void) value
   ;
   return 0;
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20471: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20847: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20474: \$? = $ac_status" >&5
+  echo "$as_me:20850: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20477: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20853: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20480: \$? = $ac_status" >&5
+  echo "$as_me:20856: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_cv_wint_t=yes
 else
@@ -20489,7 +20865,7 @@ rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-echo "$as_me:20492: result: $cf_cv_wint_t" >&5
+echo "$as_me:20868: result: $cf_cv_wint_t" >&5
 echo "${ECHO_T}$cf_cv_wint_t" >&6
 
 if test "$cf_cv_wint_t" = yes ; then
 
        if test "$NCURSES_OK_MBSTATE_T" = 0 ; then
 
-echo "$as_me:20516: checking for type mbstate_t in ${cf_cv_ncurses_header:-curses.h}" >&5
+echo "$as_me:20892: checking for type mbstate_t in ${cf_cv_ncurses_header:-curses.h}" >&5
 echo $ECHO_N "checking for type mbstate_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20519 "configure"
+#line 20895 "configure"
 #include "confdefs.h"
 
 #ifndef _XOPEN_SOURCE_EXTENDED
@@ -20534,16 +20910,16 @@ mbstate_t foo
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20537: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20913: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20540: \$? = $ac_status" >&5
+  echo "$as_me:20916: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20543: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20919: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20546: \$? = $ac_status" >&5
+  echo "$as_me:20922: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -20552,7 +20928,7 @@ cat "conftest.$ac_ext" >&5
 cf_result=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-echo "$as_me:20555: result: $cf_result" >&5
+echo "$as_me:20931: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
 if test "$cf_result" = yes ; then
 
 
        if test "$NCURSES_OK_WCHAR_T" = 0 ; then
 
-echo "$as_me:20577: checking for type wchar_t in ${cf_cv_ncurses_header:-curses.h}" >&5
+echo "$as_me:20953: checking for type wchar_t in ${cf_cv_ncurses_header:-curses.h}" >&5
 echo $ECHO_N "checking for type wchar_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20580 "configure"
+#line 20956 "configure"
 #include "confdefs.h"
 
 #ifndef _XOPEN_SOURCE_EXTENDED
@@ -20595,16 +20971,16 @@ wchar_t foo
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20598: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:20974: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20601: \$? = $ac_status" >&5
+  echo "$as_me:20977: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20604: \"$ac_try\"") >&5
+  { (eval echo "$as_me:20980: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20607: \$? = $ac_status" >&5
+  echo "$as_me:20983: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -20613,7 +20989,7 @@ cat "conftest.$ac_ext" >&5
 cf_result=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-echo "$as_me:20616: result: $cf_result" >&5
+echo "$as_me:20992: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
 if test "$cf_result" = yes ; then
 
 
        if test "$NCURSES_OK_WINT_T" = 0 ; then
 
-echo "$as_me:20638: checking for type wint_t in ${cf_cv_ncurses_header:-curses.h}" >&5
+echo "$as_me:21014: checking for type wint_t in ${cf_cv_ncurses_header:-curses.h}" >&5
 echo $ECHO_N "checking for type wint_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20641 "configure"
+#line 21017 "configure"
 #include "confdefs.h"
 
 #ifndef _XOPEN_SOURCE_EXTENDED
@@ -20656,16 +21032,16 @@ wint_t foo
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20659: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:21035: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20662: \$? = $ac_status" >&5
+  echo "$as_me:21038: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20665: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21041: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20668: \$? = $ac_status" >&5
+  echo "$as_me:21044: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -20674,7 +21050,7 @@ cat "conftest.$ac_ext" >&5
 cf_result=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-echo "$as_me:20677: result: $cf_result" >&5
+echo "$as_me:21053: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
 if test "$cf_result" = yes ; then
 
@@ -20703,11 +21079,11 @@ boolnames \
 boolfnames \
 ttytype
 do
-echo "$as_me:20706: checking for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h}" >&5
+echo "$as_me:21082: checking for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h}" >&5
 echo $ECHO_N "checking for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 20710 "configure"
+#line 21086 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_XCURSES
@@ -20740,16 +21116,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:20743: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:21119: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:20746: \$? = $ac_status" >&5
+  echo "$as_me:21122: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:20749: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21125: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20752: \$? = $ac_status" >&5
+  echo "$as_me:21128: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 
@@ -20759,7 +21135,7 @@ cat "conftest.$ac_ext" >&5
 cf_result=no
 fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
-echo "$as_me:20762: result: $cf_result" >&5
+echo "$as_me:21138: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
 
 if test "$cf_result" = yes ; then
@@ -20771,14 +21147,14 @@ cf_result=`echo "have_curses_data_$cf_data" | sed y%abcdefghijklmnopqrstuvwxyz./
 EOF
 
 else
-       echo "$as_me:20774: checking for data $cf_data in library" >&5
+       echo "$as_me:21150: checking for data $cf_data in library" >&5
 echo $ECHO_N "checking for data $cf_data in library... $ECHO_C" >&6
        # BSD linkers insist on making weak linkage, but resolve at runtime.
        if test "$cross_compiling" = yes; then
 
        # cross-compiling
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 20781 "configure"
+#line 21157 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_XCURSES
@@ -20817,16 +21193,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:20820: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21196: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20823: \$? = $ac_status" >&5
+  echo "$as_me:21199: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:20826: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21202: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20829: \$? = $ac_status" >&5
+  echo "$as_me:21205: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 else
@@ -20838,7 +21214,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 20841 "configure"
+#line 21217 "configure"
 #include "confdefs.h"
 
 #ifdef HAVE_XCURSES
@@ -20870,15 +21246,15 @@ int main(void)
 }
 _ACEOF
 rm -f "conftest$ac_exeext"
-if { (eval echo "$as_me:20873: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21249: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:20876: \$? = $ac_status" >&5
+  echo "$as_me:21252: \$? = $ac_status" >&5
   (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"'
-  { (eval echo "$as_me:20878: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21254: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:20881: \$? = $ac_status" >&5
+  echo "$as_me:21257: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_result=yes
 
@@ -20890,7 +21266,7 @@ cf_result=no
 fi
 rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext"
 fi
-       echo "$as_me:20893: result: $cf_result" >&5
+       echo "$as_me:21269: result: $cf_result" >&5
 echo "${ECHO_T}$cf_result" >&6
        if test "$cf_result" = yes ; then
 
@@ -20907,7 +21283,7 @@ done
 
 if test -n "$with_screen" && test "x$with_screen" = "xpdcurses"
 then
-       echo "$as_me:20910: checking for X" >&5
+       echo "$as_me:21286: checking for X" >&5
 echo $ECHO_N "checking for X... $ECHO_C" >&6
 
 # Check whether --with-x or --without-x was given.
@@ -21011,17 +21387,17 @@ if test "$ac_x_includes" = no; then
   # Guess where to find include files, by looking for Intrinsic.h.
   # First, try using that file with no special directory specified.
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 21014 "configure"
+#line 21390 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 _ACEOF
-if { (eval echo "$as_me:21018: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:21394: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:21024: \$? = $ac_status" >&5
+  echo "$as_me:21400: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -21054,7 +21430,7 @@ if test "$ac_x_libraries" = no; then
   ac_save_LIBS=$LIBS
   LIBS="-lXt $LIBS"
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 21057 "configure"
+#line 21433 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 int
@@ -21066,16 +21442,16 @@ XtMalloc (0)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21069: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21445: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21072: \$? = $ac_status" >&5
+  echo "$as_me:21448: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21075: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21451: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21078: \$? = $ac_status" >&5
+  echo "$as_me:21454: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   LIBS=$ac_save_LIBS
 # We can link X programs with no special library path.
@@ -21113,7 +21489,7 @@ fi
 fi # $with_x != no
 
 if test "$have_x" != yes; then
-  echo "$as_me:21116: result: $have_x" >&5
+  echo "$as_me:21492: result: $have_x" >&5
 echo "${ECHO_T}$have_x" >&6
   no_x=yes
 else
@@ -21123,7 +21499,7 @@ else
   # Update the cache value to reflect the command line values.
   ac_cv_have_x="have_x=yes \
                ac_x_includes=$x_includes ac_x_libraries=$x_libraries"
-  echo "$as_me:21126: result: libraries $x_libraries, headers $x_includes" >&5
+  echo "$as_me:21502: result: libraries $x_libraries, headers $x_includes" >&5
 echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6
 fi
 
@@ -21150,11 +21526,11 @@ else
     # others require no space.  Words are not sufficient . . . .
     case `(uname -sr) 2>/dev/null` in
     "SunOS 5"*)
-      echo "$as_me:21153: checking whether -R must be followed by a space" >&5
+      echo "$as_me:21529: checking whether -R must be followed by a space" >&5
 echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6
       ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
       cat >"conftest.$ac_ext" <<_ACEOF
-#line 21157 "configure"
+#line 21533 "configure"
 #include "confdefs.h"
 
 int
@@ -21166,16 +21542,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21169: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21545: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21172: \$? = $ac_status" >&5
+  echo "$as_me:21548: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21175: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21551: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21178: \$? = $ac_status" >&5
+  echo "$as_me:21554: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_R_nospace=yes
 else
@@ -21185,13 +21561,13 @@ ac_R_nospace=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
       if test $ac_R_nospace = yes; then
-       echo "$as_me:21188: result: no" >&5
+       echo "$as_me:21564: result: no" >&5
 echo "${ECHO_T}no" >&6
        X_LIBS="$X_LIBS -R$x_libraries"
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 21194 "configure"
+#line 21570 "configure"
 #include "confdefs.h"
 
 int
@@ -21203,16 +21579,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21206: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21582: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21209: \$? = $ac_status" >&5
+  echo "$as_me:21585: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21212: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21588: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21215: \$? = $ac_status" >&5
+  echo "$as_me:21591: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_R_space=yes
 else
@@ -21222,11 +21598,11 @@ ac_R_space=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
        if test $ac_R_space = yes; then
-         echo "$as_me:21225: result: yes" >&5
+         echo "$as_me:21601: result: yes" >&5
 echo "${ECHO_T}yes" >&6
          X_LIBS="$X_LIBS -R $x_libraries"
        else
-         echo "$as_me:21229: result: neither works" >&5
+         echo "$as_me:21605: result: neither works" >&5
 echo "${ECHO_T}neither works" >&6
        fi
       fi
@@ -21246,7 +21622,7 @@ echo "${ECHO_T}neither works" >&6
     # the Alpha needs dnet_stub (dnet does not exist).
     ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
     cat >"conftest.$ac_ext" <<_ACEOF
-#line 21249 "configure"
+#line 21625 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -21255,7 +21631,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char XOpenDisplay ();
+char XOpenDisplay (void);
 int
 main (void)
 {
@@ -21265,22 +21641,22 @@ XOpenDisplay ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21268: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21644: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21271: \$? = $ac_status" >&5
+  echo "$as_me:21647: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21274: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21650: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21277: \$? = $ac_status" >&5
+  echo "$as_me:21653: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   :
 else
   echo "$as_me: failed program was:" >&5
 cat "conftest.$ac_ext" >&5
-echo "$as_me:21283: checking for dnet_ntoa in -ldnet" >&5
+echo "$as_me:21659: checking for dnet_ntoa in -ldnet" >&5
 echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6
 if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21288,7 +21664,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21291 "configure"
+#line 21667 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -21297,7 +21673,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char dnet_ntoa ();
+char dnet_ntoa (void);
 int
 main (void)
 {
@@ -21307,16 +21683,16 @@ dnet_ntoa ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21310: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21686: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21313: \$? = $ac_status" >&5
+  echo "$as_me:21689: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21316: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21692: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21319: \$? = $ac_status" >&5
+  echo "$as_me:21695: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dnet_dnet_ntoa=yes
 else
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:21330: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+echo "$as_me:21706: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
 echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6
 if test "$ac_cv_lib_dnet_dnet_ntoa" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
 fi
 
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-      echo "$as_me:21337: checking for dnet_ntoa in -ldnet_stub" >&5
+      echo "$as_me:21713: checking for dnet_ntoa in -ldnet_stub" >&5
 echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6
 if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21342,7 +21718,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet_stub  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21345 "configure"
+#line 21721 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -21351,7 +21727,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char dnet_ntoa ();
+char dnet_ntoa (void);
 int
 main (void)
 {
@@ -21361,16 +21737,16 @@ dnet_ntoa ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21364: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21740: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21367: \$? = $ac_status" >&5
+  echo "$as_me:21743: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21370: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21746: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21373: \$? = $ac_status" >&5
+  echo "$as_me:21749: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dnet_stub_dnet_ntoa=yes
 else
@@ -21381,7 +21757,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:21384: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+echo "$as_me:21760: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
 echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6
 if test "$ac_cv_lib_dnet_stub_dnet_ntoa" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
@@ -21400,13 +21776,13 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
     # on Irix 5.2, according to T.E. Dickey.
     # The functions gethostbyname, getservbyname, and inet_addr are
     # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
-    echo "$as_me:21403: checking for gethostbyname" >&5
+    echo "$as_me:21779: checking for gethostbyname" >&5
 echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6
 if test "${ac_cv_func_gethostbyname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 21409 "configure"
+#line 21785 "configure"
 #include "confdefs.h"
 #define gethostbyname autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -21437,16 +21813,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21440: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21816: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21443: \$? = $ac_status" >&5
+  echo "$as_me:21819: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21446: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21822: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21449: \$? = $ac_status" >&5
+  echo "$as_me:21825: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_gethostbyname=yes
 else
@@ -21456,11 +21832,11 @@ ac_cv_func_gethostbyname=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:21459: result: $ac_cv_func_gethostbyname" >&5
+echo "$as_me:21835: result: $ac_cv_func_gethostbyname" >&5
 echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6
 
     if test $ac_cv_func_gethostbyname = no; then
-      echo "$as_me:21463: checking for gethostbyname in -lnsl" >&5
+      echo "$as_me:21839: checking for gethostbyname in -lnsl" >&5
 echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6
 if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21468,7 +21844,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21471 "configure"
+#line 21847 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -21477,7 +21853,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char gethostbyname ();
+char gethostbyname (void);
 int
 main (void)
 {
@@ -21487,16 +21863,16 @@ gethostbyname ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21490: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21866: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21493: \$? = $ac_status" >&5
+  echo "$as_me:21869: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21496: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21872: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21499: \$? = $ac_status" >&5
+  echo "$as_me:21875: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_nsl_gethostbyname=yes
 else
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:21510: result: $ac_cv_lib_nsl_gethostbyname" >&5
+echo "$as_me:21886: result: $ac_cv_lib_nsl_gethostbyname" >&5
 echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6
 if test "$ac_cv_lib_nsl_gethostbyname" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
 fi
 
       if test $ac_cv_lib_nsl_gethostbyname = no; then
-        echo "$as_me:21517: checking for gethostbyname in -lbsd" >&5
+        echo "$as_me:21893: checking for gethostbyname in -lbsd" >&5
 echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6
 if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21522,7 +21898,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21525 "configure"
+#line 21901 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -21531,7 +21907,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char gethostbyname ();
+char gethostbyname (void);
 int
 main (void)
 {
@@ -21541,16 +21917,16 @@ gethostbyname ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21544: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21920: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21547: \$? = $ac_status" >&5
+  echo "$as_me:21923: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21550: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21926: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21553: \$? = $ac_status" >&5
+  echo "$as_me:21929: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_bsd_gethostbyname=yes
 else
@@ -21561,7 +21937,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:21564: result: $ac_cv_lib_bsd_gethostbyname" >&5
+echo "$as_me:21940: result: $ac_cv_lib_bsd_gethostbyname" >&5
 echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6
 if test "$ac_cv_lib_bsd_gethostbyname" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
     # variants that don't use the nameserver (or something).  -lsocket
     # must be given before -lnsl if both are needed.  We assume that
     # if connect needs -lnsl, so does gethostbyname.
-    echo "$as_me:21580: checking for connect" >&5
+    echo "$as_me:21956: checking for connect" >&5
 echo $ECHO_N "checking for connect... $ECHO_C" >&6
 if test "${ac_cv_func_connect+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 21586 "configure"
+#line 21962 "configure"
 #include "confdefs.h"
 #define connect autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -21614,16 +21990,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21617: \"$ac_link\"") >&5
+if { (eval echo "$as_me:21993: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21620: \$? = $ac_status" >&5
+  echo "$as_me:21996: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21623: \"$ac_try\"") >&5
+  { (eval echo "$as_me:21999: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21626: \$? = $ac_status" >&5
+  echo "$as_me:22002: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_connect=yes
 else
@@ -21633,11 +22009,11 @@ ac_cv_func_connect=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:21636: result: $ac_cv_func_connect" >&5
+echo "$as_me:22012: result: $ac_cv_func_connect" >&5
 echo "${ECHO_T}$ac_cv_func_connect" >&6
 
     if test $ac_cv_func_connect = no; then
-      echo "$as_me:21640: checking for connect in -lsocket" >&5
+      echo "$as_me:22016: checking for connect in -lsocket" >&5
 echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6
 if test "${ac_cv_lib_socket_connect+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21645,7 +22021,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21648 "configure"
+#line 22024 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -21654,7 +22030,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char connect ();
+char connect (void);
 int
 main (void)
 {
@@ -21664,16 +22040,16 @@ connect ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21667: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22043: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21670: \$? = $ac_status" >&5
+  echo "$as_me:22046: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21673: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22049: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21676: \$? = $ac_status" >&5
+  echo "$as_me:22052: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_socket_connect=yes
 else
@@ -21684,7 +22060,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:21687: result: $ac_cv_lib_socket_connect" >&5
+echo "$as_me:22063: result: $ac_cv_lib_socket_connect" >&5
 echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6
 if test "$ac_cv_lib_socket_connect" = yes; then
   X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
     fi
 
     # Guillermo Gomez says -lposix is necessary on A/UX.
-    echo "$as_me:21696: checking for remove" >&5
+    echo "$as_me:22072: checking for remove" >&5
 echo $ECHO_N "checking for remove... $ECHO_C" >&6
 if test "${ac_cv_func_remove+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 21702 "configure"
+#line 22078 "configure"
 #include "confdefs.h"
 #define remove autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -21730,16 +22106,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21733: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22109: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21736: \$? = $ac_status" >&5
+  echo "$as_me:22112: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21739: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22115: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21742: \$? = $ac_status" >&5
+  echo "$as_me:22118: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_remove=yes
 else
@@ -21749,11 +22125,11 @@ ac_cv_func_remove=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:21752: result: $ac_cv_func_remove" >&5
+echo "$as_me:22128: result: $ac_cv_func_remove" >&5
 echo "${ECHO_T}$ac_cv_func_remove" >&6
 
     if test $ac_cv_func_remove = no; then
-      echo "$as_me:21756: checking for remove in -lposix" >&5
+      echo "$as_me:22132: checking for remove in -lposix" >&5
 echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6
 if test "${ac_cv_lib_posix_remove+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21761,7 +22137,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lposix  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21764 "configure"
+#line 22140 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -21770,7 +22146,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char remove ();
+char remove (void);
 int
 main (void)
 {
@@ -21780,16 +22156,16 @@ remove ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21783: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22159: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21786: \$? = $ac_status" >&5
+  echo "$as_me:22162: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21789: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22165: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21792: \$? = $ac_status" >&5
+  echo "$as_me:22168: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_posix_remove=yes
 else
@@ -21800,7 +22176,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:21803: result: $ac_cv_lib_posix_remove" >&5
+echo "$as_me:22179: result: $ac_cv_lib_posix_remove" >&5
 echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6
 if test "$ac_cv_lib_posix_remove" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
     fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-    echo "$as_me:21812: checking for shmat" >&5
+    echo "$as_me:22188: checking for shmat" >&5
 echo $ECHO_N "checking for shmat... $ECHO_C" >&6
 if test "${ac_cv_func_shmat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 21818 "configure"
+#line 22194 "configure"
 #include "confdefs.h"
 #define shmat autoconf_temporary
 #include <limits.h>    /* least-intrusive standard header which defines gcc2 __stub macros */
@@ -21846,16 +22222,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21849: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22225: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21852: \$? = $ac_status" >&5
+  echo "$as_me:22228: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21855: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22231: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21858: \$? = $ac_status" >&5
+  echo "$as_me:22234: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_func_shmat=yes
 else
@@ -21865,11 +22241,11 @@ ac_cv_func_shmat=no
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 fi
-echo "$as_me:21868: result: $ac_cv_func_shmat" >&5
+echo "$as_me:22244: result: $ac_cv_func_shmat" >&5
 echo "${ECHO_T}$ac_cv_func_shmat" >&6
 
     if test $ac_cv_func_shmat = no; then
-      echo "$as_me:21872: checking for shmat in -lipc" >&5
+      echo "$as_me:22248: checking for shmat in -lipc" >&5
 echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6
 if test "${ac_cv_lib_ipc_shmat+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21877,7 +22253,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lipc  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21880 "configure"
+#line 22256 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -21886,7 +22262,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char shmat ();
+char shmat (void);
 int
 main (void)
 {
@@ -21896,16 +22272,16 @@ shmat ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21899: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22275: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21902: \$? = $ac_status" >&5
+  echo "$as_me:22278: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21905: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22281: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21908: \$? = $ac_status" >&5
+  echo "$as_me:22284: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_ipc_shmat=yes
 else
@@ -21916,7 +22292,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:21919: result: $ac_cv_lib_ipc_shmat" >&5
+echo "$as_me:22295: result: $ac_cv_lib_ipc_shmat" >&5
 echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6
 if test "$ac_cv_lib_ipc_shmat" = yes; then
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
@@ -21934,7 +22310,7 @@ fi
   # These have to be linked with before -lX11, unlike the other
   # libraries we check for below, so use a different variable.
   # John Interrante, Karl Berry
-  echo "$as_me:21937: checking for IceConnectionNumber in -lICE" >&5
+  echo "$as_me:22313: checking for IceConnectionNumber in -lICE" >&5
 echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6
 if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -21942,7 +22318,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 21945 "configure"
+#line 22321 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -21951,7 +22327,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char IceConnectionNumber ();
+char IceConnectionNumber (void);
 int
 main (void)
 {
@@ -21961,16 +22337,16 @@ IceConnectionNumber ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:21964: \"$ac_link\"") >&5
+if { (eval echo "$as_me:22340: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:21967: \$? = $ac_status" >&5
+  echo "$as_me:22343: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:21970: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22346: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:21973: \$? = $ac_status" >&5
+  echo "$as_me:22349: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_ICE_IceConnectionNumber=yes
 else
@@ -21981,7 +22357,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:21984: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+echo "$as_me:22360: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
 echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6
 if test "$ac_cv_lib_ICE_IceConnectionNumber" = yes; then
   X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
@@ -22028,16 +22404,16 @@ then
                then
                        test -n "$verbose" && echo "    repairing CFLAGS: $CFLAGS" 1>&6
 
-echo "${as_me:-configure}:22031: testing repairing CFLAGS: $CFLAGS ..." 1>&5
+echo "${as_me:-configure}:22407: testing repairing CFLAGS: $CFLAGS ..." 1>&5
 
                        CFLAGS="$cf_temp_flags"
                        test -n "$verbose" && echo "    ... fixed $CFLAGS" 1>&6
 
-echo "${as_me:-configure}:22036: testing ... fixed $CFLAGS ..." 1>&5
+echo "${as_me:-configure}:22412: testing ... fixed $CFLAGS ..." 1>&5
 
                        test -n "$verbose" && echo "    ... extra $EXTRA_CFLAGS" 1>&6
 
-echo "${as_me:-configure}:22040: testing ... extra $EXTRA_CFLAGS ..." 1>&5
+echo "${as_me:-configure}:22416: testing ... extra $EXTRA_CFLAGS ..." 1>&5
 
                fi
                ;;
@@ -22076,16 +22452,16 @@ then
                then
                        test -n "$verbose" && echo "    repairing CPPFLAGS: $CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:22079: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:22455: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5
 
                        CPPFLAGS="$cf_temp_flags"
                        test -n "$verbose" && echo "    ... fixed $CPPFLAGS" 1>&6
 
-echo "${as_me:-configure}:22084: testing ... fixed $CPPFLAGS ..." 1>&5
+echo "${as_me:-configure}:22460: testing ... fixed $CPPFLAGS ..." 1>&5
 
                        test -n "$verbose" && echo "    ... extra $EXTRA_CFLAGS" 1>&6
 
-echo "${as_me:-configure}:22088: testing ... extra $EXTRA_CFLAGS ..." 1>&5
+echo "${as_me:-configure}:22464: testing ... extra $EXTRA_CFLAGS ..." 1>&5
 
                fi
                ;;
@@ -22124,23 +22500,23 @@ then
                then
                        test -n "$verbose" && echo "    repairing LDFLAGS: $LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:22127: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:22503: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5
 
                        LDFLAGS="$cf_temp_flags"
                        test -n "$verbose" && echo "    ... fixed $LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:22132: testing ... fixed $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:22508: testing ... fixed $LDFLAGS ..." 1>&5
 
                        test -n "$verbose" && echo "    ... extra $EXTRA_CFLAGS" 1>&6
 
-echo "${as_me:-configure}:22136: testing ... extra $EXTRA_CFLAGS ..." 1>&5
+echo "${as_me:-configure}:22512: testing ... extra $EXTRA_CFLAGS ..." 1>&5
 
                fi
                ;;
        esac
 fi
 
-echo "$as_me:22143: checking if you want to turn on gcc warnings" >&5
+echo "$as_me:22519: checking if you want to turn on gcc warnings" >&5
 echo $ECHO_N "checking if you want to turn on gcc warnings... $ECHO_C" >&6
 
 # Check whether --enable-warnings or --disable-warnings was given.
@@ -22157,7 +22533,7 @@ else
        enable_warnings=no
 
 fi;
-echo "$as_me:22160: result: $enable_warnings" >&5
+echo "$as_me:22536: result: $enable_warnings" >&5
 echo "${ECHO_T}$enable_warnings" >&6
 if test "$enable_warnings" = "yes"
 then
@@ -22180,10 +22556,10 @@ cat > conftest.i <<EOF
 EOF
 if test "$GCC" = yes
 then
-       { echo "$as_me:22183: checking for $CC __attribute__ directives..." >&5
+       { echo "$as_me:22559: checking for $CC __attribute__ directives..." >&5
 echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
 cat > "conftest.$ac_ext" <<EOF
-#line 22186 "${as_me:-configure}"
+#line 22562 "${as_me:-configure}"
 #include <stdio.h>
 #include "confdefs.h"
 #include "conftest.h"
@@ -22233,12 +22609,12 @@ EOF
                        ;;
                esac
 
-               if { (eval echo "$as_me:22236: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:22612: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22239: \$? = $ac_status" >&5
+  echo "$as_me:22615: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:22241: result: ... $cf_attribute" >&5
+                       test -n "$verbose" && echo "$as_me:22617: result: ... $cf_attribute" >&5
 echo "${ECHO_T}... $cf_attribute" >&6
                        cat conftest.h >>confdefs.h
                        case "$cf_attribute" in
@@ -22316,7 +22692,7 @@ do
 done
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 22319 "configure"
+#line 22695 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -22331,28 +22707,29 @@ String foo = malloc(1); free((void*)foo)
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:22334: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22710: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22337: \$? = $ac_status" >&5
+  echo "$as_me:22713: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:22340: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22716: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22343: \$? = $ac_status" >&5
+  echo "$as_me:22719: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
-echo "$as_me:22346: checking for X11/Xt const-feature" >&5
+echo "$as_me:22722: checking for X11/Xt const-feature" >&5
 echo $ECHO_N "checking for X11/Xt const-feature... $ECHO_C" >&6
 if test "${cf_cv_const_x_string+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
 
        cat >"conftest.$ac_ext" <<_ACEOF
-#line 22353 "configure"
+#line 22729 "configure"
 #include "confdefs.h"
 
+#undef  _CONST_X_STRING
 #define _CONST_X_STRING        /* X11R7.8 (perhaps) */
 #undef  XTSTRINGDEFINES        /* X11R5 and later */
 #include <stdlib.h>
@@ -22367,16 +22744,16 @@ String foo = malloc(1); *foo = 0
 }
 _ACEOF
 rm -f "conftest.$ac_objext"
-if { (eval echo "$as_me:22370: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:22747: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22373: \$? = $ac_status" >&5
+  echo "$as_me:22750: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest.$ac_objext"'
-  { (eval echo "$as_me:22376: \"$ac_try\"") >&5
+  { (eval echo "$as_me:22753: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22379: \$? = $ac_status" >&5
+  echo "$as_me:22756: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
 
                        cf_cv_const_x_string=no
@@ -22391,7 +22768,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
 
 fi
-echo "$as_me:22394: result: $cf_cv_const_x_string" >&5
+echo "$as_me:22771: result: $cf_cv_const_x_string" >&5
 echo "${ECHO_T}$cf_cv_const_x_string" >&6
 
 LIBS="$cf_save_LIBS_CF_CONST_X_STRING"
@@ -22420,7 +22797,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest.$ac_ext"
  fi
 cat > "conftest.$ac_ext" <<EOF
-#line 22423 "${as_me:-configure}"
+#line 22800 "${as_me:-configure}"
 int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
 EOF
 if test "$INTEL_COMPILER" = yes
@@ -22436,7 +22813,7 @@ then
 # remark #981: operands are evaluated in unspecified order
 # warning #279: controlling expression is constant
 
-       { echo "$as_me:22439: checking for $CC warning options..." >&5
+       { echo "$as_me:22816: checking for $CC warning options..." >&5
 echo "$as_me: checking for $CC warning options..." >&6;}
        cf_save_CFLAGS="$CFLAGS"
        EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
@@ -22452,12 +22829,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
                wd981
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo "$as_me:22455: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:22832: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22458: \$? = $ac_status" >&5
+  echo "$as_me:22835: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:22460: result: ... -$cf_opt" >&5
+                       test -n "$verbose" && echo "$as_me:22837: result: ... -$cf_opt" >&5
 echo "${ECHO_T}... -$cf_opt" >&6
                        EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
                fi
@@ -22465,7 +22842,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
        CFLAGS="$cf_save_CFLAGS"
 elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
 then
-       { echo "$as_me:22468: checking for $CC warning options..." >&5
+       { echo "$as_me:22845: checking for $CC warning options..." >&5
 echo "$as_me: checking for $CC warning options..." >&6;}
        cf_save_CFLAGS="$CFLAGS"
        cf_warn_CONST=""
@@ -22488,12 +22865,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
                Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas
        do
                CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
-               if { (eval echo "$as_me:22491: \"$ac_compile\"") >&5
+               if { (eval echo "$as_me:22868: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:22494: \$? = $ac_status" >&5
+  echo "$as_me:22871: \$? = $ac_status" >&5
   (exit "$ac_status"); }; then
-                       test -n "$verbose" && echo "$as_me:22496: result: ... -$cf_opt" >&5
+                       test -n "$verbose" && echo "$as_me:22873: result: ... -$cf_opt" >&5
 echo "${ECHO_T}... -$cf_opt" >&6
                        case "$cf_opt" in
                        (Winline)
@@ -22501,7 +22878,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
                                ([34].*)
                                        test -n "$verbose" && echo "    feature is broken in gcc $GCC_VERSION" 1>&6
 
-echo "${as_me:-configure}:22504: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:22881: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
 
                                        continue;;
                                esac
@@ -22511,7 +22888,7 @@ echo "${as_me:-configure}:22504: testing feature is broken in gcc $GCC_VERSION .
                                ([12].*)
                                        test -n "$verbose" && echo "    feature is broken in gcc $GCC_VERSION" 1>&6
 
-echo "${as_me:-configure}:22514: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:22891: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
 
                                        continue;;
                                esac
@@ -22528,7 +22905,7 @@ fi
 
 fi
 
-echo "$as_me:22531: checking if you want to use dmalloc for testing" >&5
+echo "$as_me:22908: checking if you want to use dmalloc for testing" >&5
 echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" >&6
 
 # Check whether --with-dmalloc or --without-dmalloc was given.
@@ -22550,7 +22927,7 @@ EOF
 else
   with_dmalloc=
 fi;
-echo "$as_me:22553: result: ${with_dmalloc:-no}" >&5
+echo "$as_me:22930: result: ${with_dmalloc:-no}" >&5
 echo "${ECHO_T}${with_dmalloc:-no}" >&6
 
 case ".$with_cflags" in
 esac
 
 if test "$with_dmalloc" = yes ; then
-       echo "$as_me:22667: checking for dmalloc.h" >&5
+       echo "$as_me:23044: checking for dmalloc.h" >&5
 echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6
 if test "${ac_cv_header_dmalloc_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 22673 "configure"
+#line 23050 "configure"
 #include "confdefs.h"
 #include <dmalloc.h>
 _ACEOF
-if { (eval echo "$as_me:22677: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:23054: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:22683: \$? = $ac_status" >&5
+  echo "$as_me:23060: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -22699,11 +23076,11 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:22702: result: $ac_cv_header_dmalloc_h" >&5
+echo "$as_me:23079: result: $ac_cv_header_dmalloc_h" >&5
 echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6
 if test "$ac_cv_header_dmalloc_h" = yes; then
 
-echo "$as_me:22706: checking for dmalloc_debug in -ldmalloc" >&5
+echo "$as_me:23083: checking for dmalloc_debug in -ldmalloc" >&5
 echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6
 if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -22711,7 +23088,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldmalloc  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 22714 "configure"
+#line 23091 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -22720,7 +23097,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char dmalloc_debug ();
+char dmalloc_debug (void);
 int
 main (void)
 {
@@ -22730,16 +23107,16 @@ dmalloc_debug ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:22733: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23110: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22736: \$? = $ac_status" >&5
+  echo "$as_me:23113: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:22739: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23116: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22742: \$? = $ac_status" >&5
+  echo "$as_me:23119: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dmalloc_dmalloc_debug=yes
 else
@@ -22750,7 +23127,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:22753: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
+echo "$as_me:23130: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
 echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6
 if test "$ac_cv_lib_dmalloc_dmalloc_debug" = yes; then
   cat >>confdefs.h <<EOF
@@ -22765,7 +23142,7 @@ fi
 
 fi
 
-echo "$as_me:22768: checking if you want to use dbmalloc for testing" >&5
+echo "$as_me:23145: checking if you want to use dbmalloc for testing" >&5
 echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C" >&6
 
 # Check whether --with-dbmalloc or --without-dbmalloc was given.
@@ -22787,7 +23164,7 @@ EOF
 else
   with_dbmalloc=
 fi;
-echo "$as_me:22790: result: ${with_dbmalloc:-no}" >&5
+echo "$as_me:23167: result: ${with_dbmalloc:-no}" >&5
 echo "${ECHO_T}${with_dbmalloc:-no}" >&6
 
 case ".$with_cflags" in
 esac
 
 if test "$with_dbmalloc" = yes ; then
-       echo "$as_me:22904: checking for dbmalloc.h" >&5
+       echo "$as_me:23281: checking for dbmalloc.h" >&5
 echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6
 if test "${ac_cv_header_dbmalloc_h+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
   cat >"conftest.$ac_ext" <<_ACEOF
-#line 22910 "configure"
+#line 23287 "configure"
 #include "confdefs.h"
 #include <dbmalloc.h>
 _ACEOF
-if { (eval echo "$as_me:22914: \"$ac_cpp "conftest.$ac_ext"\"") >&5
+if { (eval echo "$as_me:23291: \"$ac_cpp "conftest.$ac_ext"\"") >&5
   (eval $ac_cpp "conftest.$ac_ext") 2>conftest.er1
   ac_status=$?
   $EGREP -v '^ *\+' conftest.er1 >conftest.err
   rm -f conftest.er1
   cat conftest.err >&5
-  echo "$as_me:22920: \$? = $ac_status" >&5
+  echo "$as_me:23297: \$? = $ac_status" >&5
   (exit "$ac_status"); } >/dev/null; then
   if test -s conftest.err; then
     ac_cpp_err=$ac_c_preproc_warn_flag
@@ -22936,11 +23313,11 @@ else
 fi
 rm -f conftest.err "conftest.$ac_ext"
 fi
-echo "$as_me:22939: result: $ac_cv_header_dbmalloc_h" >&5
+echo "$as_me:23316: result: $ac_cv_header_dbmalloc_h" >&5
 echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6
 if test "$ac_cv_header_dbmalloc_h" = yes; then
 
-echo "$as_me:22943: checking for debug_malloc in -ldbmalloc" >&5
+echo "$as_me:23320: checking for debug_malloc in -ldbmalloc" >&5
 echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6
 if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -22948,7 +23325,7 @@ else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldbmalloc  $LIBS"
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 22951 "configure"
+#line 23328 "configure"
 #include "confdefs.h"
 
 /* Override any gcc2 internal prototype to avoid an error.  */
@@ -22957,7 +23334,7 @@ extern "C"
 #endif
 /* We use char because int might match the return type of a gcc2
    builtin and then its argument prototype would still apply.  */
-char debug_malloc ();
+char debug_malloc (void);
 int
 main (void)
 {
@@ -22967,16 +23344,16 @@ debug_malloc ();
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:22970: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23347: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:22973: \$? = $ac_status" >&5
+  echo "$as_me:23350: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:22976: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23353: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:22979: \$? = $ac_status" >&5
+  echo "$as_me:23356: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   ac_cv_lib_dbmalloc_debug_malloc=yes
 else
@@ -22987,7 +23364,7 @@ fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
 LIBS=$ac_check_lib_save_LIBS
 fi
-echo "$as_me:22990: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
+echo "$as_me:23367: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
 echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6
 if test "$ac_cv_lib_dbmalloc_debug_malloc" = yes; then
   cat >>confdefs.h <<EOF
@@ -23002,7 +23379,7 @@ fi
 
 fi
 
-echo "$as_me:23005: checking if you want to use valgrind for testing" >&5
+echo "$as_me:23382: checking if you want to use valgrind for testing" >&5
 echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C" >&6
 
 # Check whether --with-valgrind or --without-valgrind was given.
@@ -23024,7 +23401,7 @@ EOF
 else
   with_valgrind=
 fi;
-echo "$as_me:23027: result: ${with_valgrind:-no}" >&5
+echo "$as_me:23404: result: ${with_valgrind:-no}" >&5
 echo "${ECHO_T}${with_valgrind:-no}" >&6
 
 case ".$with_cflags" in
@@ -23137,7 +23514,7 @@ fi
        ;;
 esac
 
-echo "$as_me:23140: checking if you want to perform memory-leak testing" >&5
+echo "$as_me:23517: checking if you want to perform memory-leak testing" >&5
 echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO_C" >&6
 
 # Check whether --enable-leaks or --disable-leaks was given.
@@ -23148,7 +23525,7 @@ else
   enable_leaks=yes
 fi;
 if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi
-echo "$as_me:23151: result: $with_no_leaks" >&5
+echo "$as_me:23528: result: $with_no_leaks" >&5
 echo "${ECHO_T}$with_no_leaks" >&6
 
 if test "$enable_leaks" = no ; then
@@ -23166,7 +23543,7 @@ fi
 LD_RPATH_OPT=
 if test "x$cf_cv_enable_rpath" != xno
 then
-       echo "$as_me:23169: checking for an rpath option" >&5
+       echo "$as_me:23546: checking for an rpath option" >&5
 echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
        case "$cf_cv_system_name" in
        (irix*)
@@ -23197,12 +23574,12 @@ echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
        (*)
                ;;
        esac
-       echo "$as_me:23200: result: $LD_RPATH_OPT" >&5
+       echo "$as_me:23577: result: $LD_RPATH_OPT" >&5
 echo "${ECHO_T}$LD_RPATH_OPT" >&6
 
        case "x$LD_RPATH_OPT" in
        (x-R*)
-               echo "$as_me:23205: checking if we need a space after rpath option" >&5
+               echo "$as_me:23582: checking if we need a space after rpath option" >&5
 echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6
                cf_save_LIBS="$LIBS"
 
@@ -23223,7 +23600,7 @@ done
 LIBS="$cf_add_libs"
 
                cat >"conftest.$ac_ext" <<_ACEOF
-#line 23226 "configure"
+#line 23603 "configure"
 #include "confdefs.h"
 
 int
@@ -23235,16 +23612,16 @@ main (void)
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23238: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23615: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23241: \$? = $ac_status" >&5
+  echo "$as_me:23618: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23244: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23621: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23247: \$? = $ac_status" >&5
+  echo "$as_me:23624: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_rpath_space=no
 else
@@ -23254,14 +23631,14 @@ cf_rpath_space=yes
 fi
 rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
                LIBS="$cf_save_LIBS"
-               echo "$as_me:23257: result: $cf_rpath_space" >&5
+               echo "$as_me:23634: result: $cf_rpath_space" >&5
 echo "${ECHO_T}$cf_rpath_space" >&6
                test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
                ;;
        esac
 fi
 
-echo "$as_me:23264: checking if rpath-hack should be disabled" >&5
+echo "$as_me:23641: checking if rpath-hack should be disabled" >&5
 echo $ECHO_N "checking if rpath-hack should be disabled... $ECHO_C" >&6
 
 # Check whether --enable-rpath-hack or --disable-rpath-hack was given.
@@ -23279,22 +23656,22 @@ else
 
 fi;
 if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi
-echo "$as_me:23282: result: $cf_disable_rpath_hack" >&5
+echo "$as_me:23659: result: $cf_disable_rpath_hack" >&5
 echo "${ECHO_T}$cf_disable_rpath_hack" >&6
 
 if test "$enable_rpath_hack" = yes ; then
 
-echo "$as_me:23287: checking for updated LDFLAGS" >&5
+echo "$as_me:23664: checking for updated LDFLAGS" >&5
 echo $ECHO_N "checking for updated LDFLAGS... $ECHO_C" >&6
 if test -n "$LD_RPATH_OPT" ; then
-       echo "$as_me:23290: result: maybe" >&5
+       echo "$as_me:23667: result: maybe" >&5
 echo "${ECHO_T}maybe" >&6
 
        for ac_prog in ldd
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-echo "$as_me:23297: checking for $ac_word" >&5
+echo "$as_me:23674: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
 if test "${ac_cv_prog_cf_ldd_prog+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -23309,7 +23686,7 @@ for ac_dir in $ac_dummy; do
   test -z "$ac_dir" && ac_dir=.
   $as_executable_p "$ac_dir/$ac_word" || continue
 ac_cv_prog_cf_ldd_prog="$ac_prog"
-echo "$as_me:23312: found $ac_dir/$ac_word" >&5
+echo "$as_me:23689: found $ac_dir/$ac_word" >&5
 break
 done
 
 fi
 cf_ldd_prog=$ac_cv_prog_cf_ldd_prog
 if test -n "$cf_ldd_prog"; then
-  echo "$as_me:23320: result: $cf_ldd_prog" >&5
+  echo "$as_me:23697: result: $cf_ldd_prog" >&5
 echo "${ECHO_T}$cf_ldd_prog" >&6
 else
-  echo "$as_me:23323: result: no" >&5
+  echo "$as_me:23700: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -23334,7 +23711,7 @@ test -n "$cf_ldd_prog" || cf_ldd_prog="no"
                cf_rpath_oops=
 
 cat >"conftest.$ac_ext" <<_ACEOF
-#line 23337 "configure"
+#line 23714 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 int
@@ -23346,16 +23723,16 @@ printf("Hello");
 }
 _ACEOF
 rm -f "conftest.$ac_objext" "conftest$ac_exeext"
-if { (eval echo "$as_me:23349: \"$ac_link\"") >&5
+if { (eval echo "$as_me:23726: \"$ac_link\"") >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:23352: \$? = $ac_status" >&5
+  echo "$as_me:23729: \$? = $ac_status" >&5
   (exit "$ac_status"); } &&
          { ac_try='test -s "conftest$ac_exeext"'
-  { (eval echo "$as_me:23355: \"$ac_try\"") >&5
+  { (eval echo "$as_me:23732: \"$ac_try\"") >&5
   (eval $ac_try) 2>&5
   ac_status=$?
-  echo "$as_me:23358: \$? = $ac_status" >&5
+  echo "$as_me:23735: \$? = $ac_status" >&5
   (exit "$ac_status"); }; }; then
   cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
                 cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[         ]/%/%' -e 's%/[^/][^/]*$%%' |sort | uniq`
@@ -23383,7 +23760,7 @@ rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext"
                                        then
                                                test -n "$verbose" && echo "    ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6
 
-echo "${as_me:-configure}:23386: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
+echo "${as_me:-configure}:23763: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
 
                                                LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
                                                break
@@ -23395,11 +23772,11 @@ echo "${as_me:-configure}:23386: testing ...adding -L$cf_rpath_dir/lib to LDFLAG
 
        test -n "$verbose" && echo "    ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:23398: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:23775: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
 
 test -n "$verbose" && echo "   ...checking LDFLAGS $LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:23402: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:23779: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
 
 cf_rpath_dst=
 for cf_rpath_src in $LDFLAGS
@@ -23436,7 +23813,7 @@ do
                        then
                                test -n "$verbose" && echo "    ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
 
-echo "${as_me:-configure}:23439: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
+echo "${as_me:-configure}:23816: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
 
                                EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
                        fi
@@ -23449,11 +23826,11 @@ LDFLAGS=$cf_rpath_dst
 
 test -n "$verbose" && echo "   ...checked LDFLAGS $LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:23452: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:23829: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
 
 test -n "$verbose" && echo "   ...checking LIBS $LIBS" 1>&6
 
-echo "${as_me:-configure}:23456: testing ...checking LIBS $LIBS ..." 1>&5
+echo "${as_me:-configure}:23833: testing ...checking LIBS $LIBS ..." 1>&5
 
 cf_rpath_dst=
 for cf_rpath_src in $LIBS
@@ -23490,7 +23867,7 @@ do
                        then
                                test -n "$verbose" && echo "    ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
 
-echo "${as_me:-configure}:23493: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
+echo "${as_me:-configure}:23870: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
 
                                EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
                        fi
@@ -23503,14 +23880,14 @@ LIBS=$cf_rpath_dst
 
 test -n "$verbose" && echo "   ...checked LIBS $LIBS" 1>&6
 
-echo "${as_me:-configure}:23506: testing ...checked LIBS $LIBS ..." 1>&5
+echo "${as_me:-configure}:23883: testing ...checked LIBS $LIBS ..." 1>&5
 
        test -n "$verbose" && echo "    ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
 
-echo "${as_me:-configure}:23510: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:23887: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
 
 else
-       echo "$as_me:23513: result: no" >&5
+       echo "$as_me:23890: result: no" >&5
 echo "${ECHO_T}no" >&6
 fi
 
@@ -23531,7 +23908,7 @@ cat >confcache <<\_ACEOF
 # config.status only pays attention to the cache file if you give it
 # the --recheck option to rerun configure.
 #
-# `ac_cv_env_foo' variables (set or unset) will be overriden when
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
 # loading this file, other *unset* `ac_cv_foo' will be assigned the
 # following values.
 
@@ -23600,7 +23977,7 @@ DEFS=-DHAVE_CONFIG_H
 : "${CONFIG_STATUS=./config.status}"
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:23603: creating $CONFIG_STATUS" >&5
+{ echo "$as_me:23980: creating $CONFIG_STATUS" >&5
 echo "$as_me: creating $CONFIG_STATUS" >&6;}
 cat >"$CONFIG_STATUS" <<_ACEOF
 #! $SHELL
@@ -23736,7 +24113,7 @@ EOF
 cat >>"$CONFIG_STATUS" <<EOF
 ac_cs_version="\\
 config.status
-configured by $0, generated by GNU Autoconf 2.52.20230114,
+configured by $0, generated by GNU Autoconf 2.52.20231210,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
 Copyright 2003-2022,2023       Thomas E. Dickey
@@ -23781,7 +24158,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
     echo "$ac_cs_version"; exit 0 ;;
   --he | --h)
     # Conflict between --help and --header
-    { { echo "$as_me:23784: error: ambiguous option: $1
+    { { echo "$as_me:24161: error: ambiguous option: $1
 Try \`$0 --help' for more information." >&5
 echo "$as_me: error: ambiguous option: $1
 Try \`$0 --help' for more information." >&2;}
@@ -23800,7 +24177,7 @@ Try \`$0 --help' for more information." >&2;}
     ac_need_defaults=false;;
 
   # This is an error.
-  -*) { { echo "$as_me:23803: error: unrecognized option: $1
+  -*) { { echo "$as_me:24180: error: unrecognized option: $1
 Try \`$0 --help' for more information." >&5
 echo "$as_me: error: unrecognized option: $1
 Try \`$0 --help' for more information." >&2;}
@@ -23819,7 +24196,7 @@ cat >&5 << _ACEOF
 ## Running config.status.  ##
 ## ----------------------- ##
 
-This file was extended by $as_me 2.52.20230114, executed with
+This file was extended by $as_me 2.52.20231210, executed with
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
   CONFIG_LINKS    = $CONFIG_LINKS
@@ -23850,7 +24227,7 @@ do
   "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
   "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
   "ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS ncurses_cfg.h:ncurses_tst.hin" ;;
-  *) { { echo "$as_me:23853: error: invalid argument: $ac_config_target" >&5
+  *) { { echo "$as_me:24230: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
    { (exit 1); exit 1; }; };;
   esac
@@ -24017,6 +24394,7 @@ s,@X_LIBS@,$X_LIBS,;t t
 s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t
 s,@XCURSES_CONFIG@,$XCURSES_CONFIG,;t t
 s,@ac_ct_XCURSES_CONFIG@,$ac_ct_XCURSES_CONFIG,;t t
+s,@cf_cv_screen@,$cf_cv_screen,;t t
 s,@RGB_PATH@,$RGB_PATH,;t t
 s,@no_x11_rgb@,$no_x11_rgb,;t t
 s,@FORM_NAME@,$FORM_NAME,;t t
@@ -24157,7 +24535,7 @@ done; }
   esac
 
   if test x"$ac_file" != x-; then
-    { echo "$as_me:24160: creating $ac_file" >&5
+    { echo "$as_me:24538: creating $ac_file" >&5
 echo "$as_me: creating $ac_file" >&6;}
     rm -f "$ac_file"
   fi
@@ -24175,7 +24553,7 @@ echo "$as_me: creating $ac_file" >&6;}
       -) echo "$tmp"/stdin ;;
       [\\/$]*)
          # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:24178: error: cannot find input file: $f" >&5
+         test -f "$f" || { { echo "$as_me:24556: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          echo "$f";;
@@ -24188,7 +24566,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
            echo "$srcdir/$f"
          else
            # /dev/null tree
-           { { echo "$as_me:24191: error: cannot find input file: $f" >&5
+           { { echo "$as_me:24569: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          fi;;
@@ -24204,7 +24582,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
       if test -n "$ac_seen"; then
         ac_used=`grep '@datarootdir@' "$ac_item"`
         if test -z "$ac_used"; then
-          { echo "$as_me:24207: WARNING: datarootdir was used implicitly but not set:
+          { echo "$as_me:24585: WARNING: datarootdir was used implicitly but not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: datarootdir was used implicitly but not set:
 $ac_seen" >&2;}
@@ -24213,7 +24591,7 @@ $ac_seen" >&2;}
       fi
       ac_seen=`grep '${datarootdir}' "$ac_item"`
       if test -n "$ac_seen"; then
-        { echo "$as_me:24216: WARNING: datarootdir was used explicitly but not set:
+        { echo "$as_me:24594: WARNING: datarootdir was used explicitly but not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: datarootdir was used explicitly but not set:
 $ac_seen" >&2;}
@@ -24241,11 +24619,11 @@ s,@INSTALL@,$ac_INSTALL,;t t
 " $ac_file_inputs | (eval "$ac_sed_cmds") >"$tmp"/out
   rm -f "$tmp"/stdin
 EOF
-: "${FGREP:=grep -F}"
-: "${EGREP:=grep -E}"
+test -n "${FGREP}" || FGREP="grep -F"
+test -n "${EGREP}" || EGREP="grep -E"
 cat >>"$CONFIG_STATUS" <<EOF
-  : "\${FGREP:=$FGREP}"
-  : "\${EGREP:=$EGREP}"
+  test -n "\${FGREP}" || FGREP="$FGREP"
+  test -n "\${EGREP}" || EGREP="$EGREP"
 EOF
 cat >>"$CONFIG_STATUS" <<\EOF
   if test x"$ac_file" != x-; then
@@ -24258,7 +24636,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
             ac_init=`$EGREP '[         ]*'$ac_name'[   ]*=' "$ac_file"`
             if test -z "$ac_init"; then
               ac_seen=`echo "$ac_seen" |sed -e 's,^,'"$ac_file"':,'`
-              { echo "$as_me:24261: WARNING: Variable $ac_name is used but was not set:
+              { echo "$as_me:24639: WARNING: Variable $ac_name is used but was not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: Variable $ac_name is used but was not set:
 $ac_seen" >&2;}
@@ -24269,7 +24647,7 @@ $ac_seen" >&2;}
     $EGREP -n '@[A-Z_][A-Z_0-9]+@' "$ac_file" >>"$tmp"/out
     if test -s "$tmp"/out; then
       ac_seen=`sed -e 's,^,'"$ac_file"':,' < "$tmp"/out`
-      { echo "$as_me:24272: WARNING: Some variables may not be substituted:
+      { echo "$as_me:24650: WARNING: Some variables may not be substituted:
 $ac_seen" >&5
 echo "$as_me: WARNING: Some variables may not be substituted:
 $ac_seen" >&2;}
@@ -24318,7 +24696,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
   * )   ac_file_in=$ac_file.in ;;
   esac
 
-  test x"$ac_file" != x- && { echo "$as_me:24321: creating $ac_file" >&5
+  test x"$ac_file" != x- && { echo "$as_me:24699: creating $ac_file" >&5
 echo "$as_me: creating $ac_file" >&6;}
 
   # First look for the input files in the build tree, otherwise in the
@@ -24329,7 +24707,7 @@ echo "$as_me: creating $ac_file" >&6;}
       -) echo "$tmp"/stdin ;;
       [\\/$]*)
          # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:24332: error: cannot find input file: $f" >&5
+         test -f "$f" || { { echo "$as_me:24710: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          echo $f;;
@@ -24342,7 +24720,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
            echo "$srcdir/$f"
          else
            # /dev/null tree
-           { { echo "$as_me:24345: error: cannot find input file: $f" >&5
+           { { echo "$as_me:24723: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          fi;;
@@ -24400,7 +24778,7 @@ cat >>"$CONFIG_STATUS" <<\EOF
   rm -f "$tmp"/in
   if test x"$ac_file" != x-; then
     if cmp -s "$ac_file" "$tmp/config.h" 2>/dev/null; then
-      { echo "$as_me:24403: $ac_file is unchanged" >&5
+      { echo "$as_me:24781: $ac_file is unchanged" >&5
 echo "$as_me: $ac_file is unchanged" >&6;}
     else
       ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
index 6405dea4a01f0f70088f18ce7efb36ed89a37288..4df1c11f933b9940a091fb82efc4b522143a737c 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright 2018-2021,2022 Thomas E. Dickey                                *
+dnl Copyright 2018-2023,2024 Thomas E. Dickey                                *
 dnl Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -29,7 +29,7 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey 1996-on
 dnl
-dnl $Id: configure.in,v 1.168 2022/11/05 22:13:12 tom Exp $
+dnl $Id: configure.in,v 1.174 2024/03/30 14:31:11 tom Exp $
 dnl This is a simple configuration-script for the ncurses test programs that
 dnl allows the test-directory to be separately configured against a reference
 dnl system (i.e., sysvr4 curses)
@@ -108,6 +108,7 @@ AC_OBJEXT
 CF_GCC_ATTRIBUTES
 CF_ENABLE_STRING_HACKS
 CF_XOPEN_SOURCE(600)
+AC_CHECK_DECL(exit)
 CF_SIG_ATOMIC_T
 
 # Work around breakage on OS X
@@ -237,14 +238,12 @@ fi
 # look for curses-related headers
 AC_CHECK_HEADERS( $cf_curses_headers )
 
-AC_STDC_HEADERS
 AC_HEADER_TIME
 AC_CHECK_HEADERS( \
 getopt.h \
 locale.h \
 math.h \
 stdarg.h \
-stdint.h \
 sys/ioctl.h \
 sys/select.h \
 sys/time.h \
@@ -253,11 +252,10 @@ unistd.h \
 )
 
 CF_GETOPT_HEADER
+CF_FUNC_GETTIME
 
 AC_CHECK_FUNCS( \
-cfmakeraw \
 getopt \
-gettimeofday \
 snprintf \
 strdup \
 strstr \
@@ -318,6 +316,8 @@ wcstombs \
 fi
 
 CF_CURSES_FUNCS( \
+_nc_tparm_analyze \
+_tracef \
 alloc_pair \
 assume_default_colors \
 chgat \
@@ -359,6 +359,9 @@ termname \
 tgetent \
 tigetnum \
 tigetstr \
+tiparm \
+tiparm_s \
+tiscan_s \
 tputs_sp \
 typeahead \
 unget_wch \
@@ -376,7 +379,6 @@ winsdelln \
 winsstr \
 wresize \
 wsyncdown \
-_tracef \
 )
 
 CF_TPUTS_PROTO
index ed36b4c15e635d3925ec7ccfad9bb62cf3ead21c..ea6a7e64bcaee27da7b71ee39acba6dc4752ffa5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2005-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: demo_altkeys.c,v 1.16 2022/12/10 23:31:31 tom Exp $
+ * $Id: demo_altkeys.c,v 1.17 2023/02/25 18:08:02 tom Exp $
  *
  * Demonstrate the define_key() function.
  * Thomas Dickey - 2005/10/22
@@ -96,9 +96,7 @@ main(int argc, char *argv[])
 {
     int n;
     int ch;
-#if HAVE_GETTIMEOFDAY
-    struct timeval previous;
-#endif
+    TimeType previous;
 
     while ((ch = getopt(argc, argv, OPTS_COMMON)) != -1) {
        switch (ch) {
@@ -147,31 +145,16 @@ main(int argc, char *argv[])
        }
     }
 
-#if HAVE_GETTIMEOFDAY
-    gettimeofday(&previous, 0);
-#endif
+    GetClockTime(&previous);
 
     while ((ch = getch()) != ERR) {
        bool escaped = (ch >= MY_KEYS);
        const char *name = keyname(escaped ? (ch - MY_KEYS) : ch);
-#if HAVE_GETTIMEOFDAY
-       int secs, msecs;
-       struct timeval current;
-
-       gettimeofday(&current, 0);
-       secs = (int) (current.tv_sec - previous.tv_sec);
-       msecs = (int) ((current.tv_usec - previous.tv_usec) / 1000);
-       if (msecs < 0) {
-           msecs += 1000;
-           --secs;
-       }
-       if (msecs >= 1000) {
-           secs += msecs / 1000;
-           msecs %= 1000;
-       }
-       printw("%6d.%03d ", secs, msecs);
+       TimeType current;
+
+       GetClockTime(&current);
+       printw("%6.03f ", ElapsedSeconds(&previous, &current));
        previous = current;
-#endif
        printw("Keycode %d, name %s%s\n",
               ch,
               escaped ? "ESC-" : "",
index 44d60dc936730f4c5e412c04ed0be79b9d97b76e..441667263f69bf585445c7a6d242790b35ba99ff 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 2002-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: demo_defkey.c,v 1.33 2022/12/10 23:31:31 tom Exp $
+ * $Id: demo_defkey.c,v 1.35 2024/01/20 20:46:12 tom Exp $
  *
  * Demonstrate the define_key() function.
  * Thomas Dickey - 2002/11/23
@@ -100,7 +100,7 @@ visible(const char *string)
 {
     char *result = 0;
 
-    if (string != 0 && *string != '\0') {
+    if (VALID_STRING(string) && *string != '\0') {
        int pass;
        int n;
        size_t need = 1;
@@ -148,11 +148,7 @@ really_define_key(WINDOW *win, const char *new_string, int code)
     }
     log_last_line(win);
 
-    if (vis_string != 0) {
-       free(vis_string);
-       vis_string = 0;
-    }
-
+    free(vis_string);
     vis_string = visible(new_string);
     if ((rc = key_defined(new_string)) > 0) {
        wprintw(win, "%s was bound to %s\n", vis_string, keyname(rc));
@@ -185,7 +181,7 @@ duplicate(WINDOW *win, NCURSES_CONST char *name, int code)
 {
     char *value = tigetstr(name);
 
-    if (value != 0) {
+    if (VALID_STRING(value)) {
        const char *prefix = 0;
 
        if (!(strncmp) (value, "\033[", (size_t) 2)) {
index 8e831255822b58aac3f0a9e7200855b188a5337b..62e8c644e23bc86d991720d4af9043f08fa7e9e5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2003-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: demo_forms.c,v 1.61 2022/12/04 00:40:11 tom Exp $
+ * $Id: demo_forms.c,v 1.63 2023/11/11 00:29:53 tom Exp $
  *
  * Demonstrate a variety of functions from the form library.
  * Thomas Dickey - 2003/4/26
@@ -154,7 +154,7 @@ make_label(const char *label, int frow, int fcol)
 
     if (f) {
        set_field_buffer(f, 0, label);
-       set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE));
+       set_field_opts(f, (int) ((unsigned) field_opts(f) & (unsigned) ~O_ACTIVE));
     }
     return (f);
 }
@@ -242,7 +242,7 @@ show_insert_mode(bool insert_mode)
 #define O_SELECTABLE (O_ACTIVE | O_VISIBLE)
 
 static FIELD *
-another_field(FORM *form, FIELD *field)
+another_field(FORM *form, const FIELD *const field)
 {
     FIELD **f = form_fields(form);
     FIELD *result = 0;
index ab3880cb64f196c17c0f32de9768bb0a0fdc9ba6..7b0bf30316e558f6aa6b88559feb6b3e092b1548 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2003-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: demo_menus.c,v 1.79 2022/12/04 00:40:11 tom Exp $
+ * $Id: demo_menus.c,v 1.80 2023/05/27 20:13:10 tom Exp $
  *
  * Demonstrate a variety of functions from the menu library.
  * Thomas Dickey - 2005/4/9
@@ -925,7 +925,6 @@ perform_menus(void)
        }
        if (code == E_REQUEST_DENIED)
            beep();
-       continue;
     }
 }
 
index 468bd976da83e49503ca3fd6480b00da287b0a18..6e2aba7006798265886ac215f5642da343b72107 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2005-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -30,7 +30,7 @@
 /*
  * Author: Thomas E. Dickey
  *
- * $Id: demo_termcap.c,v 1.64 2022/12/10 23:22:09 tom Exp $
+ * $Id: demo_termcap.c,v 1.65 2023/05/27 20:13:10 tom Exp $
  *
  * A simple demo of the termcap interface.
  */
@@ -105,7 +105,7 @@ static long total_s_values;
 #define EachCapName(n) n = 33; n < 127; ++n
 
 static char *
-make_dbitem(char *p, char *q)
+make_dbitem(const char *const p, const char *const q)
 {
     size_t need = strlen(e_opt) + 2 + (size_t) (p - q);
     char *result = malloc(need);
@@ -404,7 +404,8 @@ typedef enum {
 static void
 parse_description(const char *input_name)
 {
-    static char empty[1];
+    static char empty[1] =
+    {0};
 
     FILE *fp;
     struct stat sb;
@@ -437,11 +438,13 @@ parse_description(const char *input_name)
        failed("cannot allocate memory for input-file");
     }
 
-    if ((fp = fopen(input_name, "r")) == 0)
+    if ((fp = fopen(input_name, "r")) == 0) {
        failed("cannot open input-file");
-    len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp);
-    my_blob[sb.st_size] = '\0';
-    fclose(fp);
+    } else {
+       len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp);
+       my_blob[sb.st_size] = '\0';
+       fclose(fp);
+    }
 
     /*
      * First, get rid of comments and escaped newlines, as well as repeated
index 1b2d426ca718c1d0cbf04f7f3b1f4e61b3120655..5e78015c36e0d45709a2fcda7fbc8546e57434c0 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2009-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -30,7 +30,7 @@
 /*
  * Author: Thomas E. Dickey
  *
- * $Id: demo_terminfo.c,v 1.56 2022/12/10 23:22:09 tom Exp $
+ * $Id: demo_terminfo.c,v 1.57 2023/05/27 20:13:10 tom Exp $
  *
  * A simple demo of the terminfo interface.
  */
@@ -96,7 +96,7 @@ static long total_s_values;
 #define FNAME(type) "%s %-*s = ", #type, f_opt ? 24 : FCOLS
 
 static char *
-make_dbitem(char *p, char *q)
+make_dbitem(const char *const p, const char *const q)
 {
     size_t need = strlen(e_opt) + 2 + (size_t) (p - q);
     char *result = malloc(need);
@@ -430,7 +430,8 @@ typedef enum {
 static void
 parse_description(const char *input_name)
 {
-    static char empty[1];
+    static char empty[1] =
+    {0};
 
     FILE *fp;
     struct stat sb;
@@ -463,11 +464,13 @@ parse_description(const char *input_name)
        failed("cannot allocate memory for input-file");
     }
 
-    if ((fp = fopen(input_name, "r")) == 0)
+    if ((fp = fopen(input_name, "r")) == 0) {
        failed("cannot open input-file");
-    len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp);
-    my_blob[sb.st_size] = '\0';
-    fclose(fp);
+    } else {
+       len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp);
+       my_blob[sb.st_size] = '\0';
+       fclose(fp);
+    }
 
     /*
      * First, get rid of comments and escaped newlines, as well as repeated
index 390eb3c0fa003390394708779da12181ae584308..acac8377aad7d2e76edb696017efe18605a1c768 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -30,7 +30,7 @@
 /*
  * Author: Thomas E. Dickey (1998-on)
  *
- * $Id: ditto.c,v 1.58 2022/12/24 23:53:08 tom Exp $
+ * $Id: ditto.c,v 1.59 2023/09/23 17:08:43 tom Exp $
  *
  * The program illustrates how to set up multiple screens from a single
  * program.
@@ -239,6 +239,14 @@ init_screen(
     return TRUE;
 }
 
+static void
+free_screen(DITTO * target)
+{
+    free(target->parents);
+    free(target->windows);
+    free(target->peeks);
+}
+
 static void
 open_screen(DITTO * target, char **source, int length, int which1)
 {
@@ -480,8 +488,10 @@ main(int argc, char *argv[])
        fflush(data[j].output);
        fclose(data[j].output);
        delscreen(data[j].screen);
+       free_screen(&data[j]);
        UnlockIt();
     }
+    free(data);
     ExitProgram(EXIT_SUCCESS);
 }
 #else
index 679c9928f99bd44ddddd0944b85167be2e0a37fe..65786c411a4ae1bde374e677bd556fe70fe547c4 100644 (file)
@@ -30,7 +30,7 @@
 /*
  * Author: Thomas E. Dickey
  *
- * $Id: dots_termcap.c,v 1.31 2023/01/07 17:21:48 tom Exp $
+ * $Id: dots_termcap.c,v 1.32 2023/02/25 18:11:21 tom Exp $
  *
  * A simple demo of the termcap interface.
  */
@@ -150,11 +150,19 @@ ranf(void)
     return ((double) r / 32768.);
 }
 
+/*
+ * napms is a curses function which happens to be usable without initializing
+ * the screen, but if this program happened to be build with a "real" termcap
+ * library, there is nothing like napms. 
+ */
+#if HAVE_NAPMS
+#define my_napms(ms) napms(ms)
+#else
 static void
 my_napms(int ms)
 {
     if (ms > 0) {
-#if defined(_NC_WINDOWS) || !HAVE_GETTIMEOFDAY
+#if defined(_NC_WINDOWS)
        Sleep((unsigned int) ms);
 #else
        struct timeval data;
@@ -164,6 +172,7 @@ my_napms(int ms)
 #endif
     }
 }
+#endif
 
 static int
 get_number(NCURSES_CONST char *cap, const char *env)
index 14a8c9fa267d1af47d793bcc38669659a204246a..eed4dbcbdf8369414379dc3e46b92838a39cbdc6 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018,2020 Thomas E. Dickey                                     *
+ * Copyright 2018-2020,2023 Thomas E. Dickey                                *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -26,7 +26,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: dump_window.c,v 1.4 2020/02/02 23:34:34 tom Exp $
+ * $Id: dump_window.c,v 1.5 2023/11/11 00:30:50 tom Exp $
  */
 #include <dump_window.h>
 
@@ -97,7 +97,7 @@ dump_window(WINDOW *w)
                        char aa;
                        char pp;
 
-                       temp = ((data & A_ATTRIBUTES) & (~A_COLOR));
+                       temp = ((data & A_ATTRIBUTES) & (chtype) (~A_COLOR));
                        if (temp) {
                            if (temp & A_ALTCHARSET) {
                                aa = (temp & A_BOLD) ? 'A' : 'a';
index 3e0b76930facddb880b04e35991f87c08d23eac4..68198ed755b30431b95f4c9e5f390f6123110450 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2020-2022,2023 Thomas E. Dickey                                *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -26,7 +26,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: dup_field.c,v 1.7 2022/12/10 23:31:31 tom Exp $
+ * $Id: dup_field.c,v 1.8 2023/11/11 00:29:10 tom Exp $
  *
  * Demonstrate dup_field().
  */
@@ -116,7 +116,7 @@ make_label(const char *label, int frow, int fcol)
 
     if (f) {
        set_field_buffer(f, 0, label);
-       set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE));
+       set_field_opts(f, (int) ((unsigned) field_opts(f) & (unsigned) ~O_ACTIVE));
     }
     return (f);
 }
index 1d9815744b73f28e53621dc64ba9e62763d05dc3..08497069419a50c0b5923f0a87079a8c45794c4a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2006-2014,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: echochar.c,v 1.25 2022/12/10 22:28:50 tom Exp $
+ * $Id: echochar.c,v 1.26 2023/05/27 20:13:10 tom Exp $
  *
  * Demonstrate the echochar function (compare to dots.c).
  * Thomas Dickey - 2006/11/4
@@ -65,7 +65,7 @@ ranf(void)
 }
 
 static void
-set_color(char *my_pairs, int fg, int bg)
+set_color(const char *const my_pairs, int fg, int bg)
 {
     int pair = (fg * COLORS) + bg;
     if (pair < COLOR_PAIRS) {
index 99471716b02c66dcafca83a54433c51b438c5ef2..bb3801e282fe4e31e71f6feac04963e894c4aaa5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2006-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -30,7 +30,7 @@
 /*
  * Author: Thomas E. Dickey, 2006
  *
- * $Id: foldkeys.c,v 1.11 2022/12/10 23:31:31 tom Exp $
+ * $Id: foldkeys.c,v 1.12 2023/02/25 16:51:01 tom Exp $
  *
  * Demonstrate a method for altering key definitions at runtime.
  *
@@ -217,9 +217,7 @@ int
 main(int argc, char *argv[])
 {
     int ch;
-#if HAVE_GETTIMEOFDAY
-    struct timeval previous;
-#endif
+    TimeType previous;
 
     while ((ch = getopt(argc, argv, OPTS_COMMON)) != -1) {
        switch (ch) {
@@ -250,32 +248,17 @@ main(int argc, char *argv[])
 
     demo_foldkeys();
 
-#if HAVE_GETTIMEOFDAY
-    gettimeofday(&previous, 0);
-#endif
+    GetClockTime(&previous);
 
     while ((ch = getch()) != ERR) {
        bool escaped = (ch >= MY_KEYS);
        const char *name = keyname(escaped ? (ch - MY_KEYS) : ch);
+       TimeType current;
 
-#if HAVE_GETTIMEOFDAY
-       int secs, msecs;
-       struct timeval current;
-
-       gettimeofday(&current, 0);
-       secs = (int) (current.tv_sec - previous.tv_sec);
-       msecs = (int) ((current.tv_usec - previous.tv_usec) / 1000);
-       if (msecs < 0) {
-           msecs += 1000;
-           --secs;
-       }
-       if (msecs >= 1000) {
-           secs += msecs / 1000;
-           msecs %= 1000;
-       }
-       printw("%6d.%03d ", secs, msecs);
+       GetClockTime(&current);
+       printw("%6.03f ", ElapsedSeconds(&previous, &current));
        previous = current;
-#endif
+
        printw("Keycode %d, name %s%s\n",
               ch,
               escaped ? "ESC-" : "",
index 383aae57e336523b86fd69fb97832afbf954132c..bf90b26f8b25075b3a21d0e07bd17ea0a41638fe 100644 (file)
@@ -27,8 +27,8 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: gdc.6,v 1.5 2020/02/02 23:34:34 tom Exp $
-.TH GDC 6
+.\" $Id: gdc.6,v 1.6 2020/02/02 23:34:34 tom Exp $
+.TH GDC 6 2020-02-02 ncurses-examples Games
 .SH NAME
 gdc \- grand digital clock (curses)
 .SH SYNOPSIS
index ee54b856998fb0ad44f2af758ab965fc3a40d648..b616919f4653c0a5b92bc7deb148b9aece0b249f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2016,2017 Free Software Foundation, Inc.                       *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: list_keys.c,v 1.31 2022/12/10 23:23:27 tom Exp $
+ * $Id: list_keys.c,v 1.33 2023/11/11 00:35:05 tom Exp $
  *
  * Author: Thomas E Dickey
  *
 static bool f_opt = FALSE;
 static bool m_opt = FALSE;
 static bool t_opt = FALSE;
+
+#if NCURSES_XNAMES || HAVE_USE_EXTENDED_NAMES
 static bool x_opt = FALSE;
+#endif
 
 typedef enum {
     ktCursor
@@ -71,6 +74,13 @@ typedef struct {
 #define Type(n) list[n].type
 #define Name(n) list[n].name
 
+static void
+failed(const char *msg)
+{
+    perror(msg);
+    ExitProgram(EXIT_FAILURE);
+}
+
 static const char *
 full_name(const char *name)
 {
@@ -338,8 +348,11 @@ list_keys(TERMINAL **terms, int count)
        widths1 = (int) strlen(modifier);
 
     for (k = 0; k < count; ++k) {
+       char *value;
        set_curterm(terms[k]);
-       check = (int) strlen(termname());
+       if ((value = termname()) == NULL)
+           failed("termname");
+       check = (int) strlen(value);
        if (widths2 < check)
            widths2 = check;
     }
@@ -461,7 +474,7 @@ main(int argc, char *argv[])
        case 't':
            t_opt = TRUE;
            break;
-#ifdef NCURSES_VERSION
+#if NCURSES_XNAMES || HAVE_USE_EXTENDED_NAMES
        case 'x':
            x_opt = TRUE;
            break;
index 7e3fcc221cf5b2dff10230f314146aa573453d7c..fb97d027e3d894977abd4904d8311894ee7eb703 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.78 2022/08/13 20:53:43 tom Exp $
+# $Id: modules,v 1.79 2023/11/10 11:48:20 tom Exp $
 ##############################################################################
-# Copyright 2018-2021,2022 Thomas E. Dickey                                  #
+# Copyright 2018-2022,2023 Thomas E. Dickey                                  #
 # Copyright 1998-2016,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -102,6 +102,7 @@ test_addstr progs           $(srcdir)       $(HEADER_DEPS)  $(srcdir)/linedata.h
 test_addwstr   progs           $(srcdir)       $(HEADER_DEPS)  $(srcdir)/linedata.h
 test_arrays    progs           $(srcdir)       $(HEADER_DEPS)
 test_delwin    progs           $(srcdir)       $(HEADER_DEPS)
+test_endwin    progs           $(srcdir)       $(HEADER_DEPS)
 test_get_wstr  progs           $(srcdir)       $(HEADER_DEPS)
 test_getstr    progs           $(srcdir)       $(HEADER_DEPS)
 test_instr     progs           $(srcdir)       $(HEADER_DEPS)
index e337319edf1edc4a5dda3f3530e5b6036d8a8207..84bac3f4b5659121b4dfa301cb50eb0c250ea5af 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2020-2022,2023 Thomas E. Dickey                                *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -26,7 +26,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: move_field.c,v 1.14 2022/12/10 23:31:31 tom Exp $
+ * $Id: move_field.c,v 1.15 2023/11/11 00:28:19 tom Exp $
  *
  * Demonstrate move_field().
  */
@@ -116,7 +116,7 @@ make_label(const char *label, int frow, int fcol)
 
     if (f) {
        set_field_buffer(f, 0, label);
-       set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE));
+       set_field_opts(f, (int) ((unsigned) field_opts(f) & (unsigned) ~O_ACTIVE));
     }
     return (f);
 }
index 7fe7329f967cf5aeb3fd095cea929bb3bcfaaf10..07797ca67b9ef7ce3937c770d96f42dd9f277f82 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2006-2013,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: movewindow.c,v 1.53 2022/12/10 23:31:31 tom Exp $
+ * $Id: movewindow.c,v 1.54 2023/05/27 20:13:10 tom Exp $
  *
  * Demonstrate move functions for windows and derived windows from the curses
  * library.
@@ -324,6 +324,7 @@ add_window(WINDOW *parent, WINDOW *child)
        all_windows = typeRealloc(FRAME, need, all_windows);
        if (!all_windows)
            failed("add_window");
+       have = need;
     }
     all_windows[num_windows].parent = parent;
     all_windows[num_windows].child = child;
@@ -331,7 +332,7 @@ add_window(WINDOW *parent, WINDOW *child)
 }
 
 static int
-window2num(WINDOW *win)
+window2num(const WINDOW *const win)
 {
     int n;
     int result = -1;
@@ -407,7 +408,7 @@ prev_window(WINDOW *win)
 }
 
 static void
-recur_move_window(WINDOW *parent, int dy, int dx)
+recur_move_window(const WINDOW *const parent, int dy, int dx)
 {
     unsigned n;
 
index afa631ad5a3943ce008a554182c4e4d7679abe32..a272d1423eeefd43c08134d41cdd8950a986b29b 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 1998-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -41,24 +41,24 @@ AUTHOR
    Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
            Thomas E. Dickey (beginning revision 1.27 in 1996).
 
-$Id: ncurses.c,v 1.532 2022/12/04 00:40:11 tom Exp $
+$Id: ncurses.c,v 1.538 2023/11/11 01:23:59 tom Exp $
 
 ***************************************************************************/
 
+#define NEED_TIME_H 1
 #include <test.priv.h>
 
 #ifdef __hpux
 #undef mvwdelch                        /* HPUX 11.23 macro will not compile */
 #endif
 
-#if HAVE_GETTIMEOFDAY
 #if HAVE_SYS_TIME_H && HAVE_SYS_TIME_SELECT
 #include <sys/time.h>
 #endif
+
 #if HAVE_SYS_SELECT_H
 #include <sys/select.h>
 #endif
-#endif
 
 #if USE_LIBPANEL
 #include <panel.h>
@@ -770,7 +770,7 @@ slk_repaint(void)
  * Resize both and paint the box in the parent.
  */
 static void
-resize_boxes(unsigned level, WINDOW *win)
+resize_boxes(unsigned level, const WINDOW *const win)
 {
     unsigned n;
     int base = 5;
@@ -1012,7 +1012,7 @@ getch_test(bool recur GCC_UNUSED)
  */
 #if defined(KEY_RESIZE) && HAVE_WRESIZE
 static void
-resize_wide_boxes(unsigned level, WINDOW *win)
+resize_wide_boxes(unsigned level, const WINDOW *const win)
 {
     unsigned n;
     int base = 5;
@@ -3157,7 +3157,7 @@ color_edit(bool recur GCC_UNUSED)
  *
  ****************************************************************************/
 static bool
-cycle_attr(int ch, unsigned *at_code, chtype *attr, ATTR_TBL * list, unsigned limit)
+cycle_attr(int ch, unsigned *at_code, attr_t *attr, ATTR_TBL * list, unsigned limit)
 {
     bool result = TRUE;
 
@@ -3318,7 +3318,7 @@ slk_test(bool recur GCC_UNUSED)
     int c, fmt = 1;
     char buf[9];
     char *s;
-    chtype attr = A_NORMAL;
+    attr_t attr = A_NORMAL;
     unsigned at_code = 0;
 #if HAVE_SLK_COLOR
     int fg = COLOR_BLACK;
@@ -3408,7 +3408,7 @@ slk_test(bool recur GCC_UNUSED)
 
        default:
            if (cycle_attr(c, &at_code, &attr, my_list, my_size)) {
-               slk_attrset(attr);
+               slk_attrset((chtype) attr);
                slk_touch();
                slk_noutrefresh();
                break;
@@ -3824,7 +3824,7 @@ acs_test(bool recur GCC_UNUSED)
     const char *pch_kludge = ((term != 0 && strstr(term, "linux"))
                              ? "p=PC, "
                              : "");
-    chtype attr = A_NORMAL;
+    attr_t attr = A_NORMAL;
     int digit = 0;
     int repeat = 1;
     int fg = COLOR_BLACK;
@@ -5600,10 +5600,8 @@ panner(WINDOW *pad,
        int (*pgetc) (WINDOW *),
        bool colored)
 {
-#if HAVE_GETTIMEOFDAY
-    struct timeval before, after;
+    TimeType before, after;
     bool timing = TRUE;
-#endif
     bool pan_lines = FALSE;
     bool scrollers = TRUE;
     int basex = 0;
@@ -5649,13 +5647,11 @@ panner(WINDOW *pad,
            pending_pan = FALSE;
            break;
 
-#if HAVE_GETTIMEOFDAY
        case 't':
            timing = !timing;
            if (!timing)
                panner_legend(LINES - 1);
            break;
-#endif
        case 's':
            scrollers = !scrollers;
            break;
@@ -5828,9 +5824,7 @@ panner(WINDOW *pad,
        MvAddCh(porty - 1, portx - 1, ACS_LRCORNER);
 
        if (!pending_pan) {
-#if HAVE_GETTIMEOFDAY
-           gettimeofday(&before, 0);
-#endif
+           GetClockTime(&before);
            wnoutrefresh(stdscr);
 
            pnoutrefresh(pad,
@@ -5840,17 +5834,12 @@ panner(WINDOW *pad,
                         portx - (pymax > porty) - 1);
 
            doupdate();
-#if HAVE_GETTIMEOFDAY
-#define TIMEVAL2S(data) ((double) data.tv_sec + ((double) data.tv_usec / 1.0e6))
            if (timing) {
-               double elapsed;
-               gettimeofday(&after, 0);
-               elapsed = (TIMEVAL2S(after) - TIMEVAL2S(before));
+               GetClockTime(&after);
                move(LINES - 1, COLS - 12);
-               printw("Secs: %2.03f", elapsed);
+               printw("Secs: %6.03f", ElapsedSeconds(&before, &after));
                refresh();
            }
-#endif
        }
 
     } while
@@ -6172,7 +6161,6 @@ menu_test(bool recur GCC_UNUSED)
            break;
        if (c == E_REQUEST_DENIED)
            beep();
-       continue;
     }
 
     MvPrintw(LINES - 2, 0,
@@ -6340,8 +6328,9 @@ trace_set(bool recur GCC_UNUSED)
            set_item_value(*ip, TRUE);
     }
 
-    while (run_trace_menu(m))
-       continue;
+    while (run_trace_menu(m)) {
+       /* EMPTY */ ;
+    }
 
     newtrace = 0;
     for (ip = menu_items(m); *ip; ip++)
@@ -6380,7 +6369,7 @@ make_label(int frow, int fcol, NCURSES_CONST char *label)
 
     if (f) {
        set_field_buffer(f, 0, label);
-       set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE));
+       set_field_opts(f, (int) ((unsigned) field_opts(f) & (unsigned) ~O_ACTIVE));
     }
     return (f);
 }
index 9e87bbe97fdcdbd6af4663f2628ca586f0efc587..7546e1cc1f71c5f81bcfc124d96e9a5ec1246395 100644 (file)
@@ -4,12 +4,12 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
 
 -------------------------------------------------------------------------------
 Files: *
-Copyright: 2017-2022,2023 Thomas E. Dickey
+Copyright: 2017-2023,2024 Thomas E. Dickey
 Copyright: 1998-2016,2017 Free Software Foundation, Inc.
 License: X11
 
 Files: aclocal.m4 package
-Copyright: 2003-2020,2023 by Thomas E. Dickey
+Copyright: 2003-2023,2024 by Thomas E. Dickey
 License: X11
 
     Permission is hereby granted, free of charge, to any person obtaining a
index 9e87bbe97fdcdbd6af4663f2628ca586f0efc587..7546e1cc1f71c5f81bcfc124d96e9a5ec1246395 100644 (file)
@@ -4,12 +4,12 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
 
 -------------------------------------------------------------------------------
 Files: *
-Copyright: 2017-2022,2023 Thomas E. Dickey
+Copyright: 2017-2023,2024 Thomas E. Dickey
 Copyright: 1998-2016,2017 Free Software Foundation, Inc.
 License: X11
 
 Files: aclocal.m4 package
-Copyright: 2003-2020,2023 by Thomas E. Dickey
+Copyright: 2003-2023,2024 by Thomas E. Dickey
 License: X11
 
     Permission is hereby granted, free of charge, to any person obtaining a
index 9e87bbe97fdcdbd6af4663f2628ca586f0efc587..7546e1cc1f71c5f81bcfc124d96e9a5ec1246395 100644 (file)
@@ -4,12 +4,12 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
 
 -------------------------------------------------------------------------------
 Files: *
-Copyright: 2017-2022,2023 Thomas E. Dickey
+Copyright: 2017-2023,2024 Thomas E. Dickey
 Copyright: 1998-2016,2017 Free Software Foundation, Inc.
 License: X11
 
 Files: aclocal.m4 package
-Copyright: 2003-2020,2023 by Thomas E. Dickey
+Copyright: 2003-2023,2024 by Thomas E. Dickey
 License: X11
 
     Permission is hereby granted, free of charge, to any person obtaining a
index cad43d1dfd283f3f03b9d70dbe69bdba18365a96..bfadd10e850b27344ed1be3b8b98feb6fcf20c51 100644 (file)
@@ -4,14 +4,14 @@ Summary: ncurses-examples - example/test programs from ncurses
 %global AppProgram ncurses-examples
 %global AppVersion MAJOR.MINOR
 %global AppRelease YYYYMMDD
-# $Id: mingw-ncurses-examples.spec,v 1.10 2021/06/17 21:11:12 tom Exp $
+# $Id: mingw-ncurses-examples.spec,v 1.11 2023/02/25 23:10:34 tom Exp $
 Name: mingw32-ncurses6-examples
 Version: %{AppVersion}
 Release: %{AppRelease}
 License: X11
 Group: Development/Libraries
-Source: ncurses-examples-%{release}.tgz
-# URL: https://invisible-island.net/ncurses/
+URL: https://invisible-island.net/ncurses/%{AppProgram}.html
+Source: https://invisible-island.net/archives/%{AppProgram}/%{AppProgram}-%{release}.tgz
 
 BuildRequires:  mingw32-ncurses6
 
@@ -56,6 +56,9 @@ This package is used for testing ABI 6 with cross-compiles to MinGW.
 %global mingw32_datadir %{mingw32_datadir}/%{AppProgram}
 %global mingw64_datadir %{mingw64_datadir}/%{AppProgram}
 
+%global mingw32_libexec %{mingw32_libexecdir}/%{AppProgram}
+%global mingw64_libexec %{mingw64_libexecdir}/%{AppProgram}
+
 %define CFG_OPTS \\\
         --enable-echo \\\
         --enable-warnings \\\
@@ -96,26 +99,24 @@ pushd BUILD-W64
 %{mingw64_make} install DESTDIR=$RPM_BUILD_ROOT
 popd
 
-%clean
-if rm -rf $RPM_BUILD_ROOT; then
-  echo OK
-else
-  find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1
-fi
-exit 0
-
-%defattr(-,root,root,-)
-
 %files -n mingw32-ncurses6-examples
+%defattr(-,root,root,-)
 %{mingw32_bindir}/*
 %{mingw32_datadir}/*
+%{mingw32_libexec}/*
 
 %files -n mingw64-ncurses6-examples
+%defattr(-,root,root,-)
 %{mingw64_bindir}/*
 %{mingw64_datadir}/*
+%{mingw64_libexec}/*
 
 %changelog
 
+* Sat Feb 25 2023 Thomas Dickey
+- use libexecdir for programs rather than subdir of bindir
+- amend URLs per rpmlint
+
 * Sat Nov 16 2019 Thomas Dickey
 - modify clean-rule to work around Fedora NFS bugs.
 
index 1a045edc8b3e355ceb19739ce427b35f9e3bb0a9..8f1a3cbe52d133b84c7dc9a83e6d38929005c265 100644 (file)
@@ -3,15 +3,14 @@ Summary: example/test programs from ncurses
 %global AltProgram ncursest-examples
 %global AppVersion MAJOR.MINOR
 %global AppRelease YYYYMMDD
-# $Id: ncurses-examples.spec,v 1.21 2021/12/19 00:13:46 tom Exp $
+# $Id: ncurses-examples.spec,v 1.22 2023/02/25 23:10:49 tom Exp $
 Name: %{AppProgram}
 Version: %{AppVersion}
 Release: %{AppRelease}
 License: MIT
 Group: Applications/Development
-URL: ftp://ftp.invisible-island.net/pub/%{AppProgram}
-Source0: %{AppProgram}-%{AppRelease}.tgz
-Packager: Thomas Dickey <dickey@invisible-island.net>
+URL: https://invisible-island.net/ncurses/%{AppProgram}.html
+Source: https://invisible-island.net/archives/%{AppProgram}/%{AppProgram}-%{release}.tgz
 
 %description
 These are the example/test programs from the ncurses MAJOR.MINOR distribution,
@@ -83,14 +82,6 @@ pushd BUILD-%{AltProgram}
 make install PACKAGE=%{AltProgram} DESTDIR=$RPM_BUILD_ROOT
 popd
 
-%clean
-if rm -rf $RPM_BUILD_ROOT; then
-  echo OK
-else
-  find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1
-fi
-exit 0
-
 %files -n %{AppProgram}
 %defattr(-,root,root)
 %{_bindir}/%{AppProgram}
@@ -106,6 +97,9 @@ exit 0
 %changelog
 # each patch should add its ChangeLog entries here
 
+* Sat Feb 25 2023 Thomas Dickey
+- amend URLs per rpmlint
+
 * Sat Dec 18 2021 Thomas Dickey
 - use libexecdir for programs rather than subdir of bindir
 
index 24cf5689daf044b2b931676a7206a0c7fcb40967..2b759a82466d486b14908f82f417b6a76578738e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -26,7 +26,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: pair_content.c,v 1.21 2022/12/10 22:28:50 tom Exp $
+ * $Id: pair_content.c,v 1.22 2023/02/25 16:43:56 tom Exp $
  */
 
 #define NEED_TIME_H
@@ -57,10 +57,8 @@ static int x_opt;
 
 static MYPAIR *expected;
 
-#if HAVE_GETTIMEOFDAY
-static struct timeval initial_time;
-static struct timeval finish_time;
-#endif
+static TimeType initial_time;
+static TimeType finish_time;
 
 static GCC_NORETURN void
 finish(int code)
@@ -171,9 +169,7 @@ setup_test(void)
     } else {
        failed("This demo requires a color terminal");
     }
-#if HAVE_GETTIMEOFDAY
-    gettimeofday(&initial_time, 0);
-#endif
+    GetClockTime(&initial_time);
 }
 
 static void
@@ -206,16 +202,6 @@ finish_test(void)
     endwin();
 }
 
-#if HAVE_GETTIMEOFDAY
-static double
-seconds(struct timeval *mark)
-{
-    double result = (double) mark->tv_sec;
-    result += ((double) mark->tv_usec / 1e6);
-    return result;
-}
-#endif
-
 static void
 usage(int ok)
 {
@@ -321,12 +307,8 @@ main(int argc, char *argv[])
            addch('\n');
        }
        printw("DONE: ");
-#if HAVE_GETTIMEOFDAY
-       gettimeofday(&finish_time, 0);
-       printw("%.03f seconds",
-              seconds(&finish_time)
-              - seconds(&initial_time));
-#endif
+       GetClockTime(&finish_time);
+       printw("%.03f seconds", ElapsedSeconds(&initial_time, &finish_time));
        finish_test();
     }
 
index 04bae9852068e1d14fad0c9f28879032114e2418..b582f3aada5d0828c0f110e3ba434363bebb7e27 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2018-2022,2023 Thomas E. Dickey                                *
  * Copyright 2017,2018 Free Software Foundation, Inc.                       *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: picsmap.c,v 1.148 2022/12/04 00:40:11 tom Exp $
+ * $Id: picsmap.c,v 1.149 2023/04/23 23:20:37 tom Exp $
  *
  * Author: Thomas E. Dickey
  *
 #include <sys/types.h>
 #include <sys/stat.h>
 
-#if HAVE_STDINT_H
-#include <stdint.h>
-#define my_intptr_t    intptr_t
-#else
-#define my_intptr_t    long
-#endif
-
 #if HAVE_TSEARCH
 #include <search.h>
 #endif
index 191a16dca1e57dba16da1ee82a9c81737ddd7cd7..16ecf810391efd8022e16ba9b0c75d5297045579 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: programs,v 1.55 2022/08/13 23:37:10 tom Exp $
+# $Id: programs,v 1.57 2023/11/10 11:48:38 tom Exp $
 ##############################################################################
-# Copyright 2018-2021,2022 Thomas E. Dickey                                  #
+# Copyright 2018-2022,2023 Thomas E. Dickey                                  #
 # Copyright 2006-2016,2017 Free Software Foundation, Inc.                    #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
@@ -97,6 +97,7 @@ test_addstr   $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_addstr
 test_addwstr   $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_addwstr
 test_arrays    $(LDFLAGS_TINFO)        $(LOCAL_LIBS)   test_arrays
 test_delwin    $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_delwin
+test_endwin    $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_endwin
 test_get_wstr  $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_get_wstr popup_msg
 test_getstr    $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_getstr popup_msg
 test_instr     $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_instr
index d003dfa32cab57a6914e29c8b4aad9428d0523dc..72b20cfb0c1da7d018101329acab146b6d98457d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2020,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2017 Free Software Foundation, Inc.                            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -28,7 +28,7 @@
  ****************************************************************************/
 
 /*
- * $Id: sp_tinfo.c,v 1.28 2022/12/10 23:23:27 tom Exp $
+ * $Id: sp_tinfo.c,v 1.29 2023/06/24 14:14:56 tom Exp $
  *
  * TOTO: add option for non-sp-funcs interface
  */
@@ -339,8 +339,12 @@ main(int argc, char *argv[])
     do_stuff(my_out);
     do_stuff(my_err);
 
-    cleanup(my_out);
-    cleanup(my_err);
+    if (my_out != my_err) {
+       cleanup(my_out);
+       cleanup(my_err);
+    } else {
+       cleanup(my_out);
+    }
 
     ExitProgram(EXIT_SUCCESS);
 }
index 75b6570f4a032b80211c1bc16f864036a3afd7b2..1a749628914dd82492aa7bf95816379cc58233f6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tclock.c,v 1.47 2022/12/10 23:23:27 tom Exp $ */
+/* $Id: tclock.c,v 1.48 2023/02/25 16:42:22 tom Exp $ */
 
 #define NEED_TIME_H
 #include <test.priv.h>
@@ -133,6 +133,8 @@ VERSION_COMMON()
 int
 main(int argc, char *argv[])
 {
+    static TimeType initial;
+
     int i, cx, cy;
     double cr, mradius, hradius, mangle, hangle;
     double sangle, sradius, hours;
@@ -147,10 +149,7 @@ main(int argc, char *argv[])
     char szChar[20];
     char *text;
     short my_bg = COLOR_BLACK;
-#if HAVE_GETTIMEOFDAY
-    struct timeval current;
-#endif
-    double fraction = 0.0;
+    TimeType current;
 #if HAVE_USE_DEFAULT_COLORS
     bool d_option = FALSE;
 #endif
@@ -236,11 +235,9 @@ main(int argc, char *argv[])
        hdx = A2X(hangle, hradius);
        hdy = A2Y(hangle, hradius);
 
-#if HAVE_GETTIMEOFDAY
-       gettimeofday(&current, 0);
-       fraction = ((double) current.tv_usec / 1.0e6);
-#endif
-       sangle = ((t->tm_sec + fraction) * (2.0 * PI) / 60.0);
+       GetClockTime(&current);
+
+       sangle = (ElapsedSeconds(&initial, &current) * (2.0 * PI) / 60.0);
        sdx = A2X(sangle, sradius);
        sdy = A2Y(sangle, sradius);
 
index a08a7be16a8c230620864c109130a18a10774b6e..a901185b8df04832530d68439c2fb78e4ff835e3 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2018-2022,2023 Thomas E. Dickey                                *
+ * Copyright 2018-2023,2024 Thomas E. Dickey                                *
  * Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -30,7 +30,7 @@
 /****************************************************************************
  *  Author: Thomas E. Dickey                    1996-on                     *
  ****************************************************************************/
-/* $Id: test.priv.h,v 1.207 2023/01/07 17:15:50 tom Exp $ */
+/* $Id: test.priv.h,v 1.218 2024/02/10 14:40:03 tom Exp $ */
 
 #ifndef __TEST_PRIV_H
 #define __TEST_PRIV_H 1
 #define HAVE_CHGAT 0
 #endif
 
+#ifndef HAVE_CLOCK_GETTIME
+#define HAVE_CLOCK_GETTIME 0
+#endif
+
 #ifndef HAVE_COLOR_CONTENT
 #define HAVE_COLOR_CONTENT 0
 #endif
 #define HAVE_TIGETSTR 0
 #endif
 
+#ifndef HAVE_TIPARM
+#define HAVE_TIPARM 0
+#endif
+
+#ifndef HAVE_TIPARM_S
+#define HAVE_TIPARM_S 0
+#endif
+
+#ifndef HAVE_TISCAN_S
+#define HAVE_TISCAN_S 0
+#endif
+
 #ifndef HAVE_TPUTS_SP
 #define HAVE_TPUTS_SP 0
 #endif
 #define NO_LEAKS 0
 #endif
 
+#ifndef HAVE__NC_TPARM_ANALYZE
+#define HAVE__NC_TPARM_ANALYZE 0
+#endif
+
 /*
  * Workaround for HPUX
  */
@@ -467,6 +487,13 @@ extern int optind;
 #include <assert.h>
 #include <ctype.h>
 
+#if HAVE_STDINT_H
+#include <stdint.h>
+#define my_intptr_t    intptr_t
+#else
+#define my_intptr_t    long
+#endif
+
 #if defined(_MSC_VER)
 #undef popen
 #define popen(s,n) _popen(s,n)
@@ -725,28 +752,27 @@ extern int optind;
 ," -V       show version of curses"
 
 #if HAVE_CURSES_VERSION
-#define format_version(buffer) strcpy(buffer, curses_version())
+#define format_version(buffer, size) strcpy(buffer, curses_version())
 #elif defined(NCURSES_VERSION_MAJOR) && defined(NCURSES_VERSION_MINOR) && defined(NCURSES_VERSION_PATCH)
-#define format_version(buffer) sprintf(buffer, "ncurses %d.%d.%d", \
-       NCURSES_VERSION_MAJOR, \
-       NCURSES_VERSION_MINOR, \
-       NCURSES_VERSION_PATCH)
+#define format_version(buffer, size) \
+       _nc_SPRINTF(buffer, _nc_SLIMIT(size) "ncurses %d.%d.%d", \
+                   NCURSES_VERSION_MAJOR, \
+                   NCURSES_VERSION_MINOR, \
+                   NCURSES_VERSION_PATCH)
 #else
-#define format_version(buffer) strcpy(buffer, "ncurses-examples")
+#define format_version(buffer, size) strcpy(buffer, "ncurses-examples")
 #endif
 
 #define VERSION_COMMON() \
 static char *version_common(char **argv) { \
        char *base = argv[0]; \
-       char *leaf = strrchr(base, '/'); \
-       char *result = malloc(strlen(base) + 80); \
-       if (result == NULL) { \
-           static char unknown[] = "?"; \
-           result = unknown; \
-       } else { \
-           if (leaf++ == NULL) leaf = base; \
-           sprintf(result, "%.20s: ", leaf); \
-           format_version(result + strlen(result)); \
+       char *part = strrchr(base, '/'); \
+       size_t need = strlen(base) + 80; \
+       char *result = malloc(need); \
+       if (result != NULL) { \
+           if (part++ == NULL) part = base; \
+           _nc_SPRINTF(result, _nc_SLIMIT(need) "%.20s: ", part); \
+           format_version(result + strlen(result), need - strlen(result)); \
        } \
        return result; \
 } \
@@ -991,7 +1017,9 @@ extern int TABSIZE;
 
 #define UChar(c)    ((unsigned char)(c))
 
+#ifndef SIZEOF
 #define SIZEOF(table)  (sizeof(table)/sizeof(table[0]))
+#endif
 
 #if defined(NCURSES_VERSION) && HAVE_NC_ALLOC_H
 #include <nc_alloc.h>
@@ -1083,6 +1111,26 @@ extern int TABSIZE;
 #endif
 #endif
 
+#if HAVE_CLOCK_GETTIME
+# define GetClockTime(t) clock_gettime(CLOCK_REALTIME, t)
+# define TimeType struct timespec
+# define TimeScale 1000000000L /* 1e9 */
+# define ElapsedSeconds(b,e) \
+           (double) (((e)->tv_sec - (b)->tv_sec) \
+                   + ((e)->tv_nsec - (b)->tv_nsec) / TimeScale)
+#elif HAVE_GETTIMEOFDAY
+# define GetClockTime(t) gettimeofday(t, 0)
+# define TimeType struct timeval
+# define TimeScale 1000000L    /* 1e6 */
+# define ElapsedSeconds(b,e) \
+           (double) (((e)->tv_sec - (b)->tv_sec) \
+                   + ((e)->tv_usec - (b)->tv_usec) / TimeScale)
+#else
+# define TimeType time_t
+# define GetClockTime(t) time((time_t*)0)
+# define ElapsedSeconds(b,e) (double)((e) - (b))
+#endif
+
 /*
  * Ultrix 3.1
  */
index aa7bf85746aeb1e6a85ecadb501be277b4ce5ad9..9e51f49df1490172fb174508c81772710f3dc061 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2022 Thomas E. Dickey                                     *
+ * Copyright 2020-2022,2023 Thomas E. Dickey                                *
  * Copyright 2009-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -27,7 +27,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: test_addwstr.c,v 1.21 2022/12/10 22:28:50 tom Exp $
+ * $Id: test_addwstr.c,v 1.22 2023/05/27 20:13:10 tom Exp $
  *
  * Demonstrate the waddwstr() and wadd_wch functions.
  * Thomas Dickey - 2009/9/12
@@ -114,7 +114,7 @@ legend(WINDOW *win, int level, Options state, wchar_t *buffer, int length)
 }
 
 static int
-ColOf(wchar_t *buffer, int length, int margin)
+ColOf(const wchar_t *const buffer, int length, int margin)
 {
     int n;
     int result;
index 7a8742518dca194c955653de414a5fae3b303aff..09ef5c538e4e2103157354ece6cb358541fd02c2 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2022 Thomas E. Dickey                                          *
+ * Copyright 2022,2023 Thomas E. Dickey                                     *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /*
- * $Id: test_delwin.c,v 1.4 2022/12/10 22:14:07 tom Exp $
+ * $Id: test_delwin.c,v 1.5 2023/05/27 20:34:51 tom Exp $
  */
 #include <test.priv.h>
 
@@ -123,7 +123,7 @@ main(int argc, char **argv)
 
     show_rc("Deleted parent",
            "should fail, it still has a subwindow",
-           rc = delwin(parent));
+           delwin(parent));
     next_step(stdscr);
     show_rc("Deleted child1",
            "should succeed",
diff --git a/test/test_endwin.c b/test/test_endwin.c
new file mode 100644 (file)
index 0000000..8e0d283
--- /dev/null
@@ -0,0 +1,132 @@
+/****************************************************************************
+ * Copyright 2023 Thomas E. Dickey                                          *
+ *                                                                          *
+ * Permission is hereby granted, free of charge, to any person obtaining a  *
+ * copy of this software and associated documentation files (the            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, sublicense, and/or sell       *
+ * copies of the Software, and to permit persons to whom the Software is    *
+ * furnished to do so, subject to the following conditions:                 *
+ *                                                                          *
+ * The above copyright notice and this permission notice shall be included  *
+ * in all copies or substantial portions of the Software.                   *
+ *                                                                          *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+ *                                                                          *
+ * Except as contained in this notice, the name(s) of the above copyright   *
+ * holders shall not be used in advertising or otherwise to promote the     *
+ * sale, use or other dealings in this Software without prior written       *
+ * authorization.                                                           *
+ ****************************************************************************/
+/*
+ * $Id: test_endwin.c,v 1.2 2023/11/10 15:17:19 tom Exp $
+ */
+#include <test.priv.h>
+
+static void
+usage(int ok)
+{
+    static const char *msg[] =
+    {
+       "Usage: test_endwin [options]"
+       ,""
+       ,"Options:"
+       ," -e   call endwin() an extra time"
+       ," -i   call initscr() before endwin()"
+       ," -n   call newterm() before endwin()"
+       ," -r   call refresh() before endwin()"
+       ," -s   call getch() after endwin(), to refresh screen"
+       ,""
+       ,USAGE_COMMON
+    };
+    size_t n;
+
+    for (n = 0; n < SIZEOF(msg); n++)
+       fprintf(stderr, "%s\n", msg[n]);
+
+    ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+/* *INDENT-OFF* */
+VERSION_COMMON()
+/* *INDENT-ON* */
+
+#define status(opt,name,rc) if (opt) printf(" %s: %s", name, (rc) == OK ? "OK" : "ERR")
+
+int
+main(int argc, char *argv[])
+{
+    int ch;
+    int rc_r = OK;
+    int rc_e1 = OK;
+    int rc_e2 = OK;
+    int rc_e3 = OK;
+    SCREEN *sp = NULL;
+    bool opt_e = FALSE;
+    bool opt_i = FALSE;
+    bool opt_n = FALSE;
+    bool opt_r = FALSE;
+    bool opt_s = FALSE;
+
+    while ((ch = getopt(argc, argv, "einrs" OPTS_COMMON)) != -1) {
+       switch (ch) {
+       case 'e':
+           opt_e = TRUE;
+           break;
+       case 'i':
+           opt_i = TRUE;
+           break;
+       case 'n':
+           opt_n = TRUE;
+           break;
+       case 'r':
+           opt_r = TRUE;
+           break;
+       case 's':
+           opt_s = TRUE;
+           break;
+       case OPTS_VERSION:
+           show_version(argv);
+           ExitProgram(EXIT_SUCCESS);
+       default:
+           usage(ch == OPTS_USAGE);
+           /* NOTREACHED */
+       }
+    }
+    if (optind < argc)
+       usage(FALSE);
+    if (opt_i && opt_n)
+       usage(TRUE);
+
+    if (opt_i) {
+       initscr();
+    } else if (opt_n) {
+       sp = newterm(NULL, stdout, stdin);
+    }
+    if (opt_r) {
+       rc_r = refresh();
+    }
+    rc_e1 = endwin();
+    if (opt_e) {
+       rc_e2 = endwin();
+    }
+    if (opt_s) {
+       getch();
+       rc_e3 = endwin();
+    }
+    printf("status:");
+    status(opt_i, "initscr(-i)", OK);
+    status(opt_n, "newterm(-n)", (sp != NULL) ? OK : ERR);
+    status(opt_r, "refresh(-r)", rc_r);
+    status(TRUE, "endwin", rc_e1);
+    status(opt_e, "endwin(-e)", rc_e2);
+    status(opt_s, "endwin(-s)", rc_e3);
+    printf("\n");
+    ExitProgram(EXIT_SUCCESS);
+}
index d6013c7404b13393cd8305d6f88d260d3ceef071..5508ea42f50343fffa0ffe82c6db4a43b87c92ec 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2022,2023 Thomas E. Dickey                                     *
+ * Copyright 2022-2023,2024 Thomas E. Dickey                                *
  * Copyright 2022 Leonid S. Usov <leonid.s.usov at gmail.com>               *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -22,7 +22,7 @@
  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
  ****************************************************************************/
 /*
- * $Id: test_mouse.c,v 1.27 2023/01/07 17:22:42 tom Exp $
+ * $Id: test_mouse.c,v 1.31 2024/03/30 20:45:31 tom Exp $
  *
  * Author: Leonid S Usov
  *
 
 static int logoffset = 0;
 
-static int
+static void
 raw_loop(void)
 {
-    struct termios tty;
-    struct termios old;
     char *xtermcap;
 
-    tcgetattr(0, &old);
-#if HAVE_CFMAKERAW
-    cfmakeraw(&tty);
-#else
-    tty = old;
-    tty.c_iflag &= (unsigned) (~(IGNBRK | BRKINT | PARMRK | ISTRIP
-                                | INLCR | IGNCR | ICRNL | IXON));
-    tty.c_oflag &= (unsigned) (~OPOST);
-    tty.c_lflag &= (unsigned) (~(ECHO | ECHONL | ICANON | ISIG | IEXTEN));
-    tty.c_cflag &= (unsigned) (~(CSIZE | PARENB));
-    tty.c_cflag |= CS8;
-    tcsetattr(0, TCSANOW, &tty);
-#endif
+    printf("Entering raw mode. Ctrl-c to quit.\n");
 
-    setupterm(NULL, 0, 0);
+    newterm(NULL, stdout, stdin);
+    raw();
     xtermcap = tigetstr("XM");
     if (!VALID_STRING(xtermcap)) {
        fprintf(stderr, "couldn't get XM terminfo");
-       return 1;
+       return;
     }
 
-    putp(tparm(xtermcap, 1));
+    putp(tgoto(xtermcap, 1, 1));
     fflush(stdout);
 
-    tcsetattr(0, TCSANOW, &tty);
-
     while (1) {
        int c = getc(stdin);
        const char *pretty;
@@ -85,10 +70,9 @@ raw_loop(void)
        }
     }
 
-    putp(tparm(xtermcap, 0));
+    putp(tgoto(xtermcap, 0, 0));
     fflush(stdout);
-    tcsetattr(0, TCSANOW, &old);
-    return 0;
+    noraw();
 }
 
 static void logw(const char *fmt, ...) GCC_PRINTFLIKE(1, 2);
@@ -117,76 +101,9 @@ logw(const char *fmt, ...)
 }
 
 static void
-usage(int ok)
+cooked_loop(char *my_environ, int interval)
 {
-    static const char *msg[] =
-    {
-       "Usage: test_mouse [options]"
-       ,""
-       ,"Test mouse events.  These examples for $TERM demonstrate xterm"
-       ,"features:"
-       ,"    xterm"
-       ,"    xterm-1002"
-       ,"    xterm-1003"
-       ,""
-       ,USAGE_COMMON
-       ,"Options:"
-       ," -r       show raw input stream, injecting a new line before every ESC"
-       ," -i n     set mouse interval to n; default is 0 (no double-clicks)"
-       ," -T term  use terminal description other than $TERM"
-    };
-    unsigned n;
-    for (n = 0; n < sizeof(msg) / sizeof(char *); ++n) {
-       fprintf(stderr, "%s\n", msg[n]);
-    }
-    ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE);
-}
-/* *INDENT-OFF* */
-VERSION_COMMON()
-/* *INDENT-ON* */
-
-int
-main(int argc, char *argv[])
-{
-    bool rawmode = FALSE;
-    int interval = 0;
-    int ch;
     MEVENT event;
-    char *my_environ = NULL;
-    const char *term_format = "TERM=%s";
-
-    while ((ch = getopt(argc, argv, OPTS_COMMON "i:rT:")) != -1) {
-       switch (ch) {
-       case 'i':
-           interval = atoi(optarg);
-           break;
-       case 'r':
-           rawmode = TRUE;
-           break;
-       case 'T':
-           my_environ = malloc(strlen(term_format) + strlen(optarg));
-           if (my_environ != NULL) {
-               sprintf(my_environ, term_format, optarg);
-               putenv(my_environ);
-           }
-           break;
-       case OPTS_VERSION:
-           show_version(argv);
-           ExitProgram(EXIT_SUCCESS);
-       default:
-           usage(ch == OPTS_USAGE);
-           /* NOTREACHED */
-       }
-    }
-    if (optind < argc) {
-       usage(FALSE);
-       ExitProgram(EXIT_FAILURE);
-    }
-
-    if (rawmode) {
-       printf("Entering raw mode. Ctrl-c to quit.\n");
-       return raw_loop();
-    }
 
     initscr();
     noecho();
@@ -279,6 +196,82 @@ main(int argc, char *argv[])
     }
   end:
     endwin();
+}
+
+static void
+usage(int ok)
+{
+    static const char *msg[] =
+    {
+       "Usage: test_mouse [options]"
+       ,""
+       ,"Test mouse events.  These examples for $TERM demonstrate xterm"
+       ,"features:"
+       ,"    xterm"
+       ,"    xterm-1002"
+       ,"    xterm-1003"
+       ,""
+       ,USAGE_COMMON
+       ,"Options:"
+       ," -r       show raw input stream, injecting a new line before every ESC"
+       ," -i n     set mouse interval to n; default is 0 (no double-clicks)"
+       ," -T term  use terminal description other than $TERM"
+    };
+    unsigned n;
+    for (n = 0; n < sizeof(msg) / sizeof(char *); ++n) {
+       fprintf(stderr, "%s\n", msg[n]);
+    }
+    ExitProgram(ok ? EXIT_SUCCESS : EXIT_FAILURE);
+}
+/* *INDENT-OFF* */
+VERSION_COMMON()
+/* *INDENT-ON* */
+
+int
+main(int argc, char *argv[])
+{
+    bool rawmode = FALSE;
+    int interval = 0;
+    int ch;
+    size_t my_len;
+    char *my_environ = NULL;
+    const char *term_format = "TERM=%s";
+
+    while ((ch = getopt(argc, argv, OPTS_COMMON "i:rT:")) != -1) {
+       switch (ch) {
+       case 'i':
+           interval = atoi(optarg);
+           break;
+       case 'r':
+           rawmode = TRUE;
+           break;
+       case 'T':
+           my_len = strlen(term_format) + strlen(optarg) + 1;
+           my_environ = malloc(my_len);
+           if (my_environ != NULL) {
+               _nc_SPRINTF(my_environ, _nc_SLIMIT(my_len) term_format, optarg);
+               putenv(my_environ);
+           }
+           break;
+       case OPTS_VERSION:
+           show_version(argv);
+           ExitProgram(EXIT_SUCCESS);
+       default:
+           usage(ch == OPTS_USAGE);
+           /* NOTREACHED */
+       }
+    }
+    if (optind < argc) {
+       usage(FALSE);
+       ExitProgram(EXIT_FAILURE);
+    }
+
+    if (rawmode) {
+       raw_loop();
+    } else {
+       cooked_loop(my_environ, interval);
+    }
+
     ExitProgram(EXIT_SUCCESS);
 }
 #else
index 4e53c2e7c0cfcb54f0a5d7499821f7271a49385a..24d7c46c7773846b1b5c83f6ce0fc498f0182a2d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020,2022 Thomas E. Dickey                                     *
+ * Copyright 2020-2022,2023 Thomas E. Dickey                                *
  * Copyright 2015,2016 Free Software Foundation, Inc.                       *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -30,7 +30,7 @@
 /*
  * Author: Thomas E. Dickey
  *
- * $Id: test_setupterm.c,v 1.16 2022/12/10 23:23:27 tom Exp $
+ * $Id: test_setupterm.c,v 1.17 2023/06/24 14:19:52 tom Exp $
  *
  * A simple demo of setupterm/restartterm.
  */
@@ -48,6 +48,13 @@ static TERMINAL **saved_terminals;
 static size_t num_saved;
 static size_t max_saved;
 
+static void
+failed(const char *msg)
+{
+    perror(msg);
+    ExitProgram(EXIT_FAILURE);
+}
+
 static void
 finish(int code)
 {
@@ -73,6 +80,8 @@ save_curterm(void)
        if (num_saved + 1 >= max_saved) {
            max_saved += 100;
            saved_terminals = typeRealloc(TERMINAL *, max_saved, saved_terminals);
+           if (saved_terminals == NULL)
+               failed("realloc");
        }
        saved_terminals[num_saved++] = cur_term;
     }
index dbd1caf17504d4712a86e1c7a77b87e6d870ced4..8763dca3cd34156f91addef70624f4bfc154dd2a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2019-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2019-2022,2023 Thomas E. Dickey                                *
  * Copyright 2015-2016,2017 Free Software Foundation, Inc.                  *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
@@ -30,7 +30,7 @@
 /*
  * Author: Thomas E. Dickey
  *
- * $Id: test_sgr.c,v 1.21 2022/12/10 23:23:27 tom Exp $
+ * $Id: test_sgr.c,v 1.22 2023/05/27 20:13:10 tom Exp $
  *
  * A simple demo of the sgr/sgr0 terminal capabilities.
  */
@@ -61,7 +61,7 @@ static int db_item;
 static long total_values;
 
 static char *
-make_dbitem(char *p, char *q)
+make_dbitem(const char *const p, const char *const q)
 {
     size_t need = strlen(e_opt) + 2 + (size_t) (p - q);
     char *result = malloc(need);
index c242ff683189406267d101e030eaa0bb0f993ebe..50289defdf603dd7cdfd460cf52e0d04daee424e 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright 2020-2021,2022 Thomas E. Dickey                                *
+ * Copyright 2020-2022,2023 Thomas E. Dickey                                *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
 /*
  * Author: Thomas E. Dickey
  *
- * $Id: test_tparm.c,v 1.24 2022/12/10 23:23:27 tom Exp $
+ * $Id: test_tparm.c,v 1.39 2023/11/11 01:00:03 tom Exp $
  *
- * Exercise tparm, either for all possible capabilities with fixed parameters,
- * or one capability with all possible parameters.
- *
- * TODO: incorporate tic.h and _nc_tparm_analyze
- * TODO: optionally test tiparm
- * TODO: add checks/logic to handle "%s" in tparm
+ * Exercise tparm/tiparm, either for all possible capabilities with fixed
+ * parameters, or one capability with specific combinations of parameters.
  */
 #define USE_TINFO
 #include <test.priv.h>
 
+#if NCURSES_XNAMES
+#if HAVE_TERM_ENTRY_H
+#include <term_entry.h>
+#else
+#undef NCURSES_XNAMES
+#define NCURSES_XNAMES 0
+#endif
+#endif
+
+#define MAX_PARM 9
+
+#define GrowArray(array,limit,length) \
+           if (length + 2 >= limit) { \
+               limit *= 2; \
+               array = typeRealloc(char *, limit, array); \
+               if (array == 0) { \
+                   failed("no memory: " #array); \
+               } \
+           }
+
 static GCC_NORETURN void failed(const char *);
 
 static void
@@ -56,6 +72,14 @@ static int a_opt;
 static int p_opt;
 static int v_opt;
 
+#if HAVE_TIPARM
+static int i_opt;
+#endif
+
+#if HAVE_TIPARM_S
+static int s_opt;
+#endif
+
 /*
  * Total tests (and failures):
  */
@@ -119,13 +143,13 @@ relevant(const char *name, const char *value)
 }
 
 static int
-increment(int *all_parms, int *num_parms, int len_parms, int end_parms)
+increment(long *all_parms, int *num_parms, int len_parms, int end_parms)
 {
     int rc = 0;
     int n;
 
-    if (len_parms > 9)
-       len_parms = 9;
+    if (len_parms > MAX_PARM)
+       len_parms = MAX_PARM;
 
     if (end_parms < len_parms) {
        if (all_parms[end_parms]++ >= num_parms[end_parms]) {
@@ -143,38 +167,187 @@ increment(int *all_parms, int *num_parms, int len_parms, int end_parms)
     return rc;
 }
 
+/* parse the format string to determine which positional parameters
+ * are assumed to be strings.
+ */
+#if HAVE_TISCAN_S
+static int
+analyze_format(const char *format, int *mask, char **p_is_s)
+{
+    int arg_count;
+    int arg_mask;
+    int n;
+    if (tiscan_s(&arg_count, &arg_mask, format) == OK) {
+       *mask = arg_mask;
+       for (n = 0; n < MAX_PARM; ++n) {
+           static char dummy[1];
+           p_is_s[n] = (arg_mask & 1) ? dummy : NULL;
+           arg_mask >>= 1;
+       }
+    } else {
+       *mask = 0;
+       arg_count = 0;
+       for (n = 0; n < MAX_PARM; ++n) {
+           p_is_s[n] = NULL;
+       }
+    }
+    return arg_count;
+}
+#elif HAVE__NC_TPARM_ANALYZE
+extern int _nc_tparm_analyze(TERMINAL *, const char *, char **, int *);
+
+static int
+analyze_format(const char *format, int *mask, char **p_is_s)
+{
+    int popcount = 0;
+    int analyzed = _nc_tparm_analyze(cur_term, format, p_is_s, &popcount);
+    int n;
+    if (analyzed < popcount) {
+       analyzed = popcount;
+    }
+    *mask = 0;
+    for (n = 0; n < MAX_PARM; ++n) {
+       if (p_is_s[n])
+           *mask |= (1 << n);
+    }
+    return analyzed;
+}
+#else
+/* TODO: make this work without direct use of ncurses internals. */
+static int
+analyze_format(const char *format, int *mask, char **p_is_s)
+{
+    int n;
+    char *filler = strstr(format, "%s");
+    *mask = 0;
+    for (n = 0; n < MAX_PARM; ++n) {
+       p_is_s[n] = filler;
+    }
+    return n;
+}
+#endif
+
+#define NumStr(n) use_strings[n] \
+                 ? (long) (my_intptr_t) (number[n] \
+                    ? string[n] \
+                    : NULL) \
+                 : number[n]
+
+#define NS_0(fmt)      fmt
+#define NS_1(fmt)      NS_0(fmt), NumStr(0)
+#define NS_2(fmt)      NS_1(fmt), NumStr(1)
+#define NS_3(fmt)      NS_2(fmt), NumStr(2)
+#define NS_4(fmt)      NS_3(fmt), NumStr(3)
+#define NS_5(fmt)      NS_4(fmt), NumStr(4)
+#define NS_6(fmt)      NS_5(fmt), NumStr(5)
+#define NS_7(fmt)      NS_6(fmt), NumStr(6)
+#define NS_8(fmt)      NS_7(fmt), NumStr(7)
+#define NS_9(fmt)      NS_8(fmt), NumStr(8)
+
 static void
-test_tparm(const char *name, const char *format, int *number)
+test_tparm(const char *name, const char *format, long *number, char **string)
 {
-    char *result = tparm(format,
-                        number[0],
-                        number[1],
-                        number[2],
-                        number[3],
-                        number[4],
-                        number[5],
-                        number[6],
-                        number[7],
-                        number[8]);
+    char *use_strings[MAX_PARM];
+    char *result = NULL;
+    int nparam;
+    int mask;
+
+    nparam = analyze_format(format, &mask, use_strings);
+#if HAVE_TIPARM_S
+    if (s_opt) {
+       switch (nparam) {
+       case 0:
+           result = tiparm_s(0, mask, NS_0(format));
+           break;
+       case 1:
+           result = tiparm_s(1, mask, NS_1(format));
+           break;
+       case 2:
+           result = tiparm_s(2, mask, NS_2(format));
+           break;
+       case 3:
+           result = tiparm_s(3, mask, NS_3(format));
+           break;
+       case 4:
+           result = tiparm_s(4, mask, NS_4(format));
+           break;
+       case 5:
+           result = tiparm_s(5, mask, NS_5(format));
+           break;
+       case 6:
+           result = tiparm_s(6, mask, NS_6(format));
+           break;
+       case 7:
+           result = tiparm_s(7, mask, NS_7(format));
+           break;
+       case 8:
+           result = tiparm_s(8, mask, NS_8(format));
+           break;
+       case 9:
+           result = tiparm_s(9, mask, NS_9(format));
+           break;
+       }
+    } else
+#endif
+#if HAVE_TIPARM
+    if (i_opt) {
+       switch (nparam) {
+       case 0:
+           result = tiparm(NS_0(format));
+           break;
+       case 1:
+           result = tiparm(NS_1(format));
+           break;
+       case 2:
+           result = tiparm(NS_2(format));
+           break;
+       case 3:
+           result = tiparm(NS_3(format));
+           break;
+       case 4:
+           result = tiparm(NS_4(format));
+           break;
+       case 5:
+           result = tiparm(NS_5(format));
+           break;
+       case 6:
+           result = tiparm(NS_6(format));
+           break;
+       case 7:
+           result = tiparm(NS_7(format));
+           break;
+       case 8:
+           result = tiparm(NS_8(format));
+           break;
+       case 9:
+           result = tiparm(NS_9(format));
+           break;
+       }
+    } else
+#endif
+       result = tparm(NS_9(format));
     total_tests++;
     if (result != NULL) {
        tputs(result, 1, output_func);
     } else {
        total_fails++;
     }
-    if (v_opt > 1)
-       printf(".. %2d = %2d %2d %2d %2d %2d %2d %2d %2d %2d %s\n",
-              result != 0 ? (int) strlen(result) : -1,
-              number[0],
-              number[1],
-              number[2],
-              number[3],
-              number[4],
-              number[5],
-              number[6],
-              number[7],
-              number[8],
-              name);
+    if (v_opt > 1) {
+       int n;
+       printf(".. %3d =", result != 0 ? (int) strlen(result) : -1);
+       for (n = 0; n < nparam; ++n) {
+           if (use_strings[n]) {
+               if (number[n]) {
+                   printf(" \"%s\"", string[n]);
+               } else {
+                   printf("  ?");
+               }
+           } else {
+               printf(" %2ld", number[n]);
+           }
+       }
+       printf(" %s\n", name);
+    }
 }
 
 static void
@@ -192,8 +365,14 @@ usage(int ok)
        ,"          to read a list from standard-input"
        ," -a       test all combinations of parameters"
        ,"          [value1...] forms a vector of maximum parameter-values."
+#if HAVE_TIPARM
+       ," -i       test tiparm rather than tparm"
+#endif
        ," -p       test capabilities with no parameters but having padding"
        ," -r NUM   repeat tests NUM times"
+#if HAVE_TIPARM_S
+       ," -s       test tiparm_s rather than tparm"
+#endif
        ," -v       show values and results"
     };
     unsigned n;
@@ -221,17 +400,20 @@ main(int argc, char *argv[])
     int r_opt = 1;
     char *t_opt = 0;
 
+    int std_caps = 0;          /* predefine items in all_caps[] */
     int len_caps = 0;          /* cur # of items in all_caps[] */
     int max_caps = 10;         /* max # of items in all_caps[] */
     char **all_caps = typeCalloc(char *, max_caps);
 
-    int all_parms[10];         /* workspace for "-a" option */
+    long all_parms[10];                /* workspace for "-a" option */
 
     int len_terms = 0;         /* cur # of items in all_terms[] */
     int max_terms = 10;                /* max # of items in all_terms[] */
     char **all_terms = typeCalloc(char *, max_terms);
 
     int use_caps;
+    int max_name = 10;         /* max # of items in cap_name[] */
+    int max_data = 10;         /* max # of items in cap_data[] */
     char **cap_name;
     char **cap_data;
 
@@ -244,7 +426,7 @@ main(int argc, char *argv[])
     if (all_caps == 0 || all_terms == 0 || num_parms == 0 || str_parms == 0)
        failed("no memory");
 
-    while ((ch = getopt(argc, argv, OPTS_COMMON "T:apr:v")) != -1) {
+    while ((ch = getopt(argc, argv, OPTS_COMMON "T:aipr:sv")) != -1) {
        switch (ch) {
        case 'T':
            t_opt = optarg;
@@ -252,12 +434,22 @@ main(int argc, char *argv[])
        case 'a':
            ++a_opt;
            break;
+#if HAVE_TIPARM
+       case 'i':
+           ++i_opt;
+           break;
+#endif
        case 'p':
            ++p_opt;
            break;
        case 'r':
            r_opt = atoi(optarg);
            break;
+#if HAVE_TIPARM_S
+       case 's':
+           ++s_opt;
+           break;
+#endif
        case 'v':
            ++v_opt;
            break;
@@ -370,13 +562,7 @@ main(int argc, char *argv[])
     if (len_caps == 0) {
 #if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES)
        for (n = 0; strnames[n] != 0; ++n) {
-           if (len_caps + 2 >= max_caps) {
-               max_caps *= 2;
-               all_caps = typeRealloc(char *, max_caps, all_caps);
-               if (all_caps == 0) {
-                   failed("no memory: all_caps");
-               }
-           }
+           GrowArray(all_caps, max_caps, len_caps);
            all_caps[len_caps++] = strdup(strnames[n]);
        }
 #else
@@ -384,6 +570,7 @@ main(int argc, char *argv[])
        all_caps[len_caps++] = strdup("sgr");
 #endif
     }
+    std_caps = len_caps;
     all_caps[len_caps] = 0;
     if (v_opt) {
        printf("%d name%s%s\n", PLURAL(len_caps), COLONS(len_caps));
@@ -394,8 +581,8 @@ main(int argc, char *argv[])
        }
     }
 
-    cap_name = typeMalloc(char *, len_caps);
-    cap_data = typeMalloc(char *, len_caps);
+    cap_name = typeMalloc(char *, (max_name = 1 + len_caps));
+    cap_data = typeMalloc(char *, (max_data = 1 + len_caps));
 
     if (r_opt <= 0)
        r_opt = 1;
@@ -413,6 +600,20 @@ main(int argc, char *argv[])
            if (setupterm(all_terms[t_run], fileno(stdout), &errs) != OK) {
                printf("** skipping %s (errs:%d)\n", all_terms[t_run], errs);
            }
+#if NCURSES_XNAMES
+           len_caps = std_caps;
+           if (cur_term) {
+               TERMTYPE *term = (TERMTYPE *) cur_term;
+               for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) {
+                   GrowArray(all_caps, max_caps, len_caps);
+                   GrowArray(cap_name, max_name, len_caps);
+                   GrowArray(cap_data, max_data, len_caps);
+                   all_caps[len_caps++] = strdup(ExtStrname(term, (int) n, strnames));
+               }
+           }
+#else
+           (void) std_caps;
+#endif
 
            /*
             * Most of the capabilities have no parameters, e.g., they are
@@ -430,7 +631,7 @@ main(int argc, char *argv[])
            }
 
            if (v_opt) {
-               printf("[%d:%d] %d cap%s * %ld param%s \"%s\"\n",
+               printf("[%d:%d] %d paramerized cap%s * %ld test-case%s \"%s\"\n",
                       r_run + 1, r_opt,
                       PLURAL(use_caps),
                       PLURAL(use_parms),
@@ -442,16 +643,27 @@ main(int argc, char *argv[])
                /* for each combination of values */
                do {
                    for (n_run = 0; n_run < use_caps; ++n_run) {
-                       test_tparm(cap_name[n_run], cap_data[n_run], all_parms);
+                       test_tparm(cap_name[n_run],
+                                  cap_data[n_run],
+                                  all_parms,
+                                  str_parms);
                    }
                }
                while (increment(all_parms, num_parms, len_parms, 0));
            } else {
                /* for the given values */
                for (n_run = 0; n_run < use_caps; ++n_run) {
-                   test_tparm(cap_name[n_run], cap_data[n_run], all_parms);
+                   test_tparm(cap_name[n_run],
+                              cap_data[n_run],
+                              all_parms,
+                              str_parms);
                }
            }
+#if NCURSES_XNAMES
+           for (n = std_caps; n < len_caps; ++n) {
+               free(all_caps[n]);
+           }
+#endif
            if (cur_term != 0) {
                del_curterm(cur_term);
            } else {
@@ -470,7 +682,7 @@ main(int argc, char *argv[])
     printf(NUMFORM " printable\n", total_print);
     printf(NUMFORM " total\n", total_nulls + total_ctrls + total_print);
 #if NO_LEAKS
-    for (n = 0; n < len_caps; ++n) {
+    for (n = 0; n < std_caps; ++n) {
        free(all_caps[n]);
     }
     free(all_caps);
index a1dc51acc912be4d57d1742b53eac39de441a8ac..750e5a450b1db8edd791a6e2ab61dc0cfc8dce9e 100644 (file)
@@ -6,7 +6,7 @@
  *  wrs(5/28/93) -- modified to be consistent (perform identically) with either
  *                  PDCurses or under Unix System V, R4
  *
- * $Id: testcurs.c,v 1.57 2022/12/10 23:35:36 tom Exp $
+ * $Id: testcurs.c,v 1.58 2023/05/28 14:23:34 tom Exp $
  */
 
 #include <test.priv.h>
@@ -252,11 +252,11 @@ inputTest(WINDOW *win)
 #ifdef KEY_MOUSE
        if (c == KEY_MOUSE) {
 #if defined(NCURSES_MOUSE_VERSION)
-#define ButtonChanged(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, 037))
-#define ButtonPressed(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED))
-#define ButtonDouble(n)  ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED))
-#define ButtonTriple(n)  ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED))
-#define ButtonRelease(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED))
+#define ButtonChanged(n) ((event.bstate) & NCURSES_MOUSE_MASK(n, (NCURSES_BUTTON_RELEASED|NCURSES_BUTTON_PRESSED|NCURSES_BUTTON_CLICKED|NCURSES_DOUBLE_CLICKED|NCURSES_TRIPLE_CLICKED|NCURSES_RESERVED_EVENT)))
+#define ButtonPressed(n) ((event.bstate) & NCURSES_MOUSE_MASK(n, NCURSES_BUTTON_PRESSED))
+#define ButtonDouble(n)  ((event.bstate) & NCURSES_MOUSE_MASK(n, NCURSES_DOUBLE_CLICKED))
+#define ButtonTriple(n)  ((event.bstate) & NCURSES_MOUSE_MASK(n, NCURSES_TRIPLE_CLICKED))
+#define ButtonRelease(n) ((event.bstate) & NCURSES_MOUSE_MASK(n, NCURSES_BUTTON_RELEASED))
            MEVENT event;
            int button = 0;